Add a new label for ovn and make some changes in label selection
diff --git a/charts/neutron/templates/daemonset-ovn-metadata-agent.yaml b/charts/neutron/templates/daemonset-ovn-metadata-agent.yaml
index 8f8ae34..bc8bb74 100644
--- a/charts/neutron/templates/daemonset-ovn-metadata-agent.yaml
+++ b/charts/neutron/templates/daemonset-ovn-metadata-agent.yaml
@@ -80,7 +80,7 @@
 {{ tuple $envAll "neutron" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
 {{ end }}
       nodeSelector:
-        {{ .Values.labels.agent.ovn_metadata.node_selector_key }}: {{ .Values.labels.agent.ovn_metadata.node_selector_value }}
+        {{ .Values.labels.ovn.node_selector_key }}: {{ .Values.labels.ovn.node_selector_value }}
       dnsPolicy: ClusterFirstWithHostNet
       hostNetwork: true
       {{- if or ( gt .Capabilities.KubeVersion.Major "1" ) ( ge .Capabilities.KubeVersion.Minor "10" ) }}
diff --git a/charts/neutron/values.yaml b/charts/neutron/values.yaml
index 1b2c639..2349460 100644
--- a/charts/neutron/values.yaml
+++ b/charts/neutron/values.yaml
@@ -64,9 +64,6 @@
     metadata:
       node_selector_key: openstack-control-plane
       node_selector_value: enabled
-    ovn_metadata:
-      node_selector_key: openstack-compute-node
-      node_selector_value: enabled
     l2gw:
       node_selector_key: openstack-control-plane
       node_selector_value: enabled
@@ -80,6 +77,9 @@
   # label that can apply to both control hosts
   # and compute hosts, until we get more sophisticated
   # with our daemonset scheduling
+  ovn:
+    node_selector_key: ovn
+    node_selector_value: enabled
   ovs:
     node_selector_key: openvswitch
     node_selector_value: enabled
@@ -161,13 +161,6 @@
       sriov: {}
       l2gateway: {}
       bagpipe_bgp: {}
-      ovn:
-        libvirt:
-          pod:
-            - requireSameNode: true
-              labels:
-                application: ovn
-                component: ovn-controller
       openvswitch:
         dhcp:
           pod:
diff --git a/charts/ovn/templates/daemonset-controller-gw.yaml b/charts/ovn/templates/daemonset-controller-gw.yaml
index 04c4beb..ff76537 100644
--- a/charts/ovn/templates/daemonset-controller-gw.yaml
+++ b/charts/ovn/templates/daemonset-controller-gw.yaml
@@ -27,15 +27,18 @@
     {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
     configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
   labels:
-{{ tuple $envAll "ovn" "ovn-controller-gw" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
+{{ tuple $envAll "ovn" "ovn-controller" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
+    type: gw
 spec:
   selector:
     matchLabels:
-{{ tuple $envAll "ovn" "ovn-controller-gw" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
+{{ tuple $envAll "ovn" "ovn-controller" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
+      type: gw
   template:
     metadata:
       labels:
-{{ tuple $envAll "ovn" "ovn-controller-gw" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
+{{ tuple $envAll "ovn" "ovn-controller" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
+        type: gw
       annotations:
 {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
         configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
@@ -46,6 +49,7 @@
       dnsPolicy: {{ .Values.pod.dns_policy }}
       nodeSelector:
         {{ .Values.labels.ovn_controller_gw.node_selector_key }}: {{ .Values.labels.ovn_controller_gw.node_selector_value }}
+        {{ .Values.labels.ovn.node_selector_key }}: {{ .Values.labels.ovn.node_selector_value }}
       initContainers:
 {{- tuple $envAll "ovn_controller_gw" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
         - name: controller-init
diff --git a/charts/ovn/templates/daemonset-controller.yaml b/charts/ovn/templates/daemonset-controller.yaml
index a06de8f..3fd3f7b 100644
--- a/charts/ovn/templates/daemonset-controller.yaml
+++ b/charts/ovn/templates/daemonset-controller.yaml
@@ -28,14 +28,17 @@
     configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
   labels:
 {{ tuple $envAll "ovn" "ovn-controller" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
+    type: hv
 spec:
   selector:
     matchLabels:
 {{ tuple $envAll "ovn" "ovn-controller" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
+      type: hv
   template:
     metadata:
       labels:
 {{ tuple $envAll "ovn" "ovn-controller" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
+        type: hv
       annotations:
 {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
         configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
@@ -46,6 +49,7 @@
       dnsPolicy: {{ .Values.pod.dns_policy }}
       nodeSelector:
         {{ .Values.labels.ovn_controller.node_selector_key }}: {{ .Values.labels.ovn_controller.node_selector_value }}
+        {{ .Values.labels.ovn.node_selector_key }}: {{ .Values.labels.ovn.node_selector_value }}
       initContainers:
 {{- tuple $envAll "ovn_controller" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
         - name: controller-init
diff --git a/charts/ovn/templates/deployment-northd.yaml b/charts/ovn/templates/deployment-northd.yaml
index e3afdd0..1688062 100644
--- a/charts/ovn/templates/deployment-northd.yaml
+++ b/charts/ovn/templates/deployment-northd.yaml
@@ -56,6 +56,7 @@
       serviceAccountName: {{ $serviceAccountName }}
       nodeSelector:
         {{ .Values.labels.ovn_northd.node_selector_key }}: {{ .Values.labels.ovn_northd.node_selector_value }}
+        {{ .Values.labels.ovn.node_selector_key }}: {{ .Values.labels.ovn.node_selector_value }}
       initContainers:
 {{- tuple $envAll "ovn_northd" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
       containers:
diff --git a/charts/ovn/templates/statefulset-ovsdb-nb.yaml b/charts/ovn/templates/statefulset-ovsdb-nb.yaml
index 9380515..1c13e0e 100644
--- a/charts/ovn/templates/statefulset-ovsdb-nb.yaml
+++ b/charts/ovn/templates/statefulset-ovsdb-nb.yaml
@@ -45,6 +45,7 @@
 {{- tuple $envAll "ovn" "ovn-ovsdb-nb" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
       nodeSelector:
         {{ .Values.labels.ovn_ovsdb_nb.node_selector_key }}: {{ .Values.labels.ovn_ovsdb_nb.node_selector_value }}
+        {{ .Values.labels.ovn.node_selector_key }}: {{ .Values.labels.ovn.node_selector_value }}
       initContainers:
 {{- tuple $envAll "ovn_ovsdb_nb" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
       containers:
diff --git a/charts/ovn/templates/statefulset-ovsdb-sb.yaml b/charts/ovn/templates/statefulset-ovsdb-sb.yaml
index 400b127..d00689b 100644
--- a/charts/ovn/templates/statefulset-ovsdb-sb.yaml
+++ b/charts/ovn/templates/statefulset-ovsdb-sb.yaml
@@ -45,6 +45,7 @@
 {{- tuple $envAll "ovn" "ovn-ovsdb-sb" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
       nodeSelector:
         {{ .Values.labels.ovn_ovsdb_sb.node_selector_key }}: {{ .Values.labels.ovn_ovsdb_sb.node_selector_value }}
+        {{ .Values.labels.ovn.node_selector_key }}: {{ .Values.labels.ovn.node_selector_value }}
       initContainers:
 {{- tuple $envAll "ovn_ovsdb_sb" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
       containers:
diff --git a/charts/ovn/values.yaml b/charts/ovn/values.yaml
index f132889..2f152dd 100644
--- a/charts/ovn/values.yaml
+++ b/charts/ovn/values.yaml
@@ -34,17 +34,20 @@
       - image_repo_sync
 
 labels:
+  ovn:
+    node_selector_key: ovn
+    node_selector_value: enabled
   ovn_ovsdb_nb:
-    node_selector_key: openstack-network-node
+    node_selector_key: openstack-compute-node
     node_selector_value: enabled
   ovn_ovsdb_sb:
-    node_selector_key: openstack-network-node
+    node_selector_key: openstack-compute-node
     node_selector_value: enabled
   ovn_northd:
-    node_selector_key: openstack-network-node
+    node_selector_key: openstack-compute-node
     node_selector_value: enabled
   ovn_controller:
-    node_selector_key: openstack-network-node
+    node_selector_key: openstack-compute-node
     node_selector_value: enabled
   ovn_controller_gw:
     node_selector_key: openstack-control-plane
diff --git a/roles/kubernetes_node_labels/defaults/main.yml b/roles/kubernetes_node_labels/defaults/main.yml
index 6d1784d..5c427ff 100644
--- a/roles/kubernetes_node_labels/defaults/main.yml
+++ b/roles/kubernetes_node_labels/defaults/main.yml
@@ -18,10 +18,21 @@
   {% set res = {} -%}
   {% if inventory_hostname in groups.get('controllers', []) %}
   {%   set _ = res.update({'openstack-control-plane': 'enabled'}) %}
+  {% if atmosphere_network_backend == 'openvswitch' %}
   {%   set _ = res.update({'openvswitch': 'enabled'}) %}
   {% endif %}
+  {% if atmosphere_network_backend == 'ovn' %}
+  {%   set _ = res.update({'ovn': 'enabled'}) %}
+  {% endif %}
+  {% endif %}
+  atmosphere_network_backend
   {% if inventory_hostname in groups.get('computes', []) %}
   {%   set _ = res.update({'openstack-compute-node': 'enabled'}) %}
+  {% if atmosphere_network_backend == 'openvswitch' %}
   {%   set _ = res.update({'openvswitch': 'enabled'}) %}
   {% endif %}
+  {% if atmosphere_network_backend == 'ovn' %}
+  {%   set _ = res.update({'ovn': 'enabled'}) %}
+  {% endif %}
+  {% endif %}
   {{ res }}