b1be7c747685942956d50c91c7c3231505f35f58
[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 := default .Release.Namespace .Values.ric.platform.namespace }}
18 {{- $xappNamespace := default $platformNamespace .Values.ric.xapp.namespace }}
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 }}
176             {{- range .Values.ric.robot.tags }}
177             - "-i"
178             - "{{.}}"
179             {{- end }}
180             {{- end }}
181             {{- if .Values.ric.robot.testsuites }}
182             {{- range .Values.ric.robot.testsuites }}
183             - "/robot/testsuites/{{.}}.robot"
184             {{- end }}
185             {{- else }}
186             - "/robot/testsuites"
187             {{- end }}
188           volumeMounts:
189             - name: robot-testsuites
190               mountPath: /robot/testsuites
191               readOnly: true
192             - name: robot-etc
193               mountPath: /robot/etc
194               readOnly: true
195             - name: robot-log
196               mountPath: /robot/log
197               readOnly: false
198             - name: robot-properties
199               mountPath: /robot/resources/global_properties.robot
200               subPath: global_properties.robot
201               readOnly: true
202       volumes:
203         - name: robot-etc
204           emptyDir: {}
205         - name: robot-log
206           hostPath:
207            path: {{ default "/opt/ric/robot/log"  .Values.ric.robot.log }}
208            type: DirectoryOrCreate
209         - name: robot-bin
210           configMap:
211            name: robot-bin
212            defaultMode: 0755
213         - name: robot-testsuites
214           configMap:
215            name: robot-testsuites
216            defaultMode: 0644
217         - name: robot-properties
218           configMap:
219            name: robot-properties
220            defaultMode: 0644