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

View File

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

View File

@@ -6146,7 +6146,7 @@ class TestServerRebuild(TestServer):
) )
self.image_client.get_image.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.compute_sdk_client.rebuild_server.assert_called_once_with( 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): def test_rebuild_with_current_image(self):
@@ -6167,7 +6167,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( 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): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( 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): def test_rebuild_with_preserve_ephemeral(self):
@@ -6235,10 +6235,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, preserve_ephemeral=True
self.image,
admin_password=None,
preserve_ephemeral=True,
) )
def test_rebuild_with_no_preserve_ephemeral(self): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, preserve_ephemeral=False
self.image,
admin_password=None,
preserve_ephemeral=False,
) )
def test_rebuild_with_password(self): def test_rebuild_with_password(self):
@@ -6308,10 +6302,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, description=description
self.image,
admin_password=None,
description=description,
) )
def test_rebuild_with_description_pre_v219(self): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image
self.image,
admin_password=None,
) )
mock_wait_for_status.assert_called_once_with( 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.find_image.assert_not_called()
self.image_client.get_image.assert_called_once_with(self.image.id) self.image_client.get_image.assert_called_once_with(self.image.id)
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image
self.image,
admin_password=None,
) )
mock_wait_for_status.assert_called_once_with( 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image
self.image,
admin_password=None,
) )
mock_wait_for_status.assert_called_once_with( 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image
self.image,
admin_password=None,
) )
mock_wait_for_status.assert_called_once_with( 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, metadata=expected_properties
self.image,
admin_password=None,
metadata=expected_properties,
) )
def test_rebuild_with_keypair_name(self): def test_rebuild_with_keypair_name(self):
@@ -6541,10 +6521,7 @@ class TestServerRebuild(TestServer):
[mock.call(self.image.id), mock.call(self.image.id)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, key_name=self.server.key_name
self.image,
admin_password=None,
key_name=self.server.key_name,
) )
def test_rebuild_with_keypair_name_pre_v254(self): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, key_name=None
self.image,
admin_password=None,
key_name=None,
) )
def test_rebuild_with_keypair_name_and_unset(self): 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.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server,
self.image, self.image,
admin_password=None,
user_data=base64.b64encode(user_data).decode('utf-8'), 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, user_data=None
self.image,
admin_password=None,
user_data=None,
) )
def test_rebuild_with_no_user_data_pre_v254(self): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, trusted_image_certificates=['foo', 'bar']
self.image,
admin_password=None,
trusted_image_certificates=['foo', 'bar'],
) )
def test_rebuild_with_trusted_image_cert_pre_v263(self): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, trusted_image_certificates=None
self.image,
admin_password=None,
trusted_image_certificates=None,
) )
def test_rebuild_with_no_trusted_image_cert_pre_v263(self): 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)] [mock.call(self.image.id), mock.call(self.image.id)]
) )
self.compute_sdk_client.rebuild_server.assert_called_once_with( self.compute_sdk_client.rebuild_server.assert_called_once_with(
self.server, self.server, self.image, hostname='new-hostname'
self.image,
admin_password=None,
hostname='new-hostname',
) )
def test_rebuild_with_hostname_pre_v290(self): def test_rebuild_with_hostname_pre_v290(self):
@@ -6920,7 +6881,7 @@ class TestServerRebuildVolumeBacked(TestServer):
) )
self.image_client.get_image.assert_not_called() self.image_client.get_image.assert_not_called()
self.compute_sdk_client.rebuild_server.assert_called_once_with( 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): def test_rebuild_with_no_reimage_boot_volume(self):