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