|
| 1 | +#!/bin/bash |
| 2 | +# |
| 3 | +#set -euo pipefail |
| 4 | +# |
| 5 | +## Required inputs (can also be passed as env vars) |
| 6 | +#MAPPER_TAG="06f15b3088aee47db853d9c321a7b97efc6534c4" |
| 7 | +#SNIFFER_TAG="06f15b3088aee47db853d9c321a7b97efc6534c4" |
| 8 | +#MAPPER_IMAGE="mapper" |
| 9 | +#SNIFFER_IMAGE="sniffer" |
| 10 | +#REGISTRY="us-central1-docker.pkg.dev/main-383408/otterize" |
| 11 | +#INSTALL_EXTRA_FLAGS=" --set kafkawatcher.enable=true --set kafkawatcher.kafkaServers={\"kafka-0.kafka\"} " |
| 12 | +# |
| 13 | +## Ensure required commands are available |
| 14 | +#for cmd in docker kubectl helm minikube jq ; do |
| 15 | +# command -v $cmd >/dev/null 2>&1 || { echo >&2 "$cmd is required but not installed."; exit 1; } |
| 16 | +#done |
| 17 | +# |
| 18 | +#echo ">> Starting minikube" |
| 19 | +#minikube start --cpus=4 --memory 4096 --disk-size 32g --cni=calico |
| 20 | +# |
| 21 | +#sleep 10 |
| 22 | +# |
| 23 | +#echo ">> Waiting for Calico to be ready" |
| 24 | +#kubectl wait pods -n kube-system -l k8s-app=calico-kube-controllers --for condition=Ready --timeout=120s |
| 25 | +#kubectl wait pods -n kube-system -l k8s-app=calico-node --for condition=Ready --timeout=120s |
| 26 | +# |
| 27 | +#echo ">> Pulling Docker images" |
| 28 | +#docker pull "${REGISTRY}/mapper:${MAPPER_TAG}" |
| 29 | +#minikube image load "${REGISTRY}/mapper:${MAPPER_TAG}" |
| 30 | +#docker pull "${REGISTRY}/sniffer:${SNIFFER_TAG}" |
| 31 | +#minikube image load "${REGISTRY}/sniffer:${SNIFFER_TAG}" |
| 32 | +# |
| 33 | +#echo ">> Setting up Helm dependencies and deploying Network Mapper" |
| 34 | +#helm dep up ./helm-charts/network-mapper |
| 35 | +#helm install otterize ./helm-charts/network-mapper -n otterize-system --create-namespace \ |
| 36 | +# --set debug=true \ |
| 37 | +# --set-string mapper.repository="${REGISTRY}" \ |
| 38 | +# --set-string mapper.image="${MAPPER_IMAGE}" \ |
| 39 | +# --set-string mapper.tag="${MAPPER_TAG}" \ |
| 40 | +# --set-string mapper.pullPolicy=Never \ |
| 41 | +# --set-string sniffer.repository="${REGISTRY}" \ |
| 42 | +# --set-string sniffer.image="${SNIFFER_IMAGE}" \ |
| 43 | +# --set-string sniffer.tag="${SNIFFER_TAG}" \ |
| 44 | +# --set-string sniffer.pullPolicy=Never \ |
| 45 | +# --set global.telemetry.enabled=false \ |
| 46 | +# $INSTALL_EXTRA_FLAGS |
| 47 | +# |
| 48 | +# |
| 49 | +#echo ">> Waiting for Otterize components to be ready" |
| 50 | +#kubectl wait pods -n otterize-system -l app=otterize-network-sniffer --for condition=Ready --timeout=90s |
| 51 | +#kubectl wait pods -n otterize-system -l app=otterize-network-mapper --for condition=Ready --timeout=90s |
| 52 | +# |
| 53 | +#echo ">> Deploying Kafka via Helm" |
| 54 | +#helm repo add otterize https://helm.otterize.com |
| 55 | +#helm repo update |
| 56 | +#helm install --create-namespace -n kafka -f https://docs.otterize.com/code-examples/kafka-mapping/helm/values.yaml kafka otterize/kafka --version 21.4.4 |
| 57 | +# |
| 58 | +#echo ">> Deploying Kafka Tutorial Services" |
| 59 | +#kubectl apply -n otterize-tutorial-kafka-mapping -f https://docs.otterize.com/code-examples/kafka-mapping/all.yaml |
| 60 | +# |
| 61 | +#echo ">> Waiting for Kafka and Tutorial Services" |
| 62 | +#sleep 10 |
| 63 | +#kubectl wait pods -n kafka -l app.kubernetes.io/component=kafka --for condition=Ready --timeout=180s |
| 64 | +#kubectl wait pods -n kafka -l app.kubernetes.io/component=zookeeper --for condition=Ready --timeout=180s |
| 65 | +#kubectl wait pods -n otterize-tutorial-kafka-mapping -l app=client --for condition=Ready --timeout=90s |
| 66 | +#kubectl wait pods -n otterize-tutorial-kafka-mapping -l app=client-2 --for condition=Ready --timeout=90s |
| 67 | +# |
| 68 | +# |
| 69 | +#echo ">> Waiting for intents to be discovered..." |
| 70 | +#for i in {1..5}; do |
| 71 | +# |
| 72 | +# OUTPUT_JSON=`otterize network-mapper export --telemetry-enabled=false -n otterize-tutorial-kafka-mapping --format=json` |
| 73 | +# if [ `echo "$OUTPUT_JSON" | jq ". | length"` != 2 ] || [ `echo "$OUTPUT_JSON" | jq '[.[] | select(.spec.targets[] | has("kafka"))] | length'` != 2 ] ; then |
| 74 | +# echo "wait for discovered intents"; |
| 75 | +# echo _SNIFFER LOGS_ |
| 76 | +# kubectl logs --since=15s -n otterize-system -l app=otterize-network-sniffer |
| 77 | +# echo _MAPPER LOGS_ |
| 78 | +# kubectl logs --since=15s -n otterize-system -l app=otterize-network-mapper |
| 79 | +# sleep 10 ; |
| 80 | +# fi |
| 81 | +# |
| 82 | +## intents_count=$(otterize network-mapper export --telemetry-enabled=false -n otterize-tutorial-kafka-mapping --format=json | jq length) |
| 83 | +## if [ "$intents_count" -eq 2 ]; then |
| 84 | +## echo "Intents discovered" |
| 85 | +## break |
| 86 | +## fi |
| 87 | +## echo "Waiting... ($i)" |
| 88 | +## echo "_SNIFFER LOGS_" |
| 89 | +## kubectl logs --since=15s -n otterize-system -l app=otterize-network-sniffer |
| 90 | +## echo "_MAPPER LOGS_" |
| 91 | +## kubectl logs --since=15s -n otterize-system -l app=otterize-network-mapper |
| 92 | +## sleep 10 |
| 93 | +#done |
| 94 | +# |
| 95 | +#echo ">> Outputting final logs" |
| 96 | +#kubectl logs -n otterize-system -l app=otterize-network-sniffer --tail=-1 |
| 97 | +#kubectl logs -n otterize-system -l app=otterize-network-mapper --tail=-1 |
| 98 | +# |
| 99 | +#echo ">> Exporting and comparing discovered intents" |
| 100 | +# |
| 101 | + |
| 102 | +echo "export intents and compare to expected file" |
| 103 | +INTENTS_JSON=`otterize network-mapper export --telemetry-enabled=false -n otterize-tutorial-kafka-mapping --format=json` |
| 104 | +echo "1" |
| 105 | +echo $INTENTS_JSON |
| 106 | +INTENTS_JSON_NO_KIND=`echo "$INTENTS_JSON" | jq 'map(del(.spec.workload.kind))'` |
| 107 | +echo "2" |
| 108 | +echo $INTENTS_JSON_NO_KIND |
| 109 | +INTENTS_JSON_NO_KIND_AND_SORTED=`echo "$INTENTS_JSON_NO_KIND" | jq 'sort_by(.metadata.namespace + .metadata.name) | map(.spec.targets |= (sort_by(keys_unsorted[0]) | map(if .kafka? then .kafka.topics |= map(.operations |= sort) else . end)))'` |
| 110 | +echo "3" |
| 111 | +echo $INTENTS_JSON_NO_KIND_AND_SORTED |
| 112 | +echo "$INTENTS_JSON_NO_KIND_AND_SORTED" > /tmp/intents.json |
| 113 | +#echo "expected" && cat .github/workflows/tests-expected-results/kafka-tutorial-intents.json |
| 114 | +#echo "actual" && cat /tmp/intents.json |
| 115 | +#diff .github/workflows/tests-expected-results/kafka-tutorial-intents.json /tmp/intents.json |
| 116 | + |
| 117 | +# |
| 118 | +#otterize network-mapper export --telemetry-enabled=false -n otterize-tutorial-kafka-mapping --format=json | jq \ |
| 119 | +#'sort_by(.metadata.namespace, .metadata.name) | map( |
| 120 | +# .spec.targets |= (sort_by(keys[0]) |
| 121 | +# | map( |
| 122 | +# if .kafka? |
| 123 | +# then .kafka.topics |= map( |
| 124 | +# .operations |= sort |
| 125 | +# ) |
| 126 | +# else . |
| 127 | +# end |
| 128 | +# ) |
| 129 | +# ) |
| 130 | +# )' > /tmp/intents.json |
| 131 | +# |
| 132 | +#diff .github/workflows/tests-expected-results/kafka-tutorial-intents.json /tmp/intents.json && echo "Test passed" || { |
| 133 | +# echo "Test failed" |
| 134 | +# echo "Expected:" |
| 135 | +# cat .github/workflows/tests-expected-results/kafka-tutorial-intents.json |
| 136 | +# echo "Actual:" |
| 137 | +# cat /tmp/intents.json |
| 138 | +# exit 1 |
| 139 | +#} |
0 commit comments