From e2010544cf1f9e3a1964603751dd2da45074d636 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Wed, 23 Jun 2021 14:55:10 +0800
Subject: [PATCH] openstack-helm: update for stx 5.0

* inherit stx-metadata to help aplly updated patches
  from stx 'openstack-armada-app' repo.

* remove the local copy of stx patches and files.

* inherit stx-chartmuseum-native to help build
  the helm charts.

* rename the bb with _git.

* update PV and PR so the generated rpm match the one
  in stx 5.0: openstack-helm-1.0-44.tis.noarch.rpm

Story: 2008952
Task: 42576

Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Change-Id: I22019496af703e6a2e6dbf4a1980536b0004816d
---
 ...-add-the-ability-to-publish-events-t.patch |   81 --
 ...ache2-service-pids-when-a-POD-starts.patch |   70 --
 ...onsole-ip-address-search-optionality.patch |   66 -
 ...hart-Support-ephemeral-pool-creation.patch |  347 -----
 ...-for-disabling-Readiness-Liveness-pr.patch |  228 ----
 .../0006-Add-Placement-Chart.patch            | 1114 -----------------
 .../openstack-helm/index.yaml                 |    4 -
 .../openstack-helm/repositories.yaml          |   12 -
 .../openstack-helm_1.0.bb                     |  109 --
 .../openstack-helm_git.bb                     |   97 ++
 10 files changed, 97 insertions(+), 2031 deletions(-)
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/0001-Ceilometer-chart-add-the-ability-to-publish-events-t.patch
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/0002-Remove-stale-Apache2-service-pids-when-a-POD-starts.patch
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/0003-Nova-console-ip-address-search-optionality.patch
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/0004-Nova-chart-Support-ephemeral-pool-creation.patch
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/0005-Nova-Add-support-for-disabling-Readiness-Liveness-pr.patch
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/0006-Add-Placement-Chart.patch
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/index.yaml
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm/repositories.yaml
 delete mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm_1.0.bb
 create mode 100644 meta-stx-flock/stx-openstack-armada-app/openstack-helm_git.bb

diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0001-Ceilometer-chart-add-the-ability-to-publish-events-t.patch b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0001-Ceilometer-chart-add-the-ability-to-publish-events-t.patch
deleted file mode 100644
index 578592b..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0001-Ceilometer-chart-add-the-ability-to-publish-events-t.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 5302aa4e87694e96cc3dfc56ae494a1a8211cc37 Mon Sep 17 00:00:00 2001
-From: Angie Wang <angie.wang@windriver.com>
-Date: Wed, 6 Mar 2019 18:06:06 -0500
-Subject: [PATCH 01] Ceilometer chart: add the ability to publish events to
- panko
-
-Ceilometer notification agent sends the events to panko via panko
-dispatcher/publisher which requires the db connection information
-in /etc/panko/panko.conf.
-This commit updates to mount the configuration file for panko in
-ceilometer notification pod.
-
-Change-Id: I4ca524ed7462f945a245e9dbe1d69493dbc4211d
-Story: 2005019
-Task: 29498
-Depends-On: https://review.openstack.org/#/c/641144/
-Signed-off-by: Angie Wang <angie.wang@windriver.com>
-(cherry picked from commit 507bc47f1447808c57c1c8aa82b0639543083656)
-Signed-off-by: Robert Church <robert.church@windriver.com>
----
- ceilometer/values.yaml | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
-
-diff --git a/ceilometer/values.yaml b/ceilometer/values.yaml
-index 44dda74..1343670 100644
---- a/ceilometer/values.yaml
-+++ b/ceilometer/values.yaml
-@@ -1706,6 +1706,8 @@ dependencies:
-           service: mongodb
-         - endpoint: internal
-           service: metric
-+        - endpoint: internal
-+          service: event
-     tests:
-       services:
-         - endpoint: internal
-@@ -1827,6 +1829,21 @@ endpoints:
-       api:
-         default: 8041
-         public: 80
-+  event:
-+    name: panko
-+    hosts:
-+      default: panko-api
-+      public: panko
-+    host_fqdn_override:
-+      default: null
-+    path:
-+      default: null
-+    scheme:
-+      default: 'http'
-+    port:
-+      api:
-+        default: 8977
-+        public: 80
-   alarming:
-     name: aodh
-     hosts:
-@@ -1958,7 +1975,19 @@ pod:
-       init_container: null
-       ceilometer_notification:
-         volumeMounts:
-+          - name: etcpanko
-+            mountPath: /etc/panko
-+          - name: panko-etc
-+            mountPath: /etc/panko/panko.conf
-+            subPath: panko.conf
-+            readOnly: true
-         volumes:
-+          - name: etcpanko
-+            emptyDir: {}
-+          - name: panko-etc
-+            secret:
-+              secretName: panko-etc
-+              defaultMode: 0444
-     ceilometer_db_sync:
-       ceilometer_db_sync:
-         volumeMounts:
--- 
-2.7.4
-
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0002-Remove-stale-Apache2-service-pids-when-a-POD-starts.patch b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0002-Remove-stale-Apache2-service-pids-when-a-POD-starts.patch
deleted file mode 100644
index 768673e..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0002-Remove-stale-Apache2-service-pids-when-a-POD-starts.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From a0e8c7e3764b168eaaa82d17d965f62d34766573 Mon Sep 17 00:00:00 2001
-From: Chris Friesen <chris.friesen@windriver.com>
-Date: Wed, 28 Nov 2018 01:33:39 -0500
-Subject: [PATCH 02] Remove stale Apache2 service pids when a POD starts.
-
-Stale Apache2 pids will prevent Apache2 from starting and will leave
-the POD in a crashed state.
-
-Note: the pid file is somewhat confusingly called
-/var/run/httpd/httpd.pid and /var/run/apache2 is just a symlink to
-/var/run/httpd.
-
-This is loosely based off the in-review upstream commit at
-https://review.openstack.org/#/c/619747
-
-Signed-off-by: Robert Church <robert.church@windriver.com>
----
- ceilometer/templates/bin/_ceilometer-api.sh.tpl | 3 +++
- keystone/templates/bin/_keystone-api.sh.tpl     | 6 ++----
- nova/templates/bin/_nova-placement-api.sh.tpl   | 3 +++
- 3 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/ceilometer/templates/bin/_ceilometer-api.sh.tpl b/ceilometer/templates/bin/_ceilometer-api.sh.tpl
-index 25b2f9e..3870b4e 100644
---- a/ceilometer/templates/bin/_ceilometer-api.sh.tpl
-+++ b/ceilometer/templates/bin/_ceilometer-api.sh.tpl
-@@ -42,6 +42,9 @@ function start () {
-     fi
-   fi
- 
-+  # Get rid of stale pid file if present.
-+  rm -f /var/run/apache2/*.pid
-+
-   # Start Apache2
-   exec {{ .Values.conf.software.apache2.binary }} {{ .Values.conf.software.apache2.start_parameters }}
- }
-diff --git a/keystone/templates/bin/_keystone-api.sh.tpl b/keystone/templates/bin/_keystone-api.sh.tpl
-index 384ee8b..4c72310 100644
---- a/keystone/templates/bin/_keystone-api.sh.tpl
-+++ b/keystone/templates/bin/_keystone-api.sh.tpl
-@@ -43,10 +43,8 @@ function start () {
-      source /etc/apache2/envvars
-   fi
- 
--  if [ -f /var/run/apache2/apache2.pid ]; then
--     # Remove the stale pid for debian/ubuntu images
--     rm -f /var/run/apache2/apache2.pid
--  fi
-+  # Get rid of stale pid, shared memory segment and wsgi sock files if present.
-+  rm -f /var/run/apache2/*
- 
-   # Start Apache2
-   exec {{ .Values.conf.software.apache2.binary }} {{ .Values.conf.software.apache2.start_parameters }}
-diff --git a/nova/templates/bin/_nova-placement-api.sh.tpl b/nova/templates/bin/_nova-placement-api.sh.tpl
-index bc15a37..055d079 100644
---- a/nova/templates/bin/_nova-placement-api.sh.tpl
-+++ b/nova/templates/bin/_nova-placement-api.sh.tpl
-@@ -33,6 +33,9 @@ function start () {
-      fi
-   fi
- 
-+  # Get rid of stale pid file if present.
-+  rm -f /var/run/apache2/*.pid
-+
-   # Start Apache2
-   {{- if .Values.conf.software.apache2.a2enmod }}
-     {{- range .Values.conf.software.apache2.a2enmod }}
--- 
-2.7.4
-
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0003-Nova-console-ip-address-search-optionality.patch b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0003-Nova-console-ip-address-search-optionality.patch
deleted file mode 100644
index 8a57d19..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0003-Nova-console-ip-address-search-optionality.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 64b22037b53e6423c465367c26a6d7255768ae17 Mon Sep 17 00:00:00 2001
-From: Gerry Kopec <Gerry.Kopec@windriver.com>
-Date: Wed, 27 Mar 2019 00:35:57 -0400
-Subject: [PATCH 03] Nova console/ip address search optionality
-
-Add options to nova to enable/disable the use of:
-1. the vnc or spice server proxyclient address found by the console
-   compute init container
-2. my_ip hypervisor address found by compute init container
-
-These options can be used to prevent cases where the found addresses
-overwrite what has already been defined in nova.conf by per host nova
-compute daemonset overrides.
-
-Story: 2005259
-Task: 30066
-Change-Id: Idf490f8b19dcd1e71a9b5fa8934461f1198a8af8
-Signed-off-by: Gerry Kopec <Gerry.Kopec@windriver.com>
-(cherry picked from commit f5e8ad20e35b770e5967f75f6f93f0a4dc6e3b41)
-Signed-off-by: Robert Church <robert.church@windriver.com>
----
- nova/templates/bin/_nova-compute.sh.tpl | 6 +++++-
- nova/values.yaml                        | 3 ++-
- 2 files changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/nova/templates/bin/_nova-compute.sh.tpl b/nova/templates/bin/_nova-compute.sh.tpl
-index c80da6d..4927908 100644
---- a/nova/templates/bin/_nova-compute.sh.tpl
-+++ b/nova/templates/bin/_nova-compute.sh.tpl
-@@ -20,6 +20,10 @@ set -ex
- 
- exec nova-compute \
-       --config-file /etc/nova/nova.conf \
-+{{- if .Values.console.address_search_enabled }}
-       --config-file /tmp/pod-shared/nova-console.conf \
-+{{- end }}
-       --config-file /tmp/pod-shared/nova-libvirt.conf \
--      --config-file /tmp/pod-shared/nova-hypervisor.conf
-\ No newline at end of file
-+{{- if .Values.conf.hypervisor.address_search_enabled }}
-+      --config-file /tmp/pod-shared/nova-hypervisor.conf
-+{{- end }}
-diff --git a/nova/values.yaml b/nova/values.yaml
-index 29512ca..7ba2925 100644
---- a/nova/values.yaml
-+++ b/nova/values.yaml
-@@ -461,7 +461,7 @@ console:
-     vncproxy:
-       # IF blank, search default routing interface
-       vncserver_proxyclient_interface:
--
-+  address_search_enabled: true
- ssh:
-   key_types:
-     - rsa
-@@ -1598,6 +1598,7 @@ conf:
-     # If this option is set to None, the hostname of the migration target compute node will be used.
-     live_migration_interface:
-   hypervisor:
-+    address_search_enabled: true
-     # my_ip can be set automatically through this interface name.
-     host_interface:
-   # This list is the keys to exclude from the config file ingested by nova-compute
--- 
-2.7.4
-
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0004-Nova-chart-Support-ephemeral-pool-creation.patch b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0004-Nova-chart-Support-ephemeral-pool-creation.patch
deleted file mode 100644
index 6e66796..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0004-Nova-chart-Support-ephemeral-pool-creation.patch
+++ /dev/null
@@ -1,347 +0,0 @@
-From 4f6701c4cab07d9f54012e2a143173803f97ff3d Mon Sep 17 00:00:00 2001
-From: Irina Mihai <irina.mihai@windriver.com>
-Date: Tue, 26 Feb 2019 17:43:53 +0000
-Subject: [PATCH 04] Nova chart: Support ephemeral pool creation
-
-If libvirt images_type is rbd, then we need to have the
-images_rbd_pool present. These changes add a new job
-to make sure this pool exists.
-
-Change-Id: Iee307cb54384d1c4583d00a8d28f7b1a0676d7d8
-Story: 2004922
-Task: 29285
-Signed-off-by: Irina Mihai <irina.mihai@windriver.com>
-(cherry picked from commit 0afcb0b37cdcf57436e44867bac9242d8684ce81)
-Signed-off-by: Robert Church <robert.church@windriver.com>
----
- nova/templates/bin/_nova-storage-init.sh.tpl |  75 +++++++++++++
- nova/templates/configmap-bin.yaml            |   4 +-
- nova/templates/job-storage-init.yaml         | 155 +++++++++++++++++++++++++++
- nova/values.yaml                             |  19 +++-
- 4 files changed, 251 insertions(+), 2 deletions(-)
- create mode 100644 nova/templates/bin/_nova-storage-init.sh.tpl
- create mode 100644 nova/templates/job-storage-init.yaml
-
-diff --git a/nova/templates/bin/_nova-storage-init.sh.tpl b/nova/templates/bin/_nova-storage-init.sh.tpl
-new file mode 100644
-index 0000000..f79fcff
---- /dev/null
-+++ b/nova/templates/bin/_nova-storage-init.sh.tpl
-@@ -0,0 +1,75 @@
-+#!/bin/bash
-+
-+{{/*
-+Copyright 2019 The Openstack-Helm Authors.
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+   http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+See the License for the specific language governing permissions and
-+limitations under the License.
-+*/}}
-+
-+set -x
-+if [ "x$STORAGE_BACKEND" == "xrbd" ]; then
-+  SECRET=$(mktemp --suffix .yaml)
-+  KEYRING=$(mktemp --suffix .keyring)
-+  function cleanup {
-+      rm -f ${SECRET} ${KEYRING}
-+  }
-+  trap cleanup EXIT
-+fi
-+
-+set -ex
-+if [ "x$STORAGE_BACKEND" == "xrbd" ]; then
-+  ceph -s
-+  function ensure_pool () {
-+    ceph osd pool stats $1 || ceph osd pool create $1 $2
-+    local test_version=$(ceph tell osd.* version | egrep -c "mimic|luminous" | xargs echo)
-+    if [[ ${test_version} -gt 0 ]]; then
-+      ceph osd pool application enable $1 $3
-+    fi
-+    size_protection=$(ceph osd pool get $1 nosizechange | cut -f2 -d: | tr -d '[:space:]')
-+    ceph osd pool set $1 nosizechange 0
-+    ceph osd pool set $1 size ${RBD_POOL_REPLICATION}
-+    ceph osd pool set $1 nosizechange ${size_protection}
-+    ceph osd pool set $1 crush_rule "${RBD_POOL_CRUSH_RULE}"
-+  }
-+  ensure_pool ${RBD_POOL_NAME} ${RBD_POOL_CHUNK_SIZE} "nova-ephemeral"
-+
-+  if USERINFO=$(ceph auth get client.${RBD_POOL_USER}); then
-+    echo "Cephx user client.${RBD_POOL_USER} already exist."
-+    echo "Update its cephx caps"
-+    ceph auth caps client.${RBD_POOL_USER} \
-+      mon "profile rbd" \
-+      osd "profile rbd"
-+    ceph auth get client.${RBD_POOL_USER} -o ${KEYRING}
-+  else
-+    # NOTE: Restrict Nova permissions to what is needed.
-+    # MON Read only and RBD access to the Nova ephemeral pool only.
-+    ceph auth get-or-create client.${RBD_POOL_USER} \
-+      mon "profile rbd" \
-+      osd "profile rbd" \
-+      -o ${KEYRING}
-+  fi
-+
-+  ENCODED_KEYRING=$(sed -n 's/^[[:blank:]]*key[[:blank:]]\+=[[:blank:]]\(.*\)/\1/p' ${KEYRING} | base64 -w0)
-+  cat > ${SECRET} <<EOF
-+apiVersion: v1
-+kind: Secret
-+metadata:
-+  name: "${RBD_POOL_SECRET}"
-+type: kubernetes.io/rbd
-+data:
-+  key: $( echo ${ENCODED_KEYRING} )
-+EOF
-+  kubectl apply --namespace ${NAMESPACE} -f ${SECRET}
-+
-+fi
-+
-diff --git a/nova/templates/configmap-bin.yaml b/nova/templates/configmap-bin.yaml
-index c58b90b..268434f 100644
---- a/nova/templates/configmap-bin.yaml
-+++ b/nova/templates/configmap-bin.yaml
-@@ -1,5 +1,5 @@
- {{/*
--Copyright 2017 The Openstack-Helm Authors.
-+Copyright 2017-2019 The Openstack-Helm Authors.
- 
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
-@@ -83,6 +83,8 @@ data:
- {{ tuple "bin/_nova-console-proxy-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-   nova-console-proxy-init-assets.sh: |
- {{ tuple "bin/_nova-console-proxy-init-assets.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-+  nova-storage-init.sh: |
-+{{ tuple "bin/_nova-storage-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-   ssh-start.sh: |
- {{ tuple "bin/_ssh-start.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-   cell-setup.sh: |
-diff --git a/nova/templates/job-storage-init.yaml b/nova/templates/job-storage-init.yaml
-new file mode 100644
-index 0000000..7d057fb
---- /dev/null
-+++ b/nova/templates/job-storage-init.yaml
-@@ -0,0 +1,155 @@
-+{{/*
-+Copyright 2019 The Openstack-Helm Authors.
-+
-+Licensed under the Apache License, Version 2.0 (the "License");
-+you may not use this file except in compliance with the License.
-+You may obtain a copy of the License at
-+
-+   http://www.apache.org/licenses/LICENSE-2.0
-+
-+Unless required by applicable law or agreed to in writing, software
-+distributed under the License is distributed on an "AS IS" BASIS,
-+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+See the License for the specific language governing permissions and
-+limitations under the License.
-+*/}}
-+
-+{{- if .Values.manifests.job_storage_init }}
-+{{- $envAll := . }}
-+
-+{{- $serviceAccountName := "nova-storage-init" }}
-+{{ tuple $envAll "storage_init" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
-+---
-+apiVersion: rbac.authorization.k8s.io/v1beta1
-+kind: Role
-+metadata:
-+  name: {{ $serviceAccountName }}
-+rules:
-+  - apiGroups:
-+      - ""
-+    resources:
-+      - secrets
-+    verbs:
-+      - get
-+      - create
-+      - update
-+      - patch
-+---
-+apiVersion: rbac.authorization.k8s.io/v1beta1
-+kind: RoleBinding
-+metadata:
-+  name: {{ $serviceAccountName }}
-+roleRef:
-+  apiGroup: rbac.authorization.k8s.io
-+  kind: Role
-+  name: {{ $serviceAccountName }}
-+subjects:
-+  - kind: ServiceAccount
-+    name: {{ $serviceAccountName }}
-+    namespace: {{ $envAll.Release.Namespace }}
-+---
-+apiVersion: batch/v1
-+kind: Job
-+metadata:
-+  name: nova-storage-init
-+spec:
-+  template:
-+    metadata:
-+      labels:
-+{{ tuple $envAll "nova" "storage-init" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
-+    spec:
-+      serviceAccountName: {{ $serviceAccountName }}
-+      restartPolicy: OnFailure
-+      nodeSelector:
-+        {{ .Values.labels.job.node_selector_key }}: {{ .Values.labels.job.node_selector_value }}
-+      initContainers:
-+{{ tuple $envAll "storage_init" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
-+        {{ if or .Values.conf.ceph.enabled }}
-+        - name: ceph-keyring-placement
-+{{ tuple $envAll "nova_storage_init" | include "helm-toolkit.snippets.image" | indent 10 }}
-+          securityContext:
-+            runAsUser: 0
-+          command:
-+            - /tmp/ceph-admin-keyring.sh
-+          volumeMounts:
-+            - name: etcceph
-+              mountPath: /etc/ceph
-+            - name: nova-bin
-+              mountPath: /tmp/ceph-admin-keyring.sh
-+              subPath: ceph-admin-keyring.sh
-+              readOnly: true
-+            {{- if empty .Values.conf.ceph.admin_keyring }}
-+            - name: ceph-keyring
-+              mountPath: /tmp/client-keyring
-+              subPath: key
-+              readOnly: true
-+            {{ end }}
-+        {{ end }}
-+      containers:
-+        {{- range $ephemeralPool := .Values.conf.ceph.ephemeral_storage.rbd_pools }}
-+        - name: nova-storage-init-{{- $ephemeralPool.rbd_pool_name }}
-+{{ tuple $envAll "nova_storage_init" | include "helm-toolkit.snippets.image" | indent 10 }}
-+{{ tuple $envAll $envAll.Values.pod.resources.jobs.storage_init | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
-+          env:
-+            - name: NAMESPACE
-+              valueFrom:
-+                fieldRef:
-+                  fieldPath: metadata.namespace
-+            {{ if and (eq $envAll.Values.conf.ceph.ephemeral_storage.type "rbd") $envAll.Values.conf.ceph.enabled }}
-+            - name: STORAGE_BACKEND
-+              value: {{ $envAll.Values.conf.ceph.ephemeral_storage.type }}
-+            - name: RBD_POOL_NAME
-+              value: {{ $ephemeralPool.rbd_pool_name | quote }}
-+            - name: RBD_POOL_USER
-+              value: {{ $ephemeralPool.rbd_user | quote }}
-+            - name: RBD_POOL_CRUSH_RULE
-+              value: {{ $ephemeralPool.rbd_crush_rule | quote }}
-+            - name: RBD_POOL_REPLICATION
-+              value: {{ $ephemeralPool.rbd_replication | quote }}
-+            - name: RBD_POOL_CHUNK_SIZE
-+              value: {{ $ephemeralPool.rbd_chunk_size | quote }}
-+            - name: RBD_POOL_SECRET
-+              value: {{ $envAll.Values.secrets.ephemeral | quote }}
-+            {{- end }}
-+          command:
-+            - /tmp/nova-storage-init.sh
-+          volumeMounts:
-+            - name: nova-bin
-+              mountPath: /tmp/nova-storage-init.sh
-+              subPath: nova-storage-init.sh
-+              readOnly: true
-+            {{ if or $envAll.Values.conf.ceph.enabled }}
-+            - name: etcceph
-+              mountPath: /etc/ceph
-+            - name: ceph-etc
-+              mountPath: /etc/ceph/ceph.conf
-+              subPath: ceph.conf
-+              readOnly: true
-+            {{- if empty $envAll.Values.conf.ceph.admin_keyring }}
-+            - name: ceph-keyring
-+              mountPath: /tmp/client-keyring
-+              subPath: key
-+              readOnly: true
-+            {{- end }}
-+            {{- end }}
-+        {{- end }}
-+      volumes:
-+        - name: nova-bin
-+          configMap:
-+            name: nova-bin
-+            defaultMode: 0555
-+        {{ if or .Values.conf.ceph.enabled }}
-+        - name: etcceph
-+          emptyDir: {}
-+        - name: ceph-etc
-+          configMap:
-+            name: {{ .Values.ceph_client.configmap }}
-+            defaultMode: 0444
-+        {{- if empty .Values.conf.ceph.admin_keyring }}
-+        - name: ceph-keyring
-+          secret:
-+            secretName: {{ .Values.ceph_client.user_secret_name }}
-+        {{- end }}
-+        {{- end }}
-+{{- end }}
-+
-diff --git a/nova/values.yaml b/nova/values.yaml
-index 7ba2925..97ef1b5 100644
---- a/nova/values.yaml
-+++ b/nova/values.yaml
-@@ -87,6 +87,7 @@ images:
-     nova_service_cleaner: 'docker.io/port/ceph-config-helper:v1.10.3'
-     nova_spiceproxy: docker.io/openstackhelm/nova:ocata-ubuntu_xenial
-     nova_spiceproxy_assets: 'docker.io/kolla/ubuntu-source-nova-spicehtml5proxy:ocata'
-+    nova_storage_init: 'docker.io/port/ceph-config-helper:v1.10.3'
-     test: docker.io/xrally/xrally-openstack:1.3.0
-     image_repo_sync: docker.io/docker:17.07.0
-   local_registry:
-@@ -556,6 +557,14 @@ conf:
-       user: "cinder"
-       keyring: null
-       secret_uuid: 457eb676-33da-42ec-9a8c-9293d545c337
-+    ephemeral_storage:
-+      type: rbd
-+      rbd_pools:
-+      - rbd_pool_name: ephemeral
-+        rbd_user: ephemeral
-+        rbd_crush_rule: 0
-+        rbd_replication: 3
-+        rbd_chunk_size: 64
-   ssh: |
-     Host *
-       StrictHostKeyChecking no
-@@ -1797,6 +1806,7 @@ secrets:
-     placement:
-       placement:
-         public: placement-tls-public
-+  ephemeral: nova-ephemeral
- 
- # typically overridden by environmental
- # values, but should include all endpoints
-@@ -2482,7 +2492,13 @@ pod:
-         limits:
-           memory: "1024Mi"
-           cpu: "2000m"
--
-+      storage_init:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
- network_policy:
-   nova:
-     # TODO(lamt): Need to tighten this ingress for security.
-@@ -2545,6 +2561,7 @@ manifests:
-   job_ks_placement_service: true
-   job_ks_placement_user: true
-   job_cell_setup: true
-+  job_storage_init: true
-   pdb_metadata: true
-   pdb_placement: true
-   pdb_osapi: true
--- 
-2.7.4
-
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0005-Nova-Add-support-for-disabling-Readiness-Liveness-pr.patch b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0005-Nova-Add-support-for-disabling-Readiness-Liveness-pr.patch
deleted file mode 100644
index 2d89230..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0005-Nova-Add-support-for-disabling-Readiness-Liveness-pr.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From af94c98eee44769a2c1e8f211029f8346a13ebc2 Mon Sep 17 00:00:00 2001
-From: Robert Church <robert.church@windriver.com>
-Date: Fri, 22 Mar 2019 03:42:08 -0400
-Subject: [PATCH 05] Nova: Add support for disabling Readiness/Liveness
- probes
-
-With the introduction of Readiness/Liveness probes in
-Ib8e4b93486588320fd2d562c3bc90b65844e52e5, some probes are failing and
-preventing successful armada manifest applies.
-
-Add support to disable the probes.
-
-Change-Id: Iebe7327055f58fa78ce3fcac968c1fa617c30c2f
-Signed-off-by: Robert Church <robert.church@windriver.com>
----
- nova/templates/daemonset-compute.yaml      |  4 ++++
- nova/templates/deployment-conductor.yaml   |  4 ++++
- nova/templates/deployment-consoleauth.yaml |  4 ++++
- nova/templates/deployment-novncproxy.yaml  |  4 ++++
- nova/templates/deployment-scheduler.yaml   |  4 ++++
- nova/templates/deployment-spiceproxy.yaml  |  4 ++++
- nova/values.yaml                           | 28 ++++++++++++++++++++++++++++
- 7 files changed, 52 insertions(+)
-
-diff --git a/nova/templates/daemonset-compute.yaml b/nova/templates/daemonset-compute.yaml
-index feea6ab..86dc2b9 100644
---- a/nova/templates/daemonset-compute.yaml
-+++ b/nova/templates/daemonset-compute.yaml
-@@ -190,6 +190,7 @@ spec:
-             - name: LIBVIRT_CEPH_SECRET_UUID
-               value: "{{ .Values.conf.ceph.secret_uuid }}"
-           {{ end }}
-+          {{- if .Values.pod.probes.readiness.nova_compute.enabled }}
-           readinessProbe:
-             exec:
-               command:
-@@ -202,6 +203,8 @@ spec:
-             initialDelaySeconds: 80
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-+          {{- if .Values.pod.probes.liveness.nova_compute.enabled }}
-           livenessProbe:
-             exec:
-               command:
-@@ -215,6 +218,7 @@ spec:
-             initialDelaySeconds: 120
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-           command:
-             - /tmp/nova-compute.sh
-           volumeMounts:
-diff --git a/nova/templates/deployment-conductor.yaml b/nova/templates/deployment-conductor.yaml
-index f927afa..0caa006 100644
---- a/nova/templates/deployment-conductor.yaml
-+++ b/nova/templates/deployment-conductor.yaml
-@@ -59,6 +59,7 @@ spec:
- {{ tuple $envAll "nova_conductor" | include "helm-toolkit.snippets.image" | indent 10 }}
- {{ tuple $envAll $envAll.Values.pod.resources.conductor | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
- {{ dict "envAll" $envAll "application" "nova" "container" "nova_conductor" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
-+          {{- if .Values.pod.probes.readiness.nova_conductor.enabled }}
-           readinessProbe:
-             exec:
-               command:
-@@ -71,6 +72,8 @@ spec:
-             initialDelaySeconds: 80
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-+          {{- if .Values.pod.probes.liveness.nova_conductor.enabled }}
-           livenessProbe:
-             exec:
-               command:
-@@ -84,6 +87,7 @@ spec:
-             initialDelaySeconds: 120
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-           command:
-             - /tmp/nova-conductor.sh
-           volumeMounts:
-diff --git a/nova/templates/deployment-consoleauth.yaml b/nova/templates/deployment-consoleauth.yaml
-index b9cb717..0f590e0 100644
---- a/nova/templates/deployment-consoleauth.yaml
-+++ b/nova/templates/deployment-consoleauth.yaml
-@@ -59,6 +59,7 @@ spec:
- {{ tuple $envAll "nova_consoleauth" | include "helm-toolkit.snippets.image" | indent 10 }}
- {{ tuple $envAll $envAll.Values.pod.resources.consoleauth | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
- {{ dict "envAll" $envAll "application" "nova" "container" "nova_consoleauth" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
-+          {{- if .Values.pod.probes.readiness.nova_consoleauth.enabled }}
-           readinessProbe:
-             exec:
-               command:
-@@ -71,6 +72,8 @@ spec:
-             initialDelaySeconds: 80
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-+          {{- if .Values.pod.probes.liveness.nova_consoleauth.enabled }}
-           livenessProbe:
-             exec:
-               command:
-@@ -84,6 +87,7 @@ spec:
-             initialDelaySeconds: 120
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-           command:
-             - /tmp/nova-consoleauth.sh
-           volumeMounts:
-diff --git a/nova/templates/deployment-novncproxy.yaml b/nova/templates/deployment-novncproxy.yaml
-index 42a52af..495c1ac 100644
---- a/nova/templates/deployment-novncproxy.yaml
-+++ b/nova/templates/deployment-novncproxy.yaml
-@@ -103,14 +103,18 @@ spec:
- {{ tuple $envAll "nova_novncproxy" | include "helm-toolkit.snippets.image" | indent 10 }}
- {{ tuple $envAll $envAll.Values.pod.resources.novncproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
- {{ dict "envAll" $envAll "application" "nova" "container" "nova_novncproxy" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
-+          {{- if .Values.pod.probes.readiness.nova_novcnproxy.enabled }}
-           readinessProbe:
-             tcpSocket:
-               port: {{ tuple "compute_novnc_proxy" "internal" "novnc_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-             initialDelaySeconds: 30
-+          {{- end }}
-+          {{- if .Values.pod.probes.liveness.nova_novcnproxy.enabled }}
-           livenessProbe:
-             tcpSocket:
-               port: {{ tuple "compute_novnc_proxy" "internal" "novnc_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-             initialDelaySeconds: 30
-+          {{- end }}
-           command:
-             - /tmp/nova-console-proxy.sh
-           ports:
-diff --git a/nova/templates/deployment-scheduler.yaml b/nova/templates/deployment-scheduler.yaml
-index 05ee949..9a30fa6 100644
---- a/nova/templates/deployment-scheduler.yaml
-+++ b/nova/templates/deployment-scheduler.yaml
-@@ -59,6 +59,7 @@ spec:
- {{ tuple $envAll "nova_scheduler" | include "helm-toolkit.snippets.image" | indent 10 }}
- {{ tuple $envAll $envAll.Values.pod.resources.scheduler | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
- {{ dict "envAll" $envAll "application" "nova" "container" "nova_scheduler" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
-+          {{- if .Values.pod.probes.readiness.nova_scheduler.enabled }}
-           readinessProbe:
-             exec:
-               command:
-@@ -72,6 +73,8 @@ spec:
-             initialDelaySeconds: 80
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-+          {{- if .Values.pod.probes.liveness.nova_scheduler.enabled }}
-           livenessProbe:
-             exec:
-               command:
-@@ -86,6 +89,7 @@ spec:
-             initialDelaySeconds: 120
-             periodSeconds: 90
-             timeoutSeconds: 70
-+          {{- end }}
-           command:
-             - /tmp/nova-scheduler.sh
-           volumeMounts:
-diff --git a/nova/templates/deployment-spiceproxy.yaml b/nova/templates/deployment-spiceproxy.yaml
-index a221656..038c85c 100644
---- a/nova/templates/deployment-spiceproxy.yaml
-+++ b/nova/templates/deployment-spiceproxy.yaml
-@@ -101,14 +101,18 @@ spec:
- {{ tuple $envAll "nova_spiceproxy" | include "helm-toolkit.snippets.image" | indent 10 }}
- {{ tuple $envAll $envAll.Values.pod.resources.spiceproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
- {{ dict "envAll" $envAll "application" "nova" "container" "nova_spiceproxy" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
-+          {{- if .Values.pod.probes.readiness.nova_spiceproxy.enabled }}
-           readinessProbe:
-             tcpSocket:
-               port: {{ tuple "compute_spice_proxy" "internal" "spice_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-             initialDelaySeconds: 30
-+          {{- end }}
-+          {{- if .Values.pod.probes.liveness.nova_spiceproxy.enabled }}
-           livenessProbe:
-             tcpSocket:
-               port: {{ tuple "compute_spice_proxy" "internal" "spice_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-             initialDelaySeconds: 30
-+          {{- end }}
-           command:
-             - /tmp/nova-console-proxy.sh
-           ports:
-diff --git a/nova/values.yaml b/nova/values.yaml
-index 97ef1b5..4092329 100644
---- a/nova/values.yaml
-+++ b/nova/values.yaml
-@@ -2499,6 +2499,34 @@ pod:
-         limits:
-           memory: "1024Mi"
-           cpu: "2000m"
-+  probes:
-+    readiness:
-+      nova_compute:
-+        enabled: true
-+      nova_conductor:
-+        enabled: true
-+      nova_consoleauth:
-+        enabled: true
-+      nova_novcnproxy:
-+        enabled: true
-+      nova_scheduler:
-+        enabled: true
-+      nova_spiceproxy:
-+        enabled: true
-+    liveness:
-+      nova_compute:
-+        enabled: true
-+      nova_conductor:
-+        enabled: true
-+      nova_consoleauth:
-+        enabled: true
-+      nova_novcnproxy:
-+        enabled: true
-+      nova_scheduler:
-+        enabled: true
-+      nova_spiceproxy:
-+        enabled: true
-+
- network_policy:
-   nova:
-     # TODO(lamt): Need to tighten this ingress for security.
--- 
-2.7.4
-
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0006-Add-Placement-Chart.patch b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0006-Add-Placement-Chart.patch
deleted file mode 100644
index e0b9615..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/0006-Add-Placement-Chart.patch
+++ /dev/null
@@ -1,1114 +0,0 @@
-From 374b61d70c593694f850bd6f6a74842c12ecf5f8 Mon Sep 17 00:00:00 2001
-From: zhipengl <zhipengs.liu@intel.com>
-Date: Fri, 31 May 2019 06:49:51 +0800
-Subject: [PATCH] Add placement chart
-
-This commit adds a helm chart to deploy placement.
-
-Related test pass on simplex and multi-node setup
-
-Story: 2005799
-Task: 33532
-
-Change-Id: Ife908628c6379d2d39d15f72073da3018cc26950
-Signed-off-by: zhipengl <zhipengs.liu@intel.com>
----
- placement/Chart.yaml                          |   9 +
- placement/requirements.yaml                   |  10 +
- placement/templates/bin/_db-sync.sh.tpl       |  13 +
- placement/templates/bin/_placement-api.sh.tpl |  34 +++
- placement/templates/configmap-bin.yaml        |  31 ++
- placement/templates/configmap-etc.yaml        |  58 ++++
- placement/templates/deployment.yaml           | 116 ++++++++
- placement/templates/ingress.yaml              |  12 +
- placement/templates/job-db-drop.yaml          |  13 +
- placement/templates/job-db-init.yaml          |  15 +
- placement/templates/job-db-sync.yaml          |  12 +
- placement/templates/job-image-repo-sync.yaml  |  12 +
- placement/templates/job-ks-endpoints.yaml     |  12 +
- placement/templates/job-ks-service.yaml       |  12 +
- placement/templates/job-ks-user.yaml          |  12 +
- placement/templates/network_policy.yaml       |  12 +
- placement/templates/pdb.yaml                  |  21 ++
- placement/templates/secret-db.yaml            |  22 ++
- placement/templates/secret-ingress-tls.yaml   |  11 +
- placement/templates/secret-keystone.yaml      |  22 ++
- placement/templates/service-ingress.yaml      |  12 +
- placement/templates/service.yaml              |  26 ++
- placement/values.yaml                         | 413 ++++++++++++++++++++++++++
- 23 files changed, 910 insertions(+)
- create mode 100644 placement/Chart.yaml
- create mode 100644 placement/requirements.yaml
- create mode 100644 placement/templates/bin/_db-sync.sh.tpl
- create mode 100644 placement/templates/bin/_placement-api.sh.tpl
- create mode 100644 placement/templates/configmap-bin.yaml
- create mode 100644 placement/templates/configmap-etc.yaml
- create mode 100644 placement/templates/deployment.yaml
- create mode 100644 placement/templates/ingress.yaml
- create mode 100644 placement/templates/job-db-drop.yaml
- create mode 100644 placement/templates/job-db-init.yaml
- create mode 100644 placement/templates/job-db-sync.yaml
- create mode 100644 placement/templates/job-image-repo-sync.yaml
- create mode 100644 placement/templates/job-ks-endpoints.yaml
- create mode 100644 placement/templates/job-ks-service.yaml
- create mode 100644 placement/templates/job-ks-user.yaml
- create mode 100644 placement/templates/network_policy.yaml
- create mode 100644 placement/templates/pdb.yaml
- create mode 100644 placement/templates/secret-db.yaml
- create mode 100644 placement/templates/secret-ingress-tls.yaml
- create mode 100644 placement/templates/secret-keystone.yaml
- create mode 100644 placement/templates/service-ingress.yaml
- create mode 100644 placement/templates/service.yaml
- create mode 100644 placement/values.yaml
-
-diff --git a/placement/Chart.yaml b/placement/Chart.yaml
-new file mode 100644
-index 0000000..e8eb058
---- /dev/null
-+++ b/placement/Chart.yaml
-@@ -0,0 +1,9 @@
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+
-+apiVersion: v1
-+appVersion: "1.0"
-+description: OpenStack Placement Service
-+name: placement
-+version: 0.1.0
-diff --git a/placement/requirements.yaml b/placement/requirements.yaml
-new file mode 100644
-index 0000000..3a162a6
---- /dev/null
-+++ b/placement/requirements.yaml
-@@ -0,0 +1,10 @@
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+
-+dependencies:
-+  - name: helm-toolkit
-+    repository: http://localhost:8879/charts
-+    version: 0.1.0
-diff --git a/placement/templates/bin/_db-sync.sh.tpl b/placement/templates/bin/_db-sync.sh.tpl
-new file mode 100644
-index 0000000..4a36848
---- /dev/null
-+++ b/placement/templates/bin/_db-sync.sh.tpl
-@@ -0,0 +1,13 @@
-+#!/bin/bash
-+
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+set -ex
-+
-+su -s /bin/sh -c "placement-manage db sync" placement
-diff --git a/placement/templates/bin/_placement-api.sh.tpl b/placement/templates/bin/_placement-api.sh.tpl
-new file mode 100644
-index 0000000..4f82970
---- /dev/null
-+++ b/placement/templates/bin/_placement-api.sh.tpl
-@@ -0,0 +1,34 @@
-+#!/bin/bash
-+
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+set -ex
-+COMMAND="${@:-start}"
-+
-+function start () {
-+
-+  cp -a $(type -p placement-api) /var/www/cgi-bin/placement/
-+
-+  if [ -f /etc/apache2/envvars ]; then
-+     # Loading Apache2 ENV variables
-+     source /etc/apache2/envvars
-+  fi
-+
-+  # Get rid of stale pid file if present.
-+  rm -f /var/run/apache2/*.pid
-+
-+  # Start Apache2
-+  exec apache2 -DFOREGROUND
-+}
-+
-+function stop () {
-+  apachectl -k graceful-stop
-+}
-+
-+$COMMAND
-diff --git a/placement/templates/configmap-bin.yaml b/placement/templates/configmap-bin.yaml
-new file mode 100644
-index 0000000..3e98ea9
---- /dev/null
-+++ b/placement/templates/configmap-bin.yaml
-@@ -0,0 +1,31 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.configmap_bin }}
-+{{- $envAll := . }}
-+---
-+apiVersion: v1
-+kind: ConfigMap
-+metadata:
-+  name: placement-bin
-+data:
-+  placement-api.sh: |
-+{{ tuple "bin/_placement-api.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-+  db-sync.sh: |
-+{{ tuple "bin/_db-sync.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-+  db-init.py: |
-+{{- include "helm-toolkit.scripts.db_init" . | indent 4 }}
-+  db-drop.py: |
-+{{- include "helm-toolkit.scripts.db_drop" . | indent 4 }}
-+  ks-service.sh: |
-+{{- include "helm-toolkit.scripts.keystone_service" . | indent 4 }}
-+  ks-endpoints.sh: |
-+{{- include "helm-toolkit.scripts.keystone_endpoints" . | indent 4 }}
-+  ks-user.sh: |
-+{{- include "helm-toolkit.scripts.keystone_user" . | indent 4 }}
-+{{- end }}
-diff --git a/placement/templates/configmap-etc.yaml b/placement/templates/configmap-etc.yaml
-new file mode 100644
-index 0000000..62834cc
---- /dev/null
-+++ b/placement/templates/configmap-etc.yaml
-@@ -0,0 +1,58 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.configmap_etc }}
-+{{- $envAll := . }}
-+
-+{{- if empty .Values.conf.placement.placement_database.connection -}}
-+{{- $_ := tuple "oslo_db" "internal" "placement" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | set .Values.conf.placement.placement_database "connection" -}}
-+{{- end -}}
-+
-+{{- if empty .Values.conf.placement.keystone_authtoken.auth_uri -}}
-+{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.placement.keystone_authtoken "auth_uri" -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.auth_url -}}
-+{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.placement.keystone_authtoken "auth_url" -}}
-+{{- end -}}
-+
-+{{- if empty .Values.conf.placement.keystone_authtoken.os_region_name -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "os_region_name" .Values.endpoints.identity.auth.placement.region_name -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.project_name -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "project_name" .Values.endpoints.identity.auth.placement.project_name -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.project_domain_name -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "project_domain_name" .Values.endpoints.identity.auth.placement.project_domain_name -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.user_domain_name -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "user_domain_name" .Values.endpoints.identity.auth.placement.user_domain_name -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.username -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "username" .Values.endpoints.identity.auth.placement.username -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.password -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "password" .Values.endpoints.identity.auth.placement.password -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.memcached_servers -}}
-+{{- $_ := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.placement.keystone_authtoken "memcached_servers" -}}
-+{{- end -}}
-+{{- if empty .Values.conf.placement.keystone_authtoken.memcache_secret_key -}}
-+{{- $_ := set .Values.conf.placement.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
-+{{- end -}}
-+---
-+apiVersion: v1
-+kind: Secret
-+metadata:
-+  name: placement-etc
-+type: Opaque
-+data:
-+  policy.yaml: {{ toYaml .Values.conf.policy | b64enc }}
-+  placement.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.placement | b64enc }}
-+  logging.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.logging | b64enc }}
-+{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.wsgi_placement "key" "wsgi-placement.conf" "format" "Secret" ) | indent 2 }}
-+{{- end }}
-diff --git a/placement/templates/deployment.yaml b/placement/templates/deployment.yaml
-new file mode 100644
-index 0000000..922bbcf
---- /dev/null
-+++ b/placement/templates/deployment.yaml
-@@ -0,0 +1,116 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.deployment }}
-+{{- $envAll := . }}
-+
-+{{- $mounts_placement := .Values.pod.mounts.placement.placement }}
-+{{- $mounts_placement_init := .Values.pod.mounts.placement.init_container }}
-+
-+{{- $serviceAccountName := "placement-api" }}
-+{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
-+---
-+apiVersion: apps/v1
-+kind: Deployment
-+metadata:
-+  name: placement-api
-+  annotations:
-+    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
-+  labels:
-+{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
-+spec:
-+  replicas: {{ .Values.pod.replicas.api }}
-+  selector:
-+    matchLabels:
-+{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
-+{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
-+  template:
-+    metadata:
-+      labels:
-+{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
-+      annotations:
-+{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
-+        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
-+        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
-+    spec:
-+      serviceAccountName: {{ $serviceAccountName }}
-+      affinity:
-+{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
-+      nodeSelector:
-+        {{ .Values.labels.api.node_selector_key }}: {{ .Values.labels.api.node_selector_value }}
-+      terminationGracePeriodSeconds: {{ .Values.pod.lifecycle.termination_grace_period.api.timeout | default "30" }}
-+      initContainers:
-+{{ tuple $envAll "api" $mounts_placement_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
-+      containers:
-+        - name: placement-api
-+{{ tuple $envAll "placement" | include "helm-toolkit.snippets.image" | indent 10 }}
-+{{ tuple $envAll $envAll.Values.pod.resources.api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
-+          command:
-+            - /tmp/placement-api.sh
-+            - start
-+          lifecycle:
-+            preStop:
-+              exec:
-+                command:
-+                  - /tmp/placement-api.sh
-+                  - stop
-+          ports:
-+            - name: p-api
-+              containerPort: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-+          readinessProbe:
-+            #NOTE(portdirect): use tcpSocket check as HTTP will return 401
-+            tcpSocket:
-+              port: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-+            initialDelaySeconds: 15
-+            periodSeconds: 10
-+          livenessProbe:
-+            tcpSocket:
-+              port: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-+            initialDelaySeconds: 50
-+            periodSeconds: 10
-+          volumeMounts:
-+            - name: pod-tmp
-+              mountPath: /tmp
-+            - name: wsgi-placement
-+              mountPath: /var/www/cgi-bin/placement
-+            - name: placement-bin
-+              mountPath: /tmp/placement-api.sh
-+              subPath: placement-api.sh
-+              readOnly: true
-+            - name: placement-etc
-+              mountPath: /etc/placement/placement.conf
-+              subPath: placement.conf
-+              readOnly: true
-+            - name: placement-etc
-+              mountPath: {{ .Values.conf.placement.DEFAULT.log_config_append }}
-+              subPath: {{ base .Values.conf.placement.DEFAULT.log_config_append }}
-+              readOnly: true
-+            - name: placement-etc
-+              mountPath: /etc/placement/policy.yaml
-+              subPath: policy.yaml
-+              readOnly: true
-+            - name: placement-etc
-+              mountPath: /etc/apache2/conf-enabled/wsgi-placement.conf
-+              subPath: wsgi-placement.conf
-+              readOnly: true
-+{{ if $mounts_placement.volumeMounts }}{{ toYaml $mounts_placement.volumeMounts | indent 12 }}{{ end }}
-+      volumes:
-+        - name: pod-tmp
-+          emptyDir: {}
-+        - name: wsgi-placement
-+          emptyDir: {}
-+        - name: placement-bin
-+          configMap:
-+            name: placement-bin
-+            defaultMode: 0555
-+        - name: placement-etc
-+          secret:
-+            secretName: placement-etc
-+            defaultMode: 0444
-+{{ if $mounts_placement.volumes }}{{ toYaml $mounts_placement.volumes | indent 8 }}{{ end }}
-+{{- end }}
-diff --git a/placement/templates/ingress.yaml b/placement/templates/ingress.yaml
-new file mode 100644
-index 0000000..5dcced8
---- /dev/null
-+++ b/placement/templates/ingress.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if and .Values.manifests.ingress .Values.network.api.ingress.public }}
-+{{- $ingressOpts := dict "envAll" . "backendServiceType" "placement" "backendPort" "p-api" -}}
-+{{ $ingressOpts | include "helm-toolkit.manifests.ingress" }}
-+{{- end }}
-diff --git a/placement/templates/job-db-drop.yaml b/placement/templates/job-db-drop.yaml
-new file mode 100644
-index 0000000..1cdb753
---- /dev/null
-+++ b/placement/templates/job-db-drop.yaml
-@@ -0,0 +1,13 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.job_db_drop }}
-+{{- $serviceName := "placement" -}}
-+{{- $dbDropJob := dict "envAll" . "serviceName" $serviceName -}}
-+{{ $dbDropJob | include "helm-toolkit.manifests.job_db_drop_mysql" }}
-+{{- end }}
-diff --git a/placement/templates/job-db-init.yaml b/placement/templates/job-db-init.yaml
-new file mode 100644
-index 0000000..4c9d450
---- /dev/null
-+++ b/placement/templates/job-db-init.yaml
-@@ -0,0 +1,15 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.job_db_init }}
-+{{- $serviceName := "placement" -}}
-+{{- $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" -}}
-+{{- $dbsToInit := list $dbApi }}
-+{{- $dbInitJob := dict "envAll" . "serviceName" $serviceName "dbsToInit" $dbsToInit -}}
-+{{ $dbInitJob | include "helm-toolkit.manifests.job_db_init_mysql" }}
-+{{- end }}
-diff --git a/placement/templates/job-db-sync.yaml b/placement/templates/job-db-sync.yaml
-new file mode 100644
-index 0000000..5aeefba
---- /dev/null
-+++ b/placement/templates/job-db-sync.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.job_db_sync }}
-+{{- $dbSyncJob := dict "envAll" . "serviceName" "placement" -}}
-+{{ $dbSyncJob | include "helm-toolkit.manifests.job_db_sync" }}
-+{{- end }}
-diff --git a/placement/templates/job-image-repo-sync.yaml b/placement/templates/job-image-repo-sync.yaml
-new file mode 100644
-index 0000000..022b160
---- /dev/null
-+++ b/placement/templates/job-image-repo-sync.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if and .Values.manifests.job_image_repo_sync .Values.images.local_registry.active }}
-+{{- $imageRepoSyncJob := dict "envAll" . "serviceName" "placement" -}}
-+{{ $imageRepoSyncJob | include "helm-toolkit.manifests.job_image_repo_sync" }}
-+{{- end }}
-diff --git a/placement/templates/job-ks-endpoints.yaml b/placement/templates/job-ks-endpoints.yaml
-new file mode 100644
-index 0000000..d3a43fc
---- /dev/null
-+++ b/placement/templates/job-ks-endpoints.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2018 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.job_ks_endpoints }}
-+{{- $ksServiceJob := dict "envAll" . "serviceName" "placement" "serviceTypes" ( tuple "placement" ) -}}
-+{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_endpoints" }}
-+{{- end }}
-diff --git a/placement/templates/job-ks-service.yaml b/placement/templates/job-ks-service.yaml
-new file mode 100644
-index 0000000..0dd6d6e
---- /dev/null
-+++ b/placement/templates/job-ks-service.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.job_ks_service }}
-+{{- $ksServiceJob := dict "envAll" . "serviceName" "placement" "serviceTypes" ( tuple "placement" ) -}}
-+{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_service" }}
-+{{- end }}
-diff --git a/placement/templates/job-ks-user.yaml b/placement/templates/job-ks-user.yaml
-new file mode 100644
-index 0000000..b0f7799
---- /dev/null
-+++ b/placement/templates/job-ks-user.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.job_ks_user }}
-+{{- $ksUserJob := dict "envAll" . "serviceName" "placement" -}}
-+{{ $ksUserJob | include "helm-toolkit.manifests.job_ks_user" }}
-+{{- end }}
-diff --git a/placement/templates/network_policy.yaml b/placement/templates/network_policy.yaml
-new file mode 100644
-index 0000000..6355f90
---- /dev/null
-+++ b/placement/templates/network_policy.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.network_policy -}}
-+{{- $netpol_opts := dict "envAll" . "name" "application" "label" "placement" }}
-+{{ $netpol_opts | include "helm-toolkit.manifests.kubernetes_network_policy" }}
-+{{- end -}}
-diff --git a/placement/templates/pdb.yaml b/placement/templates/pdb.yaml
-new file mode 100644
-index 0000000..a61fe58
---- /dev/null
-+++ b/placement/templates/pdb.yaml
-@@ -0,0 +1,21 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.pdb }}
-+{{- $envAll := . }}
-+---
-+apiVersion: policy/v1beta1
-+kind: PodDisruptionBudget
-+metadata:
-+  name: placement-api
-+spec:
-+  minAvailable: {{ .Values.pod.lifecycle.disruption_budget.api.min_available }}
-+  selector:
-+    matchLabels:
-+{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
-+{{- end }}
-diff --git a/placement/templates/secret-db.yaml b/placement/templates/secret-db.yaml
-new file mode 100644
-index 0000000..5c7321e
---- /dev/null
-+++ b/placement/templates/secret-db.yaml
-@@ -0,0 +1,22 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.secret_db }}
-+{{- $envAll := . }}
-+{{- range $key1, $userClass := tuple "admin" "placement" }}
-+{{- $secretName := index $envAll.Values.secrets.oslo_db $userClass }}
-+---
-+apiVersion: v1
-+kind: Secret
-+metadata:
-+  name: {{ $secretName }}
-+type: Opaque
-+data:
-+  DB_CONNECTION: {{ tuple "oslo_db" "internal" $userClass "mysql" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | b64enc -}}
-+{{- end }}
-+{{- end }}
-diff --git a/placement/templates/secret-ingress-tls.yaml b/placement/templates/secret-ingress-tls.yaml
-new file mode 100644
-index 0000000..3413b5b
---- /dev/null
-+++ b/placement/templates/secret-ingress-tls.yaml
-@@ -0,0 +1,11 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.secret_ingress_tls }}
-+{{ include "helm-toolkit.manifests.secret_ingress_tls" ( dict "envAll" . "backendServiceType" "placement" ) }}
-+{{- end }}
-diff --git a/placement/templates/secret-keystone.yaml b/placement/templates/secret-keystone.yaml
-new file mode 100644
-index 0000000..efc1a17
---- /dev/null
-+++ b/placement/templates/secret-keystone.yaml
-@@ -0,0 +1,22 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.secret_keystone }}
-+{{- $envAll := . }}
-+{{- range $key1, $userClass := tuple "admin" "placement" }}
-+{{- $secretName := index $envAll.Values.secrets.identity $userClass }}
-+---
-+apiVersion: v1
-+kind: Secret
-+metadata:
-+  name: {{ $secretName }}
-+type: Opaque
-+data:
-+{{- tuple $userClass "internal" $envAll | include "helm-toolkit.snippets.keystone_secret_openrc" | indent 2 -}}
-+{{- end }}
-+{{- end }}
-diff --git a/placement/templates/service-ingress.yaml b/placement/templates/service-ingress.yaml
-new file mode 100644
-index 0000000..75fcd61
---- /dev/null
-+++ b/placement/templates/service-ingress.yaml
-@@ -0,0 +1,12 @@
-+{{/*
-+#
-+# Copyright (c) 2019 StarlingX.
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if and .Values.manifests.service_ingress .Values.network.api.ingress.public }}
-+{{- $serviceIngressOpts := dict "envAll" . "backendServiceType" "placement" -}}
-+{{ $serviceIngressOpts | include "helm-toolkit.manifests.service_ingress" }}
-+{{- end }}
-diff --git a/placement/templates/service.yaml b/placement/templates/service.yaml
-new file mode 100644
-index 0000000..0bda157
---- /dev/null
-+++ b/placement/templates/service.yaml
-@@ -0,0 +1,26 @@
-+{{/*
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+*/}}
-+
-+{{- if .Values.manifests.service }}
-+{{- $envAll := . }}
-+---
-+apiVersion: v1
-+kind: Service
-+metadata:
-+  name: {{ tuple "placement" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
-+spec:
-+  ports:
-+  - name: p-api
-+    port: {{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-+    {{ if .Values.network.api.node_port.enabled }}
-+    nodePort: {{ .Values.network.api.node_port.port }}
-+    {{ end }}
-+  selector:
-+{{ tuple $envAll "placement" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
-+  {{ if .Values.network.api.node_port.enabled }}
-+  type: NodePort
-+  {{ end }}
-+{{- end }}
-diff --git a/placement/values.yaml b/placement/values.yaml
-new file mode 100644
-index 0000000..33139f0
---- /dev/null
-+++ b/placement/values.yaml
-@@ -0,0 +1,413 @@
-+#
-+# SPDX-License-Identifier: Apache-2.0
-+#
-+
-+# Default values for openstack-placement.
-+# This is a YAML-formatted file.
-+# Declare variables to be passed into your templates.
-+
-+release_group: null
-+
-+labels:
-+  api:
-+    node_selector_key: openstack-control-plane
-+    node_selector_value: enabled
-+  job:
-+    node_selector_key: openstack-control-plane
-+    node_selector_value: enabled
-+
-+images:
-+  pull_policy: IfNotPresent
-+  tags:
-+    placement: docker.io/openstackhelm/placement:ocata-ubuntu_xenial
-+    ks_user: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
-+    ks_service: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
-+    ks_endpoints: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
-+    db_init: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
-+    db_drop: docker.io/openstackhelm/heat:ocata-ubuntu_xenial
-+    placement_db_sync: docker.io/openstackhelm/placement:ocata-ubuntu_xenial
-+    dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
-+    image_repo_sync: docker.io/docker:17.07.0
-+  local_registry:
-+    active: false
-+    exclude:
-+      - dep_check
-+      - image_repo_sync
-+
-+network:
-+  api:
-+    port: 8778
-+    ingress:
-+      public: true
-+      classes:
-+        namespace: "nginx"
-+        cluster: "nginx-cluster"
-+      annotations:
-+        nginx.ingress.kubernetes.io/rewrite-target: /
-+    external_policy_local: false
-+    node_port:
-+      enabled: false
-+      port: 30778
-+
-+conf:
-+  policy:
-+    context_is_admin: 'role:admin'
-+    segregation: 'rule:context_is_admin'
-+    admin_or_owner: 'rule:context_is_admin or project_id:%(project_id)s'
-+    default: 'rule:admin_or_owner'
-+  placement:
-+    DEFAULT:
-+      debug: false
-+      use_syslog: false
-+      log_config_append: /etc/placement/logging.conf
-+    placement_database:
-+      connection: null
-+    keystone_authtoken:
-+      auth_version: v3
-+      auth_type: password
-+      memcache_security_strategy: ENCRYPT
-+  logging:
-+    loggers:
-+      keys:
-+        - root
-+        - placement
-+    handlers:
-+      keys:
-+        - stdout
-+        - stderr
-+        - "null"
-+    formatters:
-+      keys:
-+        - context
-+        - default
-+    logger_root:
-+      level: WARNING
-+      handlers: stdout
-+    logger_placement:
-+      level: INFO
-+      handlers:
-+        - stdout
-+      qualname: placement
-+    logger_amqp:
-+      level: WARNING
-+      handlers: stderr
-+      qualname: amqp
-+    logger_amqplib:
-+      level: WARNING
-+      handlers: stderr
-+      qualname: amqplib
-+    logger_eventletwsgi:
-+      level: WARNING
-+      handlers: stderr
-+      qualname: eventlet.wsgi.server
-+    logger_sqlalchemy:
-+      level: WARNING
-+      handlers: stderr
-+      qualname: sqlalchemy
-+    logger_boto:
-+      level: WARNING
-+      handlers: stderr
-+      qualname: boto
-+    handler_null:
-+      class: logging.NullHandler
-+      formatter: default
-+      args: ()
-+    handler_stdout:
-+      class: StreamHandler
-+      args: (sys.stdout,)
-+      formatter: context
-+    handler_stderr:
-+      class: StreamHandler
-+      args: (sys.stderr,)
-+      formatter: context
-+    formatter_context:
-+      class: oslo_log.formatters.ContextFormatter
-+      datefmt: "%Y-%m-%d %H:%M:%S"
-+    formatter_default:
-+      format: "%(message)s"
-+      datefmt: "%Y-%m-%d %H:%M:%S"
-+  wsgi_placement: |
-+    Listen 0.0.0.0:{{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
-+    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
-+    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
-+    SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
-+    CustomLog /dev/stdout combined env=!forwarded
-+    CustomLog /dev/stdout proxy env=forwarded
-+    <VirtualHost *:{{ tuple "placement" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}>
-+        WSGIDaemonProcess placement-api processes=1 threads=4 user=placement group=placement display-name=%{GROUP}
-+        WSGIProcessGroup placement-api
-+        WSGIScriptAlias / /var/www/cgi-bin/placement/placement-api
-+        WSGIApplicationGroup %{GLOBAL}
-+        WSGIPassAuthorization On
-+        <IfVersion >= 2.4>
-+          ErrorLogFormat "%{cu}t %M"
-+        </IfVersion>
-+        ErrorLog /dev/stdout
-+        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
-+        CustomLog /dev/stdout combined env=!forwarded
-+        CustomLog /dev/stdout proxy env=forwarded
-+    </VirtualHost>
-+    Alias /placement /var/www/cgi-bin/placement/placement-api
-+    <Location /placement>
-+        SetHandler wsgi-script
-+        Options +ExecCGI
-+        WSGIProcessGroup placement-api
-+        WSGIApplicationGroup %{GLOBAL}
-+        WSGIPassAuthorization On
-+    </Location>
-+
-+endpoints:
-+  cluster_domain_suffix: cluster.local
-+  local_image_registry:
-+    name: docker-registry
-+    namespace: docker-registry
-+    hosts:
-+      default: localhost
-+      internal: docker-registry
-+      node: localhost
-+    host_fqdn_override:
-+      default: null
-+    port:
-+      registry:
-+        node: 5000
-+  oslo_db:
-+    auth:
-+      admin:
-+        username: root
-+        password: password
-+      placement:
-+        username: placement
-+        password: password
-+    hosts:
-+      default: mariadb
-+    host_fqdn_override:
-+      default: null
-+    path: /placement
-+    scheme: mysql+pymysql
-+    port:
-+      mysql:
-+        default: 3306
-+  oslo_cache:
-+    auth:
-+      # NOTE(portdirect): this is used to define the value for keystone
-+      # authtoken cache encryption key, if not set it will be populated
-+      # automatically with a random value, but to take advantage of
-+      # this feature all services should be set to use the same key,
-+      # and memcache service.
-+      memcache_secret_key: null
-+    hosts:
-+      default: memcached
-+    host_fqdn_override:
-+      default: null
-+    port:
-+      memcache:
-+        default: 11211
-+  identity:
-+    name: keystone
-+    auth:
-+      admin:
-+        region_name: RegionOne
-+        username: admin
-+        password: password
-+        project_name: admin
-+        user_domain_name: default
-+        project_domain_name: default
-+      placement:
-+        role: admin
-+        region_name: RegionOne
-+        username: placement
-+        password: password
-+        project_name: service
-+        user_domain_name: service
-+        project_domain_name: service
-+    hosts:
-+      default: keystone
-+      internal: keystone-api
-+    host_fqdn_override:
-+      default: null
-+    path:
-+      default: /v3
-+    scheme:
-+      default: http
-+    port:
-+      api:
-+        default: 80
-+        internal: 5000
-+  placement:
-+    name: placement
-+    hosts:
-+      default: placement-api
-+      public: placement
-+    host_fqdn_override:
-+      default: null
-+    path:
-+      default: /
-+    scheme:
-+      default: 'http'
-+    port:
-+      api:
-+        default: 8778
-+        public: 80
-+
-+pod:
-+  user:
-+    placement:
-+      uid: 42424
-+  affinity:
-+    anti:
-+      type:
-+        default: preferredDuringSchedulingIgnoredDuringExecution
-+      topologyKey:
-+        default: kubernetes.io/hostname
-+  mounts:
-+    placement:
-+      init_container: null
-+      placement:
-+        volumeMounts:
-+        volumes:
-+  replicas:
-+    api: 1
-+  lifecycle:
-+    upgrades:
-+      deployments:
-+        revision_history: 3
-+        pod_replacement_strategy: RollingUpdate
-+        rolling_update:
-+          max_unavailable: 1
-+          max_surge: 3
-+    disruption_budget:
-+      api:
-+        min_available: 0
-+    termination_grace_period:
-+      api:
-+        timeout: 30
-+  resources:
-+    enabled: false
-+    api:
-+      requests:
-+        memory: "128Mi"
-+        cpu: "100m"
-+      limits:
-+        memory: "1024Mi"
-+        cpu: "2000m"
-+    jobs:
-+      db_init:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
-+      db_sync:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
-+      db_drop:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
-+      ks_endpoints:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
-+      ks_service:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
-+      ks_user:
-+        requests:
-+          memory: "128Mi"
-+          cpu: "100m"
-+        limits:
-+          memory: "1024Mi"
-+          cpu: "2000m"
-+
-+secrets:
-+  identity:
-+    admin: placement-keystone-admin
-+    placement: placement-keystone-user
-+  oslo_db:
-+    admin: placement-db-admin
-+    placement: placement-db-user
-+  tls:
-+    placement:
-+      api:
-+        public: placement-tls-public
-+
-+dependencies:
-+  dynamic:
-+    common:
-+      local_image_registry:
-+        jobs:
-+          - image-repo-sync
-+        services:
-+          - endpoint: node
-+            service: local_image_registry
-+  static:
-+    api:
-+      jobs:
-+        - placement-db-sync
-+        - placement-ks-service
-+        - placement-ks-user
-+        - placement-ks-endpoints
-+    ks_endpoints:
-+      jobs:
-+        - placement-ks-user
-+        - placement-ks-service
-+      services:
-+        - endpoint: internal
-+          service: identity
-+    ks_service:
-+      services:
-+        - endpoint: internal
-+          service: identity
-+    ks_user:
-+      services:
-+        - endpoint: internal
-+          service: identity
-+    db_drop:
-+      services:
-+        - endpoint: internal
-+          service: oslo_db
-+    db_init:
-+      services:
-+        - endpoint: internal
-+          service: oslo_db
-+    db_sync:
-+      jobs:
-+        - placement-db-init
-+      services:
-+        - endpoint: internal
-+          service: oslo_db
-+
-+manifests:
-+  configmap_bin: true
-+  configmap_etc: true
-+  deployment: true
-+  job_image_repo_sync: true
-+  job_db_init: true
-+  job_db_sync: true
-+  job_db_drop: false
-+  job_ks_endpoints: true
-+  job_ks_service: true
-+  job_ks_user: true
-+  network_policy: false
-+  secret_db: true
-+  secret_ingress_tls: true
-+  pdb: true
-+  ingress: true
-+  secret_keystone: true
-+  service_ingress: true
-+  service: true
--- 
-2.7.4
-
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/index.yaml b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/index.yaml
deleted file mode 100644
index 166dfef..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/index.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-apiVersion: v1
-entries: {}
-generated: 2019-01-07T12:33:46.098166523-06:00
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/repositories.yaml b/meta-stx-flock/stx-openstack-armada-app/openstack-helm/repositories.yaml
deleted file mode 100644
index 7fbaebd..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm/repositories.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-apiVersion: v1
-generated: 2019-01-02T15:19:36.215111369-06:00
-repositories:
-  - caFile: ""
-    cache: /builddir/.helm/repository/cache/local-index.yaml
-    certFile: ""
-    keyFile: ""
-    name: local
-    password: ""
-    url: http://127.0.0.1:8879/charts
-    username: ""
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm_1.0.bb b/meta-stx-flock/stx-openstack-armada-app/openstack-helm_1.0.bb
deleted file mode 100644
index cd051d8..0000000
--- a/meta-stx-flock/stx-openstack-armada-app/openstack-helm_1.0.bb
+++ /dev/null
@@ -1,109 +0,0 @@
-
-SUMMARY = "Openstack Helm charts"
-DESCRIPTION = "Openstack Helm charts"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-DEPENDS += " \
-    helm-native \
-    openstack-helm-infra \
-"
-
-PROTOCOL = "https"
-BRANCH = "r/stx.3.0"
-SRCREV_openstack-helm = "82c72367c85ca94270f702661c7b984899c1ae38"
-SRCREV_openstack-armada-app = "863f4b9733d3d4f4fd490606a94b84cfdaf2df2c"
-
-SRC_URI = " \
-    git://github.com/openstack/openstack-helm;protocol=${PROTOCOL};name=openstack-helm \
-    file://0001-Ceilometer-chart-add-the-ability-to-publish-events-t.patch \
-    file://0002-Remove-stale-Apache2-service-pids-when-a-POD-starts.patch \
-    file://0003-Nova-console-ip-address-search-optionality.patch \
-    file://0004-Nova-chart-Support-ephemeral-pool-creation.patch \
-    file://0005-Nova-Add-support-for-disabling-Readiness-Liveness-pr.patch \
-    file://0006-Add-Placement-Chart.patch \
-    file://repositories.yaml \
-    file://index.yaml \
-    "
-
-PATCHTOOL = "git"
-PATCH_COMMIT_FUNCTIONS = "1"
-
-S = "${WORKDIR}/git"
-
-inherit allarch
-
-helm_folder = "${nonarch_libdir}/helm"
-toolkit_version = "0.1.0"
-helmchart_version = "0.1.0"
-
-do_configure[noexec] = "1"
-
-do_compile () {
-	# initialize helm and build the toolkit
-	# helm init --client-only does not work if there is no networking
-	# The following commands do essentially the same as: helm init
-	export HOME="${B}/${USER}"
-	export helm_home="${B}/${USER}/.helm"
-	rm -rf ${helm_home}
-
-	mkdir -p ${helm_home}
-	mkdir ${helm_home}/repository
-	mkdir ${helm_home}/repository/cache
-	mkdir ${helm_home}/repository/local
-	mkdir ${helm_home}/plugins
-	mkdir ${helm_home}/starters
-	mkdir ${helm_home}/cache
-	mkdir ${helm_home}/cache/archive
-
-	# Stage a repository file that only has a local repo
-	install -m 0644 ${WORKDIR}/repositories.yaml ${helm_home}/repository/repositories.yaml
-
-	# Stage a local repo index that can be updated by the build
-	install -m 0644 ${WORKDIR}/index.yaml ${helm_home}/repository/local/index.yaml
-
-	# Stage helm-toolkit in the local repo
-	cp ${RECIPE_SYSROOT}${helm_folder}/helm-toolkit-${toolkit_version}.tgz .
-
-	# Host a server for the charts
-	helm serve --repo-path . &
-	sleep 1
-	helm repo rm local
-	helm repo add local http://localhost:8879/charts
-
-	# Make the charts. These produce a tgz file
-	make aodh
-	make barbican
-	make ceilometer
-	make cinder
-	make glance
-	make heat
-	make horizon
-	make ironic
-	make keystone
-	make magnum
-	make neutron
-	make nova
-	make panko
-	make placement
-
-	# terminate helm server (the last backgrounded task)
-	kill $!
-	rm -rf ${helm_home}
-
-	# Remove the helm-toolkit tarball
-	rm helm-toolkit-${toolkit_version}.tgz
-}
-
-do_install () {
-	install -d -m 755 ${D}${helm_folder}
-	install -p -D -m 755 ${B}/*.tgz ${D}${helm_folder}
-}
-
-FILES_${PN} = "${helm_folder}"
-
-RDEPENDS_${PN} = " \
-    helm \
-    openstack-helm-infra \
-"
diff --git a/meta-stx-flock/stx-openstack-armada-app/openstack-helm_git.bb b/meta-stx-flock/stx-openstack-armada-app/openstack-helm_git.bb
new file mode 100644
index 0000000..9ecda8f
--- /dev/null
+++ b/meta-stx-flock/stx-openstack-armada-app/openstack-helm_git.bb
@@ -0,0 +1,97 @@
+SUMMARY = "Openstack Helm charts"
+DESCRIPTION = "Openstack Helm charts"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+DEPENDS += " \
+    helm-native \
+    openstack-helm-infra \
+"
+
+PROTOCOL = "https"
+SRCREV = "34a7533b6484a157c8725889d0d68e792e13fc8d"
+
+PV = "1.0"
+PR = "44"
+PRAUTO = "tis"
+
+inherit stx-chartmuseum
+inherit stx-metadata
+
+STX_REPO = "openstack-armada-app"
+STX_SUBPATH = "${BPN}/files"
+
+SRC_URI_STX = " \
+	file://0001-Ceilometer-chart-add-the-ability-to-publish-events-t.patch \
+	file://0002-Remove-stale-Apache2-service-pids-when-a-POD-starts.patch \
+	file://0003-Nova-console-ip-address-search-optionality.patch \
+	file://0004-Nova-chart-Support-ephemeral-pool-creation.patch \
+	file://0005-Nova-Add-support-for-disabling-Readiness-Liveness-pr.patch \
+	file://0006-Support-ingress-creation-for-keystone-admin-endpoint.patch \
+	file://0007-Allow-more-generic-overrides-for-placeme.patch \
+	file://0008-Allow-set-public-endpoint-url-for-keystone-endpoints.patch \
+	file://0009-Wrong-usage-of-rbd_store_chunk_size.patch \
+	file://0010-Add-stx_admin-account.patch \
+	"
+
+SRC_URI = " \
+	git://github.com/openstack/${BPN};protocol=${PROTOCOL} \
+	"
+
+PATCHTOOL = "git"
+PATCH_COMMIT_FUNCTIONS = "1"
+
+S = "${WORKDIR}/git"
+
+inherit allarch
+
+helm_folder = "${nonarch_libdir}/helm"
+toolkit_version = "0.1.0"
+helmchart_version = "0.1.0"
+
+do_configure[noexec] = "1"
+
+do_compile () {
+	# Stage helm-toolkit in the local repo
+	cp ${RECIPE_SYSROOT}${helm_folder}/helm-toolkit-${toolkit_version}.tgz .
+
+	# Host a server for the charts
+	chartmuseum --debug --port=${CHARTMUSEUM_PORT} --context-path='/charts' --storage="local" --storage-local-rootdir="." &
+	sleep 2
+	helm repo add local http://localhost:${CHARTMUSEUM_PORT}/charts
+
+	# Make the charts. These produce a tgz file
+	make aodh
+	make barbican
+	make ceilometer
+	make cinder
+	make glance
+	make heat
+	make horizon
+	make ironic
+	make keystone
+	make magnum
+	make neutron
+	make nova
+	make panko
+	make placement
+
+	# terminate helm server (the last backgrounded task)
+	kill $!
+
+	# Remove the helm-toolkit tarball
+	rm helm-toolkit-${toolkit_version}.tgz
+}
+
+do_install () {
+	install -d -m 755 ${D}${helm_folder}
+	install -p -D -m 755 ${B}/*.tgz ${D}${helm_folder}
+}
+
+FILES_${PN} = "${helm_folder}"
+
+RDEPENDS_${PN} = " \
+    helm \
+    openstack-helm-infra \
+"