diff --git a/csp-lmc-mid/.gitlab-ci.yml b/csp-lmc-mid/.gitlab-ci.yml index 82f3e40b2e159a5e04f53fd4d5a46baa83383e69..5fecc8095785498cd3cf0da534b68a2fdf4fb6a4 100644 --- a/csp-lmc-mid/.gitlab-ci.yml +++ b/csp-lmc-mid/.gitlab-ci.yml @@ -108,7 +108,7 @@ integration:csp-lmc-mid: script: - export KUBE_NAMESPACE="ci-csp-proto-$CI_COMMIT_SHORT_SHA" - cd $BUILD_PATH - - make k8s_test + - make test environment: name: test after_script: @@ -190,21 +190,20 @@ publish:csp-lmc-mid: publish_chart: variables: - CHARTS_TO_PUBLISH: csp-proto + CHARTS_TO_PUBLISH: mid-csp stage: publish when: manual tags: - k8srunner - image: nexus.engageska-portugal.pt/ska-docker/deploy:0.4.2 - before_script: - - apt-get -y update + image: nexus.engageska-portugal.pt/ska-docker/deploy:0.4.3 + before_script: + - apt-get -y update - apt-get install -y curl ca-certificates --no-install-recommends script: - cd $BUILD_PATH - curl -s https://gitlab.com/ska-telescope/stupid/raw/master/scripts/publish-charts.sh | bash variables: BUILD_PATH: csp-lmc-mid - # # Release csp-lmc-mid image on nexus # diff --git a/csp-lmc-mid/.make/.make-release-support b/csp-lmc-mid/.make/.make-release-support index f1f3a2cb9fb3ea0ce3a173a35c3c9fe316d75156..4aef14ffa1ab7f2a15af5ebb8bf774846740504b 100644 --- a/csp-lmc-mid/.make/.make-release-support +++ b/csp-lmc-mid/.make/.make-release-support @@ -69,6 +69,13 @@ function differsFromRelease() { ! tagExists $tag || test -n "$(git diff --shortstat -r $tag .)" } +function getBaseVersion() { + result=$(getRelease) + + result="$result-$(git log -n 1 --format=%h .)" + echo $result +} + function getVersion() { result=$(getRelease) diff --git a/csp-lmc-mid/.make/docker.mk b/csp-lmc-mid/.make/docker.mk new file mode 100644 index 0000000000000000000000000000000000000000..95915d696ac497a6700746c01c7ee5f405977d80 --- /dev/null +++ b/csp-lmc-mid/.make/docker.mk @@ -0,0 +1,34 @@ +# +# IMAGE_TO_TEST defines the tag of the Docker image to test +# +IMAGE_TO_TEST = $(DOCKER_REGISTRY_HOST)/$(DOCKER_REGISTRY_USER)/$(PROJECT):$(IMAGE_TAG) + +# +# Never use the network=host mode when running CI jobs, and add extra +# distinguishing identifiers to the network name and container names to +# prevent collisions with jobs from the same project running at the same +# time. +# +ifneq ($(CI_JOB_ID),) +NETWORK_MODE := tangonet-$(CI_JOB_ID) +CONTAINER_NAME_PREFIX := $(PROJECT)-$(CI_JOB_ID)- +else +CONTAINER_NAME_PREFIX := $(PROJECT)- +endif + +# +# Defines a default make target so that help is printed if make is called +# without a target +# +.DEFAULT_GOAL := help + +pull: ## download the application image + docker pull $(IMAGE_TO_TEST) + +# piplock: build ## overwrite Pipfile.lock with the image version +# docker run $(IMAGE_TO_TEST) cat /app/Pipfile.lock > $(CURDIR)/Pipfile.lock + +interactive: ## start an interactive session + docker run --rm -it -p 3000:3000 --name=$(CONTAINER_NAME_PREFIX)dev -e TANGO_HOST=$(TANGO_HOST) -v $(CURDIR):/app $(IMAGE_TO_TEST) /bin/bash + + diff --git a/csp-lmc-mid/.make/k8s.mk b/csp-lmc-mid/.make/k8s.mk index f3ce0584b26d4129ab929ded91a4d604bd6498a4..71c7b395acb85db5dbc5dfdc2f74a1b98ca49a32 100644 --- a/csp-lmc-mid/.make/k8s.mk +++ b/csp-lmc-mid/.make/k8s.mk @@ -1,4 +1,19 @@ -IMAGE_TO_RUN_TEST ?= nexus.engageska-portugal.pt/ska-docker/ska-python-buildenv:latest +HELM_HOST ?= https://nexus.engageska-portugal.pt## helm host url https +MINIKUBE ?= true## Minikube or not +MARK ?= all +IMAGE_TO_TEST ?= $(DOCKER_REGISTRY_HOST)/$(DOCKER_REGISTRY_USER)/$(PROJECT):$(IMAGE_TAG)## docker image that will be run for testing purpose +TANGO_HOST = tango-host-databaseds-from-makefile-$(HELM_RELEASE):10000## TANGO_HOST is an input! +LINTING_OUTPUT=$(shell helm lint charts/* | grep ERROR -c | tail -1) + +CHARTS ?= mid-csp-umbrella mid-csp ## list of charts to be published on gitlab -- umbrella charts for testing purpose + +CI_PROJECT_PATH_SLUG ?= mid-csp +CI_ENVIRONMENT_SLUG ?= mid-csp + +# in release.mk it's defined the value of the variable IMAGE_TAG +SET_IMAGE_TAG ?= --set mid-csp.midcsplmc.image.tag=$(IMAGE_TAG) +.DEFAULT_GOAL := help + k8s: ## Which kubernetes are we connected to @echo "Kubernetes cluster-info:" @kubectl cluster-info @@ -8,9 +23,24 @@ k8s: ## Which kubernetes are we connected to @echo "" @echo "Helm version:" @helm version --client + @echo $(TANGO_HOST) + @echo "git branch: $(BRANCH_NAME)" + @echo "image tag: $(IMAGE_TAG)" + @echo "image tag: $(IMAGE_TO_TEST)" + +clean: ## clean out references to chart tgz's + @rm -f ./charts/*/charts/*.tgz ./charts/*/Chart.lock ./charts/*/requirements.lock ./repository/* + +watch: + watch kubectl get all,pv,pvc,ingress -n $(KUBE_NAMESPACE) namespace: ## create the kubernetes namespace - kubectl describe namespace $(KUBE_NAMESPACE) || kubectl create namespace $(KUBE_NAMESPACE) + @kubectl describe namespace $(KUBE_NAMESPACE) > /dev/null 2>&1 ; \ + K_DESC=$$? ; \ + if [ $$K_DESC -eq 0 ] ; \ + then kubectl describe namespace $(KUBE_NAMESPACE); \ + else kubectl create namespace $(KUBE_NAMESPACE); \ + fi delete_namespace: ## delete the kubernetes namespace @if [ "default" == "$(KUBE_NAMESPACE)" ] || [ "kube-system" == "$(KUBE_NAMESPACE)" ]; then \ @@ -20,73 +50,84 @@ delete_namespace: ## delete the kubernetes namespace kubectl describe namespace $(KUBE_NAMESPACE) && kubectl delete namespace $(KUBE_NAMESPACE); \ fi -deploy: namespace mkcerts depends ## deploy the helm chart - @helm install $(HELM_RELEASE) charts/$(HELM_CHART)/ \ - --namespace $(KUBE_NAMESPACE) \ - --set xauthority="$(XAUTHORITYx)" \ - --set display="$(DISPLAY)" \ - --set ingress.hostname=$(INGRESS_HOST) \ - --set helmTests=false - -delete: ## delete the helm chart release - @helm uninstall $(HELM_RELEASE) --namespace $(KUBE_NAMESPACE) - # if charts deployed locally, remove the repo charts files - # created in charts/mid-csp/charts directory - @if [ "a"$(CI_JOB_ID) == "a" ]; then \ - find ./charts -type f -name "tango*" -delete; \ - find ./charts -type f -name "csp-proto*" -delete; \ - find ./charts -type f -name "requirements.lock" -delete; \ - fi +# To package a chart directory into a chart archive +package: ## package charts + @echo "Packaging helm charts. Any existing file won't be overwritten."; \ + mkdir -p ../tmp + @for i in $(CHARTS); do \ + helm package charts/$${i} --destination ../tmp > /dev/null; \ + done; \ + mkdir -p ../repository && cp -n ../tmp/* ../repository; \ + cd ../repository && helm repo index .; \ + rm -rf ../tmp -install: namespace mkcerts ## install the helm chart - @helm install $(HELM_RELEASE) charts/$(HELM_CHART)/ \ - --namespace $(KUBE_NAMESPACE) \ - --set xauthority="$(XAUTHORITYx)" \ - --set display="$(DISPLAY)" \ - --set ingress.hostname=$(INGRESS_HOST) +dep-up: ## update dependencies for every charts in the env var CHARTS + @cd charts; \ + for i in $(CHARTS); do \ + echo "+++ Updating $${i} chart +++"; \ + helm dependency update $${i}; \ + done; -show: mkcerts ## show the helm chart - @helm template $(HELM_RELEASE) charts/$(HELM_CHART)/ \ - --namespace $(KUBE_NAMESPACE) \ - --set xauthority="$(XAUTHORITYx)" \ - --set display="$(DISPLAY)" \ - --set ingress.hostname=$(INGRESS_HOST) +# This job is used to create a deployment of tmc-mid charts +# Currently umbreall chart for tmc-mid path is given +install-chart: clean dep-up namespace ## install the helm chart with name HELM_RELEASE and path UMBRELLA_CHART_PATH on the namespace KUBE_NAMESPACE + @echo $(TANGO_HOST) + @sed -e 's/CI_PROJECT_PATH_SLUG/$(CI_PROJECT_PATH_SLUG)/' $(UMBRELLA_CHART_PATH)values.yaml > generated_values.yaml; \ + sed -e 's/CI_ENVIRONMENT_SLUG/$(CI_ENVIRONMENT_SLUG)/' generated_values.yaml > values.yaml; \ + helm dependency update $(UMBRELLA_CHART_PATH); \ + helm install $(HELM_RELEASE) \ + --set global.minikube=$(MINIKUBE) \ + --set global.tango_host=$(TANGO_HOST) \ + --values values.yaml $(SET_IMAGE_TAG) \ + $(UMBRELLA_CHART_PATH) --namespace $(KUBE_NAMESPACE); \ + rm generated_values.yaml; \ + rm values.yaml -chart_lint: ## lint check the helm chart - @for i in `ls charts/`; \ - do echo " char dir$${i}"; \ - helm lint charts/$${i}/ \ - --namespace $(KUBE_NAMESPACE) \ - --set ingress.hostname=$(INGRESS_HOST) \ - --set xauthority="$(XAUTHORITYx)" \ - --set display="$(DISPLAY)";\ - done +template-chart: clean dep-up## install the helm chart with name RELEASE_NAME and path UMBRELLA_CHART_PATH on the namespace KUBE_NAMESPACE + @sed -e 's/CI_PROJECT_PATH_SLUG/$(CI_PROJECT_PATH_SLUG)/' $(UMBRELLA_CHART_PATH)values.yaml > generated_values.yaml; \ + sed -e 's/CI_ENVIRONMENT_SLUG/$(CI_ENVIRONMENT_SLUG)/' generated_values.yaml > values.yaml; \ + helm template $(RELEASE_NAME) \ + --set global.minikube=$(MINIKUBE) \ + --set global.tango_host=$(TANGO_HOST) \ + --values values.yaml $(SET_IMAGE_TAG) \ + --debug \ + $(UMBRELLA_CHART_PATH) --namespace $(KUBE_NAMESPACE); \ + rm generated_values.yaml; \ + rm values.yaml -helm_delete: ## delete the helm chart release (with Tiller) - @helm delete $(HELM_RELEASE) --purge \ +# This job is used to delete a deployment of tmc-mid charts +# Currently umbreall chart for tmc-mid path is given +uninstall-chart: ## uninstall the tmc-mid helm chart on the namespace tmcprototype + helm template $(HELM_RELEASE) $(UMBRELLA_CHART_PATH) --set global.minikube=$(MINIKUBE) --set global.tango_host=$(TANGO_HOST) --namespace $(KUBE_NAMESPACE) | kubectl delete -f - ; \ + helm uninstall $(HELM_RELEASE) --namespace $(KUBE_NAMESPACE) +reinstall-chart: uninstall-chart install-chart ## reinstall the tmc-mid helm chart on the namespace tmcprototype -traefik: ## install the helm chart for traefik (in the kube-system namespace). @param: EXTERNAL_IP (i.e. private ip of the master node). - @TMP=`mktemp -d`; \ - $(helm_add_stable_repo) && \ - helm fetch stable/traefik --untar --untardir $$TMP && \ - helm template $(helm_install_shim) $$TMP/traefik -n traefik0 --namespace kube-system \ - --set externalIP="$(EXTERNAL_IP)" \ - | kubectl apply -n kube-system -f - && \ - rm -rf $$TMP ; \ +upgrade-chart: ## upgrade the mid-csp-umbrella helm chart on the namespace mid-csp + helm upgrade --set global.minikube=$(MINIKUBE) --set global.tango_host=$(TANGO_HOST) $(HELM_RELEASE) $(UMBRELLA_CHART_PATH) --namespace $(KUBE_NAMESPACE) +wait:## wait for pods to be ready + @echo "Waiting for pods to be ready" + @date + @kubectl -n $(KUBE_NAMESPACE) get pods + @jobs=$$(kubectl get job --output=jsonpath={.items..metadata.name} -n $(KUBE_NAMESPACE)); kubectl wait job --for=condition=complete --timeout=120s $$jobs -n $(KUBE_NAMESPACE) + @kubectl -n $(KUBE_NAMESPACE) wait --for=condition=ready -l app=mid-csp-lmc --timeout=120s pods || exit 1 + @date -delete_traefik: ## delete the helm chart for traefik. @param: EXTERNAL_IP - @TMP=`mktemp -d`; \ - $(helm_add_stable_repo) && \ - helm fetch stable/traefik --untar --untardir $$TMP && \ - helm template $(helm_install_shim) $$TMP/traefik -n traefik0 --namespace kube-system \ - --set externalIP="$(EXTERNAL_IP)" \ - | kubectl delete -n kube-system -f - && \ - rm -rf $$TMP +# Error in --set +show: ## show the helm chart + @helm template $(HELM_RELEASE) charts/$(HELM_CHART)/ \ + --namespace $(KUBE_NAMESPACE) \ + --set xauthority="$(XAUTHORITYx)" \ + --set display="$(DISPLAY)" + +# Linting chart tmc-mid +chart_lint: ## lint check the helm chart + @helm lint $(UMBRELLA_CHART_PATH) \ + --namespace $(KUBE_NAMESPACE) describe: ## describe Pods executed from Helm chart - @for i in `kubectl -n $(KUBE_NAMESPACE) get pods -l release=$(HELM_RELEASE) -o=name`; \ + @for i in `kubectl -n $(KUBE_NAMESPACE) get pods -l app=mid-csp-lmc -o=name`; \ do echo "---------------------------------------------------"; \ echo "Describe for $${i}"; \ echo kubectl -n $(KUBE_NAMESPACE) describe $${i}; \ @@ -119,30 +160,9 @@ logs: ## show Helm chart POD logs echo "---------------------------------------------------"; \ echo ""; echo ""; echo ""; \ done +log: # get the logs of pods @param: $POD_NAME + kubectl logs -n $(KUBE_NAMESPACE) $(POD_NAME) -localip: ## set local Minikube IP in /etc/hosts file for Ingress $(INGRESS_HOST) - @new_ip=`minikube ip` && \ - existing_ip=`grep $(INGRESS_HOST) /etc/hosts || true` && \ - echo "New IP is: $${new_ip}" && \ - echo "Existing IP: $${existing_ip}" && \ - if [ -z "$${existing_ip}" ]; then echo "$${new_ip} $(INGRESS_HOST)" | sudo tee -a /etc/hosts; \ - else sudo perl -i -ne "s/\d+\.\d+.\d+\.\d+/$${new_ip}/ if /$(INGRESS_HOST)/; print" /etc/hosts; fi && \ - echo "/etc/hosts is now: " `grep $(INGRESS_HOST) /etc/hosts` - -mkcerts: ## Make dummy certificates for $(INGRESS_HOST) and Ingress - @if [ ! -d charts/$(HELM_CHART)/secrets ]; then \ - mkdir -p charts/$(HELM_CHART)/secrets; \ - else \ - echo "Creating secrets directory in $(HELM_CHART)"; \ - fi - @if [ ! -f charts/$(HELM_CHART)/secrets/tls.key ]; then \ - openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \ - -keyout charts/$(HELM_CHART)/secrets/tls.key \ - -out charts/$(HELM_CHART)/secrets/tls.crt \ - -subj "/CN=$(INGRESS_HOST)/O=Minikube"; \ - else \ - echo "SSL cert already exits in charts/$(HELM_CHART)/secrets ... skipping"; \ - fi # Utility target to install Helm dependencies helm_dependencies: @@ -174,18 +194,28 @@ kubectl_dependencies: @kubectl version kubeconfig: ## export current KUBECONFIG as base64 ready for KUBE_CONFIG_BASE64 - @KUBE_CONFIG_BASE64=`kubectl config view --flatten | base64 -w 0`; \ + @KUBE_CONFIG_BASE64=`kubectl config view --flatten | base64`; \ echo "KUBE_CONFIG_BASE64: $$(echo $${KUBE_CONFIG_BASE64} | cut -c 1-40)..."; \ echo "appended to: PrivateRules.mak"; \ echo -e "\n\n# base64 encoded from: kubectl config view --flatten\nKUBE_CONFIG_BASE64 = $${KUBE_CONFIG_BASE64}" >> PrivateRules.mak -wait: - @echo "Waiting for device servers to be ready" - @date - @kubectl -n $(KUBE_NAMESPACE) get pods -l cspServer - @jobs=$$(kubectl get job --output=jsonpath={.items..metadata.name} -n $(KUBE_NAMESPACE)); kubectl wait job --for=condition=complete --timeout=300s $$jobs -n $(KUBE_NAMESPACE) - @kubectl -n $(KUBE_NAMESPACE) wait --for=condition=ready --timeout=300s -l cspServer pods - @date +# run the test function +# save the status +# clean out build dir +# print the logs minus the base64 encoded payload +# pull out the base64 payload and unpack build/ dir +# base64 payload is given a boundary "~~~~BOUNDARY~~~~" and extracted using perl +# clean up the run to completion container +# exit the saved status +test: install-chart wait ## test the application on K8s + $(call k8s_test,test); \ + status=$$?; \ + rm -rf build; \ + kubectl --namespace $(KUBE_NAMESPACE) logs $(TEST_RUNNER) | \ + perl -ne 'BEGIN {$$on=0;}; if (index($$_, "~~~~BOUNDARY~~~~")!=-1){$$on+=1;next;}; print if $$on % 2;' | \ + base64 -d | tar -xzf -; \ + kubectl --namespace $(KUBE_NAMESPACE) delete pod $(TEST_RUNNER); \ + exit $$status # # defines a function to copy the ./test-harness directory into the K8s TEST_RUNNER @@ -197,37 +227,20 @@ k8s_test = tar -c . | \ kubectl run $(TEST_RUNNER) \ --namespace $(KUBE_NAMESPACE) -i --wait --restart=Never \ --image-pull-policy=IfNotPresent \ - --image=$(IMAGE_TO_RUN_TEST) -- \ + --image=$(IMAGE_TO_TEST) -- \ /bin/bash -c "tar xv --strip-components 1 --warning=all && \ - python3 -m pip install --extra-index-url https://nexus.engageska-portugal.pt/repository/pypi/simple -r requirements.txt &&\ python3 -m pip install . &&\ cd test-harness &&\ - make TANGO_HOST=databaseds-tango-base-$(HELM_RELEASE):10000 $1 && \ + make TANGO_HOST=$(TANGO_HOST) $1 && \ tar -czvf /tmp/build.tgz build && \ echo '~~~~BOUNDARY~~~~' && \ cat /tmp/build.tgz | base64 && \ echo '~~~~BOUNDARY~~~~'" \ 2>&1 - -# run the test function -# save the status -# clean out build dir -# print the logs minus the base64 encoded payload -# pull out the base64 payload and unpack build/ dir -# base64 payload is given a boundary "~~~~BOUNDARY~~~~" and extracted using perl -# clean up the run to completion container -# exit the saved status -k8s_test: deploy wait## test the application on K8s - @echo "KUBE_NAMESPACE: $(KUBE_NAMESPACE)" - $(call k8s_test,test); \ - status=$$?; \ - rm -fr build; \ - kubectl --namespace $(KUBE_NAMESPACE) logs $(TEST_RUNNER) | perl -ne 'BEGIN {$$on=1;}; if (index($$_, "~~~~BOUNDARY~~~~")!=-1){$$on+=1;next;}; print if $$on % 2;'; \ - kubectl --namespace $(KUBE_NAMESPACE) logs $(TEST_RUNNER) | \ - perl -ne 'BEGIN {$$on=0;}; if (index($$_, "~~~~BOUNDARY~~~~")!=-1){$$on+=1;next;}; print if $$on % 2;' | \ - base64 -d | tar -xzf -; \ - kubectl --namespace $(KUBE_NAMESPACE) delete pod $(TEST_RUNNER); \ - exit $$status +# to resolve the problem with the forwarded attributes, the CSP.LMC devices have to be restarted. +restart_csp: + kubectl delete pod -l app=mid-csp-lmc -n $(KUBE_NAMESPACE);\ + kubectl -n $(KUBE_NAMESPACE) wait --for=condition=ready -l app=mid-csp-lmc --timeout=60s pods || exit 1 rlint: ## run lint check on Helm Chart using gitlab-runner @@ -279,21 +292,61 @@ rk8s_test: ## run k8s_test on K8s using gitlab-runner helm_tests: ## run Helm chart tests helm test $(HELM_RELEASE) --cleanup -ingress_check: ## curl test Tango REST API - https://tango-controls.readthedocs.io/en/latest/development/advanced/rest-api.html#tango-rest-api-implementations - @echo "---------------------------------------------------" - @echo "Test HTTP:"; echo "" - curl -u "tango-cs:tango" -XGET http://$(INGRESS_HOST)/tango/rest/rc4/hosts/databaseds-tango-example-$(HELM_RELEASE)/10000 | json_pp - @echo "", echo "" - @echo "---------------------------------------------------" - @echo "Test HTTPS:"; echo "" - curl -k -u "tango-cs:tango" -XGET https://$(INGRESS_HOST)/tango/rest/rc4/hosts/databaseds-tango-example-$(HELM_RELEASE)/10000 | json_pp - @echo "" - help: ## show this help. @echo "make targets:" @grep -hE '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' @echo ""; echo "make vars (+defaults):" @grep -hE '^[0-9a-zA-Z_-]+ \?=.*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = " \?\= "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' | sed -e 's/\#\#/ \#/' -depends: - helm dependency update charts/$(HELM_CHART)/ +smoketest: ## check that the number of waiting containers is zero (10 attempts, wait time 30s). + @echo "Smoke test START"; \ + n=10; \ + while [ $$n -gt 0 ]; do \ + waiting=`kubectl get pods -n $(KUBE_NAMESPACE) -o=jsonpath='{.items[*].status.containerStatuses[*].state.waiting.reason}' | wc -w`; \ + echo "Waiting containers=$$waiting"; \ + if [ $$waiting -ne 0 ]; then \ + echo "Waiting 30s for pods to become running...#$$n"; \ + sleep 30s; \ + fi; \ + if [ $$waiting -eq 0 ]; then \ + echo "Smoke test SUCCESS"; \ + exit 0; \ + fi; \ + if [ $$n -eq 1 ]; then \ + waiting=`kubectl get pods -n $(KUBE_NAMESPACE) -o=jsonpath='{.items[*].status.containerStatuses[*].state.waiting.reason}' | wc -w`; \ + echo "Smoke test FAILS"; \ + echo "Found $$waiting waiting containers: "; \ + kubectl get pods -n $(KUBE_NAMESPACE) -o=jsonpath='{range .items[*].status.containerStatuses[?(.state.waiting)]}{.state.waiting.message}{"\n"}{end}'; \ + exit 1; \ + fi; \ + n=`expr $$n - 1`; \ + done +traefik: ## install the helm chart for traefik (in the kube-system namespace). @param: EXTERNAL_IP (i.e. private ip of the master node). + @TMP=`mktemp -d`; \ + $(helm_add_stable_repo) && \ + helm fetch stable/traefik --untar --untardir $$TMP && \ + helm template $(helm_install_shim) $$TMP/traefik -n traefik0 --namespace kube-system \ + --set externalIP="$(EXTERNAL_IP)" \ + | kubectl apply -n kube-system -f - && \ + rm -rf $$TMP ; \ + + +delete_traefik: ## delete the helm chart for traefik. @param: EXTERNAL_IP + @TMP=`mktemp -d`; \ + $(helm_add_stable_repo) && \ + helm fetch stable/traefik --untar --untardir $$TMP && \ + helm template $(helm_install_shim) $$TMP/traefik -n traefik0 --namespace kube-system \ + --set externalIP="$(EXTERNAL_IP)" \ + | kubectl delete -n kube-system -f - && \ + rm -rf $$TMP + +#this is so that you can load dashboards previously saved, TODO: make the name of the pod variable +dump_dashboards: # @param: name of the dashborad + kubectl exec -i pod/mongodb-webjive-test-0 -n $(KUBE_NAMESPACE) -- mongodump --archive > $(DASHBOARD) + +load_dashboards: # @param: name of the dashborad + kubectl exec -i pod/mongodb-webjive-test-0 -n $(KUBE_NAMESPACE) -- mongorestore --archive < $(DASHBOARD) + + + + diff --git a/csp-lmc-mid/.make/postdeploy.mk b/csp-lmc-mid/.make/postdeploy.mk deleted file mode 100644 index ffc6536934bc77e3caa4d02fd02ba9211803df15..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/.make/postdeploy.mk +++ /dev/null @@ -1,130 +0,0 @@ -.PHONY: k8s_test smoketest template_tests tango_rest_ingress_check - -# -# IMAGE_TO_TEST defines the tag of the Docker image to test -# -IMAGE_TO_TEST ?= nexus.engageska-portugal.pt/ska-docker/tango-vscode:0.2.4## docker image that will be run for testing purpose -#IMAGE_TO_TEST = $(DOCKER_REGISTRY_HOST)/$(DOCKER_REGISTRY_USER)/$(PROJECT):latest -# Test runner - run to completion job in K8s -TEST_RUNNER = test-makefile-runner-$(CI_JOB_ID)-$(KUBE_NAMESPACE)-$(HELM_RELEASE)##name of the pod running the k8s_tests -# -# defines a function to copy the ./test-harness directory into the K8s TEST_RUNNER -# and then runs the requested make target in the container. -# capture the output of the test in a build folder inside the container -# -TANGO_HOST = databaseds-tango-base-$(HELM_RELEASE):10000 -MARK ?= fast## this will allow to add the mark parameter of pytest -SLEEPTIME ?= 30s ##amount of sleep time for the smoketest target - -# -# defines a function to copy the ./test-harness directory into the K8s TEST_RUNNER -# and then runs the requested make target in the container. -# capture the output of the test in a tar file -# stream the tar file base64 encoded to the Pod logs -# -ktest = tar -c post-deployment/ | \ - kubectl run $(TEST_RUNNER) \ - --namespace $(KUBE_NAMESPACE) -i --wait --restart=Never \ - --image-pull-policy=IfNotPresent \ - --image=$(IMAGE_TO_TEST) -- \ - /bin/bash -c "mkdir csp-lmc-mid && tar xv --directory csp-lmc-mid --strip-components 1 --warning=all && cd csp-lmc-mid && \ - make KUBE_NAMESPACE=$(KUBE_NAMESPACE) HELM_RELEASE=$(HELM_RELEASE) TANGO_HOST=$(TANGO_HOST) MARK=$(MARK) $1 && \ - tar -czvf /tmp/build.tgz build && \ - echo '~~~~BOUNDARY~~~~' && \ - cat /tmp/build.tgz | base64 && \ - echo '~~~~BOUNDARY~~~~'" \ - 2>&1 - -# run the test function -# save the status -# clean out build dir -# print the logs minus the base64 encoded payload -# pull out the base64 payload and unpack build/ dir -# base64 payload is given a boundary "~~~~BOUNDARY~~~~" and extracted using perl -# clean up the run to completion container -# exit the saved status -ktest: smoketest## test the application on K8s - $(call ktest,test); \ - status=$$?; \ - rm -fr build; \ - kubectl --namespace $(KUBE_NAMESPACE) logs $(TEST_RUNNER) | \ - perl -ne 'BEGIN {$$on=0;}; if (index($$_, "~~~~BOUNDARY~~~~")!=-1){$$on+=1;next;}; print if $$on % 2;' | \ - base64 -d | tar -xzf -; \ - kubectl --namespace $(KUBE_NAMESPACE) delete pod $(TEST_RUNNER); \ - exit $$status - - -smoketest: ## check that the number of waiting containers is zero (10 attempts, wait time 30s). - @echo "Smoke test START"; \ - n=10; \ - while [ $$n -gt 0 ]; do \ - waiting=`kubectl get pods -n $(KUBE_NAMESPACE) -o=jsonpath='{.items[*].status.containerStatuses[*].state.waiting.reason}' | wc -w`; \ - echo "Waiting containers=$$waiting"; \ - if [ $$waiting -ne 0 ]; then \ - echo "Waiting $(SLEEPTIME) for pods to become running...#$$n"; \ - sleep $(SLEEPTIME); \ - fi; \ - if [ $$waiting -eq 0 ]; then \ - echo "Smoke test SUCCESS"; \ - exit 0; \ - fi; \ - if [ $$n -eq 1 ]; then \ - waiting=`kubectl get pods -n $(KUBE_NAMESPACE) -o=jsonpath='{.items[*].status.containerStatuses[*].state.waiting.reason}' | wc -w`; \ - echo "Smoke test FAILS"; \ - echo "Found $$waiting waiting containers: "; \ - kubectl get pods -n $(KUBE_NAMESPACE) -o=jsonpath='{range .items[*].status.containerStatuses[?(.state.waiting)]}{.state.waiting.message}{"\n"}{end}'; \ - exit 1; \ - fi; \ - n=`expr $$n - 1`; \ - done - -template_tests: - rc=0; \ - for chrt in `ls charts/`; do \ - helm unittest -f template_tests/*_test.yaml charts/$$chrt \ - || rc=2 && continue; \ - done; \ - exit $$rc - -tango_rest_ingress_check: ## curl test Tango REST API - https://tango-controls.readthedocs.io/en/latest/development/advanced/rest-api.html#tango-rest-api-implementations - @echo "---------------------------------------------------" - @echo "Test HTTP:"; echo "" - curl -u "tango-cs:tango" -XGET http://tango.rest.$(INGRESS_HOST)/tango/rest/rc4/hosts/databaseds-tango-base-$(HELM_RELEASE)/10000 | json_pp - # @echo "", echo "" - # @echo "---------------------------------------------------" - # @echo "Test HTTPS:"; echo "" - # curl -k -u "tango-cs:tango" -XGET https://tango.rest.$(INGRESS_HOST)/tango/rest/rc4/hosts/databaseds-tango-base-$(HELM_RELEASE)/10000 | json_pp - # @echo "" - -oet_podname = $(shell kubectl get pods -l app=rest-oet-$(HELM_RELEASE) -o=jsonpath='{..metadata.name}') -sut_cdm_ver= $(shell kubectl exec -it $(oet_podname) pip list | grep "cdm-shared-library" | awk ' {print $$2}' | awk 'BEGIN { FS = "+" } ; {print $$1}') -sut_cdm_cur_ver=$(shell grep "cdm-shared-library" post-deployment/SUT_requirements.txt | awk 'BEGIN { FS = "==" } ; {print $$2}') -sut_oet_ver = $(shell kubectl exec -it $(oet_podname) pip list | grep "observation-execution-tool" | awk ' {print $$2}' | awk 'BEGIN { FS = "+" } ; {print $$1}') -sut_oet_cur_ver=$(shell grep "observation-execution-tool" post-deployment/SUT_requirements.txt | awk 'BEGIN { FS = "==" } ; {print $$2}') - -check_oet_packages: - @echo "MVP is based on cdm-shared-library=$(sut_cdm_ver)" - @echo "Test are based on cdm-shared-library=$(sut_cdm_cur_ver)" - @if [ $(sut_cdm_ver) != $(sut_cdm_cur_ver) ] ; then \ - echo "Warning: cdm-shared-library package for MVP is not the same as used for testing!"; \ - fi - @echo "MVP is based on observation-execution-tool=$(sut_oet_ver)" - @echo "Test are based on observation-execution-tool=$(sut_oet_cur_ver)" - @if [ $(sut_oet_ver) != $(sut_oet_cur_ver) ] ; then \ - echo "Warning: observation-execution-tool package for MVP is not the same as used for testing!"; \ - fi - -##the following section is for developers requiring the testing pod to be instantiated with a volume mappig to skampi --include dev-testing.mk - -timestamp=$(shell date -u +"%s") - -sleepy_time: - sleep 5s - -measure_time: - time1=$$SECONDS; \ - make sleepy_time; \ - time2=$$SECONDS; \ - elapsed=$$((time2 - time1)); \ - echo $$elapsed diff --git a/csp-lmc-mid/.make/release.mk b/csp-lmc-mid/.make/release.mk index cdc58a1ceccabd3ea976ca6932ef08574ad22920..e1597a486126937cd4272e94fa96b7aa65edc80b 100644 --- a/csp-lmc-mid/.make/release.mk +++ b/csp-lmc-mid/.make/release.mk @@ -39,6 +39,13 @@ IMAGE=$(DOCKER_REGISTRY_HOST)/$(DOCKER_REGISTRY_USER)/$(NAME) VERSION=$(shell . $(RELEASE_SUPPORT) ; getVersion) TAG=$(shell . $(RELEASE_SUPPORT); getTag) BASE_RELEASE=$(shell . $(RELEASE_SUPPORT) ;getRelease) +BASE_VERSION=$(shell . $(RELEASE_SUPPORT) ;getBaseVersion) + +ifeq ($(BRANCH_NAME), master) +IMAGE_TAG ?= $(BASE_RELEASE) +else +IMAGE_TAG ?= $(BASE_VERSION)-dev +endif SHELL=/bin/bash @@ -68,12 +75,13 @@ docker-build: .release echo docker tag $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE) ;\ docker tag $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE) ;\ else \ - echo docker tag $(IMAGE):$(VERSION) $(IMAGE):latest ;\ - echo docker tag $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE) ;\ - docker tag $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE) ;\ + echo "Image tag: $(IMAGE):$(VERSION) $(IMAGE):$(IMAGE_TAG)" ;\ + docker tag $(IMAGE):$(VERSION) $(IMAGE):$(IMAGE_TAG) ;\ + echo "Image tag $(IMAGE):$(VERSION) $(IMAGE):latest ";\ docker tag $(IMAGE):$(VERSION) $(IMAGE):latest ; \ fi + .release: @echo "release=0.0.0" > .release @echo "tag=$(NAME)-0.0.0" >> .release @@ -86,15 +94,8 @@ push: pre-push do-push post-push ## push the image to the Docker registry do-push: @echo "Git branch: $(BRANCH_NAME)"; \ - if [ $(BRANCH_NAME) == "master" ]; then \ - echo "Image tag: $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE)" ;\ - docker tag $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE);\ - docker push $(IMAGE):$(BASE_RELEASE); \ - else \ - echo "Image tag: $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE)-dev" ;\ - docker tag $(IMAGE):$(VERSION) $(IMAGE):$(BASE_RELEASE)-dev ;\ - docker push $(IMAGE):$(BASE_RELEASE)-dev ;\ - fi + echo "Pushing image : $(IMAGE):$(IMAGE_TAG)" ;\ + docker push $(IMAGE):$(IMAGE_TAG) snapshot: build push diff --git a/csp-lmc-mid/Makefile b/csp-lmc-mid/Makefile index c72abd72ca7b27f1958ed6c5a059d3e42cf58ba2..87410d4985264f3ce7893f6560d06a911e65f844 100644 --- a/csp-lmc-mid/Makefile +++ b/csp-lmc-mid/Makefile @@ -1,5 +1,5 @@ # -# Project makefile for a Tango project. You should normally only need to modify +# Project makefile for Mid CSP:LMC project. You should normally only need to modify # DOCKER_REGISTRY_USER and PROJECT below. # @@ -10,38 +10,30 @@ # DOCKER_REGISTRY_USER and PROJECT to give a final Docker tag of # nexus.engageska-portugal.pt/tango-example/powersupply # +DOCKER_REGISTRY_USER:=ska-docker PROJECT = mid-csp-lmc -DSCONFIG_JSON_FILE ?= csp-lmc-mid/charts/csp-lmc-mid/data/configuration.json - # KUBE_NAMESPACE defines the Kubernetes Namespace that will be deployed to # using Helm. If this does not already exist it will be created -KUBE_NAMESPACE ?= csp-proto +KUBE_NAMESPACE ?= mid-csp # HELM_RELEASE is the release that all Kubernetes resources will be labelled # with HELM_RELEASE ?= test # HELM_CHART the chart name -HELM_CHART ?= mid-csp - -# HELM CHART PACKAGE -HELM_PACKAGE ?= charts/csp-proto - -# INGRESS_HOST is the host name used in the Ingress resource definition for -# publishing services via the Ingress Controller -INGRESS_HOST ?= $(HELM_RELEASE).$(HELM_CHART).local +HELM_CHART ?= mid-csp-umbrella -# Optional creation of the tango-base dependency -ENABLE_TANGO_BASE ?= true +# UMBRELLA_CHART_PATH Path of the umbrella chart to work with +UMBRELLA_CHART_PATH ?= charts/mid-csp-umbrella/ # Fixed variables # Timeout for gitlab-runner when run locally TIMEOUT = 86400 # Helm version -HELM_VERSION = v3.2.4 +HELM_VERSION = v3.3.1 # kubectl version -KUBERNETES_VERSION = v1.14.1 +KUBERNETES_VERSION = v1.19.2 # Docker, K8s and Gitlab CI variables # gitlab-runner debug mode - turn on with non-empty value @@ -55,24 +47,24 @@ DOCKER_VOLUMES ?= /var/run/docker.sock:/var/run/docker.sock # registry credentials - user/pass/registry - set these in PrivateRules.mak DOCKER_REGISTRY_USER_LOGIN ?= ## registry credentials - user - set in PrivateRules.mak CI_REGISTRY_PASS_LOGIN ?= ## registry credentials - pass - set in PrivateRules.mak -CI_REGISTRY ?= gitlab.com/ska-telescope/csp-lmc +CI_REGISTRY ?= gitlab.com/ska-telescope/csp-lmc/csp-lmc-mid CI_PROJECT_DIR ?= . KUBE_CONFIG_BASE64 ?= ## base64 encoded kubectl credentials for KUBECONFIG KUBECONFIG ?= /etc/deploy/config ## KUBECONFIG location + XAUTHORITYx ?= ${XAUTHORITY} -ifneq ($(CI_JOB_ID),) THIS_HOST := $(shell ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | head -n1) DISPLAY := $(THIS_HOST):0 -endif # define private overrides for above variables in here -include PrivateRules.mak # Test runner - run to completion job in K8s -TEST_RUNNER = test-runner-$(HELM_CHART)-$(HELM_RELEASE) +# name of the pod running the k8s_tests +TEST_RUNNER = test-makefile-runner-$(CI_JOB_ID)-$(KUBE_NAMESPACE)-$(HELM_RELEASE) # # include makefile to pick up the standard Make targets, e.g., 'make build' @@ -80,12 +72,13 @@ TEST_RUNNER = test-runner-$(HELM_CHART)-$(HELM_RELEASE) # ('make interactive', 'make test', etc.) are defined in this file. # include .make/release.mk +include .make/docker.mk include .make/k8s.mk -include .make/postdeploy.mk -package: ## package all existing charts into a git based repo - mkdir -p helm-repo - helm package $(HELM_PACKAGE) --destination ./helm-repo ; \ - cd ./helm-repo && helm repo index . +# +# Defines a default make target so that help is printed if make is called +# without a target +# +.DEFAULT_GOAL := help -.PHONY: all test up down help k8s show lint deploy delete logs describe mkcerts localip namespace delete_namespace ingress_check kubeconfig kubectl_dependencies helm_dependencies rk8s_test k8s_test rlint +.PHONY: all test up down help k8s show lint logs describe mkcerts localip namespace delete_namespace ingress_check kubeconfig kubectl_dependencies helm_dependencies rk8s_test k8s_test rlint diff --git a/csp-lmc-mid/charts/csp-proto/Chart.yaml b/csp-lmc-mid/charts/csp-proto/Chart.yaml deleted file mode 100644 index e4f8d6d635bd708c59a2122920692d8e21094e32..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/csp-proto/Chart.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -appVersion: "0.6.9" -description: A Helm chart for deploying the Mid_CSP.LMC devices on Kubernetes -name: csp-proto -version: 0.2.2 -icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png diff --git a/csp-lmc-mid/charts/csp-proto/data/configuration.json b/csp-lmc-mid/charts/csp-proto/data/configuration.json deleted file mode 100644 index fd23f9d50c5104df828e1ab0053fb79889111eed..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/csp-proto/data/configuration.json +++ /dev/null @@ -1,1563 +0,0 @@ -{ - "servers": { - "CspMaster": { - "csp": { - "CspMaster": { - "mid_csp/elt/master": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "fspMembership": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportFSPSubarrayMembership" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "reportFSPAdminMode": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportFSPAdminMode" - ] - }, - "reportFSPHealthState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportFSPHealthState" - ] - }, - "reportFSPState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportFSPState" - ] - }, - "reportVCCAdminMode": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportVCCAdminMode" - ] - }, - "reportVCCHealthState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportVCCHealthState" - ] - }, - "reportVCCState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportVCCState" - ] - }, - "vccMembership": { - "__root_att": [ - "mid_csp_cbf/sub_elt/master/reportVCCSubarrayMembership" - ] - } - }, - "properties": { - "CspMidCbf": [ - "mid_csp_cbf/sub_elt/master" - ], - "CspMidPss": [ - "mid_csp_pss/sub_elt/master" - ], - "CspMidPst": [ - "mid_csp_pst/sub_elt/master" - ], - "CspSubarrays": [ - "mid_csp/elt/subarray_01", - "mid_csp/elt/subarray_02", - "mid_csp/elt/subarray_03" - ], - "MaxCapabilities": [ - "Subarray:16", - "VlbiBeam:20", - "TimingBeam:16", - "SearchBeam:1500" - ], - "polled_attr": [ - "healthstate", - "1000", - "adminmode", - "1000", - "state", - "1000", - "csppststate", - "1000", - "cspcbfstate", - "1000", - "csppsthealthstate", - "1000", - "pssadminmode", - "1000", - "cbfadminmode", - "1000", - "csppssstate", - "1000", - "pstadminmode", - "1000", - "commandprogress", - "3000", - "cspcbfhealthstate", - "1000", - "csppsshealthstate", - "1000" - ] - } - } - } - } - }, - "CspSubarray": { - "sub1": { - "CspSubarray": { - "mid_csp/elt/subarray_01": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "receptors": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_01/receptors" - ] - }, - "vccHealthState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_01/vccHealthState" - ] - }, - "vccState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_01/vccState" - ] - }, - "cbfOutputLink": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_01/outputLinksDistribution" - ] - } - }, - "properties": { - "CspMaster": [ - "mid_csp/elt/master" - ], - "SubID": [ - "1" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "obsstate", - "1000", - "obsmode", - "1000" - ] - } - } - } - }, - "sub2": { - "CspSubarray": { - "mid_csp/elt/subarray_02": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "receptors": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_02/receptors" - ] - }, - "vccHealthState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_02/vccHealthState" - ] - }, - "vccState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_02/vccState" - ] - }, - "cbfOutputLink": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_02/outputLinksDistribution" - ] - } - }, - "properties": { - "CspMaster": [ - "mid_csp/elt/master" - ], - "SubID": [ - "2" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "obsstate", - "1000", - "obsmode", - "1000" - ] - } - } - } - }, - "sub3": { - "CspSubarray": { - "mid_csp/elt/subarray_03": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "receptors": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_03/receptors" - ] - }, - "vccHealthState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_03/vccHealthState" - ] - }, - "vccState": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_03/vccState" - ] - }, - "cbfOutputLink": { - "__root_att": [ - "mid_csp_cbf/sub_elt/subarray_03/outputLinksDistribution" - ] - } - }, - "properties": { - "CspMaster": [ - "mid_csp/elt/master" - ], - "SubID": [ - "3" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "obsstate", - "1000", - "obsmode", - "1000" - ] - } - } - } - } - }, - "CspTelState": { - "csp": { - "CspTelState": { - "mid_csp/elt/telstate": { - "attribute_properties": { - }, - "properties": { - } - } - } - } - }, - "DataBaseds": { - "2": { - "DataBase": { - "sys/database/2": {} - } - } - }, - "CbfMaster": { - "master": { - "CbfMaster": { - "mid_csp_cbf/sub_elt/master": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfSubarray": [ - "mid_csp_cbf/sub_elt/subarray_01", - "mid_csp_cbf/sub_elt/subarray_02", - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "MaxCapabilities": [ - "VCC:4", - "FSP:4", - "Subarray:3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "reportfspstate", - "1000", - "reportvccadminmode", - "1000", - "reportvcchealthstate", - "1000", - "receptortovcc", - "1000", - "reportvccsubarraymembership", - "1000", - "reportfspsubarraymembership", - "1000", - "reportfsphealthstate", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "subarrayscanid", - "1000", - "reportfspadminmode", - "1000", - "commandprogress", - "2000", - "reportsubarrayhealthstate", - "1000", - "reportvccstate", - "1000", - "reportsubarrayadminmode", - "1000", - "vcctoreceptor", - "3000", - "reportsubarraystate", - "3000", - "state", - "1000" - ] - } - } - } - } - }, - "CbfSubarrayMulti": { - "cbfSubarray-01": { - "CbfSubarray": { - "mid_csp_cbf/sub_elt/subarray_01": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "scanID": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/01_01", - "mid_csp_cbf/fspSubarray/02_01", - "mid_csp_cbf/fspSubarray/03_01", - "mid_csp_cbf/fspSubarray/04_01" - ], - "SW1Address": [ - "mid_csp_cbf/sw1/01" - ], - "SW2Address": [ - "mid_csp_cbf/sw2/01" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "fsphealthstate", - "1000", - "fspstate", - "1000", - "vccstate", - "1000", - "vcchealthstate", - "1000", - "obsstate", - "1000", - "scanid", - "1000", - "outputLinksDistribution", - "1000" - ] - } - } - }, - "SearchWindow": { - "mid_csp_cbf/sw1/01": {}, - "mid_csp_cbf/sw2/01": {} - } - }, - "cbfSubarray-02": { - "CbfSubarray": { - "mid_csp_cbf/sub_elt/subarray_02": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "scanID": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/01_02", - "mid_csp_cbf/fspSubarray/02_02", - "mid_csp_cbf/fspSubarray/03_02", - "mid_csp_cbf/fspSubarray/04_02" - ], - "SW1Address": [ - "mid_csp_cbf/sw1/02" - ], - "SW2Address": [ - "mid_csp_cbf/sw2/02" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "scanid", - "1000", - "healthstate", - "1000", - "state", - "1000", - "obsstate", - "1000", - "vcchealthstate", - "1000", - "adminmode", - "1000", - "fspstate", - "1000", - "fsphealthstate", - "1000", - "vccstate", - "1000" - ] - } - } - }, - "SearchWindow": { - "mid_csp_cbf/sw1/02": {}, - "mid_csp_cbf/sw2/02": {} - } - }, - "cbfSubarray-03": { - "CbfSubarray": { - "mid_csp_cbf/sub_elt/subarray_03": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "scanID": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/01_03", - "mid_csp_cbf/fspSubarray/02_03", - "mid_csp_cbf/fspSubarray/03_03", - "mid_csp_cbf/fspSubarray/04_03" - ], - "SW1Address": [ - "mid_csp_cbf/sw1/03" - ], - "SW2Address": [ - "mid_csp_cbf/sw2/03" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "scanid", - "1000", - "healthstate", - "1000", - "state", - "1000", - "obsstate", - "1000", - "vcchealthstate", - "1000", - "adminmode", - "1000", - "fspstate", - "1000", - "fsphealthstate", - "1000", - "vccstate", - "1000" - ] - } - } - }, - "SearchWindow": { - "mid_csp_cbf/sw1/03": {}, - "mid_csp_cbf/sw2/03": {} - } - } - }, - "FspMulti": { - "fsp-01": { - "Fsp": { - "mid_csp_cbf/fsp/01": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/01" - ], - "FspID": [ - "1" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/01" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/01" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/01" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/01_01", - "mid_csp_cbf/fspSubarray/01_02", - "mid_csp_cbf/fspSubarray/01_03" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/01": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/01": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/01": {} - }, - "FspSubarray": { - "mid_csp_cbf/fspSubarray/01_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "1" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/01_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "1" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/01_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "1" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/01": {} - } - }, - "fsp-02": { - "Fsp": { - "mid_csp_cbf/fsp/02": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/02" - ], - "FspID": [ - "2" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/02" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/02" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/02" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/02_01", - "mid_csp_cbf/fspSubarray/02_02", - "mid_csp_cbf/fspSubarray/02_03" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/02": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/02": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/02": {} - }, - "FspSubarray": { - "mid_csp_cbf/fspSubarray/02_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "2" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/02_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "2" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/02_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "2" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/02": {} - } - }, - "fsp-03": { - "Fsp": { - "mid_csp_cbf/fsp/03": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/03" - ], - "FspID": [ - "3" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/03" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/03" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/03" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/03_01", - "mid_csp_cbf/fspSubarray/03_02" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/03": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/03": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/03": {} - }, - "FspSubarray": { - "mid_csp_cbf/fspSubarray/03_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "3" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/03_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "3" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/03_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "3" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/03": {} - } - }, - "fsp-04": { - "Fsp": { - "mid_csp_cbf/fsp/04": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/04" - ], - "FspID": [ - "4" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/04" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/04" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/04" - ], - "FspSubarray": [ - "mid_csp_cbf/fspSubarray/04_01", - "mid_csp_cbf/fspSubarray/04_02" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/04": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/04": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/04": {} - }, - "FspSubarray": { - "mid_csp_cbf/fspSubarray/04_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "4" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/04_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "4" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspSubarray/04_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "4" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/04": {} - } - } - }, - "VccMulti": { - "vcc-001": { - "Vcc": { - "mid_csp_cbf/vcc/001": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/001" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/001" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/001" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/001" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/001" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/001" - ], - "VccID": [ - "1" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/001": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/001": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/001": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/001": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/001": {}, - "mid_csp_cbf/vcc_sw2/001": {} - } - }, - "vcc-002": { - "Vcc": { - "mid_csp_cbf/vcc/002": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/002" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/002" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/002" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/002" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/002" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/002" - ], - "VccID": [ - "2" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/002": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/002": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/002": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/002": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/002": {}, - "mid_csp_cbf/vcc_sw2/002": {} - } - }, - "vcc-003": { - "Vcc": { - "mid_csp_cbf/vcc/003": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/003" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/003" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/003" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/003" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/003" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/003" - ], - "VccID": [ - "3" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/003": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/003": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/003": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/003": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/003": {}, - "mid_csp_cbf/vcc_sw2/003": {} - } - }, - "vcc-004": { - "Vcc": { - "mid_csp_cbf/vcc/004": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/004" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/004" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/004" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/004" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/004" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/004" - ], - "VccID": [ - "4" - ], - "polled_attr": [ - "state", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/004": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/004": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/004": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/004": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/004": {}, - "mid_csp_cbf/vcc_sw2/004": {} - } - } - }, - "DataBaseds": { - "2": { - "DataBase": { - "sys/database/2": {} - } - } - }, - "TangoAccessControl": { - "1": { - "TangoAccessControl": { - "sys/access_control/1": {} - } - } - }, - "TangoTest": { - "test": { - "TangoTest": { - "sys/tg_test/1": {} - } - } - } - } -} - diff --git a/csp-lmc-mid/charts/csp-proto/templates/_helpers.tpl b/csp-lmc-mid/charts/csp-proto/templates/_helpers.tpl deleted file mode 100644 index 90ccf07fb020c654936ca6aa8c87c227d381f9f0..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/csp-proto/templates/_helpers.tpl +++ /dev/null @@ -1,44 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "csp-proto.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "csp-proto.labels" }} -app: {{ template "csp-proto.name" . }} -chart: {{ template "csp-proto.chart" . }} -release: {{ .Release.Name }} -heritage: {{ .Release.Service }} -system: {{ .Values.system }} -telescope: {{ .Values.telescope }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "csp-proto.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "csp-proto.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/csp-lmc-mid/charts/csp-proto/templates/csplmc.yaml b/csp-lmc-mid/charts/csp-proto/templates/csplmc.yaml deleted file mode 100644 index 6457e94f0a8626520eaae51fd42643e3b07967e0..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/csp-proto/templates/csplmc.yaml +++ /dev/null @@ -1,186 +0,0 @@ -{{ if .Values.csplmc.enabled }} - ---- -# Device Server configurations -apiVersion: v1 -kind: ConfigMap -metadata: - name: "{{ template "csp-proto.name" . }}-configuration" - namespace: {{ .Release.Namespace }} - labels: - {{- include "csp-proto.labels" . | indent 4 }} - component: configurator - function: deployment - intent: enabling - domain: self-configuration -data: - cspconfig.json: -{{ (tpl (.Files.Glob "data/cspconfig.json").AsConfig . ) | indent 2 }} - bootstrap.sh: | - #/bin/sh - json2tango -w -a -u data/cspconfig.json - rc=$? - if [ $rc -eq 0 ]; then - echo "finished normally." - exit 0 - else - if [ $rc -eq 2 ]; then - echo "finished with an update." - exit 0 - else - echo "finished with an ERROR." - exit $rc - fi - fi - ---- -# run once Job for loading Device Server config -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "csp-proto.name" . }}-configurator - namespace: {{ .Release.Namespace }} - labels: - {{- include "csp-proto.labels" . | indent 4 }} - component: configurator - function: deployment - intent: enabling - domain: self-configuration -spec: - ttlSecondsAfterFinished: 100 - template: - spec: - initContainers: - - name: check-databaseds-ready - image: "{{ .Values.dsconfig.image.registry }}/{{ .Values.dsconfig.image.image }}:{{ .Values.dsconfig.image.tag }}" - imagePullPolicy: {{ .Values.dsconfig.image.pullPolicy }} - command: - - /usr/local/bin/wait-for-it.sh - - {{ if .Values.tangoDatabaseDS -}} {{ .Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ .Release.Name }}:10000 {{- end }} - - --timeout=180 - - --strict - - -- - - echo databaseds ready - containers: - - name: dsconfig - image: "{{ .Values.dsconfig.image.registry }}/{{ .Values.dsconfig.image.image }}:{{ .Values.dsconfig.image.tag }}" - imagePullPolicy: {{ .Values.dsconfig.image.pullPolicy }} - command: # exit code 2 is CONFIG_APPLIED - https://github.com/MaxIV-KitsControls/lib-maxiv-dsconfig/blob/master/dsconfig/utils.py#L11 !!!! this should not be an error !!!! - - sh - - data/bootstrap.sh - env: - - name: TANGO_HOST - value: {{ if .Values.tangoDatabaseDS -}} {{ .Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ .Release.Name }}:10000 {{- end }} - volumeMounts: - - name: configuration - mountPath: data - readOnly: true - volumes: - - name: configuration - configMap: - name: "{{ template "csp-proto.name" . }}-configuration" - restartPolicy: Never - -{{- $global := . }} -{{- range $deviceserver := .Values.deviceServers }} - ---- -# giving a dummy Service entry ensures that the single pod is DNS addressable -apiVersion: v1 -kind: Service -metadata: - name: {{ template "csp-proto.name" $global }}-{{ $deviceserver.name }} - namespace: {{ $global.Release.Namespace }} - labels: - {{- include "csp-proto.labels" $global | indent 4 }} - component: {{ $deviceserver.name }} - function: {{ $deviceserver.function }} - domain: {{ $deviceserver.domain }} - subsystem: {{ $global.Values.subsystem }} - intent: production -spec: - clusterIP: None - ports: - - name: dummy # Actually, no port is needed. - port: 1234 - targetPort: 1234 - selector: - subsystem: {{ $global.Values.subsystem }} - component: {{ $deviceserver.name }} - ---- -# Single Pod separate statefulset per Device Server -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "csp-proto.name" $global }}-{{ $deviceserver.name }} - namespace: {{ $global.Release.Namespace }} - labels: - {{- include "csp-proto.labels" $global | indent 4 }} - component: {{ $deviceserver.name }} - function: {{ $deviceserver.function }} - domain: {{ $deviceserver.domain }} - subsystem: {{ $global.Values.subsystem }} - intent: production -spec: - selector: - matchLabels: - component: {{ $deviceserver.name }} - subsystem: {{ $global.Values.subsystem }} - serviceName: {{ template "csp-proto.name" $global }}-{{ $deviceserver.name }} - replicas: 1 - template: - metadata: - labels: - {{- include "csp-proto.labels" $global | indent 8 }} - component: {{ $deviceserver.name }} - function: {{ $deviceserver.function }} - domain: {{ $deviceserver.domain }} - subsystem: {{ $global.Values.subsystem }} - intent: production - cspServer: {{$deviceserver.name}} - spec: - initContainers: - - name: check-databaseds-ready - image: {{ $global.Values.dsconfig.image.registry }}/{{ $global.Values.dsconfig.image.image }}:{{ $global.Values.dsconfig.image.tag }} - imagePullPolicy: {{ $global.Values.dsconfig.image.pullPolicy }} - # 'tango_admin --check-device' will exit 0 once databaseds is alive and the dsconfig job is complete - command: - - retry - - --max=10 - - -- - - tango_admin - - --check-device - - mid_csp/elt/master - env: - - name: TANGO_HOST - value: {{ if $global.Values.tangoDatabaseDS -}} {{ $global.Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ $global.Release.Name }}:10000 {{- end }} - containers: - - name: deviceserver - image: "{{ $global.Values.csplmc.image.registry }}/{{ $global.Values.csplmc.image.image }}:{{ $global.Values.csplmc.image.tag }}" - imagePullPolicy: {{ $global.Values.csplmc.image.pullPolicy }} - command: - - sh - args: -{{ toYaml $deviceserver.args | indent 10 }} - env: - - name: TANGO_HOST - value: {{ if $global.Values.tangoDatabaseDS -}} {{ $global.Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ $global.Release.Name }}:10000 {{- end }} - resources: -{{ toYaml $global.Values.resources | indent 10 }} -{{- with $global.Values.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with $global.Values.affinity }} - affinity: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with $global.Values.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} -{{- end }} - -{{- end }} # end of range - -{{ end }} diff --git a/csp-lmc-mid/charts/csp-proto/values.yaml b/csp-lmc-mid/charts/csp-proto/values.yaml deleted file mode 100644 index 54d34cd5044664de6f0832a409921c08682cf85e..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/csp-proto/values.yaml +++ /dev/null @@ -1,81 +0,0 @@ -# Default values for csp-proto. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -display: ":0" -xauthority: "~/.Xauthority" - -system: csp -subsystem: csp-lmc -telescope: SKA-mid - -csplmc: - enabled: true - image: - registry: nexus.engageska-portugal.pt/ska-docker - image: mid-csp-lmc - tag: 0.6.9-dev - pullPolicy: IfNotPresent - -deviceServers: - - name: midcapabilitymonitor - function: csp-capability-monitoring - domain: csp-monitoring - args: - - "-c" - - "/venv/bin/python /app/csp_lmc_mid/MidCspCapabilityMonitor.py monitor" - - name: midcspmaster - function: csp-central-control - domain: csp-monitoring - args: - - "-c" - - "retry --max=20 -- tango_admin --ping-device mid_csp_cbf/sub_elt/master &&\ - retry --max=5 -- tango_admin --ping-device mid_csp/capability_monitor/search_beams &&\ - /venv/bin/python /app/csp_lmc_mid/MidCspMaster.py master" - - name: midcspsubarray01 - function: csp-subarray-observation - domain: subarray - args: - - "-c" - - "retry --max=10 -- tango_admin --ping-device mid_csp/elt/master &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/sub_elt/subarray_01 &&\ - /venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py subarray1" - - name: midcspsubarray02 - function: csp-subarray-observation - domain: subarray - args: - - "-c" - - "retry --max=10 -- tango_admin --ping-device mid_csp/elt/master &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/sub_elt/subarray_02 &&\ - /venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py subarray2" - - name: midcspsubarray03 - function: csp-subarray-observation - domain: subarray - args: - - "-c" - - "retry --max=10 -- tango_admin --ping-device mid_csp/elt/master &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/sub_elt/subarray_03 &&\ - /venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py subarray3" - -dsconfig: - image: - registry: nexus.engageska-portugal.pt/ska-docker - image: tango-dsconfig - tag: 1.2.5.1 - pullPolicy: IfNotPresent - -nodeSelector: {} - -affinity: {} - -tolerations: [] - -resources: - requests: - cpu: 150m # 150m = 0.15 CPU - memory: 128Mi # 128Mi = 0.12 GB mem - ephemeral-storage: 256Mi - limits: - cpu: 250m # 250m = 0.25 CPU - memory: 256Mi # 256Mi = 0.25 GB mem - ephemeral-storage: 512Mi diff --git a/csp-lmc-mid/charts/csp-proto/values.yaml.new b/csp-lmc-mid/charts/csp-proto/values.yaml.new deleted file mode 100644 index 9700530062b13d49d77068b9e71281226b6f82e2..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/csp-proto/values.yaml.new +++ /dev/null @@ -1,59 +0,0 @@ -# Default values for csp-proto. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -display: ":0" -xauthority: "~/.Xauthority" - - -csplmc: - enabled: true - image: - registry: nexus.engageska-portugal.pt/ska-docker - image: mid-csp-lmc - tag: 0.6.8-452d0a0-dirty - pullPolicy: IfNotPresent - -deviceServers: - - name: midcapabilitymonitor - args: - - "-c" - - "/venv/bin/python /app/csp_lmc_mid/MidCspCapabilityMonitor.py monitor" - - name: midcspmaster - args: - - "-c" - - "retry --max=5 -- tango_admin --ping-device mid_csp/capability_monitor/search_beams &&\ - /venv/bin/python /app/csp_lmc_mid/MidCspMaster.py master" - - name: midcspsubarray01 - args: - - "-c" - - " /venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py subarray1" - - name: midcspsubarray02 - args: - - "-c" - - "/venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py subarray2" - - name: midcspsubarray03 - args: - - "-c" - - "/venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py subarray3" - -dsconfig: - image: - registry: nexus.engageska-portugal.pt/ska-docker - image: tango-dsconfig - tag: 1.2.5.1 - pullPolicy: IfNotPresent - -nodeSelector: {} - -affinity: {} - -tolerations: [] - -resources: - requests: - cpu: 150m # 150m = 0.15 CPU - memory: 128Mi # 128Mi = 0.12 GB mem - limits: - cpu: 250m # 250m = 0.25 CPU - memory: 256Mi # 256Mi = 0.25 GB mem diff --git a/csp-lmc-mid/charts/mid-csp-umbrella/Chart.yaml b/csp-lmc-mid/charts/mid-csp-umbrella/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f99d2365d19d9b72cd8c6fe8d16759c57a51bbcc --- /dev/null +++ b/csp-lmc-mid/charts/mid-csp-umbrella/Chart.yaml @@ -0,0 +1,19 @@ +apiVersion: v2 +name: mid-csp-umbrella +description: A Helm chart for deploying the whole Mid_CSP prototype on Kubernetes +version: 0.1.0 +appVersion: 0.6.9 +icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png +dependencies: +- name: tango-base + version: 0.2.7 + repository: https://nexus.engageska-portugal.pt/repository/helm-chart +- name: mid-cbf + version: 0.1.1 + repository: https://nexus.engageska-portugal.pt/repository/helm-chart +- name: mid-cbf-tmleafnode + version: 0.1.1 + repository: https://nexus.engageska-portugal.pt/repository/helm-chart +- name: mid-csp + version: 0.1.0 + repository: "file://../mid-csp" diff --git a/csp-lmc-mid/charts/csp-proto/secrets/.gitkeep b/csp-lmc-mid/charts/mid-csp-umbrella/secrets/.gitkeep similarity index 100% rename from csp-lmc-mid/charts/csp-proto/secrets/.gitkeep rename to csp-lmc-mid/charts/mid-csp-umbrella/secrets/.gitkeep diff --git a/csp-lmc-mid/charts/csp-proto/secrets/tls.crt b/csp-lmc-mid/charts/mid-csp-umbrella/secrets/tls.crt similarity index 100% rename from csp-lmc-mid/charts/csp-proto/secrets/tls.crt rename to csp-lmc-mid/charts/mid-csp-umbrella/secrets/tls.crt diff --git a/csp-lmc-mid/charts/csp-proto/secrets/tls.key b/csp-lmc-mid/charts/mid-csp-umbrella/secrets/tls.key similarity index 100% rename from csp-lmc-mid/charts/csp-proto/secrets/tls.key rename to csp-lmc-mid/charts/mid-csp-umbrella/secrets/tls.key diff --git a/csp-lmc-mid/charts/mid-csp-umbrella/values.yaml b/csp-lmc-mid/charts/mid-csp-umbrella/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b66269e8d66dbe8ad00b189f7976f37fbda36461 --- /dev/null +++ b/csp-lmc-mid/charts/mid-csp-umbrella/values.yaml @@ -0,0 +1,28 @@ +display: ":0" +xauthority: "~/.Xauthority" +minikube: true + +global: + minikube: true + tango_host: databaseds-tango-base-test:10000 + environment_variables: [] + sub-system: + tango-base: + enabled: false + +tango-base: + vnc: + enabled: false + tangorest: + enabled: false + ingress: + enabled: false + tangodb: + use_pv: false + +#mid-csp: +# midccsplmc: +# image: +# registry: nexus.engageska-portugal.pt/ska-docker +# image: mid-csp-lmc +# tag: 0.6.9 diff --git a/csp-lmc-mid/charts/mid-csp/Chart.lock b/csp-lmc-mid/charts/mid-csp/Chart.lock deleted file mode 100644 index e6a9d22102a1cc1197ab07821e0cb9f033788f48..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/Chart.lock +++ /dev/null @@ -1,9 +0,0 @@ -dependencies: -- name: csp-lmc - repository: "file://../csp-proto" - version: 0.5.3 -- name: tango-base - repository: https://gitlab.com/ska-telescope/skampi/-/raw/master/repository - version: 0.1.1 -digest: sha256:9d9ae70d4070c7eba89e967b744e8f37fda46778dd0af3b05e49cb642ae32a36 -generated: "2020-09-04T08:16:47.853296221+02:00" diff --git a/csp-lmc-mid/charts/mid-csp/Chart.yaml b/csp-lmc-mid/charts/mid-csp/Chart.yaml index 9cbfdb6056ab18b1ec85a7f0580ad0c2bff5fabb..ccd8ef2dcd0ed0c07b8e7944119017379413e5f0 100644 --- a/csp-lmc-mid/charts/mid-csp/Chart.yaml +++ b/csp-lmc-mid/charts/mid-csp/Chart.yaml @@ -1,15 +1,15 @@ apiVersion: v2 -appVersion: 0.6.9 -description: A Helm chart for deploying the whole Mid_CSP prototype on Kubernetes name: mid-csp +description: A Helm chart for deploying the Mid_CSP.LMC devices on Kubernetes version: 0.1.0 +appVersion: "0.6.9" icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png dependencies: +- name: tango-util + version: 0.2.4 + repository: https://nexus.engageska-portugal.pt/repository/helm-chart - name: tango-base - version: 0.1.2 - repository: https://gitlab.com/ska-telescope/skampi/-/raw/master/repository - condition: tango-base.enabled -- name: csp-proto - version: 0.2.2 - repository: "file://../csp-proto" - condition: csp-proto.enabled + version: 0.2.7 + repository: https://nexus.engageska-portugal.pt/repository/helm-chart + condition: tango-base.enabled,global.sub-system.tango-base.enabled + diff --git a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/Chart.yaml b/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/Chart.yaml deleted file mode 100644 index d86101a7f758530b00b50b65f2b29fd27b31aeba..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/Chart.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -appVersion: "1.0" -description: A Helm chart for deploying the CSP_Mid.LMC CBF prototype on Kubernetes -name: cbf-proto -version: 0.4.0 -icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png diff --git a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/data/midcbfconfig.json b/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/data/midcbfconfig.json deleted file mode 100644 index e2fcaa5410326ffe107568b3543ca572730e21ef..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/data/midcbfconfig.json +++ /dev/null @@ -1,1719 +0,0 @@ -{ - "servers": { - "CbfMaster": { - "master": { - "CbfMaster": { - "mid_csp_cbf/sub_elt/master": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfSubarray": [ - "mid_csp_cbf/sub_elt/subarray_01", - "mid_csp_cbf/sub_elt/subarray_02", - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "MaxCapabilities": [ - "VCC:4", - "FSP:4", - "Subarray:2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "reportfspstate", - "1000", - "reportvccadminmode", - "1000", - "reportvcchealthstate", - "1000", - "receptortovcc", - "1000", - "reportfspCorrSubarraymembership", - "1000", - "reportfsphealthstate", - "1000", - "healthstate", - "1000", - "adminmode", - "1000", - "subarrayconfigid", - "1000", - "reportfspadminmode", - "1000", - "commandprogress", - "2000", - "reportsubarrayhealthstate", - "1000", - "reportvccstate", - "1000", - "reportsubarrayadminmode", - "1000", - "vcctoreceptor", - "3000", - "reportsubarraystate", - "3000", - "state", - "1000" - ] - } - } - } - } - }, - "CbfSubarrayMulti": { - "cbfSubarray-01": { - "CbfSubarray": { - "mid_csp_cbf/sub_elt/subarray_01": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "scanID": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_01", - "mid_csp_cbf/fspCorrSubarray/02_01", - "mid_csp_cbf/fspCorrSubarray/03_01", - "mid_csp_cbf/fspCorrSubarray/04_01" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_01", - "mid_csp_cbf/fspPssSubarray/02_01", - "mid_csp_cbf/fspPssSubarray/03_01", - "mid_csp_cbf/fspPssSubarray/04_01" - ], - "SW1Address": [ - "mid_csp_cbf/sw1/01" - ], - "SW2Address": [ - "mid_csp_cbf/sw2/01" - ], - "PssConfigAddress": [ - "mid_csp_cbf/pssconfig/01" - ], - "CorrConfigAddress": [ - "mid_csp_cbf/corrconfig/01" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "healthstate", - "1000", - "fsphealthstate", - "1000", - "fspstate", - "1000", - "vccstate", - "1000", - "vcchealthstate", - "1000", - "configid", - "1000", - "fspList", - "1000", - "outputLinksDistribution", - "1000" - ] - } - } - }, - "SearchWindow": { - "mid_csp_cbf/sw1/01": {}, - "mid_csp_cbf/sw2/01": {} - }, - "CbfSubarrayPssConfig": { - "mid_csp_cbf/pssConfig/01": { - "properties": { - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_01", - "mid_csp_cbf/fspPssSubarray/02_01", - "mid_csp_cbf/fspPssSubarray/03_01", - "mid_csp_cbf/fspPssSubarray/04_01" - ], - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ] - } - } - }, - "CbfSubarrayCorrConfig": { - "mid_csp_cbf/corrConfig/01": { - "properties": { - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_01", - "mid_csp_cbf/fspCorrSubarray/02_01", - "mid_csp_cbf/fspCorrSubarray/03_01", - "mid_csp_cbf/fspCorrSubarray/04_01" - ], - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ] - } - } - }, - "SendConfig": { - "mid_csp_cbf/SendConfig/01": { - "properties": { - "SubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ] - } - } - } - }, - "cbfSubarray-02": { - "CbfSubarray": { - "mid_csp_cbf/sub_elt/subarray_02": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "scanID": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_02", - "mid_csp_cbf/fspCorrSubarray/02_02", - "mid_csp_cbf/fspCorrSubarray/03_02", - "mid_csp_cbf/fspCorrSubarray/04_02" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_02", - "mid_csp_cbf/fspPssSubarray/02_02", - "mid_csp_cbf/fspPssSubarray/03_02", - "mid_csp_cbf/fspPssSubarray/04_02" - ], - "SW1Address": [ - "mid_csp_cbf/sw1/02" - ], - "SW2Address": [ - "mid_csp_cbf/sw2/02" - ], - "PssConfigAddress": [ - "mid_csp_cbf/pssconfig/02" - ], - "CorrConfigAddress": [ - "mid_csp_cbf/corrconfig/02" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "configid", - "1000", - "healthstate", - "1000", - "vcchealthstate", - "1000", - "adminmode", - "1000", - "fspstate", - "1000", - "fspList", - "1000", - "fsphealthstate", - "1000", - "vccstate", - "1000", - "outputLinksDistribution", - "1000" - ] - } - } - }, - "SearchWindow": { - "mid_csp_cbf/sw1/02": {}, - "mid_csp_cbf/sw2/02": {} - }, - "CbfSubarrayPssConfig": { - "mid_csp_cbf/pssConfig/02": { - "properties": { - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_02", - "mid_csp_cbf/fspPssSubarray/02_02", - "mid_csp_cbf/fspPssSubarray/03_02", - "mid_csp_cbf/fspPssSubarray/04_02" - ], - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ] - } - } - }, - "CbfSubarrayCorrConfig": { - "mid_csp_cbf/corrConfig/02": { - "properties": { - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_02", - "mid_csp_cbf/fspCorrSubarray/02_02", - "mid_csp_cbf/fspCorrSubarray/03_02", - "mid_csp_cbf/fspCorrSubarray/04_02" - ], - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ] - } - } - }, - "SendConfig": { - "mid_csp_cbf/SendConfig/02": { - "properties": { - "SubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ] - } - } - } - - }, - "cbfSubarray-03": { - "CbfSubarray": { - "mid_csp_cbf/sub_elt/subarray_03": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "obsState": { - "abs_change": [ - "-1", - "1" - ] - }, - "scanID": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "FSP": [ - "mid_csp_cbf/fsp/01", - "mid_csp_cbf/fsp/02", - "mid_csp_cbf/fsp/03", - "mid_csp_cbf/fsp/04" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_03", - "mid_csp_cbf/fspCorrSubarray/02_03", - "mid_csp_cbf/fspCorrSubarray/03_03", - "mid_csp_cbf/fspCorrSubarray/04_03" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_03", - "mid_csp_cbf/fspPssSubarray/02_03", - "mid_csp_cbf/fspPssSubarray/03_03", - "mid_csp_cbf/fspPssSubarray/04_03" - ], - "SW1Address": [ - "mid_csp_cbf/sw1/03" - ], - "SW2Address": [ - "mid_csp_cbf/sw2/03" - ], - "PssConfigAddress": [ - "mid_csp_cbf/pssconfig/03" - ], - "CorrConfigAddress": [ - "mid_csp_cbf/corrconfig/03" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ], - "polled_attr": [ - "healthstate", - "1000", - "fsphealthstate", - "1000", - "fspstate", - "1000", - "vccstate", - "1000", - "vcchealthstate", - "1000", - "configid", - "1000", - "fspList", - "1000", - "outputLinksDistribution", - "1000" - ] - } - } - }, - "SearchWindow": { - "mid_csp_cbf/sw1/03": {}, - "mid_csp_cbf/sw2/03": {} - }, - "CbfSubarrayPssConfig": { - "mid_csp_cbf/pssConfig/03": { - "properties": { - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_03", - "mid_csp_cbf/fspPssSubarray/02_03", - "mid_csp_cbf/fspPssSubarray/03_03", - "mid_csp_cbf/fspPssSubarray/04_03" - ], - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ] - } - } - }, - "CbfSubarrayCorrConfig": { - "mid_csp_cbf/corrConfig/03": { - "properties": { - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_03", - "mid_csp_cbf/fspCorrSubarray/02_03", - "mid_csp_cbf/fspCorrSubarray/03_03", - "mid_csp_cbf/fspCorrSubarray/04_03" - ], - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ] - } - } - }, - "SendConfig": { - "mid_csp_cbf/SendConfig/03": { - "properties": { - "SubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ] - } - } - } - } - }, - "DataBaseds": { - "2": { - "DataBase": { - "sys/database/2": {} - } - } - }, - "FspMulti": { - "fsp-01": { - "Fsp": { - "mid_csp_cbf/fsp/01": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/01" - ], - "FspID": [ - "1" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/01" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/01" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/01" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/01_01", - "mid_csp_cbf/fspCorrSubarray/01_02", - "mid_csp_cbf/fspCorrSubarray/01_03" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/01_01", - "mid_csp_cbf/fspPssSubarray/01_02", - "mid_csp_cbf/fspPssSubarray/01_03" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/01": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/01": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/01": {} - }, - "FspCorrSubarray": { - "mid_csp_cbf/fspCorrSubarray/01_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "1" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/01_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "1" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/01_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "1" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspPssSubarray": { - "mid_csp_cbf/fspPssSubarray/01_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "1" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/01_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "1" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/01_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "1" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/01": {} - } - }, - "fsp-02": { - "Fsp": { - "mid_csp_cbf/fsp/02": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/02" - ], - "FspID": [ - "2" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/02" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/02" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/02" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/02_01", - "mid_csp_cbf/fspCorrSubarray/02_02", - "mid_csp_cbf/fspCorrSubarray/02_03" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/02_01", - "mid_csp_cbf/fspPssSubarray/02_02", - "mid_csp_cbf/fspPssSubarray/02_03" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/02": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/02": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/02": {} - }, - "FspCorrSubarray": { - "mid_csp_cbf/fspCorrSubarray/02_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "2" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/02_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "2" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/02_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "2" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspPssSubarray": { - "mid_csp_cbf/fspPssSubarray/02_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "2" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/02_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "2" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/02_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "2" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/02": {} - } - }, - "fsp-03": { - "Fsp": { - "mid_csp_cbf/fsp/03": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/03" - ], - "FspID": [ - "3" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/03" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/03" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/03" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/03_01", - "mid_csp_cbf/fspCorrSubarray/03_02", - "mid_csp_cbf/fspCorrSubarray/03_03" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/03_01", - "mid_csp_cbf/fspPssSubarray/03_02", - "mid_csp_cbf/fspPssSubarray/03_03" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/03": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/03": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/03": {} - }, - "FspCorrSubarray": { - "mid_csp_cbf/fspCorrSubarray/03_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "3" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/03_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "3" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/03_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "3" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspPssSubarray": { - "mid_csp_cbf/fspPssSubarray/03_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "3" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/03_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "3" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/03_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "3" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/03": {} - } - }, - "fsp-04": { - "Fsp": { - "mid_csp_cbf/fsp/04": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CorrelationAddress": [ - "mid_csp_cbf/fsp_corr/04" - ], - "FspID": [ - "4" - ], - "PSSAddress": [ - "mid_csp_cbf/fsp_pss/04" - ], - "PSTAddress": [ - "mid_csp_cbf/fsp_pst/04" - ], - "VLBIAddress": [ - "mid_csp_cbf/fsp_vlbi/04" - ], - "FspCorrSubarray": [ - "mid_csp_cbf/fspCorrSubarray/04_01", - "mid_csp_cbf/fspCorrSubarray/04_02", - "mid_csp_cbf/fspCorrSubarray/04_03" - ], - "FspPssSubarray": [ - "mid_csp_cbf/fspPssSubarray/04_01", - "mid_csp_cbf/fspPssSubarray/04_02", - "mid_csp_cbf/fspPssSubarray/04_03" - ], - "polled_attr": [ - "adminmode", - "1000", - "healthstate", - "1000", - "state", - "1000", - "subarraymembership", - "1000" - ] - } - } - }, - "FspCorr": { - "mid_csp_cbf/fsp_corr/04": {} - }, - "FspPss": { - "mid_csp_cbf/fsp_pss/04": {} - }, - "FspPst": { - "mid_csp_cbf/fsp_pst/04": {} - }, - "FspCorrSubarray": { - "mid_csp_cbf/fspCorrSubarray/04_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "4" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/04_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "4" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspCorrSubarray/04_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "4" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspPssSubarray": { - "mid_csp_cbf/fspPssSubarray/04_01": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - "FspID": [ - "4" - ], - "SubID": [ - "1" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/04_02": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - "FspID": [ - "4" - ], - "SubID": [ - "2" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - }, - "mid_csp_cbf/fspPssSubarray/04_03": { - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_03" - ], - "FspID": [ - "4" - ], - "SubID": [ - "3" - ], - "VCC": [ - "mid_csp_cbf/vcc/001", - "mid_csp_cbf/vcc/002", - "mid_csp_cbf/vcc/003", - "mid_csp_cbf/vcc/004" - ] - } - } - }, - "FspVlbi": { - "mid_csp_cbf/fsp_vlbi/04": {} - } - } - }, - "TangoAccessControl": { - "1": { - "TangoAccessControl": { - "sys/access_control/1": {} - } - } - }, - "TangoTest": { - "test": { - "TangoTest": { - "sys/tg_test/1": {} - } - } - }, - "VccMulti": { - "vcc-001": { - "Vcc": { - "mid_csp_cbf/vcc/001": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/001" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/001" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/001" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/001" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/001" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/001" - ], - "VccID": [ - "1" - ], - "polled_attr": [ - "healthstate", - "1000", - "adminmode", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/001": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/001": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/001": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/001": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/001": {}, - "mid_csp_cbf/vcc_sw2/001": {} - } - }, - "vcc-002": { - "Vcc": { - "mid_csp_cbf/vcc/002": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/002" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/002" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/002" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/002" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/002" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/002" - ], - "VccID": [ - "2" - ], - "polled_attr": [ - "healthstate", - "1000", - "adminmode", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/002": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/002": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/002": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/002": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/002": {}, - "mid_csp_cbf/vcc_sw2/002": {} - } - }, - "vcc-003": { - "Vcc": { - "mid_csp_cbf/vcc/003": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/003" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/003" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/003" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/003" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/003" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/003" - ], - "VccID": [ - "3" - ], - "polled_attr": [ - "healthstate", - "1000", - "adminmode", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/003": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/003": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/003": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/003": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/003": {}, - "mid_csp_cbf/vcc_sw2/003": {} - } - }, - "vcc-004": { - "Vcc": { - "mid_csp_cbf/vcc/004": { - "attribute_properties": { - "adminMode": { - "abs_change": [ - "-1", - "1" - ] - }, - "healthState": { - "abs_change": [ - "-1", - "1" - ] - }, - "subarrayMembership": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "Band1And2Address": [ - "mid_csp_cbf/vcc_band12/004" - ], - "Band3Address": [ - "mid_csp_cbf/vcc_band3/004" - ], - "Band4Address": [ - "mid_csp_cbf/vcc_band4/004" - ], - "Band5Address": [ - "mid_csp_cbf/vcc_band5/004" - ], - "SW1Address": [ - "mid_csp_cbf/vcc_sw1/004" - ], - "SW2Address": [ - "mid_csp_cbf/vcc_sw2/004" - ], - "VccID": [ - "4" - ], - "polled_attr": [ - "healthstate", - "1000", - "adminmode", - "1000" - ] - } - } - }, - "VccBand1And2": { - "mid_csp_cbf/vcc_band12/004": {} - }, - "VccBand3": { - "mid_csp_cbf/vcc_band3/004": {} - }, - "VccBand4": { - "mid_csp_cbf/vcc_band4/004": {} - }, - "VccBand5": { - "mid_csp_cbf/vcc_band5/004": {} - }, - "VccSearchWindow": { - "mid_csp_cbf/vcc_sw1/004": {}, - "mid_csp_cbf/vcc_sw2/004": {} - } - } - }, - "TmCspSubarrayLeafNodeTest": { - "tm": { - "TmCspSubarrayLeafNodeTest": { - "ska_mid/tm_leaf_node/csp_subarray01": { - "attribute_properties": { - "dopplerPhaseCorrection": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_01" - ], - - "polled_attr": [ - "delaymodel", - "1000", - "visdestinationaddress", - "1000", - "dopplerphasecorrection", - "1000" - ] - } - } - } - }, - "tm2": { - "TmCspSubarrayLeafNodeTest": { - "ska_mid/tm_leaf_node/csp_subarray02": { - "attribute_properties": { - "dopplerPhaseCorrection": { - "abs_change": [ - "-1", - "1" - ] - } - }, - "properties": { - "CbfMasterAddress": [ - "mid_csp_cbf/sub_elt/master" - ], - "CbfSubarrayAddress": [ - "mid_csp_cbf/sub_elt/subarray_02" - ], - - "polled_attr": [ - "delaymodel", - "1000", - "visdestinationaddress", - "1000", - "dopplerphasecorrection", - "1000" - ] - } - } - } - } - } - } -} diff --git a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/secrets/.gitkeep b/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/secrets/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/templates/_helpers.tpl b/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/templates/_helpers.tpl deleted file mode 100644 index 4333692c9a0afead92c1e04913a7e84b7959e66d..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/templates/_helpers.tpl +++ /dev/null @@ -1,43 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "cbf-proto.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{/* -Common labels -*/}} -{{- define "cbf-proto.labels" }} -app: {{ template "cbf-proto.name" . }} -chart: {{ template "cbf-proto.chart" . }} -release: {{ .Release.Name }} -heritage: {{ .Release.Service }} -system: {{ .Values.system }} -subsystem: {{ .Values.subsystem }} -telescope: {{ .Values.telescope }} -{{- end }} -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "cbf-proto.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "cbf-proto.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/templates/midcbf.yaml b/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/templates/midcbf.yaml deleted file mode 100644 index 41dc71f2c41d1b0d175bbd91332d83f0eb88d598..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/templates/midcbf.yaml +++ /dev/null @@ -1,182 +0,0 @@ -{{ if .Values.midcbfmcs.enabled }} - ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: "{{ template "cbf-proto.name" . }}-configuration" - namespace: {{ .Release.Namespace }} - labels: - {{- include "cbf-proto.labels" . | indent 4 }} - component: configurator - function: deployment - intent: enabling - domain: self-configuration -data: - midcbfconfig.json: -{{ (tpl (.Files.Glob "data/midcbfconfig.json").AsConfig . ) | indent 2 }} - bootstrap.sh: | - #/bin/sh - json2tango -w -a -u data/midcbfconfig.json - rc=$? - if [ $rc -eq 0 ]; then - echo "finished normally." - exit 0 - else - if [ $rc -eq 2 ]; then - echo "finished with an update." - exit 0 - else - echo "finished with an ERROR." - exit $rc - fi - fi - ---- -# run once Job for loading Device Server config -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "cbf-proto.name" . }}-configurator - namespace: {{ .Release.Namespace }} - labels: - {{- include "cbf-proto.labels" . | indent 4 }} - component: configurator - function: deployment - intent: enabling - domain: self-configuration -spec: - ttlSecondsAfterFinished: 100 - template: - spec: - initContainers: - - name: check-databaseds-ready - image: "{{ .Values.dsconfig.image.registry }}/{{ .Values.dsconfig.image.image }}:{{ .Values.dsconfig.image.tag }}" - imagePullPolicy: {{ .Values.dsconfig.image.pullPolicy }} - command: - - /usr/local/bin/wait-for-it.sh - - {{ if .Values.tangoDatabaseDS -}} {{ .Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ .Release.Name }}:10000 {{- end }} - - --timeout=180 - - --strict - - -- - - echo databaseds ready - containers: - - name: dsconfig - image: "{{ .Values.dsconfig.image.registry }}/{{ .Values.dsconfig.image.image }}:{{ .Values.dsconfig.image.tag }}" - imagePullPolicy: {{ .Values.dsconfig.image.pullPolicy }} - command: # exit code 2 is CONFIG_APPLIED - https://github.com/MaxIV-KitsControls/lib-maxiv-dsconfig/blob/master/dsconfig/utils.py#L11 !!!! this should not be an error !!!! - - sh - - data/bootstrap.sh - env: - - name: TANGO_HOST - value: {{ if .Values.tangoDatabaseDS -}} {{ .Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ .Release.Name }}:10000 {{- end }} - volumeMounts: - - name: configuration - mountPath: data - readOnly: true - volumes: - - name: configuration - configMap: - name: "{{ template "cbf-proto.name" . }}-configuration" - restartPolicy: Never - -{{- $global := . }} -{{- range $deviceserver := .Values.deviceServers }} - ---- -# giving a dummy Service entry ensures that the single pod is DNS addressable -apiVersion: v1 -kind: Service -metadata: - name: {{ template "cbf-proto.name" $global }}-{{ $deviceserver.name }} - namespace: {{ $global.Release.Namespace }} - labels: - {{- include "cbf-proto.labels" $global | indent 4 }} - component: {{ $deviceserver.name }} - function: {{ $deviceserver.function }} - domain: {{ $deviceserver.domain }} - intent: production -spec: - clusterIP: None - ports: - - name: dummy # Actually, no port is needed. - port: 1234 - targetPort: 1234 - selector: - subsystem: {{ $global.Values.subsystem }} - component: {{ $deviceserver.name }} - ---- -# Single Pod separate statefulset per Device Server -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "cbf-proto.name" $global }}-{{ $deviceserver.name }} - namespace: {{ $global.Release.Namespace }} - labels: - {{- include "cbf-proto.labels" $global | indent 4 }} - component: {{ $deviceserver.name }} - function: {{ $deviceserver.function }} - domain: {{ $deviceserver.domain }} - intent: production -spec: - selector: - matchLabels: - component: {{ $deviceserver.name }} - subsystem: {{ $global.Values.subsystem }} - serviceName: {{ template "cbf-proto.name" $global }}-{{ $deviceserver.name }} - replicas: 1 - template: - metadata: - labels: - {{- include "cbf-proto.labels" $global | indent 8 }} - component: {{ $deviceserver.name }} - function: {{ $deviceserver.function }} - domain: {{ $deviceserver.domain }} - intent: production - cspServer: {{$deviceserver.name}} - spec: - initContainers: - - name: check-databaseds-ready - image: {{ $global.Values.dsconfig.image.registry }}/{{ $global.Values.dsconfig.image.image }}:{{ $global.Values.dsconfig.image.tag }} - imagePullPolicy: {{ $global.Values.dsconfig.image.pullPolicy }} - # 'tango_admin --check-device' will exit 0 once databaseds is alive and the dsconfig job is complete - command: - - retry - - --max=10 - - -- - - tango_admin - - --check-device - - mid_csp_cbf/sub_elt/master - env: - - name: TANGO_HOST - value: {{ if $global.Values.tangoDatabaseDS -}} {{ $global.Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ $global.Release.Name }}:10000 {{- end }} - containers: - - name: deviceserver - image: "{{ $global.Values.midcbfmcs.image.registry }}/{{ $global.Values.midcbfmcs.image.image }}:{{ $global.Values.midcbfmcs.image.tag }}" - imagePullPolicy: {{ $global.Values.midcbfmcs.image.pullPolicy }} - command: - - sh - args: -{{ toYaml $deviceserver.args | indent 10 }} - env: - - name: TANGO_HOST - value: {{ if $global.Values.tangoDatabaseDS -}} {{ $global.Values.tangoDatabaseDS }}:10000 {{- else -}} databaseds-tango-base-{{ $global.Release.Name }}:10000 {{- end }} - resources: -{{ toYaml $global.Values.resources | indent 10 }} -{{- with $global.Values.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with $global.Values.affinity }} - affinity: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with $global.Values.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} -{{- end }} - -{{- end }} # end of range - -{{ end }} diff --git a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/values.yaml b/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/values.yaml deleted file mode 100644 index cf475c93292456aa05d40f85d950f7140c27c782..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/charts/cbf-proto/values.yaml +++ /dev/null @@ -1,155 +0,0 @@ -# Default values for csp-proto. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -display: ":0" -xauthority: "~/.Xauthority" - -system: csp -subsystem: cbfmcs-mid -telescope: SKA-mid - -midcbfmcs: - enabled: true - image: - registry: nexus.engageska-portugal.pt/ska-docker - image: mid-cbf-mcs - tag: 0.4.5-2e83f4c - pullPolicy: IfNotPresent - -dsconfig: - image: - registry: nexus.engageska-portugal.pt/ska-docker - image: tango-dsconfig - tag: 1.2.5.1 - pullPolicy: IfNotPresent - -deviceServers: - - name: cbfmaster - function: cbf-central-control - domain: csp-monitoring - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/001 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/002 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/003 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/004 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/fsp/01 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/fsp/02 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/fsp/03 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/fsp/04 &&\ - /venv/bin/python /app/tangods/CbfMaster/CbfMaster/CbfMaster.py master" - - name: cbfsubarray01 - function: cbf-subarray-observation - domain: subarray - args: - - -c - - "retry --max=5 -- tango_admin --ping-device mid_csp_cbf/sub_elt/master &&\ - /venv/bin/python /app/tangods/CbfSubarray/CbfSubarrayMulti/CbfSubarrayMulti.py cbfSubarray-01" - - name: cbfsubarray02 - function: cbf-subarray-observation - domain: subarray - args: - - -c - - "retry --max=5 -- tango_admin --ping-device mid_csp_cbf/sub_elt/master &&\ - /venv/bin/python /app/tangods/CbfSubarray/CbfSubarrayMulti/CbfSubarrayMulti.py cbfSubarray-02" - - name: cbfsubarray03 - function: cbf-subarray-observation - domain: subarray - args: - - -c - - "retry --max=5 -- tango_admin --ping-device mid_csp_cbf/sub_elt/master &&\ - /venv/bin/python /app/tangods/CbfSubarray/CbfSubarrayMulti/CbfSubarrayMulti.py cbfSubarray-03" - - name: vcc001 - function: coarse-channelisation - domain: sensing - args: - - -c - - "/venv/bin/python /app/tangods/Vcc/VccMulti/VccMulti.py vcc-001" - - name: vcc002 - function: coarse-channelisation - domain: sensing - args: - - -c - - "/venv/bin/python /app/tangods/Vcc/VccMulti/VccMulti.py vcc-002" - - name: vcc003 - function: coarse-channelisation - domain: sensing - args: - - -c - - "/venv/bin/python /app/tangods/Vcc/VccMulti/VccMulti.py vcc-003" - - name: vcc004 - function: coarse-channelisation - domain: sensing - args: - - -c - - "/venv/bin/python /app/tangods/Vcc/VccMulti/VccMulti.py vcc-004" - - name: fsp01 - function: fsp-processing - domain: signal-processing - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/001 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/002 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/003 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/004 &&\ - /venv/bin/python /app/tangods/Fsp/FspMulti/FspMulti.py fsp-01" - - name: fsp02 - function: fsp-processing - domain: signal-processing - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/001 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/002 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/003 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/004 &&\ - /venv/bin/python /app/tangods/Fsp/FspMulti/FspMulti.py fsp-02" - - name: fsp03 - function: fsp-processing - domain: signal-processing - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/001 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/002 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/003 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/004 &&\ - /venv/bin/python /app/tangods/Fsp/FspMulti/FspMulti.py fsp-03" - - name: fsp04 - function: fsp-processing - domain: signal-processing - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/001 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/002 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/003 &&\ - retry --max=10 -- tango_admin --ping-device mid_csp_cbf/vcc/004 &&\ - /venv/bin/python /app/tangods/Fsp/FspMulti/FspMulti.py fsp-04" - - name: tmcspsubarrayleafnodetest - function: simul-observation - domain: telstate - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/sub_elt/subarray_01 &&\ - /venv/bin/python /app/tangods/TmCspSubarrayLeafNodeTest/TmCspSubarrayLeafNodeTest.py tm" - - name: tmcspsubarrayleafnodetest2 - function: simul-observation - domain: telstate - args: - - -c - - "retry --max=10 -- tango_admin --ping-device mid_csp_cbf/sub_elt/subarray_02 &&\ - /venv/bin/python /app/tangods/TmCspSubarrayLeafNodeTest/TmCspSubarrayLeafNodeTest.py tm2" - - -nodeSelector: {} - -affinity: {} - -tolerations: [] - -resources: - requests: - cpu: 100m # 100m = 0.10 CPU - memory: 128Mi # 128Mi = 0.12 GB mem - limits: - cpu: 200m # 200m = 0.20 CPU - memory: 256Mi # 256Mi = 0.25 GB mem diff --git a/csp-lmc-mid/charts/csp-proto/data/cspconfig.json b/csp-lmc-mid/charts/mid-csp/data/midcspconfig.json similarity index 100% rename from csp-lmc-mid/charts/csp-proto/data/cspconfig.json rename to csp-lmc-mid/charts/mid-csp/data/midcspconfig.json diff --git a/csp-lmc-mid/charts/mid-csp/secrets/.gitkeep b/csp-lmc-mid/charts/mid-csp/secrets/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/csp-lmc-mid/charts/mid-csp/secrets/tls.crt b/csp-lmc-mid/charts/mid-csp/secrets/tls.crt deleted file mode 100644 index 281f413bab4869e1ae55e7624ed42bfce8b13f19..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/secrets/tls.crt +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDRTCCAi2gAwIBAgIUCWlGy8z2r11G2Sc52B0zjGpytywwDQYJKoZIhvcNAQEL -BQAwMjEdMBsGA1UEAwwUdGVzdC5jc3AtcHJvdG8ubG9jYWwxETAPBgNVBAoMCE1p -bmlrdWJlMB4XDTIwMDkwNDA2NDM0OFoXDTIxMDkwNDA2NDM0OFowMjEdMBsGA1UE -AwwUdGVzdC5jc3AtcHJvdG8ubG9jYWwxETAPBgNVBAoMCE1pbmlrdWJlMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+y4kIIi+hU5fNdV1JTc4qCDh2VAO -lhXX5LmJAQbWWkzOWszOcqGB0g6P4CNIAgNVmFjPoPNsbxlBrKFpoI78p4y1iW4C -LOGkg4gwND1f8SNE7VJyqCiMti7SdBFF6LRNdp6WwmVKVuRdN4Tk+B+39dlTSVjx -Ykziqy7vRLwBsJlbhxIFRkFNdmzpucYTcjUfB4PM5my30ZGdqMnsZ5Mpzw/BkC+s -VRVMSKq1nmtgMYIZUTgdue/sC/SKuqH4FffiQZ6RLAABl1qXFU/A2RkjSn3VBuYh -CWXPgSvi5mxCWDqf4lGZR+yxWMD+t7AG4IuLUl+KeV8PIjvMWSKb+Fdy9wIDAQAB -o1MwUTAdBgNVHQ4EFgQUdnM99TO9Jn3Oi16QbSIqeDkQr1cwHwYDVR0jBBgwFoAU -dnM99TO9Jn3Oi16QbSIqeDkQr1cwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQsFAAOCAQEA5d3w4vrLHbto4NGfKyjORnqQyxEeI5eZe9xRBaxobdhMlFDshNjC -GTcOdcAiGU9jRn95fItJZraXMYCR+Ysf9edU+YEaVnKioWnCUflxBNa2tZ7c+sNC -zqvcRIYZIGGg1J4RYZ0i0XJsYKn+RCuhSPjR3C1nSN47PPjnk85hnUyofdGHDJ2W -p71ozY2o3lKuw9NiU9kqnW2NRW/QBZvKnGHdq2izP8ciZZJtCsz8Tz9I1AzL2qqx -G8UThABjlIVMzhoRjzQ6vI5mcP/ucJZ1nU2/sqOGI4aLVRNTlv5DsiuPmC6zHD/s -ApaI7734oQBu6SkIrJLNyNwk2cQusgX44Q== ------END CERTIFICATE----- diff --git a/csp-lmc-mid/charts/mid-csp/secrets/tls.key b/csp-lmc-mid/charts/mid-csp/secrets/tls.key deleted file mode 100644 index 5747df7263c31ce17210d17f8ea53ad15add313a..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/secrets/tls.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD7LiQgiL6FTl81 -1XUlNzioIOHZUA6WFdfkuYkBBtZaTM5azM5yoYHSDo/gI0gCA1WYWM+g82xvGUGs -oWmgjvynjLWJbgIs4aSDiDA0PV/xI0TtUnKoKIy2LtJ0EUXotE12npbCZUpW5F03 -hOT4H7f12VNJWPFiTOKrLu9EvAGwmVuHEgVGQU12bOm5xhNyNR8Hg8zmbLfRkZ2o -yexnkynPD8GQL6xVFUxIqrWea2AxghlROB257+wL9Iq6ofgV9+JBnpEsAAGXWpcV -T8DZGSNKfdUG5iEJZc+BK+LmbEJYOp/iUZlH7LFYwP63sAbgi4tSX4p5Xw8iO8xZ -Ipv4V3L3AgMBAAECggEBAIEBxdRf51qYUhZYN/6RSiwwF0+B6rvzJBt5n4BDfryK -TkIchrwhb4fvqr234TgHdmL02k8UN1Eoa666iIHKbsGvZ13afouGqPRVckyiaTB0 -qOYrPnBXw02e5sBuTrWiRVbzRQM6+t9+EtJ9EwzNXbKLmFdHs1KForXBOWrYFRYZ -6Yb4ElByKHwaLlqnkdySSSCLkc4Epm+UeXz09GJMwCre+XyYAz1p4iL6IuyQXAhr -IVnYo9zaNHFxVi9Oxvk0fjCv7GEKpY4NtFeSYa1a511ATF0S45qspsCkgUUXGsjF -7fXw13X/oF5bMdoIJ7n+M9jCoky93nksTuB4/kx+HyECgYEA/7IkVlaP6EqZyZby -voK7bjQX3mroLDk6poxg9Bp/j01DbfeLeZB8Yw1QBR3yuVMSoATN33T78F6bqA0W -ekuG30K6YYR5/JeibKTT6VY9edNLTkbsMQFVdbgrJf5KiMKibAELzG78WnTj9SND -xG8qUL30wWC0sfpSi7jDXtgQZ10CgYEA+3qfyynyfayMvbcGtdvCyBO6ZvDlpf/f -pIE1o1amnRiDvLzNNVADHgHa16Jd4ETfSohcgo4aF4QNG4BFE+w+hBjbBWQdtrAM -149+S+g/7U4hYvaeou4719fyFygDynBiF39Sx5ffluHzPmnJXhR8t1kDyMQ2jcb/ -EIYHFeanwmMCgYEAp8dBlrGIDhldXezBbYak7AQcoWIu5E3NEVnNiH8WsnY1R6QG -Dgdjxy8GEcV77mT3NK7SU80UP74kjxm/ZRHH9xl26OQfk0IAXx+suVBQWG7v2/Yn -p2RDqlHlZjG8wI5OO2ZYUpWE2uoWZlT0c6Gp938dagJFrv8dSPc8ozBNWzUCgYBa -6jkMzOxyzMfQ6nNNmdZwWNmBz8NmYPvsUB4hH/l6P9uYhzU0+ek2lvsUDAoeQyfq -nSO8uzzplX7bm2Ld0gHD5eyApXIskrcB00mYja1W0HE3gutVAgW2gcZu4rOEI18D -Ga/GorxdovA6dyoqjgOMkWzRz0XdubyKr7muDEZH+wKBgDw3y6Ujx0fTgENMgrLD -lj205wSOUZe9a5QJQ3HbsKh2qDY0nK2COMo8OW76+a5Vlk2PJLyXQGU2Ceuj+rUq -yY3+cVQfjI3dYv+5nTh4O1XRiZwVhHm/AkUlQ5n0C9KSa4Ejhpb8A7RUDAC8B8cn -p+IuCq0Nk9KtGwdvh9fH/hJ5 ------END PRIVATE KEY----- diff --git a/csp-lmc-mid/charts/mid-csp/templates/_helpers.tpl b/csp-lmc-mid/charts/mid-csp/templates/_helpers.tpl deleted file mode 100644 index bd04ea71305621f17ed373a12010152702f800e9..0000000000000000000000000000000000000000 --- a/csp-lmc-mid/charts/mid-csp/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "mid-csp.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "mid-csp.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "mid-csp.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "mid-csp.labels" -}} -helm.sh/chart: {{ include "mid-csp.chart" . }} -{{ include "mid-csp.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "mid-csp.selectorLabels" -}} -app.kubernetes.io/name: {{ include "mid-csp.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "mid-csp.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "mid-csp.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/csp-lmc-mid/charts/mid-csp/templates/deviceservers.yaml b/csp-lmc-mid/charts/mid-csp/templates/deviceservers.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a3142243f0bc92e7305ba3f4486ae5e42fca9104 --- /dev/null +++ b/csp-lmc-mid/charts/mid-csp/templates/deviceservers.yaml @@ -0,0 +1,15 @@ +{{ $localchart := . }} + +{{ template "tango-util.configuration.tpl" . }} + +{{ range $deviceserver := .Values.deviceServers }} + +{{ range $instance := $deviceserver.instances }} + +{{ $context := dict "deviceserver" $deviceserver "image" $deviceserver.image "local" $localchart "instance" $instance }} + +{{ template "tango-util.deviceserver.tpl" $context }} + +{{ end }} ## instances + +{{ end }} # deviceservers \ No newline at end of file diff --git a/csp-lmc-mid/charts/mid-csp/values.yaml b/csp-lmc-mid/charts/mid-csp/values.yaml index 5048f33d14311602239adfe2694a741089828442..42b5db9ac1c188d20e486bd2553c827747535f27 100644 --- a/csp-lmc-mid/charts/mid-csp/values.yaml +++ b/csp-lmc-mid/charts/mid-csp/values.yaml @@ -1,11 +1,126 @@ -# Default values for mid-csp. -csp-proto: - csplmc: - enabled: true -cbf-proto: - midcbfmcs: - enabled: true -tango-base: - tangodb: - enabled: true - use_pv: false +# Default values for mid-csp HEML chart. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +display: ":0" +xauthority: "~/.Xauthority" + +enabled: true + +system: csp +subsystem: csp-lmc +telescope: SKA-mid + +global: + minikube: true + tango_host: databaseds-tango-base-test:10000 + labels: + app: mid-csp-lmc +annotations: + app.gitlab.com/app: CI_PROJECT_PATH_SLUG + app.gitlab.com/env: CI_ENVIRONMENT_SLUG +dsconfig: + configuration_file: data/midcspconfig.json + image: + registry: nexus.engageska-portugal.pt/ska-docker + image: tango-dsconfig + tag: 1.5.0 + pullPolicy: IfNotPresent +itango: + image: + registry: nexus.engageska-portugal.pt/ska-docker + image: tango-itango + tag: 9.3.1 + pullPolicy: IfNotPresent + +midcsplmc: + image: + registry: nexus.engageska-portugal.pt/ska-docker + image: mid-csp-lmc + tag: 0.6.9 + pullPolicy: IfNotPresent + +resources: + requests: + cpu: 150m # 150m = 0.15 CPU + memory: 128Mi # 128Mi = 0.12 GB mem + ephemeral-storage: 256Mi + limits: + cpu: 250m # 250m = 0.25 CPU + memory: 256Mi # 256Mi = 0.25 GB mem + ephemeral-storage: 512Mi + +deviceServers: + - name: midcapabilitymonitor + function: csp-capability-monitoring + domain: csp-monitoring + command: "/venv/bin/python /app/csp_lmc_mid/MidCspCapabilityMonitor.py" + instances: ["monitor"] + depends_on: + - device: sys/database/2 + image: + registry: "{{.Values.midcsplmc.image.registry}}" + image: "{{.Values.midcsplmc.image.image}}" + tag: "{{.Values.midcsplmc.image.tag}}" + pullPolicy: "{{.Values.midcsplmc.image.pullPolicy}}" + - name: midcspmaster + function: csp-central-control + domain: csp-monitoring + command: "/venv/bin/python /app/csp_lmc_mid/MidCspMaster.py" + instances: ["master"] + depends_on: + - device: mid_csp_cbf/sub_elt/master + - device: mid_csp/capability_monitor/search_beams + - device: mid_csp/capability_monitor/timing_beams + - device: mid_csp/capability_monitor/vlbi_beams + image: + registry: "{{.Values.midcsplmc.image.registry}}" + image: "{{.Values.midcsplmc.image.image}}" + tag: "{{.Values.midcsplmc.image.tag}}" + pullPolicy: "{{.Values.midcsplmc.image.pullPolicy}}" + - name: midcspsubarray01 + function: csp-subarray-observation + domain: subarray + command: "/venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py " + instances: ["subarray1"] + depends_on: + - device: mid_csp/elt/master + - device: mid_csp_cbf/sub_elt/subarray_01 + image: + registry: "{{.Values.midcsplmc.image.registry}}" + image: "{{.Values.midcsplmc.image.image}}" + tag: "{{.Values.midcsplmc.image.tag}}" + pullPolicy: "{{.Values.midcsplmc.image.pullPolicy}}" + - name: midcspsubarray02 + function: csp-subarray-observation + domain: subarray + command: "/venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py " + instances: ["subarray2"] + depends_on: + - device: mid_csp/elt/master + - device: mid_csp_cbf/sub_elt/subarray_02 + image: + registry: "{{.Values.midcsplmc.image.registry}}" + image: "{{.Values.midcsplmc.image.image}}" + tag: "{{.Values.midcsplmc.image.tag}}" + pullPolicy: "{{.Values.midcsplmc.image.pullPolicy}}" + - name: midcspsubarray03 + function: csp-subarray-observation + domain: subarray + command: "/venv/bin/python /app/csp_lmc_mid/MidCspSubarray.py " + instances: ["subarray3"] + depends_on: + - device: mid_csp/elt/master + - device: mid_csp_cbf/sub_elt/subarray_03 + image: + registry: "{{.Values.midcsplmc.image.registry}}" + image: "{{.Values.midcsplmc.image.image}}" + tag: "{{.Values.midcsplmc.image.tag}}" + pullPolicy: "{{.Values.midcsplmc.image.pullPolicy}}" + +nodeSelector: {} + +affinity: {} + +tolerations: [] + diff --git a/csp-lmc-mid/tests/test_data/test_ConfigureScan_ADR4.json b/csp-lmc-mid/tests/test_data/test_ConfigureScan_ADR4.json index f3c12a6e4f83bb511f8f05eb97e0ab1691477e01..03bddfded5fa0dfd5a6b310996ef7262afd324fc 100644 --- a/csp-lmc-mid/tests/test_data/test_ConfigureScan_ADR4.json +++ b/csp-lmc-mid/tests/test_data/test_ConfigureScan_ADR4.json @@ -1,7 +1,7 @@ { "id": "sbi-mvp01-20200325-00002-science_A", "frequencyBand": "1", - "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray01/delayModel", + "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray_01/delayModel", "fsp": [ { diff --git a/csp-lmc-mid/tests/test_data/test_ConfigureScan_basic.json b/csp-lmc-mid/tests/test_data/test_ConfigureScan_basic.json index 45f56b4b8e21056c7cdbf2d4ce600428ccf16467..51f2dd633fb8a0ea814c612a543debb01405091d 100644 --- a/csp-lmc-mid/tests/test_data/test_ConfigureScan_basic.json +++ b/csp-lmc-mid/tests/test_data/test_ConfigureScan_basic.json @@ -1,7 +1,7 @@ { "id": "sbi-mvp01-20200325-00001-science_A", "frequencyBand": "1", - "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray01/delayModel", + "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray_01/delayModel", "fsp": [ { diff --git a/csp-lmc-mid/tests/test_data/test_ConfigureScan_invalid_cbf_json.json b/csp-lmc-mid/tests/test_data/test_ConfigureScan_invalid_cbf_json.json index 9a68e257c3bac812477699e8e56168164f970bdc..0cdffe2baf21e520ff397f2e4f3df06a9283ac10 100644 --- a/csp-lmc-mid/tests/test_data/test_ConfigureScan_invalid_cbf_json.json +++ b/csp-lmc-mid/tests/test_data/test_ConfigureScan_invalid_cbf_json.json @@ -1,7 +1,7 @@ { "id": "sbi-mvp01-20200325-00001-science_A", "frequencyBand": "6", - "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray01/delayModel", + "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray_01/delayModel", "fsp": [ { diff --git a/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_configID.json b/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_configID.json index c3a9ce2564916ce6e7dd16df573d565d017d4a13..a5635963bcdb4fd1ee5d0dd51c5a5431228e8195 100644 --- a/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_configID.json +++ b/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_configID.json @@ -1,6 +1,6 @@ { "frequencyBand": "1", - "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray01/delayModel", + "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray_01/delayModel", "fsp": [ { diff --git a/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_outputlink.json b/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_outputlink.json index 61a121bf8534268ae74f5ae2fa2ee68ddf528704..8a3db3f6c66e28b0e1ca9ac5be5f1ff0e0c7f592 100644 --- a/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_outputlink.json +++ b/csp-lmc-mid/tests/test_data/test_ConfigureScan_without_outputlink.json @@ -1,7 +1,7 @@ { "id": "sbi-mvp01-20200325-00001-science_A", "frequencyBand": "1", - "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray01/delayModel", + "delayModelSubscriptionPoint": "ska_mid/tm_leaf_node/csp_subarray_01/delayModel", "fsp": [ {