Revert "Revert "oran-shell-release: release image for F""
[pti/rtp.git] / meta-starlingx / meta-stx-flock / stx-openstack-armada-app / openstack-helm / 0006-Add-Placement-Chart.patch
1 From 374b61d70c593694f850bd6f6a74842c12ecf5f8 Mon Sep 17 00:00:00 2001
2 From: zhipengl <zhipengs.liu@intel.com>
3 Date: Fri, 31 May 2019 06:49:51 +0800
4 Subject: [PATCH] Add placement chart
5
6 This commit adds a helm chart to deploy placement.
7
8 Related test pass on simplex and multi-node setup
9
10 Story: 2005799
11 Task: 33532
12
13 Change-Id: Ife908628c6379d2d39d15f72073da3018cc26950
14 Signed-off-by: zhipengl <zhipengs.liu@intel.com>
15 ---
16  placement/Chart.yaml                          |   9 +
17  placement/requirements.yaml                   |  10 +
18  placement/templates/bin/_db-sync.sh.tpl       |  13 +
19  placement/templates/bin/_placement-api.sh.tpl |  34 +++
20  placement/templates/configmap-bin.yaml        |  31 ++
21  placement/templates/configmap-etc.yaml        |  58 ++++
22  placement/templates/deployment.yaml           | 116 ++++++++
23  placement/templates/ingress.yaml              |  12 +
24  placement/templates/job-db-drop.yaml          |  13 +
25  placement/templates/job-db-init.yaml          |  15 +
26  placement/templates/job-db-sync.yaml          |  12 +
27  placement/templates/job-image-repo-sync.yaml  |  12 +
28  placement/templates/job-ks-endpoints.yaml     |  12 +
29  placement/templates/job-ks-service.yaml       |  12 +
30  placement/templates/job-ks-user.yaml          |  12 +
31  placement/templates/network_policy.yaml       |  12 +
32  placement/templates/pdb.yaml                  |  21 ++
33  placement/templates/secret-db.yaml            |  22 ++
34  placement/templates/secret-ingress-tls.yaml   |  11 +
35  placement/templates/secret-keystone.yaml      |  22 ++
36  placement/templates/service-ingress.yaml      |  12 +
37  placement/templates/service.yaml              |  26 ++
38  placement/values.yaml                         | 413 ++++++++++++++++++++++++++
39  23 files changed, 910 insertions(+)
40  create mode 100644 placement/Chart.yaml
41  create mode 100644 placement/requirements.yaml
42  create mode 100644 placement/templates/bin/_db-sync.sh.tpl
43  create mode 100644 placement/templates/bin/_placement-api.sh.tpl
44  create mode 100644 placement/templates/configmap-bin.yaml
45  create mode 100644 placement/templates/configmap-etc.yaml
46  create mode 100644 placement/templates/deployment.yaml
47  create mode 100644 placement/templates/ingress.yaml
48  create mode 100644 placement/templates/job-db-drop.yaml
49  create mode 100644 placement/templates/job-db-init.yaml
50  create mode 100644 placement/templates/job-db-sync.yaml
51  create mode 100644 placement/templates/job-image-repo-sync.yaml
52  create mode 100644 placement/templates/job-ks-endpoints.yaml
53  create mode 100644 placement/templates/job-ks-service.yaml
54  create mode 100644 placement/templates/job-ks-user.yaml
55  create mode 100644 placement/templates/network_policy.yaml
56  create mode 100644 placement/templates/pdb.yaml
57  create mode 100644 placement/templates/secret-db.yaml
58  create mode 100644 placement/templates/secret-ingress-tls.yaml
59  create mode 100644 placement/templates/secret-keystone.yaml
60  create mode 100644 placement/templates/service-ingress.yaml
61  create mode 100644 placement/templates/service.yaml
62  create mode 100644 placement/values.yaml
63
64 diff --git a/placement/Chart.yaml b/placement/Chart.yaml
65 new file mode 100644
66 index 0000000..e8eb058
67 --- /dev/null
68 +++ b/placement/Chart.yaml
69 @@ -0,0 +1,9 @@
70 +#
71 +# Copyright (c) 2019 StarlingX.
72 +#
73 +
74 +apiVersion: v1
75 +appVersion: "1.0"
76 +description: OpenStack Placement Service
77 +name: placement
78 +version: 0.1.0
79 diff --git a/placement/requirements.yaml b/placement/requirements.yaml
80 new file mode 100644
81 index 0000000..3a162a6
82 --- /dev/null
83 +++ b/placement/requirements.yaml
84 @@ -0,0 +1,10 @@
85 +#
86 +# Copyright (c) 2019 StarlingX.
87 +#
88 +# SPDX-License-Identifier: Apache-2.0
89 +#
90 +
91 +dependencies:
92 +  - name: helm-toolkit
93 +    repository: http://localhost:8879/charts
94 +    version: 0.1.0
95 diff --git a/placement/templates/bin/_db-sync.sh.tpl b/placement/templates/bin/_db-sync.sh.tpl
96 new file mode 100644
97 index 0000000..4a36848
98 --- /dev/null
99 +++ b/placement/templates/bin/_db-sync.sh.tpl
100 @@ -0,0 +1,13 @@
101 +#!/bin/bash
102 +
103 +{{/*
104 +#
105 +# Copyright (c) 2019 StarlingX.
106 +#
107 +# SPDX-License-Identifier: Apache-2.0
108 +#
109 +*/}}
110 +
111 +set -ex
112 +
113 +su -s /bin/sh -c "placement-manage db sync" placement
114 diff --git a/placement/templates/bin/_placement-api.sh.tpl b/placement/templates/bin/_placement-api.sh.tpl
115 new file mode 100644
116 index 0000000..4f82970
117 --- /dev/null
118 +++ b/placement/templates/bin/_placement-api.sh.tpl
119 @@ -0,0 +1,34 @@
120 +#!/bin/bash
121 +
122 +{{/*
123 +#
124 +# Copyright (c) 2019 StarlingX.
125 +#
126 +# SPDX-License-Identifier: Apache-2.0
127 +#
128 +*/}}
129 +
130 +set -ex
131 +COMMAND="${@:-start}"
132 +
133 +function start () {
134 +
135 +  cp -a $(type -p placement-api) /var/www/cgi-bin/placement/
136 +
137 +  if [ -f /etc/apache2/envvars ]; then
138 +     # Loading Apache2 ENV variables
139 +     source /etc/apache2/envvars
140 +  fi
141 +
142 +  # Get rid of stale pid file if present.
143 +  rm -f /var/run/apache2/*.pid
144 +
145 +  # Start Apache2
146 +  exec apache2 -DFOREGROUND
147 +}
148 +
149 +function stop () {
150 +  apachectl -k graceful-stop
151 +}
152 +
153 +$COMMAND
154 diff --git a/placement/templates/configmap-bin.yaml b/placement/templates/configmap-bin.yaml
155 new file mode 100644
156 index 0000000..3e98ea9
157 --- /dev/null
158 +++ b/placement/templates/configmap-bin.yaml
159 @@ -0,0 +1,31 @@
160 +{{/*
161 +#
162 +# Copyright (c) 2019 StarlingX.
163 +#
164 +# SPDX-License-Identifier: Apache-2.0
165 +#
166 +*/}}
167 +
168 +{{- if .Values.manifests.configmap_bin }}
169 +{{- $envAll := . }}
170 +---
171 +apiVersion: v1
172 +kind: ConfigMap
173 +metadata:
174 +  name: placement-bin
175 +data:
176 +  placement-api.sh: |
177 +{{ tuple "bin/_placement-api.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
178 +  db-sync.sh: |
179 +{{ tuple "bin/_db-sync.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
180 +  db-init.py: |
181 +{{- include "helm-toolkit.scripts.db_init" . | indent 4 }}
182 +  db-drop.py: |
183 +{{- include "helm-toolkit.scripts.db_drop" . | indent 4 }}
184 +  ks-service.sh: |
185 +{{- include "helm-toolkit.scripts.keystone_service" . | indent 4 }}
186 +  ks-endpoints.sh: |
187 +{{- include "helm-toolkit.scripts.keystone_endpoints" . | indent 4 }}
188 +  ks-user.sh: |
189 +{{- include "helm-toolkit.scripts.keystone_user" . | indent 4 }}
190 +{{- end }}
191 diff --git a/placement/templates/configmap-etc.yaml b/placement/templates/configmap-etc.yaml
192 new file mode 100644
193 index 0000000..62834cc
194 --- /dev/null
195 +++ b/placement/templates/configmap-etc.yaml
196 @@ -0,0 +1,58 @@
197 +{{/*
198 +#
199 +# Copyright (c) 2019 StarlingX.
200 +#
201 +# SPDX-License-Identifier: Apache-2.0
202 +#
203 +*/}}
204 +
205 +{{- if .Values.manifests.configmap_etc }}
206 +{{- $envAll := . }}
207 +
208 +{{- if empty .Values.conf.placement.placement_database.connection -}}
209 +{{- $_ := tuple "oslo_db" "internal" "placement" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | set .Values.conf.placement.placement_database "connection" -}}
210 +{{- end -}}
211 +
212 +{{- if empty .Values.conf.placement.keystone_authtoken.auth_uri -}}
213 +{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.placement.keystone_authtoken "auth_uri" -}}
214 +{{- end -}}
215 +{{- if empty .Values.conf.placement.keystone_authtoken.auth_url -}}
216 +{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.placement.keystone_authtoken "auth_url" -}}
217 +{{- end -}}
218 +
219 +{{- if empty .Values.conf.placement.keystone_authtoken.os_region_name -}}
220 +{{- $_ := set .Values.conf.placement.keystone_authtoken "os_region_name" .Values.endpoints.identity.auth.placement.region_name -}}
221 +{{- end -}}
222 +{{- if empty .Values.conf.placement.keystone_authtoken.project_name -}}
223 +{{- $_ := set .Values.conf.placement.keystone_authtoken "project_name" .Values.endpoints.identity.auth.placement.project_name -}}
224 +{{- end -}}
225 +{{- if empty .Values.conf.placement.keystone_authtoken.project_domain_name -}}
226 +{{- $_ := set .Values.conf.placement.keystone_authtoken "project_domain_name" .Values.endpoints.identity.auth.placement.project_domain_name -}}
227 +{{- end -}}
228 +{{- if empty .Values.conf.placement.keystone_authtoken.user_domain_name -}}
229 +{{- $_ := set .Values.conf.placement.keystone_authtoken "user_domain_name" .Values.endpoints.identity.auth.placement.user_domain_name -}}
230 +{{- end -}}
231 +{{- if empty .Values.conf.placement.keystone_authtoken.username -}}
232 +{{- $_ := set .Values.conf.placement.keystone_authtoken "username" .Values.endpoints.identity.auth.placement.username -}}
233 +{{- end -}}
234 +{{- if empty .Values.conf.placement.keystone_authtoken.password -}}
235 +{{- $_ := set .Values.conf.placement.keystone_authtoken "password" .Values.endpoints.identity.auth.placement.password -}}
236 +{{- end -}}
237 +{{- if empty .Values.conf.placement.keystone_authtoken.memcached_servers -}}
238 +{{- $_ := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.placement.keystone_authtoken "memcached_servers" -}}
239 +{{- end -}}
240 +{{- if empty .Values.conf.placement.keystone_authtoken.memcache_secret_key -}}
241 +{{- $_ := set .Values.conf.placement.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
242 +{{- end -}}
243 +---
244 +apiVersion: v1
245 +kind: Secret
246 +metadata:
247 +  name: placement-etc
248 +type: Opaque
249 +data:
250 +  policy.yaml: {{ toYaml .Values.conf.policy | b64enc }}
251 +  placement.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.placement | b64enc }}
252 +  logging.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.logging | b64enc }}
253 +{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.wsgi_placement "key" "wsgi-placement.conf" "format" "Secret" ) | indent 2 }}
254 +{{- end }}
255 diff --git a/placement/templates/deployment.yaml b/placement/templates/deployment.yaml
256 new file mode 100644
257 index 0000000..922bbcf
258 --- /dev/null
259 +++ b/placement/templates/deployment.yaml
260 @@ -0,0 +1,116 @@
261 +{{/*
262 +#
263 +# Copyright (c) 2019 StarlingX.
264 +#
265 +# SPDX-License-Identifier: Apache-2.0
266 +#
267 +*/}}
268 +
269 +{{- if .Values.manifests.deployment }}
270 +{{- $envAll := . }}
271 +
272 +{{- $mounts_placement := .Values.pod.mounts.placement.placement }}
273 +{{- $mounts_placement_init := .Values.pod.mounts.placement.init_container }}
274 +
275 +{{- $serviceAccountName := "placement-api" }}
276 +{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
277 +---
278 +apiVersion: apps/v1
279 +kind: Deployment
280 +metadata:
281 +  name: placement-api
282 +  annotations:
283 +    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
284 +  labels:
285 +{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
286 +spec:
287 +  replicas: {{ .Values.pod.replicas.api }}
288 +  selector:
289 +    matchLabels:
290 +{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
291 +{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
292 +  template:
293 +    metadata:
294 +      labels:
295 +{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
296 +      annotations:
297 +{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
298 +        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
299 +        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
300 +    spec:
301 +      serviceAccountName: {{ $serviceAccountName }}
302 +      affinity:
303 +{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
304 +      nodeSelector:
305 +        {{ .Values.labels.api.node_selector_key }}: {{ .Values.labels.api.node_selector_value }}
306 +      terminationGracePeriodSeconds: {{ .Values.pod.lifecycle.termination_grace_period.api.timeout | default "30" }}
307 +      initContainers:
308 +{{ tuple $envAll "api" $mounts_placement_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
309 +      containers:
310 +        - name: placement-api
311 +{{ tuple $envAll "placement" | include "helm-toolkit.snippets.image" | indent 10 }}
312 +{{ tuple $envAll $envAll.Values.pod.resources.api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
313 +          command:
314 +            - /tmp/placement-api.sh
315 +            - start
316 +          lifecycle:
317 +            preStop:
318 +              exec:
319 +                command:
320 +                  - /tmp/placement-api.sh
321 +                  - stop
322 +          ports:
323 +            - name: p-api
324 +              containerPort: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
325 +          readinessProbe:
326 +            #NOTE(portdirect): use tcpSocket check as HTTP will return 401
327 +            tcpSocket:
328 +              port: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
329 +            initialDelaySeconds: 15
330 +            periodSeconds: 10
331 +          livenessProbe:
332 +            tcpSocket:
333 +              port: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
334 +            initialDelaySeconds: 50
335 +            periodSeconds: 10
336 +          volumeMounts:
337 +            - name: pod-tmp
338 +              mountPath: /tmp
339 +            - name: wsgi-placement
340 +              mountPath: /var/www/cgi-bin/placement
341 +            - name: placement-bin
342 +              mountPath: /tmp/placement-api.sh
343 +              subPath: placement-api.sh
344 +              readOnly: true
345 +            - name: placement-etc
346 +              mountPath: /etc/placement/placement.conf
347 +              subPath: placement.conf
348 +              readOnly: true
349 +            - name: placement-etc
350 +              mountPath: {{ .Values.conf.placement.DEFAULT.log_config_append }}
351 +              subPath: {{ base .Values.conf.placement.DEFAULT.log_config_append }}
352 +              readOnly: true
353 +            - name: placement-etc
354 +              mountPath: /etc/placement/policy.yaml
355 +              subPath: policy.yaml
356 +              readOnly: true
357 +            - name: placement-etc
358 +              mountPath: /etc/apache2/conf-enabled/wsgi-placement.conf
359 +              subPath: wsgi-placement.conf
360 +              readOnly: true
361 +{{ if $mounts_placement.volumeMounts }}{{ toYaml $mounts_placement.volumeMounts | indent 12 }}{{ end }}
362 +      volumes:
363 +        - name: pod-tmp
364 +          emptyDir: {}
365 +        - name: wsgi-placement
366 +          emptyDir: {}
367 +        - name: placement-bin
368 +          configMap:
369 +            name: placement-bin
370 +            defaultMode: 0555
371 +        - name: placement-etc
372 +          secret:
373 +            secretName: placement-etc
374 +            defaultMode: 0444
375 +{{ if $mounts_placement.volumes }}{{ toYaml $mounts_placement.volumes | indent 8 }}{{ end }}
376 +{{- end }}
377 diff --git a/placement/templates/ingress.yaml b/placement/templates/ingress.yaml
378 new file mode 100644
379 index 0000000..5dcced8
380 --- /dev/null
381 +++ b/placement/templates/ingress.yaml
382 @@ -0,0 +1,12 @@
383 +{{/*
384 +#
385 +# Copyright (c) 2019 StarlingX.
386 +#
387 +# SPDX-License-Identifier: Apache-2.0
388 +#
389 +*/}}
390 +
391 +{{- if and .Values.manifests.ingress .Values.network.api.ingress.public }}
392 +{{- $ingressOpts := dict "envAll" . "backendServiceType" "placement" "backendPort" "p-api" -}}
393 +{{ $ingressOpts | include "helm-toolkit.manifests.ingress" }}
394 +{{- end }}
395 diff --git a/placement/templates/job-db-drop.yaml b/placement/templates/job-db-drop.yaml
396 new file mode 100644
397 index 0000000..1cdb753
398 --- /dev/null
399 +++ b/placement/templates/job-db-drop.yaml
400 @@ -0,0 +1,13 @@
401 +{{/*
402 +#
403 +# Copyright (c) 2019 StarlingX.
404 +#
405 +# SPDX-License-Identifier: Apache-2.0
406 +#
407 +*/}}
408 +
409 +{{- if .Values.manifests.job_db_drop }}
410 +{{- $serviceName := "placement" -}}
411 +{{- $dbDropJob := dict "envAll" . "serviceName" $serviceName -}}
412 +{{ $dbDropJob | include "helm-toolkit.manifests.job_db_drop_mysql" }}
413 +{{- end }}
414 diff --git a/placement/templates/job-db-init.yaml b/placement/templates/job-db-init.yaml
415 new file mode 100644
416 index 0000000..4c9d450
417 --- /dev/null
418 +++ b/placement/templates/job-db-init.yaml
419 @@ -0,0 +1,15 @@
420 +{{/*
421 +#
422 +# Copyright (c) 2019 StarlingX.
423 +#
424 +# SPDX-License-Identifier: Apache-2.0
425 +#
426 +*/}}
427 +
428 +{{- if .Values.manifests.job_db_init }}
429 +{{- $serviceName := "placement" -}}
430 +{{- $dbApi := dict "adminSecret" .Values.secrets.oslo_db.admin "configFile" (printf "/etc/%s/%s.conf" $serviceName $serviceName ) "logConfigFile" (printf "/etc/%s/logging.conf" $serviceName ) "configDbSection" "placement_database" "configDbKey" "connection" -}}
431 +{{- $dbsToInit := list $dbApi }}
432 +{{- $dbInitJob := dict "envAll" . "serviceName" $serviceName "dbsToInit" $dbsToInit -}}
433 +{{ $dbInitJob | include "helm-toolkit.manifests.job_db_init_mysql" }}
434 +{{- end }}
435 diff --git a/placement/templates/job-db-sync.yaml b/placement/templates/job-db-sync.yaml
436 new file mode 100644
437 index 0000000..5aeefba
438 --- /dev/null
439 +++ b/placement/templates/job-db-sync.yaml
440 @@ -0,0 +1,12 @@
441 +{{/*
442 +#
443 +# Copyright (c) 2019 StarlingX.
444 +#
445 +# SPDX-License-Identifier: Apache-2.0
446 +#
447 +*/}}
448 +
449 +{{- if .Values.manifests.job_db_sync }}
450 +{{- $dbSyncJob := dict "envAll" . "serviceName" "placement" -}}
451 +{{ $dbSyncJob | include "helm-toolkit.manifests.job_db_sync" }}
452 +{{- end }}
453 diff --git a/placement/templates/job-image-repo-sync.yaml b/placement/templates/job-image-repo-sync.yaml
454 new file mode 100644
455 index 0000000..022b160
456 --- /dev/null
457 +++ b/placement/templates/job-image-repo-sync.yaml
458 @@ -0,0 +1,12 @@
459 +{{/*
460 +#
461 +# Copyright (c) 2019 StarlingX.
462 +#
463 +# SPDX-License-Identifier: Apache-2.0
464 +#
465 +*/}}
466 +
467 +{{- if and .Values.manifests.job_image_repo_sync .Values.images.local_registry.active }}
468 +{{- $imageRepoSyncJob := dict "envAll" . "serviceName" "placement" -}}
469 +{{ $imageRepoSyncJob | include "helm-toolkit.manifests.job_image_repo_sync" }}
470 +{{- end }}
471 diff --git a/placement/templates/job-ks-endpoints.yaml b/placement/templates/job-ks-endpoints.yaml
472 new file mode 100644
473 index 0000000..d3a43fc
474 --- /dev/null
475 +++ b/placement/templates/job-ks-endpoints.yaml
476 @@ -0,0 +1,12 @@
477 +{{/*
478 +#
479 +# Copyright (c) 2018 StarlingX.
480 +#
481 +# SPDX-License-Identifier: Apache-2.0
482 +#
483 +*/}}
484 +
485 +{{- if .Values.manifests.job_ks_endpoints }}
486 +{{- $ksServiceJob := dict "envAll" . "serviceName" "placement" "serviceTypes" ( tuple "placement" ) -}}
487 +{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_endpoints" }}
488 +{{- end }}
489 diff --git a/placement/templates/job-ks-service.yaml b/placement/templates/job-ks-service.yaml
490 new file mode 100644
491 index 0000000..0dd6d6e
492 --- /dev/null
493 +++ b/placement/templates/job-ks-service.yaml
494 @@ -0,0 +1,12 @@
495 +{{/*
496 +#
497 +# Copyright (c) 2019 StarlingX.
498 +#
499 +# SPDX-License-Identifier: Apache-2.0
500 +#
501 +*/}}
502 +
503 +{{- if .Values.manifests.job_ks_service }}
504 +{{- $ksServiceJob := dict "envAll" . "serviceName" "placement" "serviceTypes" ( tuple "placement" ) -}}
505 +{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_service" }}
506 +{{- end }}
507 diff --git a/placement/templates/job-ks-user.yaml b/placement/templates/job-ks-user.yaml
508 new file mode 100644
509 index 0000000..b0f7799
510 --- /dev/null
511 +++ b/placement/templates/job-ks-user.yaml
512 @@ -0,0 +1,12 @@
513 +{{/*
514 +#
515 +# Copyright (c) 2019 StarlingX.
516 +#
517 +# SPDX-License-Identifier: Apache-2.0
518 +#
519 +*/}}
520 +
521 +{{- if .Values.manifests.job_ks_user }}
522 +{{- $ksUserJob := dict "envAll" . "serviceName" "placement" -}}
523 +{{ $ksUserJob | include "helm-toolkit.manifests.job_ks_user" }}
524 +{{- end }}
525 diff --git a/placement/templates/network_policy.yaml b/placement/templates/network_policy.yaml
526 new file mode 100644
527 index 0000000..6355f90
528 --- /dev/null
529 +++ b/placement/templates/network_policy.yaml
530 @@ -0,0 +1,12 @@
531 +{{/*
532 +#
533 +# Copyright (c) 2019 StarlingX.
534 +#
535 +# SPDX-License-Identifier: Apache-2.0
536 +#
537 +*/}}
538 +
539 +{{- if .Values.manifests.network_policy -}}
540 +{{- $netpol_opts := dict "envAll" . "name" "application" "label" "placement" }}
541 +{{ $netpol_opts | include "helm-toolkit.manifests.kubernetes_network_policy" }}
542 +{{- end -}}
543 diff --git a/placement/templates/pdb.yaml b/placement/templates/pdb.yaml
544 new file mode 100644
545 index 0000000..a61fe58
546 --- /dev/null
547 +++ b/placement/templates/pdb.yaml
548 @@ -0,0 +1,21 @@
549 +{{/*
550 +#
551 +# Copyright (c) 2019 StarlingX.
552 +#
553 +# SPDX-License-Identifier: Apache-2.0
554 +#
555 +*/}}
556 +
557 +{{- if .Values.manifests.pdb }}
558 +{{- $envAll := . }}
559 +---
560 +apiVersion: policy/v1beta1
561 +kind: PodDisruptionBudget
562 +metadata:
563 +  name: placement-api
564 +spec:
565 +  minAvailable: {{ .Values.pod.lifecycle.disruption_budget.api.min_available }}
566 +  selector:
567 +    matchLabels:
568 +{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
569 +{{- end }}
570 diff --git a/placement/templates/secret-db.yaml b/placement/templates/secret-db.yaml
571 new file mode 100644
572 index 0000000..5c7321e
573 --- /dev/null
574 +++ b/placement/templates/secret-db.yaml
575 @@ -0,0 +1,22 @@
576 +{{/*
577 +#
578 +# Copyright (c) 2019 StarlingX.
579 +#
580 +# SPDX-License-Identifier: Apache-2.0
581 +#
582 +*/}}
583 +
584 +{{- if .Values.manifests.secret_db }}
585 +{{- $envAll := . }}
586 +{{- range $key1, $userClass := tuple "admin" "placement" }}
587 +{{- $secretName := index $envAll.Values.secrets.oslo_db $userClass }}
588 +---
589 +apiVersion: v1
590 +kind: Secret
591 +metadata:
592 +  name: {{ $secretName }}
593 +type: Opaque
594 +data:
595 +  DB_CONNECTION: {{ tuple "oslo_db" "internal" $userClass "mysql" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | b64enc -}}
596 +{{- end }}
597 +{{- end }}
598 diff --git a/placement/templates/secret-ingress-tls.yaml b/placement/templates/secret-ingress-tls.yaml
599 new file mode 100644
600 index 0000000..3413b5b
601 --- /dev/null
602 +++ b/placement/templates/secret-ingress-tls.yaml
603 @@ -0,0 +1,11 @@
604 +{{/*
605 +#
606 +# Copyright (c) 2019 StarlingX.
607 +#
608 +# SPDX-License-Identifier: Apache-2.0
609 +#
610 +*/}}
611 +
612 +{{- if .Values.manifests.secret_ingress_tls }}
613 +{{ include "helm-toolkit.manifests.secret_ingress_tls" ( dict "envAll" . "backendServiceType" "placement" ) }}
614 +{{- end }}
615 diff --git a/placement/templates/secret-keystone.yaml b/placement/templates/secret-keystone.yaml
616 new file mode 100644
617 index 0000000..efc1a17
618 --- /dev/null
619 +++ b/placement/templates/secret-keystone.yaml
620 @@ -0,0 +1,22 @@
621 +{{/*
622 +#
623 +# Copyright (c) 2019 StarlingX.
624 +#
625 +# SPDX-License-Identifier: Apache-2.0
626 +#
627 +*/}}
628 +
629 +{{- if .Values.manifests.secret_keystone }}
630 +{{- $envAll := . }}
631 +{{- range $key1, $userClass := tuple "admin" "placement" }}
632 +{{- $secretName := index $envAll.Values.secrets.identity $userClass }}
633 +---
634 +apiVersion: v1
635 +kind: Secret
636 +metadata:
637 +  name: {{ $secretName }}
638 +type: Opaque
639 +data:
640 +{{- tuple $userClass "internal" $envAll | include "helm-toolkit.snippets.keystone_secret_openrc" | indent 2 -}}
641 +{{- end }}
642 +{{- end }}
643 diff --git a/placement/templates/service-ingress.yaml b/placement/templates/service-ingress.yaml
644 new file mode 100644
645 index 0000000..75fcd61
646 --- /dev/null
647 +++ b/placement/templates/service-ingress.yaml
648 @@ -0,0 +1,12 @@
649 +{{/*
650 +#
651 +# Copyright (c) 2019 StarlingX.
652 +#
653 +# SPDX-License-Identifier: Apache-2.0
654 +#
655 +*/}}
656 +
657 +{{- if and .Values.manifests.service_ingress .Values.network.api.ingress.public }}
658 +{{- $serviceIngressOpts := dict "envAll" . "backendServiceType" "placement" -}}
659 +{{ $serviceIngressOpts | include "helm-toolkit.manifests.service_ingress" }}
660 +{{- end }}
661 diff --git a/placement/templates/service.yaml b/placement/templates/service.yaml
662 new file mode 100644
663 index 0000000..0bda157
664 --- /dev/null
665 +++ b/placement/templates/service.yaml
666 @@ -0,0 +1,26 @@
667 +{{/*
668 +#
669 +# SPDX-License-Identifier: Apache-2.0
670 +#
671 +*/}}
672 +
673 +{{- if .Values.manifests.service }}
674 +{{- $envAll := . }}
675 +---
676 +apiVersion: v1
677 +kind: Service
678 +metadata:
679 +  name: {{ tuple "placement" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
680 +spec:
681 +  ports:
682 +  - name: p-api
683 +    port: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
684 +    {{ if .Values.network.api.node_port.enabled }}
685 +    nodePort: {{ .Values.network.api.node_port.port }}
686 +    {{ end }}
687 +  selector:
688 +{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
689 +  {{ if .Values.network.api.node_port.enabled }}
690 +  type: NodePort
691 +  {{ end }}
692 +{{- end }}
693 diff --git a/placement/values.yaml b/placement/values.yaml
694 new file mode 100644
695 index 0000000..33139f0
696 --- /dev/null
697 +++ b/placement/values.yaml
698 @@ -0,0 +1,413 @@
699 +#
700 +# SPDX-License-Identifier: Apache-2.0
701 +#
702 +
703 +# Default values for openstack-placement.
704 +# This is a YAML-formatted file.
705 +# Declare variables to be passed into your templates.
706 +
707 +release_group: null
708 +
709 +labels:
710 +  api:
711 +    node_selector_key: openstack-control-plane
712 +    node_selector_value: enabled
713 +  job:
714 +    node_selector_key: openstack-control-plane
715 +    node_selector_value: enabled
716 +
717 +images:
718 +  pull_policy: IfNotPresent
719 +  tags:
720 +    placement: docker.io/openstackhelm/placement:ocata-ubuntu_xenial
721 +    ks_user: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
722 +    ks_service: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
723 +    ks_endpoints: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
724 +    db_init: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
725 +    db_drop: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
726 +    placement_db_sync: docker.io/openstackhelm/placement:ocata-ubuntu_xenial
727 +    dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
728 +    image_repo_sync: docker.io/docker:17.07.0
729 +  local_registry:
730 +    active: false
731 +    exclude:
732 +      - dep_check
733 +      - image_repo_sync
734 +
735 +network:
736 +  api:
737 +    port: 8778
738 +    ingress:
739 +      public: true
740 +      classes:
741 +        namespace: "nginx"
742 +        cluster: "nginx-cluster"
743 +      annotations:
744 +        nginx.ingress.kubernetes.io/rewrite-target: /
745 +    external_policy_local: false
746 +    node_port:
747 +      enabled: false
748 +      port: 30778
749 +
750 +conf:
751 +  policy:
752 +    context_is_admin: 'role:admin'
753 +    segregation: 'rule:context_is_admin'
754 +    admin_or_owner: 'rule:context_is_admin or project_id:%(project_id)s'
755 +    default: 'rule:admin_or_owner'
756 +  placement:
757 +    DEFAULT:
758 +      debug: false
759 +      use_syslog: false
760 +      log_config_append: /etc/placement/logging.conf
761 +    placement_database:
762 +      connection: null
763 +    keystone_authtoken:
764 +      auth_version: v3
765 +      auth_type: password
766 +      memcache_security_strategy: ENCRYPT
767 +  logging:
768 +    loggers:
769 +      keys:
770 +        - root
771 +        - placement
772 +    handlers:
773 +      keys:
774 +        - stdout
775 +        - stderr
776 +        - "null"
777 +    formatters:
778 +      keys:
779 +        - context
780 +        - default
781 +    logger_root:
782 +      level: WARNING
783 +      handlers: stdout
784 +    logger_placement:
785 +      level: INFO
786 +      handlers:
787 +        - stdout
788 +      qualname: placement
789 +    logger_amqp:
790 +      level: WARNING
791 +      handlers: stderr
792 +      qualname: amqp
793 +    logger_amqplib:
794 +      level: WARNING
795 +      handlers: stderr
796 +      qualname: amqplib
797 +    logger_eventletwsgi:
798 +      level: WARNING
799 +      handlers: stderr
800 +      qualname: eventlet.wsgi.server
801 +    logger_sqlalchemy:
802 +      level: WARNING
803 +      handlers: stderr
804 +      qualname: sqlalchemy
805 +    logger_boto:
806 +      level: WARNING
807 +      handlers: stderr
808 +      qualname: boto
809 +    handler_null:
810 +      class: logging.NullHandler
811 +      formatter: default
812 +      args: ()
813 +    handler_stdout:
814 +      class: StreamHandler
815 +      args: (sys.stdout,)
816 +      formatter: context
817 +    handler_stderr:
818 +      class: StreamHandler
819 +      args: (sys.stderr,)
820 +      formatter: context
821 +    formatter_context:
822 +      class: oslo_log.formatters.ContextFormatter
823 +      datefmt: "%Y-%m-%d %H:%M:%S"
824 +    formatter_default:
825 +      format: "%(message)s"
826 +      datefmt: "%Y-%m-%d %H:%M:%S"
827 +  wsgi_placement: |
828 +    Listen 0.0.0.0:{{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
829 +    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
830 +    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
831 +    SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
832 +    CustomLog /dev/stdout combined env=!forwarded
833 +    CustomLog /dev/stdout proxy env=forwarded
834 +    <VirtualHost *:{{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}>
835 +        WSGIDaemonProcess placement-api processes=1 threads=4 user=placement group=placement display-name=%{GROUP}
836 +        WSGIProcessGroup placement-api
837 +        WSGIScriptAlias / /var/www/cgi-bin/placement/placement-api
838 +        WSGIApplicationGroup %{GLOBAL}
839 +        WSGIPassAuthorization On
840 +        <IfVersion >= 2.4>
841 +          ErrorLogFormat "%{cu}t %M"
842 +        </IfVersion>
843 +        ErrorLog /dev/stdout
844 +        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
845 +        CustomLog /dev/stdout combined env=!forwarded
846 +        CustomLog /dev/stdout proxy env=forwarded
847 +    </VirtualHost>
848 +    Alias /placement /var/www/cgi-bin/placement/placement-api
849 +    <Location /placement>
850 +        SetHandler wsgi-script
851 +        Options +ExecCGI
852 +        WSGIProcessGroup placement-api
853 +        WSGIApplicationGroup %{GLOBAL}
854 +        WSGIPassAuthorization On
855 +    </Location>
856 +
857 +endpoints:
858 +  cluster_domain_suffix: cluster.local
859 +  local_image_registry:
860 +    name: docker-registry
861 +    namespace: docker-registry
862 +    hosts:
863 +      default: localhost
864 +      internal: docker-registry
865 +      node: localhost
866 +    host_fqdn_override:
867 +      default: null
868 +    port:
869 +      registry:
870 +        node: 5000
871 +  oslo_db:
872 +    auth:
873 +      admin:
874 +        username: root
875 +        password: password
876 +      placement:
877 +        username: placement
878 +        password: password
879 +    hosts:
880 +      default: mariadb
881 +    host_fqdn_override:
882 +      default: null
883 +    path: /placement
884 +    scheme: mysql+pymysql
885 +    port:
886 +      mysql:
887 +        default: 3306
888 +  oslo_cache:
889 +    auth:
890 +      # NOTE(portdirect): this is used to define the value for keystone
891 +      # authtoken cache encryption key, if not set it will be populated
892 +      # automatically with a random value, but to take advantage of
893 +      # this feature all services should be set to use the same key,
894 +      # and memcache service.
895 +      memcache_secret_key: null
896 +    hosts:
897 +      default: memcached
898 +    host_fqdn_override:
899 +      default: null
900 +    port:
901 +      memcache:
902 +        default: 11211
903 +  identity:
904 +    name: keystone
905 +    auth:
906 +      admin:
907 +        region_name: RegionOne
908 +        username: admin
909 +        password: password
910 +        project_name: admin
911 +        user_domain_name: default
912 +        project_domain_name: default
913 +      placement:
914 +        role: admin
915 +        region_name: RegionOne
916 +        username: placement
917 +        password: password
918 +        project_name: service
919 +        user_domain_name: service
920 +        project_domain_name: service
921 +    hosts:
922 +      default: keystone
923 +      internal: keystone-api
924 +    host_fqdn_override:
925 +      default: null
926 +    path:
927 +      default: /v3
928 +    scheme:
929 +      default: http
930 +    port:
931 +      api:
932 +        default: 80
933 +        internal: 5000
934 +  placement:
935 +    name: placement
936 +    hosts:
937 +      default: placement-api
938 +      public: placement
939 +    host_fqdn_override:
940 +      default: null
941 +    path:
942 +      default: /
943 +    scheme:
944 +      default: 'http'
945 +    port:
946 +      api:
947 +        default: 8778
948 +        public: 80
949 +
950 +pod:
951 +  user:
952 +    placement:
953 +      uid: 42424
954 +  affinity:
955 +    anti:
956 +      type:
957 +        default: preferredDuringSchedulingIgnoredDuringExecution
958 +      topologyKey:
959 +        default: kubernetes.io/hostname
960 +  mounts:
961 +    placement:
962 +      init_container: null
963 +      placement:
964 +        volumeMounts:
965 +        volumes:
966 +  replicas:
967 +    api: 1
968 +  lifecycle:
969 +    upgrades:
970 +      deployments:
971 +        revision_history: 3
972 +        pod_replacement_strategy: RollingUpdate
973 +        rolling_update:
974 +          max_unavailable: 1
975 +          max_surge: 3
976 +    disruption_budget:
977 +      api:
978 +        min_available: 0
979 +    termination_grace_period:
980 +      api:
981 +        timeout: 30
982 +  resources:
983 +    enabled: false
984 +    api:
985 +      requests:
986 +        memory: "128Mi"
987 +        cpu: "100m"
988 +      limits:
989 +        memory: "1024Mi"
990 +        cpu: "2000m"
991 +    jobs:
992 +      db_init:
993 +        requests:
994 +          memory: "128Mi"
995 +          cpu: "100m"
996 +        limits:
997 +          memory: "1024Mi"
998 +          cpu: "2000m"
999 +      db_sync:
1000 +        requests:
1001 +          memory: "128Mi"
1002 +          cpu: "100m"
1003 +        limits:
1004 +          memory: "1024Mi"
1005 +          cpu: "2000m"
1006 +      db_drop:
1007 +        requests:
1008 +          memory: "128Mi"
1009 +          cpu: "100m"
1010 +        limits:
1011 +          memory: "1024Mi"
1012 +          cpu: "2000m"
1013 +      ks_endpoints:
1014 +        requests:
1015 +          memory: "128Mi"
1016 +          cpu: "100m"
1017 +        limits:
1018 +          memory: "1024Mi"
1019 +          cpu: "2000m"
1020 +      ks_service:
1021 +        requests:
1022 +          memory: "128Mi"
1023 +          cpu: "100m"
1024 +        limits:
1025 +          memory: "1024Mi"
1026 +          cpu: "2000m"
1027 +      ks_user:
1028 +        requests:
1029 +          memory: "128Mi"
1030 +          cpu: "100m"
1031 +        limits:
1032 +          memory: "1024Mi"
1033 +          cpu: "2000m"
1034 +
1035 +secrets:
1036 +  identity:
1037 +    admin: placement-keystone-admin
1038 +    placement: placement-keystone-user
1039 +  oslo_db:
1040 +    admin: placement-db-admin
1041 +    placement: placement-db-user
1042 +  tls:
1043 +    placement:
1044 +      api:
1045 +        public: placement-tls-public
1046 +
1047 +dependencies:
1048 +  dynamic:
1049 +    common:
1050 +      local_image_registry:
1051 +        jobs:
1052 +          - image-repo-sync
1053 +        services:
1054 +          - endpoint: node
1055 +            service: local_image_registry
1056 +  static:
1057 +    api:
1058 +      jobs:
1059 +        - placement-db-sync
1060 +        - placement-ks-service
1061 +        - placement-ks-user
1062 +        - placement-ks-endpoints
1063 +    ks_endpoints:
1064 +      jobs:
1065 +        - placement-ks-user
1066 +        - placement-ks-service
1067 +      services:
1068 +        - endpoint: internal
1069 +          service: identity
1070 +    ks_service:
1071 +      services:
1072 +        - endpoint: internal
1073 +          service: identity
1074 +    ks_user:
1075 +      services:
1076 +        - endpoint: internal
1077 +          service: identity
1078 +    db_drop:
1079 +      services:
1080 +        - endpoint: internal
1081 +          service: oslo_db
1082 +    db_init:
1083 +      services:
1084 +        - endpoint: internal
1085 +          service: oslo_db
1086 +    db_sync:
1087 +      jobs:
1088 +        - placement-db-init
1089 +      services:
1090 +        - endpoint: internal
1091 +          service: oslo_db
1092 +
1093 +manifests:
1094 +  configmap_bin: true
1095 +  configmap_etc: true
1096 +  deployment: true
1097 +  job_image_repo_sync: true
1098 +  job_db_init: true
1099 +  job_db_sync: true
1100 +  job_db_drop: false
1101 +  job_ks_endpoints: true
1102 +  job_ks_service: true
1103 +  job_ks_user: true
1104 +  network_policy: false
1105 +  secret_db: true
1106 +  secret_ingress_tls: true
1107 +  pdb: true
1108 +  ingress: true
1109 +  secret_keystone: true
1110 +  service_ingress: true
1111 +  service: true
1112 -- 
1113 2.7.4
1114