Merge "Stop deploying Ceph during the overcloud deployment"
This commit is contained in:
commit
890e2ffe1d
|
@ -792,6 +792,59 @@ class TestWaitForStackUtil(TestCase):
|
|||
utils.check_ceph_ansible(res_reg.get('resource_registry', {}),
|
||||
'DeployOvercloud')
|
||||
|
||||
def test_check_deployed_ceph_stage(self):
|
||||
|
||||
env = {
|
||||
'resource_registry': {
|
||||
'OS::Tripleo::Services::CephMon': '/path/cephadm/ceph-mon.yml',
|
||||
'OS::TripleO::Services::CephMgr': '/path/cephadm/ceph-mgr.yml',
|
||||
'OS::TripleO::Services::CephMon': '/path/cephadm/ceph-mon.yml',
|
||||
'OS::TripleO::Services::CephOSD': '/path/cephadm/ceph-osd.yml',
|
||||
'OS::TripleO::Services::CephMds': '/path/cephadm/ceph-mds.yml',
|
||||
'OS::TripleO::Services::CephNfs': '/path/cephadm/ceph-nfs.yml',
|
||||
'OS::TripleO::Services::CephRgw': '/path/cephadm/ceph-rgw.yml',
|
||||
},
|
||||
'parameter_defaults': {
|
||||
'DeployedCeph': True
|
||||
}
|
||||
}
|
||||
|
||||
utils.check_deployed_ceph_stage(env)
|
||||
|
||||
def test_check_deployed_ceph_stage_fail(self):
|
||||
|
||||
env = {
|
||||
'resource_registry': {
|
||||
'OS::Tripleo::Services::CephMon': '/path/cephadm/ceph-mon.yml',
|
||||
'OS::TripleO::Services::CephMgr': '/path/cephadm/ceph-mgr.yml',
|
||||
'OS::TripleO::Services::CephMon': '/path/cephadm/ceph-mon.yml',
|
||||
'OS::TripleO::Services::CephOSD': '/path/cephadm/ceph-osd.yml',
|
||||
'OS::TripleO::Services::CephMds': '/path/cephadm/ceph-mds.yml',
|
||||
'OS::TripleO::Services::CephNfs': '/path/cephadm/ceph-nfs.yml',
|
||||
'OS::TripleO::Services::CephRgw': '/path/cephadm/ceph-rgw.yml',
|
||||
},
|
||||
'parameter_defaults': {
|
||||
'DeployedCeph': False
|
||||
}
|
||||
}
|
||||
|
||||
with self.assertRaises(exceptions.InvalidConfiguration):
|
||||
utils.check_deployed_ceph_stage(env)
|
||||
|
||||
def test_check_deployed_ceph_stage_external(self):
|
||||
|
||||
env = {
|
||||
'resource_registry': {
|
||||
'OS::Tripleo::Services::CephExternal': '/path/cephadm/ceph-client.yml', # noqa E501
|
||||
},
|
||||
'parameter_defaults': {
|
||||
'DeployedCeph': False
|
||||
}
|
||||
}
|
||||
|
||||
with self.assertRaises(exceptions.InvalidConfiguration):
|
||||
utils.check_deployed_ceph_stage(env)
|
||||
|
||||
def test_check_swift_and_rgw(self):
|
||||
stack_reg = {
|
||||
'OS::TripleO::Services::SwiftProxy': 'OS::Heat::None',
|
||||
|
|
|
@ -1077,6 +1077,51 @@ def check_ceph_ansible(resource_registry, stage):
|
|||
'file.')
|
||||
|
||||
|
||||
def check_deployed_ceph_stage(environment):
|
||||
"""Raises an exception if Ceph is being deployed without DeployedCeph:True.
|
||||
|
||||
If Ceph is not being deployed or DeployedCeph is true, then return
|
||||
nothing, so the program that calls this function can continue without
|
||||
error. This function also looks for the external Ceph Heat resource to
|
||||
make sure in this scenario an error is not raised regardless of the
|
||||
DeployedCeph boolean value.
|
||||
"""
|
||||
|
||||
resource_registry = environment.get('resource_registry', {})
|
||||
|
||||
if not resource_registry:
|
||||
return
|
||||
|
||||
ceph_external = environment.get('resource_registry', {}).get(
|
||||
'OS::TripleO::Services::CephExternal', 'OS::Heat::None')
|
||||
|
||||
if ceph_external != "OS::Heat::None":
|
||||
return
|
||||
|
||||
# it's not an external Ceph cluster, let's evaluate the DeployedCeph param
|
||||
# and the Ceph resources provided
|
||||
deployed_ceph = environment.get('parameter_defaults',
|
||||
{}).get('DeployedCeph', False)
|
||||
|
||||
# for each ceph resource, if the path contains cephadm and the DeployedCeph
|
||||
# boolean is not True, raise an exception and guide the operator through
|
||||
# the right path of deploying ceph
|
||||
|
||||
for name, path in resource_registry.items():
|
||||
if 'Ceph' in name and 'cephadm' in path and not deployed_ceph:
|
||||
raise exceptions.InvalidConfiguration('Ceph deployment is not '
|
||||
'available anymore during '
|
||||
'overcloud deploy. If you '
|
||||
'want to deploy Ceph, '
|
||||
'please see "openstack '
|
||||
' overcloud ceph deploy '
|
||||
'--help" to deploy ceph '
|
||||
' before deploying the '
|
||||
'overcloud and then include '
|
||||
'the cephadm environment '
|
||||
'file.')
|
||||
|
||||
|
||||
def check_ceph_fsid_matches_env_files(old_env, environment):
|
||||
"""Check CephClusterFSID against proposed env files
|
||||
|
||||
|
|
|
@ -355,6 +355,9 @@ class DeployOvercloud(command.Command):
|
|||
# warning if necessary
|
||||
self._check_limit_skiplist_warning(env)
|
||||
|
||||
# check if we're trying to deploy ceph during the overcloud deployment
|
||||
utils.check_deployed_ceph_stage(env)
|
||||
|
||||
old_stack_env = utils.get_saved_stack_env(
|
||||
self.working_dir, parsed_args.stack)
|
||||
if old_stack_env:
|
||||
|
|
|
@ -758,6 +758,9 @@ class Deploy(command.Command):
|
|||
environments, self.tht_render, parsed_args.templates,
|
||||
cleanup=parsed_args.cleanup)
|
||||
|
||||
# check if we're trying to deploy ceph during the overcloud deployment
|
||||
utils.check_deployed_ceph_stage(env)
|
||||
|
||||
roles_data = utils.fetch_roles_file(
|
||||
roles_file_path, parsed_args.templates)
|
||||
|
||||
|
|
Loading…
Reference in New Issue