diff --git a/distributedcloud-client/dcmanagerclient/commands/v1/subcloud_manager.py b/distributedcloud-client/dcmanagerclient/commands/v1/subcloud_manager.py index 4482080..fa1111d 100644 --- a/distributedcloud-client/dcmanagerclient/commands/v1/subcloud_manager.py +++ b/distributedcloud-client/dcmanagerclient/commands/v1/subcloud_manager.py @@ -422,6 +422,14 @@ class UnmanageSubcloud(base.DCManagerShowOne): 'subcloud', help='Name or ID of the subcloud to unmanage.' ) + + parser.add_argument( + '--migrate', + required=False, + action='store_true', + help='Mark the subcloud for an upcoming migration.' + ) + return parser def _get_resources(self, parsed_args): @@ -429,6 +437,10 @@ class UnmanageSubcloud(base.DCManagerShowOne): dcmanager_client = self.app.client_manager.subcloud_manager kwargs = dict() kwargs['management-state'] = 'unmanaged' + + if parsed_args.migrate: + kwargs['migrate'] = 'true' + try: result = dcmanager_client.subcloud_manager.update_subcloud( subcloud_ref, files=None, data=kwargs) diff --git a/distributedcloud-client/dcmanagerclient/tests/v1/test_subcloud_manager.py b/distributedcloud-client/dcmanagerclient/tests/v1/test_subcloud_manager.py index e31bc2e..b09a31a 100644 --- a/distributedcloud-client/dcmanagerclient/tests/v1/test_subcloud_manager.py +++ b/distributedcloud-client/dcmanagerclient/tests/v1/test_subcloud_manager.py @@ -221,6 +221,15 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest): base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1]) + def test_unmanage_subcloud_with_migrate(self): + self.client.subcloud_manager.update_subcloud.\ + return_value = [base.SUBCLOUD_RESOURCE] + actual_call = self.call( + subcloud_cmd.UnmanageSubcloud, app_args=[base.ID, '--migrate']) + self.assertEqual( + base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, + actual_call[1]) + def test_unmanage_subcloud_without_subcloud_id(self): self.assertRaises(SystemExit, self.call, subcloud_cmd.UnmanageSubcloud, app_args=[])