diff --git a/charts/ironic/charts/helm-toolkit/Chart.yaml b/charts/ironic/charts/helm-toolkit/Chart.yaml
index 9d3aa1e..d4c0ea2 100644
--- a/charts/ironic/charts/helm-toolkit/Chart.yaml
+++ b/charts/ironic/charts/helm-toolkit/Chart.yaml
@@ -9,4 +9,4 @@
 sources:
 - https://opendev.org/openstack/openstack-helm-infra
 - https://opendev.org/openstack/openstack-helm
-version: 0.2.78
+version: 0.2.69
diff --git a/charts/ironic/charts/helm-toolkit/templates/endpoints/_host_and_port_endpoint_uri_lookup.tpl b/charts/ironic/charts/helm-toolkit/templates/endpoints/_host_and_port_endpoint_uri_lookup.tpl
index 728b994..6877b7b 100644
--- a/charts/ironic/charts/helm-toolkit/templates/endpoints/_host_and_port_endpoint_uri_lookup.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/endpoints/_host_and_port_endpoint_uri_lookup.tpl
@@ -14,8 +14,7 @@
 
 {{/*
 abstract: |
-  Resolves 'hostname:port' for an endpoint, or several hostname:port pairs for statefulset e.g
-  'hostname1:port1,hostname2:port2,hostname3:port3',
+  Resolves 'hostname:port' for an endpoint
 examples:
   - values: |
       endpoints:
@@ -47,23 +46,6 @@
       {{ tuple "oslo_db" "internal" "mysql" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" }}
     return: |
       127.0.0.1:3306
-  - values: |
-      endpoints:
-        oslo_cache:
-          hosts:
-            default: memcached
-          host_fqdn_override:
-            default: null
-          statefulset:
-            name: openstack-memcached-memcached
-            replicas: 3
-          port:
-            memcache:
-              default: 11211
-    usage: |
-      {{ tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" }}
-    return: |
-      openstack-memcached-memcached-0:11211,openstack-memcached-memcached-1:11211,openstack-memcached-memcached-2:11211
 */}}
 
 {{- define "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" -}}
@@ -71,19 +53,7 @@
 {{- $endpoint := index . 1 -}}
 {{- $port := index . 2 -}}
 {{- $context := index . 3 -}}
-{{- $ssMap := index $context.Values.endpoints ( $type | replace "-" "_" ) "statefulset" | default false -}}
-{{- $local := dict "endpointHosts" list -}}
-{{- $endpointPort := tuple $type $endpoint $port $context | include "helm-toolkit.endpoints.endpoint_port_lookup" -}}
-{{- if $ssMap -}}
-{{-   $endpointHostPrefix := $ssMap.name -}}
-{{-   $endpointHostSuffix := tuple $type $endpoint $context | include "helm-toolkit.endpoints.endpoint_host_lookup" }}
-{{-   range $podInt := until ( atoi (print $ssMap.replicas ) ) -}}
-{{-     $endpointHostname := printf "%s-%d.%s:%s" $endpointHostPrefix $podInt $endpointHostSuffix $endpointPort -}}
-{{-     $_ := set $local "endpointHosts" ( append $local.endpointHosts $endpointHostname ) -}}
-{{-   end -}}
-{{- else -}}
-{{-   $endpointHostname := tuple $type $endpoint $context | include "helm-toolkit.endpoints.endpoint_host_lookup" -}}
-{{-   $_ := set $local "endpointHosts" ( append $local.endpointHosts (printf "%s:%s" $endpointHostname $endpointPort) ) -}}
-{{- end -}}
-{{ include "helm-toolkit.utils.joinListWithComma" $local.endpointHosts }}
+{{- $endpointPort := tuple $type $endpoint $port $context | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
+{{- $endpointHostname := tuple $type $endpoint $context | include "helm-toolkit.endpoints.endpoint_host_lookup" }}
+{{- printf "%s:%s" $endpointHostname $endpointPort -}}
 {{- end -}}
diff --git a/charts/ironic/charts/helm-toolkit/templates/endpoints/_keystone_endpoint_path_lookup.tpl b/charts/ironic/charts/helm-toolkit/templates/endpoints/_keystone_endpoint_path_lookup.tpl
index 24eb569..b2ec648 100644
--- a/charts/ironic/charts/helm-toolkit/templates/endpoints/_keystone_endpoint_path_lookup.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/endpoints/_keystone_endpoint_path_lookup.tpl
@@ -40,9 +40,9 @@
 {{- $context := index . 3 -}}
 {{- $endpointMap := index $context.Values.endpoints ( $type | replace "-" "_" ) }}
 {{- if kindIs "string" $endpointMap.path }}
-{{- printf "%s" $endpointMap.path | default "" -}}
+{{- printf "%s" $endpointMap.path | default "/" -}}
 {{- else -}}
-{{- $endpointPath := index $endpointMap.path $endpoint | default $endpointMap.path.default | default "" }}
+{{- $endpointPath := index $endpointMap.path $endpoint | default $endpointMap.path.default | default "/" }}
 {{- printf "%s" $endpointPath -}}
 {{- end -}}
 {{- end -}}
diff --git a/charts/ironic/charts/helm-toolkit/templates/manifests/_configmap-oslo-policy.tpl b/charts/ironic/charts/helm-toolkit/templates/manifests/_configmap-oslo-policy.tpl
deleted file mode 100644
index 332ca99..0000000
--- a/charts/ironic/charts/helm-toolkit/templates/manifests/_configmap-oslo-policy.tpl
+++ /dev/null
@@ -1,51 +0,0 @@
-{{/*
-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.
-*/}}
-{{/*
-abstract: |
-  Renders out the configmap <service>-oslo-policy.
-values: |
-  conf:
-    policy.d:
-      file1:
-        foo: bar
-      file2:
-        foo: baz
-usage: |
-{{- include "helm-toolkit.manifests.configmap_oslo_policy" (dict "envAll" $envAll "serviceName" "keystone") }}
-return: |
-  ---
-  apiVersion: v1
-  kind: Secret
-  metadata:
-    name: keystone-oslo-policy
-  data:
-    file1: base64of(foo: bar)
-    file2: base64of(foo: baz)
-*/}}
-{{- define "helm-toolkit.manifests.configmap_oslo_policy" -}}
-{{- $envAll := index . "envAll" -}}
-{{- $serviceName := index . "serviceName" -}}
----
-apiVersion: v1
-kind: Secret
-metadata:
-  name: {{ $serviceName }}-oslo-policy
-type: Opaque
-data:
-  {{- range $key, $value := index $envAll.Values.conf "policy.d" }}
-  {{- if $value }}
-  {{ $key }}: {{ toYaml $value | b64enc }}
-  {{- else }}
-  {{ $key }}: {{ "\n" | b64enc }}
-  {{- end }}
-  {{- end }}
-{{- end -}}
diff --git a/charts/ironic/charts/helm-toolkit/templates/manifests/_ingress.tpl b/charts/ironic/charts/helm-toolkit/templates/manifests/_ingress.tpl
index 792571c..cacb4b8 100644
--- a/charts/ironic/charts/helm-toolkit/templates/manifests/_ingress.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/manifests/_ingress.tpl
@@ -708,10 +708,6 @@
 {{- range $v := without (index $endpointHost.tls "dnsNames" | default list) $hostNameFull }}
 {{- $vHosts = append $vHosts $v }}
 {{- end }}
-{{- if hasKey $envAll.Values.endpoints "alias_fqdn" }}
-{{- $alias_host := $envAll.Values.endpoints.alias_fqdn }}
-{{- $vHosts = append $vHosts $alias_host }}
-{{- end }}
 {{- $secretName := index $envAll.Values.secrets "tls" ( $backendServiceType | replace "-" "_" ) $backendService $endpoint }}
 {{- $_ := required "You need to specify a secret in your values for the endpoint" $secretName }}
   tls:
diff --git a/charts/ironic/charts/helm-toolkit/templates/scripts/_db-drop.py.tpl b/charts/ironic/charts/helm-toolkit/templates/scripts/_db-drop.py.tpl
index c6a7521..1e28da9 100644
--- a/charts/ironic/charts/helm-toolkit/templates/scripts/_db-drop.py.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/scripts/_db-drop.py.tpl
@@ -33,7 +33,6 @@
     PARSER_OPTS = {"strict": False}
 import logging
 from sqlalchemy import create_engine
-from sqlalchemy import text
 
 # Create logger, console handler and formatter
 logger = logging.getLogger('OpenStack-Helm DB Drop')
@@ -126,7 +125,7 @@
 # Delete DB
 try:
     with root_engine.connect() as connection:
-        connection.execute(text("DROP DATABASE IF EXISTS {0}".format(database)))
+        connection.execute("DROP DATABASE IF EXISTS {0}".format(database))
         try:
             connection.commit()
         except AttributeError:
@@ -139,7 +138,7 @@
 # Delete DB User
 try:
     with root_engine.connect() as connection:
-        connection.execute(text("DROP USER IF EXISTS {0}".format(user)))
+        connection.execute("DROP USER IF EXISTS {0}".format(user))
         try:
             connection.commit()
         except AttributeError:
diff --git a/charts/ironic/charts/helm-toolkit/templates/scripts/_db-init.py.tpl b/charts/ironic/charts/helm-toolkit/templates/scripts/_db-init.py.tpl
index 1917f78..110cd98 100644
--- a/charts/ironic/charts/helm-toolkit/templates/scripts/_db-init.py.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/scripts/_db-init.py.tpl
@@ -33,7 +33,6 @@
     PARSER_OPTS = {"strict": False}
 import logging
 from sqlalchemy import create_engine
-from sqlalchemy import text
 
 # Create logger, console handler and formatter
 logger = logging.getLogger('OpenStack-Helm DB Init')
@@ -126,7 +125,7 @@
 # Create DB
 try:
     with root_engine.connect() as connection:
-        connection.execute(text("CREATE DATABASE IF NOT EXISTS {0}".format(database)))
+        connection.execute("CREATE DATABASE IF NOT EXISTS {0}".format(database))
         try:
             connection.commit()
         except AttributeError:
@@ -140,10 +139,10 @@
 try:
     with root_engine.connect() as connection:
         connection.execute(
-            text("CREATE USER IF NOT EXISTS \'{0}\'@\'%%\' IDENTIFIED BY \'{1}\' {2}".format(
-                user, password, mysql_x509)))
+            "CREATE USER IF NOT EXISTS \'{0}\'@\'%%\' IDENTIFIED BY \'{1}\' {2}".format(
+                user, password, mysql_x509))
         connection.execute(
-            text("GRANT ALL ON `{0}`.* TO \'{1}\'@\'%%\'".format(database, user)))
+            "GRANT ALL ON `{0}`.* TO \'{1}\'@\'%%\'".format(database, user))
         try:
             connection.commit()
         except AttributeError:
diff --git a/charts/ironic/charts/helm-toolkit/templates/scripts/_rabbit-init.sh.tpl b/charts/ironic/charts/helm-toolkit/templates/scripts/_rabbit-init.sh.tpl
index e6e9c6e..3739f95 100644
--- a/charts/ironic/charts/helm-toolkit/templates/scripts/_rabbit-init.sh.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/scripts/_rabbit-init.sh.tpl
@@ -29,9 +29,7 @@
   awk -F'[//:]' '{print $4}')
 RABBITMQ_ADMIN_PASSWORD=$(echo "${RABBITMQ_ADMIN_CONNECTION}" | \
   awk -F'[@]' '{print $1}' | \
-  awk -F'[//:]' '{print $5}' | \
-  sed 's/%/\\x/g' | \
-  xargs -0 printf "%b")
+  awk -F'[//:]' '{print $5}')
 
 # Extract User creadential
 RABBITMQ_USERNAME=$(echo "${RABBITMQ_USER_CONNECTION}" | \
@@ -39,9 +37,7 @@
   awk -F'[//:]' '{print $4}')
 RABBITMQ_PASSWORD=$(echo "${RABBITMQ_USER_CONNECTION}" | \
   awk -F'[@]' '{print $1}' | \
-  awk -F'[//:]' '{print $5}' | \
-  sed 's/%/\\x/g' | \
-  xargs -0 printf "%b")
+  awk -F'[//:]' '{print $5}')
 
 # Extract User vHost
 RABBITMQ_VHOST=$(echo "${RABBITMQ_USER_CONNECTION}" | \
diff --git a/charts/ironic/charts/helm-toolkit/templates/snippets/_kubernetes_metadata_labels.tpl b/charts/ironic/charts/helm-toolkit/templates/snippets/_kubernetes_metadata_labels.tpl
index 5c2dedb..48b53fa 100644
--- a/charts/ironic/charts/helm-toolkit/templates/snippets/_kubernetes_metadata_labels.tpl
+++ b/charts/ironic/charts/helm-toolkit/templates/snippets/_kubernetes_metadata_labels.tpl
@@ -40,9 +40,6 @@
 release_group: {{ $envAll.Values.release_group | default $envAll.Release.Name }}
 application: {{ $application }}
 component: {{ $component }}
-app.kubernetes.io/name: {{ $application }}
-app.kubernetes.io/component: {{ $component }}
-app.kubernetes.io/instance: {{ $envAll.Values.release_group | default $envAll.Release.Name }}
 {{- if ($envAll.Values.pod).labels }}
 {{- if hasKey $envAll.Values.pod.labels $component }}
 {{ index $envAll.Values.pod "labels" $component | toYaml }}
diff --git a/charts/ironic/charts/helm-toolkit/templates/snippets/_service_params.tpl b/charts/ironic/charts/helm-toolkit/templates/snippets/_service_params.tpl
deleted file mode 100644
index 6233a93..0000000
--- a/charts/ironic/charts/helm-toolkit/templates/snippets/_service_params.tpl
+++ /dev/null
@@ -1,61 +0,0 @@
-{{/*
-Copyright 2017 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.
-*/}}
-{{/*
-abstract: |
-  Inserts kubernetes service parameters from values as is.
-values: |
-  network:
-    serviceExample:
-      service:
-        type: loadBalancer
-        loadBalancerIP: 1.1.1.1
-usage: |
-  ---
-  apiVersion: v1
-  kind: Service
-  metadata:
-    name: 'serviceExample'
-  spec:
-    ports:
-    - name: s-example
-      port: 1111
-  {{ .Values.network.serviceExample | include "helm-toolkit.snippets.service_params" | indent 2 }}
-return: |
-  type: loadBalancer
-  loadBalancerIP: 1.1.1.1
-*/}}
-
-{{- define "helm-toolkit.snippets.service_params" }}
-{{- $serviceParams := dict }}
-{{- if hasKey . "service" }}
-{{- $serviceParams = .service }}
-{{- end }}
-{{- if hasKey . "node_port" }}
-{{- if hasKey .node_port "enabled" }}
-{{- if .node_port.enabled }}
-{{- $_ := set $serviceParams "type" "NodePort" }}
-{{- end }}
-{{- end }}
-{{- end }}
-{{- if hasKey . "external_policy_local" }}
-{{- if .external_policy_local }}
-{{- $_ := set $serviceParams "externalTrafficPolicy" "Local" }}
-{{- end }}
-{{- end }}
-{{- if $serviceParams }}
-{{- $serviceParams | toYaml }}
-{{- end }}
-{{- end }}
diff --git a/charts/ironic/charts/helm-toolkit/templates/utils/_daemonset_overrides_root.tpl b/charts/ironic/charts/helm-toolkit/templates/utils/_daemonset_overrides_root.tpl
deleted file mode 100644
index bdb28c3..0000000
--- a/charts/ironic/charts/helm-toolkit/templates/utils/_daemonset_overrides_root.tpl
+++ /dev/null
@@ -1,279 +0,0 @@
-{{/*
-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.
-*/}}
-
-{{/*
-
-The helm-toolkit.utils.daemonset_overrides function have some limitations:
-
- * it allows to override only conf values specifid in configmap-etc
- * it doesn't allow to override values for daemonsets passed via env variables
-   or via damoenset definition. As result it is impossible to have mixed
-   deployment when one compute is configured with dpdk while other not.
- * it is impossible to override interface names/other information stored in
-   <service>-bin configmap
- * It allows to schedule on both hosts and labels, which adds some
-   uncertainty
-
-This implementation is intended to handle those limitations:
-
- * it allows to schedule only based on labels
- * it creates <service>-bin per daemonset override
- * it allows to override values when rendering daemonsets
-
- It picks data from the following structure:
-
-  .Values:
-    overrides:
-      mychart_mydaemonset:
-        labels:
-          label::value:
-            values:
-              override_root_option: override_root_value
-              conf:
-                ovs_dpdk:
-                  enabled: true
-                neutron:
-                  DEFAULT:
-                    foo: bar
-
-*/}}
-
-{{- define "helm-toolkit.utils.daemonset_overrides_root" }}
-  {{- $daemonset := index . 0 }}
-  {{- $daemonSetTemplateName := index . 1 }}
-  {{ $serviceAccountName := index . 2 }}
-  {{- $configmap_include := index . 3 }}
-  {{- $configmap_name := index . 4 }}
-  {{- $configbin_include := index . 5 }}
-  {{- $configbin_name := index . 6 }}
-  {{- $context := index . 7 }}
-
-  {{- $_ := unset $context ".Files" }}
-  {{- $daemonset_root_name := printf (print $context.Chart.Name "_" $daemonset) }}
-  {{- $_ := set $context.Values "__daemonset_list" list }}
-  {{- $_ := set $context.Values "__default" dict }}
-
-  {{- $default_enabled := true }}
-  {{- if hasKey $context.Values "overrides" }}
-    {{- range $key, $val := $context.Values.overrides }}
-
-      {{- if eq $key $daemonset_root_name }}
-        {{- range $type, $type_data := . }}
-          {{- if eq $type "overrides_default" }}
-            {{- $default_enabled = $type_data }}
-          {{- end }}
-
-          {{- if eq $type "labels" }}
-            {{- $_ := set $context.Values "__label_dict" . }}
-            {{- range $lname, $ldata := . }}
-              {{ $label_name := (split "::" $lname)._0 }}
-              {{ $label_value := (split "::" $lname)._1 }}
-              {{/* dictionary that will contain all info needed to generate this
-              iteration of the daemonset. */}}
-              {{- $_ := set $context.Values "__current_label" dict }}
-
-              {{/* set daemonset name */}}
-              {{- $_ := set $context.Values.__current_label "name" $label_name }}
-
-              {{/* set daemonset metadata annotation */}}
-              {{- $_ := set $context.Values.__current_label "daemonset_override" $lname  }}
-
-              {{/* apply overrides */}}
-
-
-              {{- $override_root_copy := $ldata.values }}
-              {{/* Deep copy to prevent https://storyboard.openstack.org/#!/story/2005936 */}}
-              {{- $root_copy := omit ($context.Values | toYaml | fromYaml) "overrides" }}
-              {{- $merged_dict := mergeOverwrite $root_copy $override_root_copy }}
-
-              {{- $root_conf_copy2 := dict "values" $merged_dict }}
-              {{- $context_values := omit (omit ($context.Values | toYaml | fromYaml) "values") "__daemonset_list" }}
-              {{- $root_conf_copy3 := mergeOverwrite $context_values $root_conf_copy2.values }}
-              {{- $root_conf_copy4 := dict "Values" $root_conf_copy3 }}
-              {{- $_ := set $context.Values.__current_label "nodeData" $root_conf_copy4 }}
-
-
-              {{/* Schedule to the provided label value(s) */}}
-              {{- $label_dict := dict "key" $label_name  }}
-              {{- $_ := set $label_dict "values" (list $label_value) }}
-              {{- $_ := set $label_dict "operator" "In" }}
-              {{- $list_aggregate := list $label_dict }}
-              {{- $_ := set $context.Values.__current_label "matchExpressions" $list_aggregate }}
-
-              {{/* Do not schedule to other specified labels, with higher
-              precedence as the list position increases. Last defined label
-              is highest priority. */}}
-              {{- $other_labels :=  omit $context.Values.__label_dict $lname }}
-              {{- range $lname2, $ldata2 := $other_labels }}
-                {{ $label_name2 := (split "::" $lname2)._0 }}
-                {{ $label_value2 := (split "::" $lname2)._1 }}
-
-                {{- $label_dict := dict "key" $label_name2  }}
-                {{- $_ := set $label_dict "values" (list $label_value2) }}
-                {{- $_ := set $label_dict "operator" "NotIn" }}
-
-                {{- $list_aggregate := append $context.Values.__current_label.matchExpressions $label_dict }}
-                {{- $_ := set $context.Values.__current_label "matchExpressions" $list_aggregate }}
-              {{- end }}
-
-              {{/* store completed daemonset entry/info into global list */}}
-              {{- $list_aggregate := append $context.Values.__daemonset_list $context.Values.__current_label }}
-              {{- $_ := set $context.Values "__daemonset_list" $list_aggregate }}
-              {{- $_ := unset $context.Values "__current_label" }}
-
-            {{- end }}
-          {{- end }}
-        {{- end }}
-
-        {{/* scheduler exceptions for the default daemonset */}}
-        {{- $_ := set $context.Values.__default "matchExpressions" list }}
-
-        {{- range $type, $type_data := . }}
-          {{/* Do not schedule to other specified labels */}}
-          {{- if eq $type "labels" }}
-            {{- range $lname, $ldata := . }}
-              {{ $label_name := (split "::" $lname)._0 }}
-              {{ $label_value := (split "::" $lname)._1 }}
-
-              {{- $default_dict := dict "key" $label_name  }}
-              {{- $_ := set $default_dict "values" (list $label_value) }}
-              {{- $_ := set $default_dict "operator" "NotIn" }}
-
-              {{- $list_aggregate := append $context.Values.__default.matchExpressions $default_dict }}
-              {{- $_ := set $context.Values.__default "matchExpressions" $list_aggregate }}
-            {{- end }}
-          {{- end }}
-        {{- end }}
-      {{- end }}
-    {{- end }}
-  {{- end }}
-
-  {{/* generate the default daemonset */}}
-
-  {{/* set name */}}
-  {{- $_ := set $context.Values.__default "name" "default" }}
-
-  {{/* no overrides apply, so copy as-is */}}
-  {{- $root_conf_copy1 := omit $context.Values.conf "overrides" }}
-  {{- $root_conf_copy2 := dict "conf" $root_conf_copy1 }}
-  {{- $context_values := omit $context.Values "conf" }}
-  {{- $root_conf_copy3 := mergeOverwrite $context_values $root_conf_copy2 }}
-  {{- $root_conf_copy4 := dict "Values" $root_conf_copy3 }}
-  {{- $_ := set $context.Values.__default "nodeData" $root_conf_copy4 }}
-
-  {{/* add to global list */}}
-  {{- if $default_enabled }}
-    {{- $list_aggregate := append $context.Values.__daemonset_list $context.Values.__default }}
-    {{- $_ := set $context.Values "__daemonset_list" $list_aggregate }}
-  {{- end }}
-
-  {{- range $current_dict := $context.Values.__daemonset_list }}
-
-    {{- $context_novalues := omit $context "Values" }}
-    {{- $merged_dict := mergeOverwrite $context_novalues $current_dict.nodeData }}
-    {{- $_ := set $current_dict "nodeData" $merged_dict }}
-    {{/* Deep copy original daemonset_yaml */}}
-    {{- $daemonset_yaml := list $daemonset $configmap_name $serviceAccountName $merged_dict | include $daemonSetTemplateName | toString | fromYaml }}
-    {{- $_ := set $context.Values "__daemonset_yaml" ($daemonset_yaml | toYaml | fromYaml) }}
-
-    {{/* Use the following name format $daemonset_root_name + sha256summ($current_dict.matchExpressions)
-    as labels might be too long and contain wrong characters like / */}}
-    {{- $_ := set $current_dict "dns_1123_name" dict }}
-    {{- $name_format := "" }}
-    {{- if eq $current_dict.name "default" }}
-       {{- $name_format = (printf "%s-%s" $daemonset_root_name "default") | replace "_" "-" }}
-    {{- else }}
-       {{- $name_format = (printf "%s-%s" $daemonset_root_name ($current_dict.matchExpressions | quote | sha256sum | trunc 16)) | replace "_" "-" }}
-    {{- end }}
-    {{- $_ := set $current_dict "dns_1123_name" $name_format }}
-
-    {{/* set daemonset metadata name */}}
-    {{- if not $context.Values.__daemonset_yaml.metadata }}{{- $_ := set $context.Values.__daemonset_yaml "metadata" dict }}{{- end }}
-    {{- if not $context.Values.__daemonset_yaml.metadata.name }}{{- $_ := set $context.Values.__daemonset_yaml.metadata "name" dict }}{{- end }}
-    {{- $_ := set $context.Values.__daemonset_yaml.metadata "name" $current_dict.dns_1123_name }}
-
-    {{/* cross-reference configmap name to container volume definitions */}}
-    {{- $_ := set $context.Values "__volume_list" list }}
-    {{- range $current_volume := $context.Values.__daemonset_yaml.spec.template.spec.volumes }}
-      {{- $_ := set $context.Values "__volume" $current_volume }}
-      {{- if hasKey $context.Values.__volume "secret" }}
-        {{- if eq $context.Values.__volume.secret.secretName $configmap_name }}
-          {{- $_ := set $context.Values.__volume.secret "secretName" (printf "%s-etc" $current_dict.dns_1123_name) }}
-        {{- end }}
-      {{- end }}
-      {{- if hasKey $context.Values.__volume "configMap" }}
-        {{- if eq $context.Values.__volume.configMap.name $configbin_name }}
-          {{- $_ := set $context.Values.__volume.configMap "name" (printf "%s-bin" $current_dict.dns_1123_name) }}
-        {{- end }}
-      {{- end }}
-      {{- $updated_list := append $context.Values.__volume_list $context.Values.__volume }}
-      {{- $_ := set $context.Values "__volume_list" $updated_list }}
-    {{- end }}
-    {{- $_ := set $context.Values.__daemonset_yaml.spec.template.spec "volumes" $context.Values.__volume_list }}
-
-
-    {{/* populate scheduling restrictions */}}
-    {{- if hasKey $current_dict "matchExpressions" }}
-      {{- $length := len $current_dict.matchExpressions }}
-      {{- if gt $length 0 }}
-        {{- if not $context.Values.__daemonset_yaml.spec.template.spec }}{{- $_ := set $context.Values.__daemonset_yaml.spec.template "spec" dict }}{{- end }}
-        {{- if not $context.Values.__daemonset_yaml.spec.template.spec.affinity }}{{- $_ := set $context.Values.__daemonset_yaml.spec.template.spec "affinity" dict }}{{- end }}
-        {{- if not $context.Values.__daemonset_yaml.spec.template.spec.affinity.nodeAffinity }}{{- $_ := set $context.Values.__daemonset_yaml.spec.template.spec.affinity "nodeAffinity" dict }}{{- end }}
-        {{- if not $context.Values.__daemonset_yaml.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution }}{{- $_ := set $context.Values.__daemonset_yaml.spec.template.spec.affinity.nodeAffinity "requiredDuringSchedulingIgnoredDuringExecution" dict }}{{- end }}
-
-        {{- $expressions_modified := list }}
-        {{- if hasKey $context.Values.__daemonset_yaml.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution "nodeSelectorTerms" }}
-          {{- range $orig_expression := $context.Values.__daemonset_yaml.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms }}
-            {{- $match_expressions_modified := list }}
-            {{- $match_expressions_modified = concat $match_expressions_modified $current_dict.matchExpressions }}
-            {{- if hasKey $orig_expression "matchExpressions" }}
-              {{- $match_expressions_modified = concat $match_expressions_modified $orig_expression.matchExpressions }}
-              {{- $expressions_modified = append $expressions_modified (dict "matchExpressions" $match_expressions_modified) }}
-            {{- end }}
-          {{- end }}
-        {{- else }}
-          {{- $expressions_modified = (list (dict "matchExpressions" $current_dict.matchExpressions)) }}
-        {{- end }}
-        {{- $_ := set $context.Values.__daemonset_yaml.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution "nodeSelectorTerms" $expressions_modified }}
-      {{- end }}
-    {{- end }}
-
-    {{/* input value hash for current set of values overrides */}}
-    {{- if not $context.Values.__daemonset_yaml.spec }}{{- $_ := set $context.Values.__daemonset_yaml "spec" dict }}{{- end }}
-    {{- if not $context.Values.__daemonset_yaml.spec.template }}{{- $_ := set $context.Values.__daemonset_yaml.spec "template" dict }}{{- end }}
-    {{- if not $context.Values.__daemonset_yaml.spec.template.metadata }}{{- $_ := set $context.Values.__daemonset_yaml.spec.template "metadata" dict }}{{- end }}
-    {{- if not $context.Values.__daemonset_yaml.spec.template.metadata.annotations }}{{- $_ := set $context.Values.__daemonset_yaml.spec.template.metadata "annotations" dict }}{{- end }}
-    {{- $cmap := list (printf "%s-etc" $current_dict.dns_1123_name) $current_dict.nodeData | include $configmap_include }}
-    {{- $cmap_bin := list (printf "%s-bin" $current_dict.dns_1123_name) $current_dict.nodeData | include $configbin_include }}
-    {{- $values_cmap_hash := $cmap | quote | sha256sum }}
-    {{- $values_cmap_bin_hash := $cmap_bin | quote | sha256sum }}
-    {{- $_ := set $context.Values.__daemonset_yaml.spec.template.metadata.annotations "configmap-etc-hash" $values_cmap_hash }}
-    {{- $_ := set $context.Values.__daemonset_yaml.spec.template.metadata.annotations "configmap-bin-hash" $values_cmap_bin_hash }}
-
-    {{/* Do not set override for default daemonset */}}
-    {{- if $current_dict.daemonset_override }}
-        {{- $_ := set $context.Values.__daemonset_yaml.metadata.annotations "daemonset_override" $current_dict.daemonset_override }}
-    {{- end }}
-
-{{/* generate configmap */}}
----
-{{ $cmap }}
-    {{/* generate <service>-bin yaml */}}
----
-{{ $cmap_bin }}
-    {{/* generate daemonset yaml */}}
----
-{{ $context.Values.__daemonset_yaml | toYaml }}
-  {{- end }}
-{{- end }}
diff --git a/charts/ironic/requirements.lock b/charts/ironic/requirements.lock
index b94dead..4f63a87 100644
--- a/charts/ironic/requirements.lock
+++ b/charts/ironic/requirements.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: helm-toolkit
   repository: https://tarballs.openstack.org/openstack-helm-infra
-  version: 0.2.78
-digest: sha256:760c5997580ac8d30a64dfe92d6a54052b783ddf90cacbc5a4c95c1330988742
+  version: 0.2.69
+digest: sha256:f971f98746c97193da5ff7a44d2401ae7d91201a49ed9f23d52359a1b6e9d0ef
 generated: "0001-01-01T00:00:00Z"
diff --git a/charts/ironic/requirements.yaml b/charts/ironic/requirements.yaml
index 52e723e..b3d5dcf 100644
--- a/charts/ironic/requirements.yaml
+++ b/charts/ironic/requirements.yaml
@@ -1,4 +1,4 @@
 dependencies:
 - name: helm-toolkit
   repository: https://tarballs.openstack.org/openstack-helm-infra
-  version: 0.2.78
+  version: 0.2.69
