Modify mesos template to support removal policy
Add a parameter 'slaves_to_remove' that lists resources to be removed on stack update. The value will be passed to removal_policies of the 'mesos_slaves' resource group. Change-Id: I18fcd0be962dd7414329dcfcad8bb4c79958ee9a Partially-Implements: blueprint mesos-smart-bay-scale-down
This commit is contained in:
parent
8dee0e804d
commit
b456cf7a91
|
@ -697,6 +697,12 @@ class UbuntuMesosTemplateDefinition(BaseTemplateDefinition):
|
|||
for label in label_list:
|
||||
extra_params[label] = baymodel.labels.get(label)
|
||||
|
||||
scale_mgr = kwargs.pop('scale_manager', None)
|
||||
if scale_mgr:
|
||||
hosts = self.get_output('mesos_slaves_private')
|
||||
extra_params['slaves_to_remove'] = (
|
||||
scale_mgr.get_removal_nodes(hosts))
|
||||
|
||||
return super(UbuntuMesosTemplateDefinition,
|
||||
self).get_params(context, baymodel, bay,
|
||||
extra_params=extra_params,
|
||||
|
|
|
@ -188,6 +188,15 @@ parameters:
|
|||
executor will inherit the agent's environment variables.
|
||||
default: ""
|
||||
|
||||
slaves_to_remove:
|
||||
type: comma_delimited_list
|
||||
description: >
|
||||
List of slaves to be removed when doing an update. Individual slave may
|
||||
be referenced several ways: (1) The resource name (e.g.['1', '3']),
|
||||
(2) The private IP address ['10.0.0.4', '10.0.0.6']. Note: the list should
|
||||
be empty when doing a create.
|
||||
default: []
|
||||
|
||||
resources:
|
||||
|
||||
######################################################################
|
||||
|
@ -399,6 +408,7 @@ resources:
|
|||
- extrouter_inside
|
||||
properties:
|
||||
count: {get_param: number_of_slaves}
|
||||
removal_policies: [{resource_list: {get_param: slaves_to_remove}}]
|
||||
resource_def:
|
||||
type: mesosslave.yaml
|
||||
properties:
|
||||
|
|
|
@ -584,9 +584,14 @@ class UbuntuMesosTemplateDefinitionTestCase(base.TestCase):
|
|||
mock_osc.cinder_region_name.return_value = 'RegionOne'
|
||||
mock_osc_class.return_value = mock_osc
|
||||
|
||||
removal_nodes = ['node1', 'node2']
|
||||
mock_scale_manager = mock.MagicMock()
|
||||
mock_scale_manager.get_removal_nodes.return_value = removal_nodes
|
||||
|
||||
mesos_def = tdef.UbuntuMesosTemplateDefinition()
|
||||
|
||||
mesos_def.get_params(mock_context, mock_baymodel, mock_bay)
|
||||
mesos_def.get_params(mock_context, mock_baymodel, mock_bay,
|
||||
scale_manager=mock_scale_manager)
|
||||
|
||||
expected_kwargs = {'extra_params': {
|
||||
'region_name': mock_osc.cinder_region_name.return_value,
|
||||
|
@ -599,7 +604,8 @@ class UbuntuMesosTemplateDefinitionTestCase(base.TestCase):
|
|||
'mesos_slave_work_dir': mesos_slave_work_dir,
|
||||
'mesos_slave_executor_env_variables':
|
||||
mesos_slave_executor_env_variables,
|
||||
'mesos_slave_image_providers': mesos_slave_image_providers}}
|
||||
'mesos_slave_image_providers': mesos_slave_image_providers,
|
||||
'slaves_to_remove': removal_nodes}}
|
||||
mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
|
||||
mock_bay, **expected_kwargs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue