Adding cluster_domain config option

This option will be used in `address` function and will be
added to internal urls, so that default address will be
changed: service.ccp -> service.ccp.cluster.local

Change-Id: Iaa7e1172120506e284a0ae7b3c4539af411c8535
This commit is contained in:
Andrey Pavlov 2016-11-22 20:30:31 +03:00
parent 2ffb9d57d0
commit 3f797388bf
6 changed files with 24 additions and 14 deletions

View File

@ -65,7 +65,8 @@ def address(service, port=None, external=False, with_scheme=False):
addr = '%s:%s' % (CONF.configs.k8s_external_ip, port['node'])
if addr is None:
addr = '%s.%s' % (service, CONF.kubernetes.namespace)
addr = '.'.join((service, CONF.kubernetes.namespace, 'svc',
CONF.kubernetes.cluster_domain))
if port:
addr = '%s:%s' % (addr, port['cont'])

View File

@ -131,6 +131,8 @@ def load_component_defaults():
global _REAL_CONF
new_config['configs']['namespace'] = _REAL_CONF.kubernetes.namespace
new_config['configs'][
'cluster_domain'] = _REAL_CONF.kubernetes.cluster_domain
new_config._merge(_REAL_CONF)
_REAL_CONF = new_config

View File

@ -6,6 +6,7 @@ DEFAULTS = {
'key_file': None,
'cert_file': None,
'insecure': None,
'cluster_domain': 'cluster.local',
},
}
@ -20,6 +21,7 @@ SCHEMA = {
'key_file': {'anyOf': [{'type': 'string'}, {'type': 'null'}]},
'cert_file': {'anyOf': [{'type': 'string'}, {'type': 'null'}]},
'insecure': {'anyOf': [{'type': 'string'}, {'type': 'null'}]},
'cluster_domain': {'type': 'string'},
},
},
}

View File

@ -18,7 +18,8 @@ class TestJinjaUtils(base.TestCase):
content = jinja_utils.jinja_render(self.filename, context,
functions=[utils.address])
self.assertEqual(
"debian\njessie\nsome maintainer\nneedle\nneedle\nkeystone.ccp",
"debian\njessie\nsome maintainer\nneedle\nneedle\n"
"keystone.ccp.svc.cluster.local",
content)
context = {
@ -38,7 +39,8 @@ class TestJinjaUtils(base.TestCase):
self.filename, context, functions=[utils.address],
ignore_undefined=True)
self.assertEqual(
"debian\njessie\nsome maintainer\nneedle\nneedle\nkeystone.ccp",
"debian\njessie\nsome maintainer\nneedle\nneedle\n"
"keystone.ccp.svc.cluster.local",
content)
context = {
@ -48,4 +50,4 @@ class TestJinjaUtils(base.TestCase):
self.filename, context, functions=[utils.address],
ignore_undefined=True)
self.assertEqual(
"debian\n\n\n\n\nkeystone.ccp", content)
"debian\n\n\n\n\nkeystone.ccp.svc.cluster.local", content)

View File

@ -126,15 +126,17 @@ class TestUtils(base.TestCase):
class TestAddress(testscenarios.WithScenarios, base.TestCase):
scenarios = (
('internal_without_port', {'address': 'service.ccp'}),
('internal_with_port', {'address': 'service.ccp:1234',
'port': {'cont': 1234}}),
('internal_without_port',
{'address': 'service.ccp.svc.cluster.local'}),
('internal_with_port',
{'address': 'service.ccp.svc.cluster.local:1234',
'port': {'cont': 1234}}),
('external_with_nodeport',
{'address': '1.1.1.1:30000', 'external': True, 'ingress': False,
'port': {'cont': 1234, 'ingress': 'test', 'node': 30000}}),
('external_without_ingress_and_nodeport',
{'address': 'service.ccp:1234', 'external': True, 'ingress': False,
'port': {'cont': 1234, 'ingress': 'test'}}),
{'address': 'service.ccp.svc.cluster.local:1234', 'external': True,
'ingress': False, 'port': {'cont': 1234, 'ingress': 'test'}}),
('external_with_ingress_enabled',
{'address': 'test.ccp.external:8443', 'external': True,
'ingress': True, 'port': {'cont': 1234, 'ingress': 'test'}}),
@ -142,10 +144,11 @@ class TestAddress(testscenarios.WithScenarios, base.TestCase):
{'address': '1.1.1.1:30000', 'external': True, 'ingress': True,
'port': {'cont': 1234, 'node': 30000}}),
('external_with_ingress_and_nodeport_not_provided',
{'address': 'service.ccp:1234', 'external': True, 'ingress': True,
'port': {'cont': 1234}}),
('internal_with_scheme', {'address': 'http://service.ccp',
'with_scheme': True}),
{'address': 'service.ccp.svc.cluster.local:1234', 'external': True,
'ingress': True, 'port': {'cont': 1234}}),
('internal_with_scheme',
{'address': 'http://service.ccp.svc.cluster.local',
'with_scheme': True}),
('external_with_ingress_with_scheme',
{'address': 'https://test.ccp.external:8443', 'external': True,
'ingress': True, 'port': {'cont': 1234, 'ingress': 'test'},

View File

@ -117,7 +117,7 @@ class TestDeploy(base.TestCase):
"export OS_USERNAME=%s" % config['openstack']['user_name'],
"export OS_PASSWORD=%s" % config['openstack']['user_password'],
"export OS_IDENTITY_API_VERSION=3",
"export OS_AUTH_URL=http://keystone.ccp:%s/v3" %
"export OS_AUTH_URL=http://keystone.ccp.svc.cluster.local:%s/v3" %
config['keystone']['public_port']['cont'],
]