diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 784ce953a3d453d271830bab75b0e41f330303fa..c8202b72fb94ace6544a9a75aa8c64e32fe898d5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -70,7 +70,7 @@ ska-tango-examples-tests: stage: test tags: - k8srunner - retry: 2 + allow_failure: true script: - | VERS=$(make show-version RELEASE_CONTEXT_DIR=images/ska-tango-images-pytango-builder) diff --git a/.release b/.release index 9702b52f1d7100651ad0cf0ec6c34d1e9d669d2a..e10334296e81d270199542eabf294c131530ac42 100644 --- a/.release +++ b/.release @@ -1,2 +1,2 @@ -release=0.4.0 -tag=0.4.0 +release=0.4.1 +tag=0.4.1 diff --git a/charts/ska-tango-base/Chart.yaml b/charts/ska-tango-base/Chart.yaml index 6b84dbd8751a3fcb4dbd06dfbb3bf36f18cdf409..9e2df6aa344a87747b84e819577af46fa6213dec 100644 --- a/charts/ska-tango-base/Chart.yaml +++ b/charts/ska-tango-base/Chart.yaml @@ -1,10 +1,10 @@ apiVersion: v2 description: A Helm chart for deploying the TANGO base system on Kubernetes name: ska-tango-base -version: 0.4.0 -appVersion: 0.4.0 +version: 0.4.1 +appVersion: 0.4.1 icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png dependencies: - name: ska-tango-util - version: 0.4.0 + version: 0.4.1 repository: file://../ska-tango-util diff --git a/charts/ska-tango-base/templates/databaseds.yaml b/charts/ska-tango-base/templates/databaseds.yaml index 7175751eabe004f71fe77a16af74cd8f3aea815f..54f6e0b6cb1535c73d72f1bdf5eec25356993167 100644 --- a/charts/ska-tango-base/templates/databaseds.yaml +++ b/charts/ska-tango-base/templates/databaseds.yaml @@ -30,17 +30,20 @@ metadata: {{`{{- end }}`}} {{`{{- end }}`}} vault.hashicorp.com/role: "{{ .Values.databaseds.vault.role }}" +{{- if or (.Values.global.annotations) (.Values.annotations) }} {{ toYaml (coalesce .Values.global.annotations .Values.annotations) | indent 4 }} {{- end }} +{{- end }} spec: + usePV: {{ .Values.tangodb.use_pv }} {{- if or (.Values.global.minikube) (.Values.global.exposeAllDS) }} enableLoadBalancer: true {{- end }} imagePullPolicy: IfNotPresent {{- if (coalesce .Values.global.minikube .Values.minikube false) }} - tangDBStorageClass: standard + tangoDBStorageClass: standard {{- else }} - tangDBStorageClass: nfss1 + tangoDBStorageClass: nfss1 {{- end }} {{- else }} diff --git a/charts/ska-tango-base/templates/itango.yaml b/charts/ska-tango-base/templates/itango.yaml index 2a56b4fe70670374bd1a95c850a4d86e5e20dd8f..579b39a27915e6df9bd5273037b4b31729c722a3 100644 --- a/charts/ska-tango-base/templates/itango.yaml +++ b/charts/ska-tango-base/templates/itango.yaml @@ -1,9 +1,9 @@ -{{ if .Values.itango.enabled }} -{{ $default_tango_host := printf "%s-%s" "databaseds-tango-base-" .Release.Name }} -{{ $tango_host := tpl (coalesce .Values.global.tango_host .Values.tango_host $default_tango_host | toString) . }} -{{ $dsconfig := coalesce .Values.global.dsconfig .Values.dsconfig}} -{{ $tries := coalesce .Values.global.tries 10}} -{{ $sleep := coalesce .Values.global.sleep 5}} +{{- if .Values.itango.enabled }} +{{- $default_tango_host := printf "%s-%s" "databaseds-tango-base-" .Release.Name }} +{{- $tango_host := tpl (coalesce .Values.global.tango_host .Values.tango_host $default_tango_host | toString) . }} +{{- $dsconfig := coalesce .Values.global.dsconfig .Values.dsconfig}} +{{- $tries := coalesce .Values.global.tries 10}} +{{- $sleep := coalesce .Values.global.sleep 5}} --- apiVersion: v1 kind: Pod @@ -16,10 +16,10 @@ metadata: function: {{ .Values.itango.function }} domain: {{ .Values.itango.domain }} intent: {{ .Values.itango.intent }} -{{ if or (.Values.global.annotations) (.Values.annotations) }} +{{- if or (.Values.global.annotations) (.Values.annotations) }} annotations: {{ toYaml (coalesce .Values.global.annotations .Values.annotations) | indent 4 }} -{{ end }} +{{- end }} spec: initContainers: - name: check-dependencies-0 @@ -68,4 +68,4 @@ spec: {{ toYaml . | indent 4 }} {{- end }} -{{ end }} +{{- end }} \ No newline at end of file diff --git a/charts/ska-tango-base/templates/tangodb-pv.yaml b/charts/ska-tango-base/templates/tangodb-pv.yaml index 89f0ef891025dce6bc6c330c331cf8279d50cbeb..a6f0c404154978b9259fd202eaf38a6142d819b2 100644 --- a/charts/ska-tango-base/templates/tangodb-pv.yaml +++ b/charts/ska-tango-base/templates/tangodb-pv.yaml @@ -1,3 +1,4 @@ +{{- if not .Values.global.operator }} {{ if .Values.tangodb.enabled }} {{ if .Values.tangodb.use_pv }} @@ -52,4 +53,5 @@ spec: storage: 1Gi {{ end }} -{{ end }} \ No newline at end of file +{{ end }} +{{- end }} \ No newline at end of file diff --git a/charts/ska-tango-base/templates/tangodb.yaml b/charts/ska-tango-base/templates/tangodb.yaml index 548bf497641fd6d851f9ea98043f31257b602717..4e42acbefc4e6c7e63570cdce3e64f71b98afaab 100644 --- a/charts/ska-tango-base/templates/tangodb.yaml +++ b/charts/ska-tango-base/templates/tangodb.yaml @@ -1,4 +1,5 @@ -{{ if .Values.tangodb.enabled }} +{{- if .Values.tangodb.enabled }} +{{- if not .Values.global.operator }} --- apiVersion: v1 @@ -159,4 +160,5 @@ spec: {{ toYaml . | indent 8 }} {{- end }} -{{ end }} \ No newline at end of file +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/ska-tango-base/tests/deviceservers_test.yaml b/charts/ska-tango-base/tests/deviceservers_test.yaml index f3eb939954685746f122495c94c7b14c5da71137..00f0897727f4ccc60e9e92d9958968547aebd49b 100644 --- a/charts/ska-tango-base/tests/deviceservers_test.yaml +++ b/charts/ska-tango-base/tests/deviceservers_test.yaml @@ -35,7 +35,7 @@ tests: - equal: path: data value: - TestServer.py: "import importlib\nimport importlib.util\nfrom tango.server import run\n\nclasses + TestServer.py: "\n#!/usr/bin/env python\n\nimport importlib\nimport importlib.util\nfrom tango.server import run\n\nclasses = []\n\ndef main(args=None, **kwargs):\n \n return run(classes=(classes), args=args, **kwargs)\n\nif __name__ == '__main__':\n main()\n" bootstrap.sh: | diff --git a/charts/ska-tango-base/values.yaml.sh b/charts/ska-tango-base/values.yaml.sh index 6b4fb9759b4567dd52df3ee80bfccb421df4c83d..c6142af10a37648e718d7ad0c3c0037d1eea479f 100644 --- a/charts/ska-tango-base/values.yaml.sh +++ b/charts/ska-tango-base/values.yaml.sh @@ -134,8 +134,6 @@ deviceServers: domain: tango-base command: "/usr/local/bin/TangoTest" instances: ["test"] - depends_on: - - device: sys/database/2 environment_variables: [] server: name: "TangoTest" diff --git a/charts/ska-tango-umbrella/Chart.yaml b/charts/ska-tango-umbrella/Chart.yaml index d60bf23d996f159ef0a16912f81dc1210aaabb89..4e4d76595447bbf3f267a898d704770ec7b81a38 100644 --- a/charts/ska-tango-umbrella/Chart.yaml +++ b/charts/ska-tango-umbrella/Chart.yaml @@ -1,15 +1,15 @@ apiVersion: v2 description: A Helm chart for deploying the TANGO base system on Kubernetes name: ska-tango-umbrella -version: 0.2.7 -appVersion: 0.2.7 +version: 0.2.8 +appVersion: 0.2.8 icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png dependencies: - name: ska-tango-base - version: 0.4.0 + version: 0.4.1 repository: file://../ska-tango-base condition: ska-tango-base.enabled,global.sub-system.ska-tango-base.enabled - name: ska-tango-util - version: 0.4.0 + version: 0.4.1 repository: file://../ska-tango-util diff --git a/charts/ska-tango-util/Chart.yaml b/charts/ska-tango-util/Chart.yaml index e5433d08d0e0dfda8de282341c9b7482d7a2ebf0..67929089f3c33ff22e0680f0f775a3eb68557d56 100644 --- a/charts/ska-tango-util/Chart.yaml +++ b/charts/ska-tango-util/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 description: A Helm chart library of utilities for TANGO deployents name: ska-tango-util type: library -appVersion: 0.4.0 -version: 0.4.0 +appVersion: 0.4.1 +version: 0.4.1 icon: https://www.skatelescope.org/wp-content/uploads/2016/07/09545_NEW_LOGO_2014.png maintainers: - name: Matteo Di Carlo diff --git a/charts/ska-tango-util/templates/_deviceserver-pvc.yaml b/charts/ska-tango-util/templates/_deviceserver-pvc.yaml index 4399812937cc5a4d7e9cad673383c68b6ac601a5..b8faa9db48f9316ef8d59c6b223a7fd9ef083225 100644 --- a/charts/ska-tango-util/templates/_deviceserver-pvc.yaml +++ b/charts/ska-tango-util/templates/_deviceserver-pvc.yaml @@ -17,19 +17,15 @@ Parameters are: - local (the local chart) */}} -{{ define "ska-tango-util.deviceserver-pvc.tpl" }} - ---- -{{/* replace with "if and .volume (not .volume.existingClaimName)" for Helm >= 3.10 */}} +{{- define "ska-tango-util.deviceserver-pvc.tpl" }} +{{- /* replace with "if and .volume (not .volume.existingClaimName)" for Helm >= 3.10 */}} {{- if .volume }} {{- if not .volume.existingClaimName }} - -{{ $volume_name := .volume.name }} -{{ $volume_path := .volume.mountPath }} -{{ $volume_size := coalesce .volume.storage "250Mi" }} -{{ $labels := coalesce .local.Values.global.labels .local.Values.labels "label:none" }} -{{ $annotations := coalesce .local.Values.global.annotations .local.Values.annotations }} - +{{- $volume_name := .volume.name }} +{{- $volume_path := .volume.mountPath }} +{{- $volume_size := coalesce .volume.storage "250Mi" }} +{{- $labels := coalesce .local.Values.global.labels .local.Values.labels "label:none" }} +{{- $annotations := coalesce .local.Values.global.annotations .local.Values.annotations }} --- apiVersion: v1 kind: PersistentVolumeClaim @@ -38,16 +34,16 @@ metadata: namespace: {{ .local.Release.Namespace }} labels: {{ toYaml $labels | indent 4 }} -{{ if $annotations }} +{{- if $annotations }} annotations: {{ toYaml $annotations | indent 4 }} -{{ end }} +{{- end }} spec: -{{ if (coalesce .local.Values.global.minikube .local.Values.minikube false) }} +{{- if (coalesce .local.Values.global.minikube .local.Values.minikube false) }} storageClassName: standard -{{ else }} +{{- else }} storageClassName: nfss1 -{{ end }} +{{- end }} accessModes: - ReadWriteMany resources: @@ -55,7 +51,6 @@ spec: storage: {{ $volume_size }} --- - apiVersion: apps/v1 kind: Deployment metadata: @@ -64,10 +59,10 @@ metadata: {{ toYaml $labels | indent 4 }} name: {{ $volume_name | toString }}-admin-{{ .local.Release.Name }} namespace: {{ .local.Release.Namespace }} -{{ if $annotations }} +{{- if $annotations }} annotations: {{ toYaml $annotations | indent 4 }} -{{ end }} +{{- end }} spec: replicas: 1 selector: diff --git a/charts/ska-tango-util/templates/_deviceserver.yaml b/charts/ska-tango-util/templates/_deviceserver.yaml index ce63a671c7129cfaf4b7747c339225e66913a395..603ea3d2c0159fac37979b79feeb617708219f9f 100644 --- a/charts/ska-tango-util/templates/_deviceserver.yaml +++ b/charts/ska-tango-util/templates/_deviceserver.yaml @@ -212,6 +212,7 @@ spec: {{- if or ($chart.Values.global.minikube) ($chart.Values.global.exposeAllDS) (.deviceserver.exposeDS) }} enableLoadBalancer: true {{- end }} + dsname: "{{ .deviceserver.name }}" databaseds: {{ $databaseds_name }} image: "{{ tpl (.deviceserver.image.registry | toString) $chart }}/{{ tpl (.deviceserver.image.image | toString) $chart }}:{{ tpl (.deviceserver.image.tag | toString) $chart }}" imagePullPolicy: {{ tpl (.deviceserver.image.pullPolicy | toString) $chart }} @@ -220,7 +221,7 @@ spec: config: | {{ $chart.Files.Get $chart.Values.dsconfig.configuration_file | indent 4 }} {{- end }} - script: "{{ .deviceserver.command }}" + command: "{{ .deviceserver.command }}" {{- if (.deviceserver.depends_on) }} dependsOn: {{- range $index, $device := .deviceserver.depends_on }} diff --git a/charts/ska-tango-util/templates/_entrypoints-script.yml b/charts/ska-tango-util/templates/_entrypoints-script.yml new file mode 100644 index 0000000000000000000000000000000000000000..d406f103204ff74fb443c930ca02d7af5f890994 --- /dev/null +++ b/charts/ska-tango-util/templates/_entrypoints-script.yml @@ -0,0 +1,45 @@ +{{- /* +tango-util.entrypoints-script.tpl +Parameters: +- deviceserver (the deviceserver entire yaml tag) +- DEBUG (number: activate debugpy at this port; leave empty otherwise) +*/}} +{{- define "ska-tango-util.entrypoints-script.tpl" }} +#!/usr/bin/env python + +import importlib +import importlib.util +from tango.server import run + +classes = [] + +{{- range $entrypoint := .deviceserver.entrypoints }} +splitted_name = str(" {{ $entrypoint.name }} ").split(sep='.') +module_name = ".".join(splitted_name[:-1]) +{{- if $entrypoint.path }} +spec = importlib.util.spec_from_file_location(module_name.strip(), "{{ $entrypoint.path }}") +mod = importlib.util.module_from_spec(spec) +spec.loader.exec_module(mod) + +myclass = getattr(mod, splitted_name[-1].strip()) +if not myclass in classes: + classes.append(myclass) + +{{- else }} + +mod = importlib.import_module(module_name.strip()) +myclass = getattr(mod, splitted_name[-1].strip()) +if not myclass in classes: + classes.append(myclass) + +{{- end }} +{{- end }} + +def main(args=None, **kwargs): + {{ if .DEBUG }}import debugpy; debugpy.listen({{ .DEBUG }}){{ end }} + return run(classes=(classes), args=args, **kwargs) + +if __name__ == '__main__': + main() + +{{- end }} \ No newline at end of file diff --git a/charts/ska-tango-util/templates/_multidevice-config.yaml b/charts/ska-tango-util/templates/_multidevice-config.yaml index ae1d5e31cc76714dce57343e618ad04ab6891030..e31422eefdb07135b58af086f4d05d2cc85a2ffd 100644 --- a/charts/ska-tango-util/templates/_multidevice-config.yaml +++ b/charts/ska-tango-util/templates/_multidevice-config.yaml @@ -1,10 +1,10 @@ {{ define "ska-tango-util.multidevice-config.tpl" }} ---- -{{ $labels := coalesce .local.Values.global.labels .local.Values.labels "label: none" }} -{{ $annotations := coalesce .local.Values.global.annotations .local.Values.annotations }} -{{ $deviceserver := .deviceserver }} -{{ $deviceserver_name := tpl (coalesce .name .deviceserver.name | toString) .local }} -{{ $chart := .local }} +{{- $labels := coalesce .local.Values.global.labels .local.Values.labels "label: none" }} +{{- $annotations := coalesce .local.Values.global.annotations .local.Values.annotations }} +{{- $deviceserver := .deviceserver }} +{{- $deviceserver_name := tpl (coalesce .name .deviceserver.name | toString) .local }} +{{- $chart := .local }} +{{- if not .local.Values.global.operator }} --- # Device Server configuration @@ -22,7 +22,6 @@ metadata: annotations: {{ toYaml $annotations | indent 4 }} data: -{{- if not .local.Values.global.operator }} configuration.json: | { "servers": { @@ -115,42 +114,8 @@ data: exit $rc fi fi -{{- end }} {{ $deviceserver.server.name }}.py: | - import importlib - import importlib.util - from tango.server import run - - classes = [] - - {{- range $entrypoint := $deviceserver.entrypoints }} - splitted_name = str(" {{ $entrypoint.name }} ").split(sep='.') - module_name = ".".join(splitted_name[:-1]) - {{- if $entrypoint.path }} - spec = importlib.util.spec_from_file_location(module_name.strip(), "{{ $entrypoint.path }}") - mod = importlib.util.module_from_spec(spec) - spec.loader.exec_module(mod) - - myclass = getattr(mod, splitted_name[-1].strip()) - if not myclass in classes: - classes.append(myclass) - - {{- else }} - - mod = importlib.import_module(module_name.strip()) - myclass = getattr(mod, splitted_name[-1].strip()) - if not myclass in classes: - classes.append(myclass) - - {{- end }} - {{- end }} - - def main(args=None, **kwargs): - {{ if $chart.Values.global.DEBUG }}import debugpy; debugpy.listen({{ $chart.Values.global.DEBUG }}){{ end }} - return run(classes=(classes), args=args, **kwargs) - - if __name__ == '__main__': - main() - - -{{ end }} # multidevice-config.tpl +{{- $context := dict "deviceserver" $deviceserver "DEBUG" $chart.Values.global.DEBUG }} +{{- include "ska-tango-util.entrypoints-script.tpl" $context | nindent 4}} +{{- end }} +{{- end }} # multidevice-config.tpl \ No newline at end of file diff --git a/charts/ska-tango-util/templates/_operator-ds.yaml b/charts/ska-tango-util/templates/_operator-ds.yaml index c74392462a52f35d992219dbc744c28684de24bc..ede639902a49643cf8188a50fef8ccbc1f007443 100644 --- a/charts/ska-tango-util/templates/_operator-ds.yaml +++ b/charts/ska-tango-util/templates/_operator-ds.yaml @@ -7,7 +7,6 @@ Parameters: - instance (of the device server) */}} {{ define "ska-tango-util.operator-svc.tpl" }} ---- {{- $labels := coalesce .local.Values.global.labels .local.Values.labels "label:none" }} {{- $annotations := coalesce .local.Values.global.annotations .local.Values.annotations }} {{- $default_tango_host := printf "%s-%s:10000" "databaseds-tango-base-" .local.Release.Name }} @@ -31,10 +30,10 @@ metadata: function: {{ $deviceserver.function }} domain: {{ $deviceserver.domain }} subsystem: {{ $chart.Values.subsystem }} -{{ if $annotations }} +{{- if $annotations }} annotations: {{ toYaml $annotations | indent 4 }} -{{ end }} +{{- end }} spec: {{- if or ($chart.Values.global.minikube) ($chart.Values.global.exposeAllDS) ($deviceserver.exposeDS) }} enableLoadBalancer: true @@ -43,24 +42,19 @@ spec: image: "{{ tpl ($deviceserver.image.registry | toString) $chart }}/{{ tpl ($deviceserver.image.image | toString) $chart }}:{{ tpl ($deviceserver.image.tag | toString) $chart }}" imagePullPolicy: {{ tpl ($deviceserver.image.pullPolicy | toString) $chart }} args: "{{ $safe_instance | toString }}" + {{- if hasKey $deviceserver "volume" }} volumes: - - name: configuration - configMap: - name: {{$deviceserver_name | toString }}-{{ $chart.Release.Name }}-dsconfig-json - {{ if hasKey $deviceserver "volume" }} - name: volume-data persistentVolumeClaim: claimName: {{ $deviceserver.volume.existingClaimName | default (printf "%s-pvc-%s" $deviceserver.volume.name $chart.Release.Name) }} - {{ end }} + {{- end }} + {{- with $deviceserver.volume }} volumeMounts: - - name: configuration - mountPath: data - readOnly: true - {{ with $deviceserver.volume }} - name: volume-data mountPath: {{ .mountPath }} readOnly: {{ (hasKey . "readOnly" | ternary .readOnly true) }}{{/* https://github.com/helm/helm/issues/3308 */}} - {{ end }} + {{- end }} + dsname: "{{ $deviceserver.server.name }}" config: | { "servers": { @@ -138,14 +132,16 @@ spec: } {{- $_ := unset $deviceserver "tmp_start_instance" }} {{- if $deviceserver.command }} - script: "{{ $deviceserver.command }}" + command: "{{ $deviceserver.command }}" {{- else }} - script: "/data/{{ $deviceserver.server.name }}.py" + script: | +{{- $context := dict "deviceserver" $deviceserver "DEBUG" $chart.Values.global.DEBUG }} +{{- include "ska-tango-util.entrypoints-script.tpl" $context | nindent 4 }} {{- end }} {{- if ($deviceserver.depends_on) }} dependsOn: {{- range $index, $device := $deviceserver.depends_on }} - - "{{ $device.device | toString }}" + - "{{ coalesce $device.device $device.host | toString }}" {{- end }} {{- end }} {{- if or ($chart.Values.global.environment_variables) ($deviceserver.environment_variables) }} @@ -178,10 +174,8 @@ spec: {{- with $chart.Values.tolerations }} tolerations: {{- toYaml . | nindent 4 }} -{{- end }} -{{ end }} ## if has - -{{ end }} # range instances - -{{ end }} # ska-tango-util.operator-svc.tpl +{{- end }} +{{- end }} ## if has +{{- end }} # range instances +{{- end }} # ska-tango-util.operator-svc.tpl \ No newline at end of file