Merge "Conductor: Remove _update_stack_outputs from bay_conductor"

This commit is contained in:
Jenkins 2015-09-08 14:40:04 +00:00 committed by Gerrit Code Review
commit 25ae7c7044
3 changed files with 34 additions and 47 deletions

View File

@ -107,15 +107,6 @@ def _update_stack(context, osc, bay, scale_manager=None):
return osc.heat().stacks.update(bay.stack_id, **fields)
def _update_stack_outputs(context, stack, bay):
baymodel = conductor_utils.retrieve_baymodel(context, bay)
cluster_distro = baymodel.cluster_distro
cluster_coe = baymodel.coe
definition = TDef.get_template_definition('vm', cluster_distro,
cluster_coe)
return definition.update_outputs(stack, bay)
class Handler(object):
_update_allowed_properties = set(['node_count'])
@ -242,7 +233,7 @@ class HeatPoller(object):
raise loopingcall.LoopingCallDone()
if (stack.stack_status in [bay_status.CREATE_COMPLETE,
bay_status.UPDATE_COMPLETE]):
_update_stack_outputs(self.context, stack, self.bay)
self.template_def.update_outputs(stack, self.bay)
self.bay.status = stack.stack_status
self.bay.status_reason = stack.stack_status_reason

View File

@ -351,35 +351,6 @@ class TestBayConductorWithK8s(base.TestCase):
self.assertEqual(expected, definition)
reqget.assert_called_once_with('http://etcd/test?size=1')
@patch('magnum.objects.BayModel.get_by_uuid')
def test_update_stack_outputs(self, mock_objects_baymodel_get_by_uuid):
baymodel_dict = self.baymodel_dict
baymodel_dict['cluster_distro'] = 'coreos'
baymodel = objects.BayModel(self.context, **baymodel_dict)
mock_objects_baymodel_get_by_uuid.return_value = baymodel
expected_api_address = 'api_address'
expected_node_addresses = ['ex_minion', 'address']
outputs = [
{"output_value": expected_node_addresses,
"description": "No description given",
"output_key": "kube_minions_external"},
{"output_value": expected_api_address,
"description": "No description given",
"output_key": "api_address"},
{"output_value": ['any', 'output'],
"description": "No description given",
"output_key": "kube_minions"}
]
mock_stack = mock.MagicMock()
mock_stack.outputs = outputs
mock_bay = mock.MagicMock()
bay_conductor._update_stack_outputs(self.context, mock_stack, mock_bay)
self.assertEqual(mock_bay.api_address, expected_api_address)
self.assertEqual(mock_bay.node_addresses, expected_node_addresses)
@patch('magnum.common.short_id.generate_id')
@patch('heatclient.common.template_utils.get_template_contents')
@patch('magnum.conductor.handlers.bay_conductor'
@ -585,8 +556,7 @@ class TestBayConductorWithK8s(base.TestCase):
self.assertRaises(loopingcall.LoopingCallDone, poller.poll_and_check)
self.assertEqual(poller.attempts, 2)
@patch('magnum.conductor.handlers.bay_conductor._update_stack_outputs')
def test_poll_done_by_update(self, mock_update_stack_outputs):
def test_poll_done_by_update(self):
mock_heat_stack, bay, poller = self.setup_poll_test()
mock_heat_stack.stack_status = bay_status.UPDATE_COMPLETE
@ -704,8 +674,7 @@ class TestBayConductorWithK8s(base.TestCase):
self.assertEqual(bay.node_count, 1)
@patch('magnum.conductor.handlers.bay_conductor._update_stack_outputs')
def test_poll_node_count_by_update(self, mock_update_stack_outputs):
def test_poll_node_count_by_update(self):
mock_heat_stack, bay, poller = self.setup_poll_test()
mock_heat_stack.parameters = {'number_of_minions': 2}
@ -933,8 +902,7 @@ class TestBayConductorWithSwarm(base.TestCase):
self.assertEqual(bay.node_count, 1)
@patch('magnum.conductor.handlers.bay_conductor._update_stack_outputs')
def test_poll_node_count_by_update(self, mock_update_stack_outputs):
def test_poll_node_count_by_update(self):
mock_heat_stack, bay, poller = self.setup_poll_test()
mock_heat_stack.parameters = {'number_of_nodes': 2}
@ -1049,8 +1017,7 @@ class TestBayConductorWithMesos(base.TestCase):
self.assertEqual(bay.node_count, 1)
@patch('magnum.conductor.handlers.bay_conductor._update_stack_outputs')
def test_poll_node_count_by_update(self, mock_update_stack_outputs):
def test_poll_node_count_by_update(self):
mock_heat_stack, bay, poller = self.setup_poll_test()
mock_heat_stack.parameters = {'number_of_slaves': 2}

View File

@ -136,6 +136,35 @@ class TemplateDefinitionTestCase(base.TestCase):
value = output.get_output_value(mock_stack)
self.assertIsNone(value)
def test_update_outputs(self):
definition = tdef.TemplateDefinition.get_template_definition(
'vm',
'fedora-atomic',
'kubernetes')
expected_api_address = 'api_address'
expected_node_addresses = ['ex_minion', 'address']
outputs = [
{"output_value": expected_node_addresses,
"description": "No description given",
"output_key": "kube_minions_external"},
{"output_value": expected_api_address,
"description": "No description given",
"output_key": "api_address"},
{"output_value": ['any', 'output'],
"description": "No description given",
"output_key": "kube_minions"}
]
mock_stack = mock.MagicMock()
mock_stack.outputs = outputs
mock_bay = mock.MagicMock()
definition.update_outputs(mock_stack, mock_bay)
self.assertEqual(mock_bay.api_address, expected_api_address)
self.assertEqual(mock_bay.node_addresses, expected_node_addresses)
class AtomicK8sTemplateDefinitionTestCase(base.TestCase):