
Create a Zuul job to check Black Formatter in the code. This commit also applies the Black formatter to the entire project. Test Plan Pass - Success on stx-distcloud-client-tox-black Pass - Success on tox command Story: 2011149 Task: 50393 Change-Id: I5d7b537e83931304ffd5f67ce51e8ebb44f7e65b Signed-off-by: Hugo Brito <hugo.brito@windriver.com>
315 lines
12 KiB
Python
315 lines
12 KiB
Python
#
|
|
# Copyright (c) 2023-2024 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
import os
|
|
import tempfile
|
|
|
|
import mock
|
|
import yaml
|
|
|
|
from dcmanagerclient.commands.v1 import phased_subcloud_deploy_manager as cmd
|
|
from dcmanagerclient.exceptions import DCManagerClientException
|
|
from dcmanagerclient.tests import base
|
|
|
|
|
|
@mock.patch("getpass.getpass", new=mock.Mock(return_value="testpassword"))
|
|
class TestCLIPhasedSubcloudDeployManagerV1(base.BaseCommandTest):
|
|
def setUp(self):
|
|
super().setUp()
|
|
# The client is the subcloud_deploy_manager
|
|
self.client = self.app.client_manager.phased_subcloud_deploy_manager
|
|
|
|
def test_subcloud_deploy_create(self):
|
|
self.client.subcloud_deploy_create.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as config_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as install_file:
|
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
|
config_file_path = os.path.abspath(config_file.name)
|
|
install_file_path = os.path.abspath(install_file.name)
|
|
|
|
actual_call = self.call(
|
|
cmd.CreatePhasedSubcloudDeploy,
|
|
app_args=[
|
|
"--bootstrap-address",
|
|
base.BOOTSTRAP_ADDRESS,
|
|
"--install-values",
|
|
install_file_path,
|
|
"--bootstrap-values",
|
|
bootstrap_file_path,
|
|
"--deploy-config",
|
|
config_file_path,
|
|
"--release",
|
|
base.SOFTWARE_VERSION,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_bootstrap(self):
|
|
self.client.subcloud_deploy_bootstrap.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(mode="w") as bootstrap_file:
|
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
|
|
|
actual_call = self.call(
|
|
cmd.BootstrapPhasedSubcloudDeploy,
|
|
app_args=[
|
|
base.ID,
|
|
"--bootstrap-address",
|
|
base.BOOTSTRAP_ADDRESS,
|
|
"--bootstrap-values",
|
|
bootstrap_file_path,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_install_subcloud(self):
|
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(mode="w") as f:
|
|
yaml.dump(base.FAKE_INSTALL_VALUES, f)
|
|
file_path = os.path.abspath(f.name)
|
|
actual_call = self.call(
|
|
cmd.InstallPhasedSubcloudDeploy,
|
|
app_args=[
|
|
base.NAME,
|
|
"--install-values",
|
|
file_path,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_install_subcloud_with_release(self):
|
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(mode="w") as f:
|
|
yaml.dump(base.FAKE_INSTALL_VALUES, f)
|
|
file_path = os.path.abspath(f.name)
|
|
actual_call = self.call(
|
|
cmd.InstallPhasedSubcloudDeploy,
|
|
app_args=[
|
|
base.NAME,
|
|
"--install-values",
|
|
file_path,
|
|
"--release",
|
|
base.SOFTWARE_VERSION,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_install_subcloud_without_install_values(self):
|
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
actual_call = self.call(cmd.InstallPhasedSubcloudDeploy, app_args=[base.NAME])
|
|
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_install_file_does_not_exist(self):
|
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
|
with tempfile.NamedTemporaryFile() as f:
|
|
file_path = os.path.abspath(f.name)
|
|
|
|
e = self.assertRaises(
|
|
DCManagerClientException,
|
|
self.call,
|
|
cmd.InstallPhasedSubcloudDeploy,
|
|
app_args=[base.NAME, "--install-values", file_path],
|
|
)
|
|
self.assertTrue("install-values does not exist" in str(e))
|
|
|
|
def test_configure_subcloud(self):
|
|
self.client.subcloud_deploy_config.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile() as f:
|
|
file_path = os.path.abspath(f.name)
|
|
actual_call = self.call(
|
|
cmd.ConfigPhasedSubcloudDeploy,
|
|
app_args=[base.NAME, "--deploy-config", file_path],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_configure_file_does_not_exist(self):
|
|
self.client.subcloud_deploy_config.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile() as f:
|
|
file_path = os.path.abspath(f.name)
|
|
|
|
e = self.assertRaises(
|
|
DCManagerClientException,
|
|
self.call,
|
|
cmd.ConfigPhasedSubcloudDeploy,
|
|
app_args=[base.NAME, "--deploy-config", file_path],
|
|
)
|
|
self.assertTrue("deploy-config file does not exist" in str(e))
|
|
|
|
def test_complete_subcloud_deployment(self):
|
|
self.client.subcloud_deploy_complete.return_value = [base.SUBCLOUD_RESOURCE]
|
|
actual_call = self.call(cmd.CompletePhasedSubcloudDeploy, app_args=[base.NAME])
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_abort_subcloud(self):
|
|
self.client.subcloud_deploy_abort.return_value = [base.SUBCLOUD_RESOURCE]
|
|
actual_call = self.call(cmd.AbortPhasedSubcloudDeploy, app_args=[base.NAME])
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_resume_all_parameters(self):
|
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as config_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as install_file:
|
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
|
config_file_path = os.path.abspath(config_file.name)
|
|
install_file_path = os.path.abspath(install_file.name)
|
|
|
|
actual_call = self.call(
|
|
cmd.PhasedSubcloudDeployResume,
|
|
app_args=[
|
|
base.NAME,
|
|
"--bootstrap-address",
|
|
base.BOOTSTRAP_ADDRESS,
|
|
"--bootstrap-values",
|
|
bootstrap_file_path,
|
|
"--install-values",
|
|
install_file_path,
|
|
"--deploy-config",
|
|
config_file_path,
|
|
"--release",
|
|
base.SOFTWARE_VERSION,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_resume_missing_files(self):
|
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as config_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as install_file:
|
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
|
config_file_path = os.path.abspath(config_file.name)
|
|
install_file_path = os.path.abspath(install_file.name)
|
|
|
|
# Missing bootstrap values
|
|
app_args_bootstrap = [
|
|
base.NAME,
|
|
"--bootstrap-address",
|
|
base.BOOTSTRAP_ADDRESS,
|
|
"--bootstrap-values",
|
|
bootstrap_file_path,
|
|
]
|
|
error_msg_bootstrap = "bootstrap-values does not exist"
|
|
call_bootstrap = self.assertRaises(
|
|
DCManagerClientException,
|
|
self.call,
|
|
cmd.PhasedSubcloudDeployResume,
|
|
app_args=app_args_bootstrap,
|
|
)
|
|
self.assertTrue(error_msg_bootstrap in str(call_bootstrap))
|
|
|
|
# Missing install values
|
|
app_args_install = [base.NAME, "--install-values", install_file_path]
|
|
error_msg_install = "install-values does not exist"
|
|
call_install = self.assertRaises(
|
|
DCManagerClientException,
|
|
self.call,
|
|
cmd.PhasedSubcloudDeployResume,
|
|
app_args=app_args_install,
|
|
)
|
|
self.assertTrue(error_msg_install in str(call_install))
|
|
|
|
# Missing deploy config values
|
|
app_args_config = [base.NAME, "--deploy-config", config_file_path]
|
|
error_msg_config = "deploy-config does not exist"
|
|
call_config = self.assertRaises(
|
|
DCManagerClientException,
|
|
self.call,
|
|
cmd.PhasedSubcloudDeployResume,
|
|
app_args=app_args_config,
|
|
)
|
|
self.assertTrue(error_msg_config in str(call_config))
|
|
|
|
def test_subcloud_deploy_resume_no_parameters(self):
|
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
actual_call = self.call(cmd.PhasedSubcloudDeployResume, app_args=[base.NAME])
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_resume_no_files_only_release(self):
|
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
actual_call = self.call(
|
|
cmd.PhasedSubcloudDeployResume,
|
|
app_args=[
|
|
base.NAME,
|
|
"--release",
|
|
base.SOFTWARE_VERSION,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_enroll(self):
|
|
self.client.subcloud_deploy_enroll.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
with tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as config_file, tempfile.NamedTemporaryFile(
|
|
mode="w"
|
|
) as install_file:
|
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
|
config_file_path = os.path.abspath(config_file.name)
|
|
install_file_path = os.path.abspath(install_file.name)
|
|
|
|
actual_call = self.call(
|
|
cmd.EnrollPhasedSubcloudDeploy,
|
|
app_args=[
|
|
base.ID,
|
|
"--bootstrap-address",
|
|
base.BOOTSTRAP_ADDRESS,
|
|
"--bootstrap-values",
|
|
bootstrap_file_path,
|
|
"--install-values",
|
|
install_file_path,
|
|
"--deploy-config",
|
|
config_file_path,
|
|
],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_enroll_only_required_params(self):
|
|
self.client.subcloud_deploy_enroll.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
actual_call = self.call(
|
|
cmd.EnrollPhasedSubcloudDeploy,
|
|
app_args=[base.NAME],
|
|
)
|
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
|
|
|
def test_subcloud_deploy_enroll_invalid_bootstrap_file_path(self):
|
|
self.client.subcloud_deploy_enroll.return_value = [base.SUBCLOUD_RESOURCE]
|
|
|
|
self.assertRaises(
|
|
DCManagerClientException,
|
|
self.call,
|
|
cmd.EnrollPhasedSubcloudDeploy,
|
|
app_args=[base.ID, "--bootstrap-values", "missing_path"],
|
|
)
|