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):