From 8cd439a27ac5351b04bea8b6afe7224c704a6bc7 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Thu, 9 Mar 2023 19:05:41 +0900 Subject: Fix unit tests with python-novaclient 18.3.0 python-novaclient 18.3.0 replaced usage of kwargs by explicit arguments and that broke some assertions of arguments. story: 2010638 task: 47613 Change-Id: I039d1e672611b7b523ce61df072c60d161851eed (cherry picked from commit 513dfd116e5177cb43a0fb78471ad1992f16210d) --- heat/tests/openstack/nova/test_server.py | 52 +++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/heat/tests/openstack/nova/test_server.py b/heat/tests/openstack/nova/test_server.py index 1ed657ff2..5419857dd 100644 --- a/heat/tests/openstack/nova/test_server.py +++ b/heat/tests/openstack/nova/test_server.py @@ -2437,16 +2437,33 @@ class ServersTest(common.HeatTestCase): scheduler.TaskRunner(server.update, update_template)() self.assertEqual((server.UPDATE, server.COMPLETE), server.state) + # NOTE(tkajinam): python-novaclient 18.3.0 removed usage of args/kwargs + # and now all arguments are defined. To make the test + # independent from the underlying inteface as much as + # possible we inspect kwargs and check what we intend + # to define in Heat's logic. + mock_rebuild.assert_called_once() + self.assertEqual((return_server, '2'), mock_rebuild.call_args.args) if 'REBUILD' == policy: - mock_rebuild.assert_called_once_with( - return_server, '2', password=password, - preserve_ephemeral=False, - meta={}, files={}) + self.assertLessEqual( + { + 'password': password, + 'preserve_ephemeral': False, + 'meta': {}, + 'files': {} + }.items(), + mock_rebuild.call_args.kwargs.items() + ) else: - mock_rebuild.assert_called_once_with( - return_server, '2', password=password, - preserve_ephemeral=True, - meta={}, files={}) + self.assertLessEqual( + { + 'password': password, + 'preserve_ephemeral': True, + 'meta': {}, + 'files': {} + }.items(), + mock_rebuild.call_args.kwargs.items() + ) def test_server_update_image_rebuild_status_rebuild(self): # Normally we will see 'REBUILD' first and then 'ACTIVE". @@ -2502,9 +2519,22 @@ class ServersTest(common.HeatTestCase): "Rebuilding server failed, status 'ERROR'", str(error)) self.assertEqual((server.UPDATE, server.FAILED), server.state) - mock_rebuild.assert_called_once_with( - return_server, '2', password=None, preserve_ephemeral=False, - meta={}, files={}) + # NOTE(tkajinam): python-novaclient 18.3.0 removed usage of args/kwargs + # and now all arguments are defined. To make the test + # independent from the underlying inteface as much as + # possible we inspect kwargs and check what we intend + # to define in Heat's logic. + mock_rebuild.assert_called_once() + self.assertEqual((return_server, '2'), mock_rebuild.call_args.args) + self.assertLessEqual( + { + 'password': None, + 'preserve_ephemeral': False, + 'meta': {}, + 'files': {} + }.items(), + mock_rebuild.call_args.kwargs.items() + ) def test_server_update_properties(self): return_server = self.fc.servers.list()[1] -- cgit v1.2.1