Merge "Add release parameter to subcloud-backup restore"
This commit is contained in:
commit
ba678e433f
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2022 Wind River Systems, Inc.
|
# Copyright (c) 2022-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
@ -308,6 +308,14 @@ class RestoreSubcloudBackup(base.DCManagerShow):
|
||||||
'being restored from backup data.'
|
'being restored from backup data.'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
'--release',
|
||||||
|
required=False,
|
||||||
|
help='Software release used to install, bootstrap and/or deploy '
|
||||||
|
'the subcloud with. If not specified, the current software '
|
||||||
|
'release of the system controller will be used.'
|
||||||
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--local-only',
|
'--local-only',
|
||||||
required=False,
|
required=False,
|
||||||
|
@ -383,6 +391,11 @@ class RestoreSubcloudBackup(base.DCManagerShow):
|
||||||
'--local-only option.')
|
'--local-only option.')
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
if not parsed_args.with_install and parsed_args.release:
|
||||||
|
error_msg = ('Option --release cannot be used without '
|
||||||
|
'--with-install option.')
|
||||||
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
if parsed_args.with_install:
|
if parsed_args.with_install:
|
||||||
data['with_install'] = 'true'
|
data['with_install'] = 'true'
|
||||||
else:
|
else:
|
||||||
|
@ -398,6 +411,9 @@ class RestoreSubcloudBackup(base.DCManagerShow):
|
||||||
else:
|
else:
|
||||||
data['registry_images'] = 'false'
|
data['registry_images'] = 'false'
|
||||||
|
|
||||||
|
if parsed_args.release is not None:
|
||||||
|
data['release'] = parsed_args.release
|
||||||
|
|
||||||
if parsed_args.sysadmin_password is not None:
|
if parsed_args.sysadmin_password is not None:
|
||||||
data['sysadmin_password'] = base64.b64encode(
|
data['sysadmin_password'] = base64.b64encode(
|
||||||
parsed_args.sysadmin_password.encode("utf-8")).decode("utf-8")
|
parsed_args.sysadmin_password.encode("utf-8")).decode("utf-8")
|
||||||
|
@ -405,12 +421,14 @@ class RestoreSubcloudBackup(base.DCManagerShow):
|
||||||
password = utils.prompt_for_password()
|
password = utils.prompt_for_password()
|
||||||
data["sysadmin_password"] = base64.b64encode(
|
data["sysadmin_password"] = base64.b64encode(
|
||||||
password.encode("utf-8")).decode("utf-8")
|
password.encode("utf-8")).decode("utf-8")
|
||||||
|
|
||||||
if parsed_args.restore_values:
|
if parsed_args.restore_values:
|
||||||
if not os.path.isfile(parsed_args.restore_values):
|
if not os.path.isfile(parsed_args.restore_values):
|
||||||
error_msg = "Restore_values file does not exist: %s" % \
|
error_msg = "Restore_values file does not exist: %s" % \
|
||||||
parsed_args.restore_values
|
parsed_args.restore_values
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
files['restore_values'] = parsed_args.restore_values
|
files['restore_values'] = parsed_args.restore_values
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_backup_manager.\
|
return dcmanager_client.subcloud_backup_manager.\
|
||||||
backup_subcloud_restore(data=data, files=files)
|
backup_subcloud_restore(data=data, files=files)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2022 Wind River Systems, Inc.
|
# Copyright (c) 2022-2023 Wind River Systems, Inc.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
@ -499,3 +499,63 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
self.assertTrue(('Option --registry-images cannot be used without '
|
self.assertTrue(('Option --registry-images cannot be used without '
|
||||||
'--local-only option.') in str(e))
|
'--local-only option.') in str(e))
|
||||||
|
|
||||||
|
def test_backup_restore_with_install_no_release(self):
|
||||||
|
self.client.subcloud_backup_manager.backup_subcloud_restore.\
|
||||||
|
return_value = [SUBCLOUD]
|
||||||
|
|
||||||
|
backupPath = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
|
with open(backupPath, mode='w') as f:
|
||||||
|
f.write(OVERRIDE_VALUES)
|
||||||
|
|
||||||
|
actual_call = self.call(
|
||||||
|
subcloud_backup_cmd.RestoreSubcloudBackup,
|
||||||
|
app_args=['--subcloud', 'subcloud1',
|
||||||
|
'--with-install',
|
||||||
|
'--local-only',
|
||||||
|
'--registry-images',
|
||||||
|
'--restore-values', backupPath,
|
||||||
|
'--sysadmin-password', 'testpassword'])
|
||||||
|
|
||||||
|
self.assertEqual(DEFAULT_SUBCLOUD_FIELD_RESULT, actual_call[1])
|
||||||
|
|
||||||
|
def test_backup_restore_with_install_with_release(self):
|
||||||
|
self.client.subcloud_backup_manager.backup_subcloud_restore.\
|
||||||
|
return_value = [SUBCLOUD]
|
||||||
|
|
||||||
|
backupPath = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
|
with open(backupPath, mode='w') as f:
|
||||||
|
f.write(OVERRIDE_VALUES)
|
||||||
|
|
||||||
|
actual_call = self.call(
|
||||||
|
subcloud_backup_cmd.RestoreSubcloudBackup,
|
||||||
|
app_args=['--subcloud', 'subcloud1',
|
||||||
|
'--with-install',
|
||||||
|
'--release', SOFTWARE_VERSION,
|
||||||
|
'--local-only',
|
||||||
|
'--registry-images',
|
||||||
|
'--restore-values', backupPath,
|
||||||
|
'--sysadmin-password', 'testpassword'])
|
||||||
|
|
||||||
|
self.assertEqual(DEFAULT_SUBCLOUD_FIELD_RESULT, actual_call[1])
|
||||||
|
|
||||||
|
def test_backup_restore_no_install_with_release(self):
|
||||||
|
self.client.subcloud_backup_manager.backup_subcloud_restore.\
|
||||||
|
return_value = [SUBCLOUD]
|
||||||
|
|
||||||
|
backupPath = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
|
with open(backupPath, mode='w') as f:
|
||||||
|
f.write(OVERRIDE_VALUES)
|
||||||
|
|
||||||
|
e = self.assertRaises(DCManagerClientException,
|
||||||
|
self.call,
|
||||||
|
subcloud_backup_cmd.RestoreSubcloudBackup,
|
||||||
|
app_args=['--subcloud', 'subcloud1',
|
||||||
|
'--release', SOFTWARE_VERSION,
|
||||||
|
'--local-only',
|
||||||
|
'--registry-images',
|
||||||
|
'--restore-values', backupPath,
|
||||||
|
'--sysadmin-password', 'testpassword'])
|
||||||
|
|
||||||
|
self.assertTrue(('Option --release cannot be used without '
|
||||||
|
'--with-install option.') in str(e))
|
||||||
|
|
Loading…
Reference in New Issue