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', {}),
|
utils.check_ceph_ansible(res_reg.get('resource_registry', {}),
|
||||||
'DeployOvercloud')
|
'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):
|
def test_check_swift_and_rgw(self):
|
||||||
stack_reg = {
|
stack_reg = {
|
||||||
'OS::TripleO::Services::SwiftProxy': 'OS::Heat::None',
|
'OS::TripleO::Services::SwiftProxy': 'OS::Heat::None',
|
||||||
|
@ -1077,6 +1077,51 @@ def check_ceph_ansible(resource_registry, stage):
|
|||||||
'file.')
|
'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):
|
def check_ceph_fsid_matches_env_files(old_env, environment):
|
||||||
"""Check CephClusterFSID against proposed env files
|
"""Check CephClusterFSID against proposed env files
|
||||||
|
|
||||||
|
@ -355,6 +355,9 @@ class DeployOvercloud(command.Command):
|
|||||||
# warning if necessary
|
# warning if necessary
|
||||||
self._check_limit_skiplist_warning(env)
|
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(
|
old_stack_env = utils.get_saved_stack_env(
|
||||||
self.working_dir, parsed_args.stack)
|
self.working_dir, parsed_args.stack)
|
||||||
if old_stack_env:
|
if old_stack_env:
|
||||||
|
@ -758,6 +758,9 @@ class Deploy(command.Command):
|
|||||||
environments, self.tht_render, parsed_args.templates,
|
environments, self.tht_render, parsed_args.templates,
|
||||||
cleanup=parsed_args.cleanup)
|
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_data = utils.fetch_roles_file(
|
||||||
roles_file_path, parsed_args.templates)
|
roles_file_path, parsed_args.templates)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user