Skip to content

Commit b8459c5

Browse files
committed
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
1 parent a59262e commit b8459c5

2 files changed

Lines changed: 22 additions & 60 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3587,6 +3587,9 @@ def _show_progress(progress):
35873587
if parsed_args.name is not None:
35883588
kwargs['name'] = parsed_args.name
35893589

3590+
if parsed_args.password is not None:
3591+
kwargs['admin_password'] = parsed_args.password
3592+
35903593
if parsed_args.preserve_ephemeral is not None:
35913594
kwargs['preserve_ephemeral'] = parsed_args.preserve_ephemeral
35923595

@@ -3725,9 +3728,7 @@ def _show_progress(progress):
37253728
msg = _("The server status is not ACTIVE, SHUTOFF or ERROR.")
37263729
raise exceptions.CommandError(msg)
37273730

3728-
server = compute_client.rebuild_server(
3729-
server, image, admin_password=parsed_args.password, **kwargs
3730-
)
3731+
server = compute_client.rebuild_server(server, image, **kwargs)
37313732

37323733
if parsed_args.wait:
37333734
if utils.wait_for_status(

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 18 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6146,7 +6146,7 @@ def test_rebuild_with_image_name(self):
61466146
)
61476147
self.image_client.get_image.assert_called_with(self.image.id)
61486148
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6149-
self.server, image, admin_password=None
6149+
self.server, image
61506150
)
61516151

61526152
def test_rebuild_with_current_image(self):
@@ -6167,7 +6167,7 @@ def test_rebuild_with_current_image(self):
61676167
[mock.call(self.image.id), mock.call(self.image.id)]
61686168
)
61696169
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6170-
self.server, self.image, admin_password=None
6170+
self.server, self.image
61716171
)
61726172

61736173
def test_rebuild_with_volume_backed_server_no_image(self):
@@ -6211,7 +6211,7 @@ def test_rebuild_with_name(self):
62116211
[mock.call(self.image.id), mock.call(self.image.id)]
62126212
)
62136213
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6214-
self.server, self.image, admin_password=None, name=name
6214+
self.server, self.image, name=name
62156215
)
62166216

62176217
def test_rebuild_with_preserve_ephemeral(self):
@@ -6235,10 +6235,7 @@ def test_rebuild_with_preserve_ephemeral(self):
62356235
[mock.call(self.image.id), mock.call(self.image.id)]
62366236
)
62376237
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6238-
self.server,
6239-
self.image,
6240-
admin_password=None,
6241-
preserve_ephemeral=True,
6238+
self.server, self.image, preserve_ephemeral=True
62426239
)
62436240

62446241
def test_rebuild_with_no_preserve_ephemeral(self):
@@ -6263,10 +6260,7 @@ def test_rebuild_with_no_preserve_ephemeral(self):
62636260
[mock.call(self.image.id), mock.call(self.image.id)]
62646261
)
62656262
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6266-
self.server,
6267-
self.image,
6268-
admin_password=None,
6269-
preserve_ephemeral=False,
6263+
self.server, self.image, preserve_ephemeral=False
62706264
)
62716265

62726266
def test_rebuild_with_password(self):
@@ -6308,10 +6302,7 @@ def test_rebuild_with_description(self):
63086302
[mock.call(self.image.id), mock.call(self.image.id)]
63096303
)
63106304
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6311-
self.server,
6312-
self.image,
6313-
admin_password=None,
6314-
description=description,
6305+
self.server, self.image, description=description
63156306
)
63166307

63176308
def test_rebuild_with_description_pre_v219(self):
@@ -6348,9 +6339,7 @@ def test_rebuild_with_wait_ok(self, mock_wait_for_status):
63486339
[mock.call(self.image.id), mock.call(self.image.id)]
63496340
)
63506341
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6351-
self.server,
6352-
self.image,
6353-
admin_password=None,
6342+
self.server, self.image
63546343
)
63556344

63566345
mock_wait_for_status.assert_called_once_with(
@@ -6382,9 +6371,7 @@ def test_rebuild_with_wait_fails(self, mock_wait_for_status):
63826371
self.image_client.find_image.assert_not_called()
63836372
self.image_client.get_image.assert_called_once_with(self.image.id)
63846373
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6385-
self.server,
6386-
self.image,
6387-
admin_password=None,
6374+
self.server, self.image
63886375
)
63896376

63906377
mock_wait_for_status.assert_called_once_with(
@@ -6417,9 +6404,7 @@ def test_rebuild_with_wait_shutoff_status(self, mock_wait_for_status):
64176404
[mock.call(self.image.id), mock.call(self.image.id)]
64186405
)
64196406
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6420-
self.server,
6421-
self.image,
6422-
admin_password=None,
6407+
self.server, self.image
64236408
)
64246409

64256410
mock_wait_for_status.assert_called_once_with(
@@ -6452,9 +6437,7 @@ def test_rebuild_with_wait_error_status(self, mock_wait_for_status):
64526437
[mock.call(self.image.id), mock.call(self.image.id)]
64536438
)
64546439
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6455-
self.server,
6456-
self.image,
6457-
admin_password=None,
6440+
self.server, self.image
64586441
)
64596442

64606443
mock_wait_for_status.assert_called_once_with(
@@ -6510,10 +6493,7 @@ def test_rebuild_with_property(self):
65106493
[mock.call(self.image.id), mock.call(self.image.id)]
65116494
)
65126495
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6513-
self.server,
6514-
self.image,
6515-
admin_password=None,
6516-
metadata=expected_properties,
6496+
self.server, self.image, metadata=expected_properties
65176497
)
65186498

65196499
def test_rebuild_with_keypair_name(self):
@@ -6541,10 +6521,7 @@ def test_rebuild_with_keypair_name(self):
65416521
[mock.call(self.image.id), mock.call(self.image.id)]
65426522
)
65436523
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6544-
self.server,
6545-
self.image,
6546-
admin_password=None,
6547-
key_name=self.server.key_name,
6524+
self.server, self.image, key_name=self.server.key_name
65486525
)
65496526

65506527
def test_rebuild_with_keypair_name_pre_v254(self):
@@ -6589,10 +6566,7 @@ def test_rebuild_with_no_keypair_name(self):
65896566
[mock.call(self.image.id), mock.call(self.image.id)]
65906567
)
65916568
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6592-
self.server,
6593-
self.image,
6594-
admin_password=None,
6595-
key_name=None,
6569+
self.server, self.image, key_name=None
65966570
)
65976571

65986572
def test_rebuild_with_keypair_name_and_unset(self):
@@ -6649,7 +6623,6 @@ def test_rebuild_with_user_data(self):
66496623
self.compute_sdk_client.rebuild_server.assert_called_once_with(
66506624
self.server,
66516625
self.image,
6652-
admin_password=None,
66536626
user_data=base64.b64encode(user_data).decode('utf-8'),
66546627
)
66556628

@@ -6695,10 +6668,7 @@ def test_rebuild_with_no_user_data(self):
66956668
[mock.call(self.image.id), mock.call(self.image.id)]
66966669
)
66976670
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6698-
self.server,
6699-
self.image,
6700-
admin_password=None,
6701-
user_data=None,
6671+
self.server, self.image, user_data=None
67026672
)
67036673

67046674
def test_rebuild_with_no_user_data_pre_v254(self):
@@ -6759,10 +6729,7 @@ def test_rebuild_with_trusted_image_cert(self):
67596729
[mock.call(self.image.id), mock.call(self.image.id)]
67606730
)
67616731
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6762-
self.server,
6763-
self.image,
6764-
admin_password=None,
6765-
trusted_image_certificates=['foo', 'bar'],
6732+
self.server, self.image, trusted_image_certificates=['foo', 'bar']
67666733
)
67676734

67686735
def test_rebuild_with_trusted_image_cert_pre_v263(self):
@@ -6808,10 +6775,7 @@ def test_rebuild_with_no_trusted_image_cert(self):
68086775
[mock.call(self.image.id), mock.call(self.image.id)]
68096776
)
68106777
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6811-
self.server,
6812-
self.image,
6813-
admin_password=None,
6814-
trusted_image_certificates=None,
6778+
self.server, self.image, trusted_image_certificates=None
68156779
)
68166780

68176781
def test_rebuild_with_no_trusted_image_cert_pre_v263(self):
@@ -6855,10 +6819,7 @@ def test_rebuild_with_hostname(self):
68556819
[mock.call(self.image.id), mock.call(self.image.id)]
68566820
)
68576821
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6858-
self.server,
6859-
self.image,
6860-
admin_password=None,
6861-
hostname='new-hostname',
6822+
self.server, self.image, hostname='new-hostname'
68626823
)
68636824

68646825
def test_rebuild_with_hostname_pre_v290(self):
@@ -6920,7 +6881,7 @@ def test_rebuild_with_reimage_boot_volume(self):
69206881
)
69216882
self.image_client.get_image.assert_not_called()
69226883
self.compute_sdk_client.rebuild_server.assert_called_once_with(
6923-
self.server, self.new_image, admin_password=None
6884+
self.server, self.new_image
69246885
)
69256886

69266887
def test_rebuild_with_no_reimage_boot_volume(self):

0 commit comments

Comments
 (0)