compute: Only pass admin_password on rebuild if set

In SDK change I3bc3150877c6c00aa9ec4355104308d7755aa1d4, we modified the
'rebuild_server' proxy method to use a sentinel 'unset' value so that we
could distinguish between fields that were not being changed and those
that were being changed to 'null'. However, we are currently passing the
'admin_password' field to the 'rebuild_server' SDK proxy command
regardless of whether it is set or not. Resolve this conflict.

Change-Id: If7b7585aadd43cdc6d2a9358f14223e43dc21a73
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Closes-bug: #2076232
This commit is contained in:
Stephen Finucane 2024-08-07 13:00:52 +01:00
parent a59262e44d
commit b8459c57c8
2 changed files with 22 additions and 60 deletions
openstackclient
compute/v2
tests/unit/compute/v2

@ -3587,6 +3587,9 @@ class RebuildServer(command.ShowOne):
if parsed_args.name is not None:
kwargs['name'] = parsed_args.name
if parsed_args.password is not None:
kwargs['admin_password'] = parsed_args.password
if parsed_args.preserve_ephemeral is not None:
kwargs['preserve_ephemeral'] = parsed_args.preserve_ephemeral
@ -3725,9 +3728,7 @@ class RebuildServer(command.ShowOne):
msg = _("The server status is not ACTIVE, SHUTOFF or ERROR.")
raise exceptions.CommandError(msg)
server = compute_client.rebuild_server(
server, image, admin_password=parsed_args.password, **kwargs
)
server = compute_client.rebuild_server(server, image, **kwargs)
if parsed_args.wait:
if utils.wait_for_status(

@ -6146,7 +6146,7 @@ class TestServerRebuild(TestServer):
)
self.image_client.get_image.assert_called_with(self.image.id)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, image, admin_password=None
self.server, image
)
def test_rebuild_with_current_image(self):
@ -6167,7 +6167,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.image, admin_password=None
self.server, self.image
)
def test_rebuild_with_volume_backed_server_no_image(self):
@ -6211,7 +6211,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.image, admin_password=None, name=name
self.server, self.image, name=name
)
def test_rebuild_with_preserve_ephemeral(self):
@ -6235,10 +6235,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
preserve_ephemeral=True,
self.server, self.image, preserve_ephemeral=True
)
def test_rebuild_with_no_preserve_ephemeral(self):
@ -6263,10 +6260,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
preserve_ephemeral=False,
self.server, self.image, preserve_ephemeral=False
)
def test_rebuild_with_password(self):
@ -6308,10 +6302,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
description=description,
self.server, self.image, description=description
)
def test_rebuild_with_description_pre_v219(self):
@ -6348,9 +6339,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
self.server, self.image
)
mock_wait_for_status.assert_called_once_with(
@ -6382,9 +6371,7 @@ class TestServerRebuild(TestServer):
self.image_client.find_image.assert_not_called()
self.image_client.get_image.assert_called_once_with(self.image.id)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
self.server, self.image
)
mock_wait_for_status.assert_called_once_with(
@ -6417,9 +6404,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
self.server, self.image
)
mock_wait_for_status.assert_called_once_with(
@ -6452,9 +6437,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
self.server, self.image
)
mock_wait_for_status.assert_called_once_with(
@ -6510,10 +6493,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
metadata=expected_properties,
self.server, self.image, metadata=expected_properties
)
def test_rebuild_with_keypair_name(self):
@ -6541,10 +6521,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
key_name=self.server.key_name,
self.server, self.image, key_name=self.server.key_name
)
def test_rebuild_with_keypair_name_pre_v254(self):
@ -6589,10 +6566,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
key_name=None,
self.server, self.image, key_name=None
)
def test_rebuild_with_keypair_name_and_unset(self):
@ -6649,7 +6623,6 @@ class TestServerRebuild(TestServer):
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
user_data=base64.b64encode(user_data).decode('utf-8'),
)
@ -6695,10 +6668,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
user_data=None,
self.server, self.image, user_data=None
)
def test_rebuild_with_no_user_data_pre_v254(self):
@ -6759,10 +6729,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
trusted_image_certificates=['foo', 'bar'],
self.server, self.image, trusted_image_certificates=['foo', 'bar']
)
def test_rebuild_with_trusted_image_cert_pre_v263(self):
@ -6808,10 +6775,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
trusted_image_certificates=None,
self.server, self.image, trusted_image_certificates=None
)
def test_rebuild_with_no_trusted_image_cert_pre_v263(self):
@ -6855,10 +6819,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)]
)
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server,
self.image,
admin_password=None,
hostname='new-hostname',
self.server, self.image, hostname='new-hostname'
)
def test_rebuild_with_hostname_pre_v290(self):
@ -6920,7 +6881,7 @@ class TestServerRebuildVolumeBacked(TestServer):
)
self.image_client.get_image.assert_not_called()
self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.new_image, admin_password=None
self.server, self.new_image
)
def test_rebuild_with_no_reimage_boot_volume(self):