From e3272511bf6351646902be5d5d6eeb4bf4f062bf Mon Sep 17 00:00:00 2001 From: Martin Schuppert Date: Thu, 9 Jul 2026 08:20:27 +0200 Subject: [PATCH] [cifmw_backup_restore] Add Octavia OVN sync after Neutron sync Sync Octavia load balancer entries to OVN NB database when Octavia with OVN provider is deployed. Checks spec.octavia.enabled on the OpenStackControlPlane CR, skips if Octavia is not enabled. Placed right after the Neutron sync and before EDPM deployment so OVN NB DB is fully populated when data plane nodes reconnect. Co-Authored-By: Claude Opus 4.6 Signed-off-by: Martin Schuppert --- roles/cifmw_backup_restore/tasks/restore.yml | 34 ++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/roles/cifmw_backup_restore/tasks/restore.yml b/roles/cifmw_backup_restore/tasks/restore.yml index d6317b62d..cf0dbee3c 100644 --- a/roles/cifmw_backup_restore/tasks/restore.yml +++ b/roles/cifmw_backup_restore/tasks/restore.yml @@ -597,7 +597,37 @@ changed_when: true # ======================================== -# Step 11: Restore DataPlane (Order 60) +# Step 11: Sync Octavia to OVN (optional) +# ======================================== +# Only when Octavia with OVN provider is deployed. Repopulates OVN NB DB +# with load balancer entries from Octavia's database. +# Ref: https://docs.openstack.org/ovn-octavia-provider/latest/admin/driver.html#octavia-db-to-ovn-database-population +- name: Check if Octavia is enabled + ansible.builtin.shell: | + oc get openstackcontrolplane {{ _ctlplane_name.stdout }} \ + -n {{ cifmw_backup_restore_namespace }} \ + -o jsonpath='{.spec.octavia.enabled}' + register: _octavia_enabled + changed_when: false + +- name: Sync Octavia load balancers to OVN + ansible.builtin.shell: | + oc exec -n {{ cifmw_backup_restore_namespace }} \ + -c octavia-api deploy/octavia-api -- \ + octavia-ovn-db-sync-util + register: _octavia_ovn_sync + when: _octavia_enabled.stdout == 'true' + changed_when: true + +- name: Report Octavia OVN sync result + ansible.builtin.debug: + msg: >- + Octavia OVN sync: + {{ 'completed' if _octavia_enabled.stdout == 'true' else 'skipped (Octavia not enabled)' }}. + when: _octavia_enabled.stdout == 'true' or not (_octavia_enabled.stdout == 'true') + +# ======================================== +# Step 12: Restore DataPlane (Order 60) # ======================================== - name: Render dataplane restore ansible.builtin.template: @@ -620,7 +650,7 @@ _step_name: "Step 11 (DataPlane restore)" # ======================================== -# Step 12: EDPM Deployment +# Step 13: EDPM Deployment # ======================================== - name: Get DataPlaneNodeSet names ansible.builtin.shell: |