Use env var to set ovn_cms_options
diff --git a/charts/ovn/templates/bin/_ovn-controller-gw-init.sh.tpl b/charts/ovn/templates/bin/_ovn-controller-gw-init.sh.tpl
deleted file mode 100644
index 5528155..0000000
--- a/charts/ovn/templates/bin/_ovn-controller-gw-init.sh.tpl
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/bin/bash -xe
-
-# Copyright 2023 VEXXHOST, Inc.
-#
-# 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.
-
-function get_ip_address_from_interface {
-  local interface=$1
-  local ip=$(ip -4 -o addr s "${interface}" | awk '{ print $4; exit }' | awk -F '/' '{print $1}')
-  if [ -z "${ip}" ] ; then
-    exit 1
-  fi
-  echo ${ip}
-}
-
-function get_ip_prefix_from_interface {
-  local interface=$1
-  local prefix=$(ip -4 -o addr s "${interface}" | awk '{ print $4; exit }' | awk -F '/' '{print $2}')
-  if [ -z "${prefix}" ] ; then
-    exit 1
-  fi
-  echo ${prefix}
-}
-
-function migrate_ip_from_nic {
-  src_nic=$1
-  bridge_name=$2
-
-  # Enabling explicit error handling: We must avoid to lose the IP
-  # address in the migration process. Hence, on every error, we
-  # attempt to assign the IP back to the original NIC and exit.
-  set +e
-
-  ip=$(get_ip_address_from_interface ${src_nic})
-  prefix=$(get_ip_prefix_from_interface ${src_nic})
-
-  bridge_ip=$(get_ip_address_from_interface "${bridge_name}")
-  bridge_prefix=$(get_ip_prefix_from_interface "${bridge_name}")
-
-  ip link set ${bridge_name} up
-
-  if [[ -n "${ip}" && -n "${prefix}" ]]; then
-    ip addr flush dev ${src_nic}
-    if [ $? -ne 0 ] ; then
-      ip addr add ${ip}/${prefix} dev ${src_nic}
-      echo "Error while flushing IP from ${src_nic}."
-      exit 1
-    fi
-
-    ip addr add ${ip}/${prefix} dev "${bridge_name}"
-    if [ $? -ne 0 ] ; then
-      echo "Error assigning IP to bridge "${bridge_name}"."
-      ip addr add ${ip}/${prefix} dev ${src_nic}
-      exit 1
-    fi
-  elif [[ -n "${bridge_ip}" && -n "${bridge_prefix}" ]]; then
-    echo "Bridge '${bridge_name}' already has IP assigned. Keeping the same:: IP:[${bridge_ip}]; Prefix:[${bridge_prefix}]..."
-  elif [[ -z "${bridge_ip}" && -z "${ip}" ]]; then
-    echo "Interface and bridge have no ips configured. Leaving as is."
-  else
-    echo "Interface ${name} has invalid IP address. IP:[${ip}]; Prefix:[${prefix}]..."
-    exit 1
-  fi
-
-  set -e
-}
-
-# Detect tunnel interface
-tunnel_interface="{{- .Values.network.interface.tunnel -}}"
-if [ -z "${tunnel_interface}" ] ; then
-    # search for interface with tunnel network routing
-    tunnel_network_cidr="{{- .Values.network.interface.tunnel_network_cidr -}}"
-    if [ -z "${tunnel_network_cidr}" ] ; then
-        tunnel_network_cidr="0/0"
-    fi
-    # If there is not tunnel network gateway, exit
-    tunnel_interface=$(ip -4 route list ${tunnel_network_cidr} | awk -F 'dev' '{ print $2; exit }' \
-        | awk '{ print $1 }') || exit 1
-fi
-ovs-vsctl set open . external_ids:ovn-encap-ip="$(get_ip_address_from_interface ${tunnel_interface})"
-
-# Configure system ID
-set +e
-ovs-vsctl get open . external-ids:system-id
-if [ $? -eq 1 ]; then
-  ovs-vsctl set open . external-ids:system-id="$(uuidgen)"
-fi
-set -e
-
-# Configure OVN remote
-{{- if empty .Values.conf.ovn_remote -}}
-{{- $sb_svc_name := "ovn-ovsdb-sb" -}}
-{{- $sb_svc := (tuple $sb_svc_name "internal" . | include "helm-toolkit.endpoints.hostname_fqdn_endpoint_lookup") -}}
-{{- $sb_port := (tuple "ovn-ovsdb-sb" "internal" "ovsdb" . | include "helm-toolkit.endpoints.endpoint_port_lookup") -}}
-{{- $sb_service_list := list -}}
-{{- range $i := until (.Values.pod.replicas.ovn_ovsdb_sb | int) -}}
-  {{- $sb_service_list = printf "tcp:%s-%d.%s:%s" $sb_svc_name $i $sb_svc $sb_port | append $sb_service_list -}}
-{{- end }}
-
-ovs-vsctl set open . external-ids:ovn-remote="{{ include "helm-toolkit.utils.joinListWithComma" $sb_service_list }}"
-{{- else -}}
-ovs-vsctl set open . external-ids:ovn-remote="{{ .Values.conf.ovn_remote }}"
-{{- end }}
-
-# Configure OVN values
-ovs-vsctl set open . external-ids:rundir="/var/run/openvswitch"
-ovs-vsctl set open . external-ids:ovn-encap-type="{{ .Values.conf.ovn_encap_type }}"
-ovs-vsctl set open . external-ids:ovn-bridge="{{ .Values.conf.ovn_bridge }}"
-ovs-vsctl set open . external-ids:ovn-bridge-mappings="{{ .Values.conf.ovn_bridge_mappings }}"
-ovs-vsctl set open . external-ids:ovn-cms-options="{{ .Values.conf.gw_ovn_cms_options }}"
-
-# Configure hostname
-{{- if .Values.conf.use_fqdn.compute }}
-  ovs-vsctl set open . external-ids:hostname="$(hostname -f)"
-{{- else }}
-  ovs-vsctl set open . external-ids:hostname="$(hostname)"
-{{- end }}
-
-# Create bridges and create ports
-# handle any bridge mappings
-# /tmp/auto_bridge_add is one line json file: {"br-ex1":"eth1","br-ex2":"eth2"}
-for bmap in `sed 's/[{}"]//g' /tmp/auto_bridge_add | tr "," "\n"`
-do
-  bridge=${bmap%:*}
-  iface=${bmap#*:}
-  ovs-vsctl --may-exist add-br $bridge -- set bridge $bridge protocols=OpenFlow13
-  if [ -n "$iface" ] && [ "$iface" != "null" ]
-  then
-    ovs-vsctl --may-exist add-port $bridge $iface
-    migrate_ip_from_nic $iface $bridge
-  fi
-done
diff --git a/charts/ovn/templates/bin/_ovn-controller-init.sh.tpl b/charts/ovn/templates/bin/_ovn-controller-init.sh.tpl
index 54b7417..1e61577 100644
--- a/charts/ovn/templates/bin/_ovn-controller-init.sh.tpl
+++ b/charts/ovn/templates/bin/_ovn-controller-init.sh.tpl
@@ -117,7 +117,7 @@
 ovs-vsctl set open . external-ids:ovn-encap-type="{{ .Values.conf.ovn_encap_type }}"
 ovs-vsctl set open . external-ids:ovn-bridge="{{ .Values.conf.ovn_bridge }}"
 ovs-vsctl set open . external-ids:ovn-bridge-mappings="{{ .Values.conf.ovn_bridge_mappings }}"
-ovs-vsctl set open . external-ids:ovn-cms-options="{{ .Values.conf.ovn_cms_options }}"
+ovs-vsctl set open . external-ids:ovn-cms-options="${OVN_CMS_OPTIONS}"
 
 # Configure hostname
 {{- if .Values.conf.use_fqdn.compute }}
diff --git a/charts/ovn/templates/configmap-bin.yaml b/charts/ovn/templates/configmap-bin.yaml
index 1beb0d2..a849dd8 100644
--- a/charts/ovn/templates/configmap-bin.yaml
+++ b/charts/ovn/templates/configmap-bin.yaml
@@ -30,8 +30,6 @@
 {{ tuple "bin/_ovn-northd.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
   ovn-controller-init.sh: |
 {{ tuple "bin/_ovn-controller-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
-  ovn-controller-gw-init.sh: |
-{{ tuple "bin/_ovn-controller-gw-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
   ovn-controller.sh: |
 {{ tuple "bin/_ovn-controller.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
 {{- end }}
diff --git a/charts/ovn/templates/daemonset-controller-gw.yaml b/charts/ovn/templates/daemonset-controller-gw.yaml
index 6267970..27c4878 100644
--- a/charts/ovn/templates/daemonset-controller-gw.yaml
+++ b/charts/ovn/templates/daemonset-controller-gw.yaml
@@ -52,11 +52,14 @@
 {{ tuple $envAll "ovn_controller_gw" | include "helm-toolkit.snippets.image" | indent 10 }}
 {{ dict "envAll" $envAll "application" "ovn_controller_gw" "container" "controller_init" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
           command:
-            - /tmp/ovn-controller-gw-init.sh
+            - /tmp/ovn-controller-init.sh
+          env:
+            - name: OVN_CMS_OPTIONS
+              value: {{ .Values.conf.gw_ovn_cms_options | quote }}
           volumeMounts:
             - name: ovn-bin
-              mountPath: /tmp/ovn-controller-gw-init.sh
-              subPath: ovn-controller-gw-init.sh
+              mountPath: /tmp/ovn-controller-init.sh
+              subPath: ovn-controller-init.sh
               readOnly: true
             - name: run-openvswitch
               mountPath: /run/openvswitch
diff --git a/charts/ovn/templates/daemonset-controller.yaml b/charts/ovn/templates/daemonset-controller.yaml
index a07c5fa..a06de8f 100644
--- a/charts/ovn/templates/daemonset-controller.yaml
+++ b/charts/ovn/templates/daemonset-controller.yaml
@@ -53,6 +53,9 @@
 {{ dict "envAll" $envAll "application" "ovn_controller" "container" "controller_init" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
           command:
             - /tmp/ovn-controller-init.sh
+          env:
+            - name: OVN_CMS_OPTIONS
+              value: {{ .Values.conf.ovn_cms_options | quote }}
           volumeMounts:
             - name: ovn-bin
               mountPath: /tmp/ovn-controller-init.sh