diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b655d5..ef54cc9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: - uses: vexxhost/docker-atmosphere/.github/actions/checkout@main with: repository: openstack/horizon - ref: dc63b9fb234f528acc8be7bde27c5e54c01cfb4a # stable/2025.2 + ref: 25e47fc90ab429cf6be10e4c7770ce5b098c1c84 # stable/2025.2 - uses: vexxhost/docker-atmosphere/.github/actions/checkout@main with: @@ -55,7 +55,7 @@ jobs: - uses: vexxhost/docker-atmosphere/.github/actions/checkout@main with: repository: openstack/octavia-dashboard - ref: a67d1cd7b9217dfafd8456af8f62ad02ed72663e # stable/2025.2 + ref: d582833a1eb9f6b09fa7e24547c5d55c4bf34eeb # stable/2025.2 - uses: vexxhost/docker-atmosphere/.github/actions/build-image@main with: diff --git a/patches/openstack/horizon/0000-add-microversion-support-for-nova-live-migration.patch b/patches/openstack/horizon/0000-add-microversion-support-for-nova-live-migration.patch deleted file mode 100644 index f2f0c52..0000000 --- a/patches/openstack/horizon/0000-add-microversion-support-for-nova-live-migration.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 60455e5ffe5129a592f356726565ab4c2ad1b87f Mon Sep 17 00:00:00 2001 -From: Dong Ma -Date: Mon, 15 Sep 2025 09:02:03 +0000 -Subject: [PATCH] feat(dashboard): add microversion support for Nova live - migration - -- Include "live_migrate" in MICROVERSION_FEATURES with minimum version 2.30. -- Update `server_live_migrate` to use the appropriate microversion when calling - Nova's live_migrate API. - -Change-Id: Ief547b55f90ff2bfd9f97ea859b4511c631676ef -Closes-Bug: 1788367 -Signed-off-by: Dong Ma ---- - openstack_dashboard/api/microversions.py | 1 + - openstack_dashboard/api/nova.py | 8 +++++--- - .../notes/nova-live-migrate-microversion-c3ccf731126b6e28.yaml | 6 ++++++ - 3 files changed, 12 insertions(+), 3 deletions(-) - create mode 100644 releasenotes/notes/nova-live-migrate-microversion-c3ccf731126b6e28.yaml - -diff --git a/openstack_dashboard/api/microversions.py b/openstack_dashboard/api/microversions.py -index 556b85d..9322e33 100644 ---- a/openstack_dashboard/api/microversions.py -+++ b/openstack_dashboard/api/microversions.py -@@ -39,6 +39,7 @@ - "key_type_list": ["2.9"], - "rescue_instance_volume_based": ["2.87", "2.93"], - "bdm2_volume_type": ["2.67", "2.96"], -+ "live_migrate": ["2.30"], - }, - "cinder": { - "groups": ["3.27", "3.43", "3.48", "3.58"], -diff --git a/openstack_dashboard/api/nova.py b/openstack_dashboard/api/nova.py -index 532446b..26e11b4 100644 ---- a/openstack_dashboard/api/nova.py -+++ b/openstack_dashboard/api/nova.py -@@ -609,9 +609,11 @@ - @profiler.trace - def server_live_migrate(request, instance_id, host, block_migration=False, - disk_over_commit=False): -- _nova.novaclient(request).servers.live_migrate(instance_id, host, -- block_migration, -- disk_over_commit) -+ microversion = get_microversion(request, "live_migrate") -+ _nova.novaclient(request, version=microversion).servers.live_migrate( -+ instance_id, host, -+ block_migration, -+ disk_over_commit) - - - @profiler.trace -diff --git a/releasenotes/notes/nova-live-migrate-microversion-c3ccf731126b6e28.yaml b/releasenotes/notes/nova-live-migrate-microversion-c3ccf731126b6e28.yaml -new file mode 100644 -index 0000000..f5c369e ---- /dev/null -+++ b/releasenotes/notes/nova-live-migrate-microversion-c3ccf731126b6e28.yaml -@@ -0,0 +1,6 @@ -+--- -+features: -+ - | -+ Horizon now supports Nova live migration with microversion 2.30. -+ The ``server_live_migrate`` API call will request the appropriate -+ microversion when available. --- -2.25.1 diff --git a/patches/openstack/horizon/0001-fix-api-Avoid-RecursionError-when-deepcopy-Port-apid.patch b/patches/openstack/horizon/0001-fix-api-Avoid-RecursionError-when-deepcopy-Port-apid.patch deleted file mode 100644 index cb6cb8e..0000000 --- a/patches/openstack/horizon/0001-fix-api-Avoid-RecursionError-when-deepcopy-Port-apid.patch +++ /dev/null @@ -1,41 +0,0 @@ -From c2d951d7d557e07b725a7400f9bdb36bc229d262 Mon Sep 17 00:00:00 2001 -From: Dong Ma -Date: Wed, 4 Feb 2026 13:42:35 +0800 -Subject: [PATCH] fix(api): Avoid RecursionError when deepcopy Port apidict - -When the apidict passed to Port.__init__ is an openstacksdk Resource -object, calling copy.deepcopy() on it can trigger a RecursionError. -This happens because openstacksdk CloudRegion.__getattr__ method -can cause infinite recursion during deepcopy operations. - -This fix converts the apidict to a plain dict using to_dict() before -deepcopy if the method is available, avoiding the recursion issue. - -Change-Id: Ia0de61ae6461c06158b285923d1abab373b4b792 -Signed-off-by: Dong Ma ---- - openstack_dashboard/api/neutron.py | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/openstack_dashboard/api/neutron.py b/openstack_dashboard/api/neutron.py -index bce0c20d3..423f3ac18 100644 ---- a/openstack_dashboard/api/neutron.py -+++ b/openstack_dashboard/api/neutron.py -@@ -203,7 +203,13 @@ class Port(NeutronAPIDictWrapper): - ON_STATE if apidict['mac_learning_enabled'] else OFF_STATE - pairs = apidict.get('allowed_address_pairs') - if pairs: -- apidict = copy.deepcopy(apidict) -+ # Convert to dict first if possible to avoid RecursionError -+ # when deepcopy encounters openstacksdk objects with custom -+ # __getattr__ methods. to_dict() already returns a new dict. -+ if hasattr(apidict, 'to_dict'): -+ apidict = apidict.to_dict() -+ else: -+ apidict = copy.deepcopy(apidict) - wrapped_pairs = [PortAllowedAddressPair(pair) for pair in pairs] - apidict['allowed_address_pairs'] = wrapped_pairs - super().__init__(apidict) --- -2.25.1 -