Check CephClusterFSID against proposed env files
There have been cases where operators inadvertenly changed the
CephClusterFSID on a stack update, which is unsupported by both
Ceph and openstack.
For this reason we need to check that the existing deployed Ceph
cluster ID present in the stack is consistent with the value of
the environment, raising an InvalidConfiguration exception if
they are different.
Change-Id: I6aca5c701cb00c82c6b3f92db72b5547799a10bf
Closes-Bug: #1882548
(cherry picked from commit 58f913512c
)
This commit is contained in:
parent
7700507fc7
commit
05a909c355
|
@ -506,6 +506,49 @@ class TestWaitForStackUtil(TestCase):
|
||||||
with self.assertRaises(exceptions.InvalidConfiguration):
|
with self.assertRaises(exceptions.InvalidConfiguration):
|
||||||
utils.check_stack_network_matches_env_files(mock_stack, env)
|
utils.check_stack_network_matches_env_files(mock_stack, env)
|
||||||
|
|
||||||
|
def test_check_ceph_fsid_matches_env_files(self):
|
||||||
|
stack_params = {
|
||||||
|
'CephClusterFSID': 'ceph_fsid_val',
|
||||||
|
'key1': 'val1',
|
||||||
|
'key2': 'val2',
|
||||||
|
}
|
||||||
|
mock_stack = mock.MagicMock()
|
||||||
|
mock_stack.environment = mock.MagicMock()
|
||||||
|
mock_stack.environment.return_value = {
|
||||||
|
'parameter_defaults': stack_params
|
||||||
|
}
|
||||||
|
provided_env = {
|
||||||
|
'parameter_defaults': {
|
||||||
|
'CephClusterFSID': mock_stack.environment()
|
||||||
|
.get('parameter_defaults', {})
|
||||||
|
.get('CephClusterFSID', False),
|
||||||
|
'key1': 'val1',
|
||||||
|
'key2': 'val2',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
utils.check_ceph_fsid_matches_env_files(mock_stack, provided_env)
|
||||||
|
|
||||||
|
def test_check_ceph_fsid_matches_env_files_fail(self):
|
||||||
|
stack_params = {
|
||||||
|
'CephClusterFSID': 'ceph_fsid_val',
|
||||||
|
'key1': 'val1',
|
||||||
|
'key2': 'val2',
|
||||||
|
}
|
||||||
|
provided_env = {
|
||||||
|
'parameter_defaults': {
|
||||||
|
'CephClusterFSID': 'new_or_wrong_fsid_val',
|
||||||
|
'key1': 'val1',
|
||||||
|
'key2': 'val2',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mock_stack = mock.MagicMock()
|
||||||
|
mock_stack.environment = mock.MagicMock()
|
||||||
|
mock_stack.environment.return_value = {
|
||||||
|
'parameter_defaults': stack_params
|
||||||
|
}
|
||||||
|
with self.assertRaises(exceptions.InvalidConfiguration):
|
||||||
|
utils.check_ceph_fsid_matches_env_files(mock_stack, provided_env)
|
||||||
|
|
||||||
@mock.patch('subprocess.check_call')
|
@mock.patch('subprocess.check_call')
|
||||||
@mock.patch('os.path.exists')
|
@mock.patch('os.path.exists')
|
||||||
def test_remove_known_hosts(self, mock_exists, mock_check_call):
|
def test_remove_known_hosts(self, mock_exists, mock_check_call):
|
||||||
|
|
|
@ -98,6 +98,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch("heatclient.common.event_utils.get_events")
|
@mock.patch("heatclient.common.event_utils.get_events")
|
||||||
@mock.patch('tripleo_common.update.add_breakpoints_cleanup_into_env',
|
@mock.patch('tripleo_common.update.add_breakpoints_cleanup_into_env',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
|
@ -112,6 +113,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_create_parameters_env,
|
mock_create_parameters_env,
|
||||||
mock_breakpoints_cleanup,
|
mock_breakpoints_cleanup,
|
||||||
mock_events, mock_stack_network_check,
|
mock_events, mock_stack_network_check,
|
||||||
|
mock_ceph_fsid,
|
||||||
mock_get_undercloud_host_entry, mock_copy):
|
mock_get_undercloud_host_entry, mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
|
@ -318,6 +320,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('shutil.rmtree', autospec=True)
|
@mock.patch('shutil.rmtree', autospec=True)
|
||||||
@mock.patch('tripleoclient.utils.get_overcloud_endpoint', autospec=True)
|
@mock.patch('tripleoclient.utils.get_overcloud_endpoint', autospec=True)
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
|
@ -343,7 +346,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_breakpoints_cleanup,
|
mock_breakpoints_cleanup,
|
||||||
mock_postconfig, mock_shutil_rmtree,
|
mock_postconfig, mock_shutil_rmtree,
|
||||||
mock_invoke_plan_env_wf,
|
mock_invoke_plan_env_wf,
|
||||||
mock_stack_network_check,
|
mock_stack_network_check, mock_ceph_fsid,
|
||||||
mock_get_undercloud_host_entry, mock_copy):
|
mock_get_undercloud_host_entry, mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
|
@ -457,6 +460,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('tripleoclient.workflows.parameters.'
|
@mock.patch('tripleoclient.workflows.parameters.'
|
||||||
'check_deprecated_parameters', autospec=True)
|
'check_deprecated_parameters', autospec=True)
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
|
@ -477,7 +481,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_create_parameters_env, mock_validate_args,
|
mock_create_parameters_env, mock_validate_args,
|
||||||
mock_breakpoints_cleanup,
|
mock_breakpoints_cleanup,
|
||||||
mock_postconfig, mock_deprecated_params, mock_stack_network_check,
|
mock_postconfig, mock_deprecated_params, mock_stack_network_check,
|
||||||
mock_get_undercloud_host_entry, mock_copy):
|
mock_ceph_fsid, mock_get_undercloud_host_entry, mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
plane_management_fixture = deployment.PlanManagementFixture()
|
plane_management_fixture = deployment.PlanManagementFixture()
|
||||||
|
@ -547,6 +551,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch("heatclient.common.event_utils.get_events", autospec=True)
|
@mock.patch("heatclient.common.event_utils.get_events", autospec=True)
|
||||||
@mock.patch('tripleo_common.update.add_breakpoints_cleanup_into_env',
|
@mock.patch('tripleo_common.update.add_breakpoints_cleanup_into_env',
|
||||||
autospec=True)
|
autospec=True)
|
||||||
|
@ -561,6 +566,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_deploy_postconfig,
|
mock_deploy_postconfig,
|
||||||
mock_breakpoints_cleanup,
|
mock_breakpoints_cleanup,
|
||||||
mock_events, mock_stack_network_check,
|
mock_events, mock_stack_network_check,
|
||||||
|
mock_ceph_fsid,
|
||||||
mock_get_undercloud_host_entry,
|
mock_get_undercloud_host_entry,
|
||||||
mock_copy):
|
mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
|
@ -633,6 +639,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
|
|
||||||
@mock.patch('tripleoclient.utils.copy_clouds_yaml')
|
@mock.patch('tripleoclient.utils.copy_clouds_yaml')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_deploy_postconfig', autospec=True)
|
'_deploy_postconfig', autospec=True)
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
|
@ -641,7 +648,8 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_heat_deploy', autospec=True)
|
'_heat_deploy', autospec=True)
|
||||||
def test_environment_dirs(self, mock_deploy_heat,
|
def test_environment_dirs(self, mock_deploy_heat,
|
||||||
mock_update_parameters, mock_post_config,
|
mock_update_parameters, mock_post_config,
|
||||||
mock_stack_network_check, mock_copy):
|
mock_stack_network_check, mock_ceph_fsid,
|
||||||
|
mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
plane_management_fixture = deployment.PlanManagementFixture()
|
plane_management_fixture = deployment.PlanManagementFixture()
|
||||||
|
@ -698,6 +706,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_copy.assert_called_once()
|
mock_copy.assert_called_once()
|
||||||
|
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('tripleoclient.utils.get_stack', autospec=True)
|
@mock.patch('tripleoclient.utils.get_stack', autospec=True)
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_deploy_postconfig', autospec=True)
|
'_deploy_postconfig', autospec=True)
|
||||||
|
@ -708,7 +717,8 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
def test_environment_dirs_env(self, mock_deploy_heat,
|
def test_environment_dirs_env(self, mock_deploy_heat,
|
||||||
mock_update_parameters, mock_post_config,
|
mock_update_parameters, mock_post_config,
|
||||||
mock_utils_get_stack,
|
mock_utils_get_stack,
|
||||||
mock_stack_network_check):
|
mock_stack_network_check,
|
||||||
|
mock_ceph_fsid):
|
||||||
|
|
||||||
plane_management_fixture = deployment.PlanManagementFixture()
|
plane_management_fixture = deployment.PlanManagementFixture()
|
||||||
self.useFixture(plane_management_fixture)
|
self.useFixture(plane_management_fixture)
|
||||||
|
@ -947,13 +957,15 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_heat_deploy', autospec=True)
|
'_heat_deploy', autospec=True)
|
||||||
@mock.patch('tempfile.mkdtemp', autospec=True)
|
@mock.patch('tempfile.mkdtemp', autospec=True)
|
||||||
@mock.patch('shutil.rmtree', autospec=True)
|
@mock.patch('shutil.rmtree', autospec=True)
|
||||||
def test_answers_file(self, mock_rmtree, mock_tmpdir,
|
def test_answers_file(self, mock_rmtree, mock_tmpdir,
|
||||||
mock_heat_deploy, mock_stack_network_check,
|
mock_heat_deploy, mock_stack_network_check,
|
||||||
mock_get_undercloud_host_entry, mock_copy):
|
mock_ceph_fsid, mock_get_undercloud_host_entry,
|
||||||
|
mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
clients = self.app.client_manager
|
clients = self.app.client_manager
|
||||||
|
@ -1034,6 +1046,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_create_parameters_env', autospec=True)
|
'_create_parameters_env', autospec=True)
|
||||||
@mock.patch('tripleoclient.utils.write_overcloudrc')
|
@mock.patch('tripleoclient.utils.write_overcloudrc')
|
||||||
|
@ -1046,6 +1059,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_write_overcloudrc,
|
mock_write_overcloudrc,
|
||||||
mock_create_parameters_env,
|
mock_create_parameters_env,
|
||||||
mock_stack_network_check,
|
mock_stack_network_check,
|
||||||
|
mock_ceph_fsid,
|
||||||
mock_get_undercloud_host_entry):
|
mock_get_undercloud_host_entry):
|
||||||
plane_management_fixture = deployment.PlanManagementFixture()
|
plane_management_fixture = deployment.PlanManagementFixture()
|
||||||
self.useFixture(plane_management_fixture)
|
self.useFixture(plane_management_fixture)
|
||||||
|
@ -1092,6 +1106,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'_get_undercloud_host_entry', autospec=True,
|
'_get_undercloud_host_entry', autospec=True,
|
||||||
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
return_value='192.168.0.1 uc.ctlplane.localhost uc.ctlplane')
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_deploy_postconfig', autospec=True)
|
'_deploy_postconfig', autospec=True)
|
||||||
@mock.patch('tripleo_common.update.add_breakpoints_cleanup_into_env')
|
@mock.patch('tripleo_common.update.add_breakpoints_cleanup_into_env')
|
||||||
|
@ -1113,6 +1128,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
mock_breakpoints_cleanup,
|
mock_breakpoints_cleanup,
|
||||||
mock_deploy_post_config,
|
mock_deploy_post_config,
|
||||||
mock_stack_network_check,
|
mock_stack_network_check,
|
||||||
|
mock_ceph_fsid,
|
||||||
mock_get_undercloud_host_entry, mock_copy):
|
mock_get_undercloud_host_entry, mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
|
@ -1477,6 +1493,7 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
@mock.patch('tripleoclient.v1.overcloud_deploy.DeployOvercloud.'
|
||||||
'_heat_deploy', autospec=True)
|
'_heat_deploy', autospec=True)
|
||||||
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
@mock.patch('tripleoclient.utils.check_stack_network_matches_env_files')
|
||||||
|
@mock.patch('tripleoclient.utils.check_ceph_fsid_matches_env_files')
|
||||||
@mock.patch('heatclient.common.template_utils.deep_update', autospec=True)
|
@mock.patch('heatclient.common.template_utils.deep_update', autospec=True)
|
||||||
@mock.patch('tripleoclient.workflows.plan_management.'
|
@mock.patch('tripleoclient.workflows.plan_management.'
|
||||||
'create_plan_from_templates', autospec=True)
|
'create_plan_from_templates', autospec=True)
|
||||||
|
@ -1484,8 +1501,9 @@ class TestDeployOvercloud(fakes.TestDeployOvercloud):
|
||||||
'list_deployment_plans', autospec=True)
|
'list_deployment_plans', autospec=True)
|
||||||
def test_config_download_timeout(
|
def test_config_download_timeout(
|
||||||
self, mock_plan_list, mock_plan_create, mock_hc,
|
self, mock_plan_list, mock_plan_create, mock_hc,
|
||||||
mock_stack_network_check, mock_hd, mock_overcloudrc,
|
mock_stack_network_check, mock_ceph_fsid, mock_hd,
|
||||||
mock_get_undercloud_host_entry, mock_copy):
|
mock_overcloudrc, mock_get_undercloud_host_entry,
|
||||||
|
mock_copy):
|
||||||
fixture = deployment.DeploymentWorkflowFixture()
|
fixture = deployment.DeploymentWorkflowFixture()
|
||||||
self.useFixture(fixture)
|
self.useFixture(fixture)
|
||||||
utils_fixture = deployment.UtilsOvercloudFixture()
|
utils_fixture = deployment.UtilsOvercloudFixture()
|
||||||
|
|
|
@ -733,6 +733,33 @@ def get_stack(orchestration_client, stack_name):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def check_ceph_fsid_matches_env_files(stack, environment):
|
||||||
|
"""Check CephClusterFSID against proposed env files
|
||||||
|
|
||||||
|
There have been cases where operators inadvertenly changed the
|
||||||
|
CephClusterFSID on a stack update, which is unsupported by both
|
||||||
|
Ceph and openstack.
|
||||||
|
For this reason we need to check that the existing deployed Ceph
|
||||||
|
cluster ID present in the stack is consistent with the value of
|
||||||
|
the environment, raising an exception if they are different.
|
||||||
|
"""
|
||||||
|
env_ceph_fsid = environment.get('parameter_defaults',
|
||||||
|
{}).get('CephClusterFSID', False)
|
||||||
|
stack_ceph_fsid = stack.environment().get('parameter_defaults',
|
||||||
|
{}).get('CephClusterFSID', False)
|
||||||
|
|
||||||
|
if bool(env_ceph_fsid) and env_ceph_fsid != stack_ceph_fsid:
|
||||||
|
raise exceptions.InvalidConfiguration('The CephFSID environment value '
|
||||||
|
' ({}) does not match the stack '
|
||||||
|
' configuration value ({}).'
|
||||||
|
' Ensure the CephClusterFSID '
|
||||||
|
' param is properly configured '
|
||||||
|
' in the storage environment '
|
||||||
|
' files.'
|
||||||
|
.format(env_ceph_fsid,
|
||||||
|
stack_ceph_fsid))
|
||||||
|
|
||||||
|
|
||||||
def check_stack_network_matches_env_files(stack, environment):
|
def check_stack_network_matches_env_files(stack, environment):
|
||||||
"""Check stack against proposed env files to ensure non-breaking change
|
"""Check stack against proposed env files to ensure non-breaking change
|
||||||
|
|
||||||
|
|
|
@ -470,6 +470,16 @@ class DeployOvercloud(command.Command):
|
||||||
if not parsed_args.disable_validations:
|
if not parsed_args.disable_validations:
|
||||||
# note(aschultz): network validation goes here before we deploy
|
# note(aschultz): network validation goes here before we deploy
|
||||||
utils.check_stack_network_matches_env_files(stack, env)
|
utils.check_stack_network_matches_env_files(stack, env)
|
||||||
|
ceph_deployed = env.get('resource_registry', {}).get(
|
||||||
|
'OS::TripleO::Services::CephMon', 'OS::Heat::None')
|
||||||
|
ceph_external = env.get('resource_registry', {}).get(
|
||||||
|
'OS::TripleO::Services::CephExternal', 'OS::Heat::None')
|
||||||
|
# note (fpantano) if ceph is not TripleO deployed and no
|
||||||
|
# external ceph cluster are present, there's no reason to
|
||||||
|
# make this check and we can simply ignore it
|
||||||
|
if (ceph_deployed != "OS::Heat::None"
|
||||||
|
or ceph_external != "OS::Heat::None"):
|
||||||
|
utils.check_ceph_fsid_matches_env_files(stack, env)
|
||||||
bp_cleanup = self._create_breakpoint_cleanup_env(
|
bp_cleanup = self._create_breakpoint_cleanup_env(
|
||||||
tht_root, parsed_args.stack)
|
tht_root, parsed_args.stack)
|
||||||
template_utils.deep_update(env, bp_cleanup)
|
template_utils.deep_update(env, bp_cleanup)
|
||||||
|
|
Loading…
Reference in New Issue