Make placement a required interface as of train
Make placement a required interface for train and above as placement is required in order to schedule instances. Change-Id: If2472ec24df4c3d90b14189f8c4d3cceee5edc97 Closes-Bug: #1849893
This commit is contained in:
parent
d565a0204b
commit
45988df1ed
|
@ -115,6 +115,18 @@ class CloudComputeContext(ch_context.OSContextGenerator):
|
|||
return ctxt
|
||||
|
||||
|
||||
class PlacementContext(ch_context.OSContextGenerator):
|
||||
"Dummy context used by service status to check relation exists"
|
||||
interfaces = ['placement']
|
||||
|
||||
def __call__(self):
|
||||
ctxt = {}
|
||||
rids = [rid for rid in hookenv.relation_ids('placement')]
|
||||
if rids:
|
||||
ctxt['rids'] = rids
|
||||
return ctxt
|
||||
|
||||
|
||||
class NeutronAPIContext(ch_context.OSContextGenerator):
|
||||
interfaces = ['neutron-api']
|
||||
|
||||
|
|
|
@ -53,6 +53,10 @@ REQUIRED_INTERFACES = {
|
|||
'compute': ['nova-compute', 'nova-cell-api'],
|
||||
}
|
||||
|
||||
REQUIRED_INTERFACES_TRAIN = {
|
||||
'placement': ['placement'],
|
||||
}
|
||||
|
||||
# removed from original: charm-helper-sh
|
||||
BASE_PACKAGES = [
|
||||
'apache2',
|
||||
|
@ -180,6 +184,7 @@ def get_base_resource_map():
|
|||
nova_cc_context.InstanceConsoleContext(),
|
||||
nova_cc_context.ConsoleSSLContext(),
|
||||
nova_cc_context.CloudComputeContext(),
|
||||
nova_cc_context.PlacementContext(),
|
||||
ch_context.InternalEndpointContext(),
|
||||
ch_context.VolumeAPIContext('nova-common'),
|
||||
nova_cc_context.NeutronAPIContext(),
|
||||
|
@ -1731,7 +1736,11 @@ def assess_status_func(configs):
|
|||
@param configs: a templating.OSConfigRenderer() object
|
||||
@return f() -> None : a function that assesses the unit's workload status
|
||||
"""
|
||||
release = ch_utils.os_release('nova-common')
|
||||
cmp_os_release = ch_utils.CompareOpenStackReleases(release)
|
||||
required_interfaces = REQUIRED_INTERFACES.copy()
|
||||
if cmp_os_release >= 'train':
|
||||
required_interfaces.update(REQUIRED_INTERFACES_TRAIN)
|
||||
required_interfaces.update(get_optional_interfaces())
|
||||
return ch_utils.make_assess_status_func(
|
||||
configs, required_interfaces,
|
||||
|
|
|
@ -1260,13 +1260,16 @@ class NovaCCUtilsTests(CharmTestCase):
|
|||
@patch.object(utils, 'services')
|
||||
@patch.object(utils, 'determine_ports')
|
||||
@patch.object(utils.ch_utils, 'make_assess_status_func')
|
||||
@patch.object(utils.ch_utils, 'CompareOpenStackReleases')
|
||||
def test_assess_status_func(self,
|
||||
compare_releases,
|
||||
make_assess_status_func,
|
||||
determine_ports,
|
||||
services,
|
||||
REQUIRED_INTERFACES,
|
||||
check_optional_relations,
|
||||
get_optional_interfaces):
|
||||
compare_releases.return_value = 'stein'
|
||||
services.return_value = 's1'
|
||||
REQUIRED_INTERFACES.copy.return_value = {'int': ['test 1']}
|
||||
get_optional_interfaces.return_value = {'opt': ['test 2']}
|
||||
|
@ -1279,6 +1282,15 @@ class NovaCCUtilsTests(CharmTestCase):
|
|||
charm_func=check_optional_relations, services='s1',
|
||||
ports=None)
|
||||
|
||||
make_assess_status_func.reset_mock()
|
||||
compare_releases.return_value = 'train'
|
||||
utils.assess_status_func('test-config')
|
||||
make_assess_status_func.assert_called_once_with(
|
||||
'test-config',
|
||||
{'int': ['test 1'], 'placement': ['placement'], 'opt': ['test 2']},
|
||||
charm_func=check_optional_relations, services='s1',
|
||||
ports=None)
|
||||
|
||||
def test_pause_unit_helper(self):
|
||||
with patch.object(utils, '_pause_resume_helper') as prh:
|
||||
utils.pause_unit_helper('random-config')
|
||||
|
|
Loading…
Reference in New Issue