14be82d5736407798e99646f918960c54f6ee3e1
[it/test.git] / ric_robot_suite / helm / nanobot / templates / job-ric-robot-run.yaml
1 {{/*
2    Copyright (c) 2019 AT&T Intellectual Property.
3    Copyright (c) 2019 Nokia.
4
5    Licensed under the Apache License, Version 2.0 (the "License");
6    you may not use this file except in compliance with the License.
7    You may obtain a copy of the License at
8
9        http://www.apache.org/licenses/LICENSE-2.0
10
11    Unless required by applicable law or agreed to in writing, software
12    distributed under the License is distributed on an "AS IS" BASIS,
13    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14    See the License for the specific language governing permissions and
15    limitations under the License.
16 */}}
17 {{- $platformNamespace := include "common.namespace.platform" . }}
18 {{- $xappNamespace := include "common.namespace.xapp" .  }}
19 {{- $releaseName := default "ric-full" .Values.ric.platform.releaseName }}
20 {{- $jobName :=  printf "%s-%s" .Release.Name $releaseName }}
21 {{- $acctName := randAlpha 6 | lower | printf "%s-%s" $jobName }}
22 {{- $serviceAccountName := default $acctName .Values.ric.robot.job.serviceAccount.name }}
23 {{- if .Values.ric.robot.job.serviceAccount.create }}
24 ---
25 apiVersion: v1
26 kind: ServiceAccount
27 metadata:
28   name: {{ $serviceAccountName }}
29   namespace: {{ .Release.Namespace }}
30 ---
31 apiVersion: rbac.authorization.k8s.io/v1beta1
32 kind: Role
33 metadata:
34   name: {{ $serviceAccountName }}-{{ $releaseName }}-ricplatform-access
35   namespace: {{ $platformNamespace }}
36 rules:
37 - apiGroups: [""]
38   resources: ["pods", "services"]
39   verbs: ["get", "list"]
40 - apiGroups: ["apps"]
41   resources: ["daemonsets", "replicasets", "statefulsets"]
42   verbs: ["get", "list"]
43 - apiGroups: ["extensions"]
44   resources: ["daemonsets", "replicasets"]
45   verbs: ["get", "list"]
46 - apiGroups: ["apps"]
47   resources: ["deployments"]
48   verbs: ["get", "list", "patch"]
49 - apiGroups: ["extensions"]
50   resources: ["deployments"]
51   verbs: ["get", "list", "patch"]
52 ---
53 apiVersion: rbac.authorization.k8s.io/v1beta1
54 kind: RoleBinding
55 metadata:
56   name: {{ $serviceAccountName }}-{{ $releaseName }}-ricplatform-access
57   namespace: {{ $platformNamespace }}
58 roleRef:
59   apiGroup: rbac.authorization.k8s.io
60   kind: Role
61   name: {{ $serviceAccountName }}-{{ $releaseName }}-ricplatform-access
62 subjects:
63   - kind: ServiceAccount
64     name: {{ $serviceAccountName }}
65     namespace: {{ .Release.Namespace }}
66 {{- if ne $xappNamespace $platformNamespace }}
67 ---
68 apiVersion: rbac.authorization.k8s.io/v1beta1
69 kind: Role
70 metadata:
71   name: {{ $serviceAccountName }}-{{ $releaseName }}-xapp-access
72   namespace: {{ $xappNamespace }}
73 rules:
74 - apiGroups: [""]
75   resources: ["pods", "services"]
76   verbs: ["get", "list"]
77 - apiGroups: ["apps"]
78   resources: ["deployments", "daemonsets", "replicasets", "statefulsets"]
79   verbs: ["get", "list"]
80 - apiGroups: ["extensions"]
81   resources: ["deployments", "daemonsets", "replicasets"]
82   verbs: ["get", "list"]
83 ---
84 apiVersion: rbac.authorization.k8s.io/v1beta1
85 kind: RoleBinding
86 metadata:
87   name: {{ $serviceAccountName }}-{{ $releaseName }}-xapp-access
88   namespace: {{ $xappNamespace }}
89 roleRef:
90   apiGroup: rbac.authorization.k8s.io
91   kind: Role
92   name: {{ $serviceAccountName }}-{{ $releaseName }}-xapp-access
93 subjects:
94   - kind: ServiceAccount
95     name: {{ $serviceAccountName }}
96     namespace: {{ .Release.Namespace }}
97 {{- end }}
98 {{- end }}
99 ---
100 apiVersion: batch/v1
101 kind: Job
102 metadata:
103   name: {{ $jobName }}-ric-robot-run
104   namespace: {{ .Release.Namespace }}
105 spec:
106   template:
107     spec:
108       serviceAccountName: {{ $serviceAccountName }}
109       restartPolicy: Never
110       initContainers:
111         - name: {{ $jobName }}-generate-robot-kubeconfig
112           {{ with .Values.images.ric.robot.job.init }}
113           image: {{ if .repository }}{{- .repository -}} / {{- end -}}{{- .name -}}{{- if .tag -}} : {{- .tag -}} {{- end }}
114           imagePullPolicy: {{ default "IfNotPresent" .pullPolicy }}
115           {{- end }}
116           env:
117             - name: SVCACCT_NAME
118               value: {{ $serviceAccountName }}
119             - name: CLUSTER_NAME
120               value: {{ default "kubernetes" .Values.ric.cluster.name }}
121             - name: KUBECONFIG
122               value: /robot/etc/ric-robot-kubeconfig.conf
123             - name: K8S_API_HOST
124               value: "kubernetes.default.svc.{{ default "cluster.local" .Values.ric.cluster.domain }}"
125           command: ["/robot/bin/svcacct-to-kubeconfig.sh"]
126           volumeMounts:
127             - name: robot-etc
128               mountPath: /robot/etc
129               readOnly: false
130             - name: robot-log
131               mountPath: /robot/log
132               readOnly: false
133             - name: robot-bin
134               mountPath: /robot/bin
135               readOnly: true
136       {{- $secrets := dict }}
137       {{- range $index, $container := .Values.images.ric.robot.job }}
138       {{- if index $container "repositoryCred" }}
139       {{- $_ := set $secrets $container.repositoryCred (dict "name" $container.repositoryCred) }}
140       {{- end }}
141       {{- end }}
142       {{- if keys $secrets }}
143       imagePullSecrets:
144       {{- values $secrets | toYaml |nindent 8 }}
145       {{- end }}
146       containers:
147         - name: {{ $jobName }}-ric-robot
148           {{ with .Values.images.ric.robot.job.run -}}
149           image: {{ if .repository }}{{- .repository -}} / {{- end -}}{{- .name -}}{{- if .tag -}} : {{- .tag -}} {{- end }}
150           imagePullPolicy: {{ default "IfNotPresent" .pullPolicy }}
151           {{- end }}
152           env:
153             - name: RICPLT_NAMESPACE
154               value: {{ $platformNamespace }}
155             - name: RICPLT_RELEASE_NAME
156               value: {{ $releaseName }}
157             - name: RICPLT_COMPONENTS
158               value: {{ keys .Values.ric.platform.components | join " " }}
159             - name: RICXAPP_NAMESPACE
160               value: {{ $xappNamespace }}
161             - name: KUBECONFIG
162               value: /robot/etc/ric-robot-kubeconfig.conf
163           command: ["robot"]
164           args:
165             - "-T"
166             {{- if not .Values.ric.robot.job.failOnTestFail }}
167             - "--NoStatusRC"
168             {{- end }}
169             - "-d"
170             - "/robot/log"
171             - "--console"
172             - "verbose"
173             - "-C"
174             - "off"
175             {{- if .Values.ric.robot.tags.enabled }}
176             {{- range .Values.ric.robot.tags.enabled }}
177             - "-i"
178             - "{{.}}"
179             {{- end }}
180             {{- end }}
181             {{- if .Values.ric.robot.tags.disabled }}
182             {{- range .Values.ric.robot.tags.disabled }}
183             - "-e"
184             - "{{.}}"
185             {{- end }}
186             {{- end }}
187             {{- if .Values.ric.robot.testsuites }}
188             {{- range .Values.ric.robot.testsuites }}
189             - "/robot/testsuites/{{.}}.robot"
190             {{- end }}
191             {{- else }}
192             - "/robot/testsuites"
193             {{- end }}
194           volumeMounts:
195             - name: robot-testsuites
196               mountPath: /robot/testsuites
197               readOnly: true
198             - name: robot-etc
199               mountPath: /robot/etc
200               readOnly: true
201             - name: robot-log
202               mountPath: /robot/log
203               readOnly: false
204             # for compatability with the ric robot, we mount
205             # both properties files and interface libraries
206             # under resources/.
207 {{- range $map, $ignore := $.Files.Glob "configmap-src/*/properties/*.robot" }}
208             - name: robot-properties
209               mountPath: /robot/resources/{{ base $map }}
210               subPath: {{ base $map }}
211               readOnly: true
212 {{- end }}
213 {{- range $map, $ignore := $.Files.Glob "configmap-src/*/resources/*.robot" }}
214             - name: robot-resources
215               mountPath: /robot/resources/{{ base $map }}
216               subPath: {{ base $map }}
217               readOnly: true
218 {{- end }}
219       volumes:
220         - name: robot-etc
221           emptyDir: {}
222         - name: robot-log
223           hostPath:
224            path: {{ default "/opt/ric/robot/log"  .Values.ric.robot.log }}
225            type: DirectoryOrCreate
226         - name: robot-bin
227           configMap:
228            name: robot-bin
229            defaultMode: 0755
230         - name: robot-testsuites
231           configMap:
232            name: robot-testsuites
233            defaultMode: 0644
234         - name: robot-properties
235           configMap:
236            name: robot-properties
237            defaultMode: 0644
238         - name: robot-resources
239           configMap:
240            name: robot-resources
241            defaultMode: 0644