From c6c4053d957da366405546f1651af9e75fa754a7 Mon Sep 17 00:00:00 2001 From: Hongbin Lu Date: Wed, 2 Sep 2015 18:07:50 -0400 Subject: [PATCH] Fix the hard-coded etcd cluster size In before, the etcd cluster size was hard-coded to 1, since HA mode hadn't been implemented at that time. Now, we fix it. The etcd cluster size is set to the number of master nodes. Change-Id: I198ca604401bc805f31e8187f5245177761edf56 Closes-Bug: #1491602 --- magnum/conductor/template_definition.py | 4 +--- .../conductor/test_template_definition.py | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/magnum/conductor/template_definition.py b/magnum/conductor/template_definition.py index c0750f8fac..9fc8720da1 100644 --- a/magnum/conductor/template_definition.py +++ b/magnum/conductor/template_definition.py @@ -376,11 +376,9 @@ class AtomicK8sTemplateDefinition(BaseTemplateDefinition): if hasattr(bay, 'discovery_url') and bay.discovery_url: discovery_url = bay.discovery_url else: - # TODO(hongbin): Eliminate hard coding of the size when multiple - # masters is supported. discovery_endpoint = ( cfg.CONF.bay.etcd_discovery_service_endpoint_format % - {'size': 1}) + {'size': bay.master_count}) discovery_url = requests.get(discovery_endpoint).text bay.discovery_url = discovery_url diff --git a/magnum/tests/unit/conductor/test_template_definition.py b/magnum/tests/unit/conductor/test_template_definition.py index 57ff749cf1..e104033334 100644 --- a/magnum/tests/unit/conductor/test_template_definition.py +++ b/magnum/tests/unit/conductor/test_template_definition.py @@ -166,6 +166,26 @@ class AtomicK8sTemplateDefinitionTestCase(base.TestCase): mock_get_params.assert_called_once_with(mock_context, mock_baymodel, mock_bay, **expected_kwargs) + @mock.patch('requests.get') + def test_k8s_get_discovery_url(self, mock_get): + cfg.CONF.set_override('etcd_discovery_service_endpoint_format', + 'http://etcd/test?size=%(size)d', + group='bay') + expected_discovery_url = 'http://etcd/token' + mock_resp = mock.MagicMock() + mock_resp.text = expected_discovery_url + mock_get.return_value = mock_resp + mock_bay = mock.MagicMock() + mock_bay.master_count = 10 + mock_bay.discovery_url = None + + k8s_def = tdef.AtomicK8sTemplateDefinition() + discovery_url = k8s_def.get_discovery_url(mock_bay) + + mock_get.assert_called_once_with('http://etcd/test?size=10') + self.assertEqual(mock_bay.discovery_url, expected_discovery_url) + self.assertEqual(discovery_url, expected_discovery_url) + class AtomicSwarmTemplateDefinitionTestCase(base.TestCase):