diff --git a/fuel_ccp/cleanup.py b/fuel_ccp/cleanup.py index c456fb33..b730a788 100644 --- a/fuel_ccp/cleanup.py +++ b/fuel_ccp/cleanup.py @@ -118,8 +118,8 @@ def _cleanup_openstack_environment(configs, auth_url=None): 'Run with --skip-os-cleanup flag if OpenStack ' 'is not deployed') - configs['auth_url'] = auth_url or 'http://%s/v3' % utils.address( - 'keystone', configs['keystone']['public_port'], True) + configs['auth_url'] = auth_url or '%s/v3' % utils.address( + 'keystone', configs['keystone']['public_port'], True, True) session = _get_session( configs['auth_url'], configs['openstack']['user_name'], diff --git a/fuel_ccp/common/utils.py b/fuel_ccp/common/utils.py index 5316da24..ff6ca108 100644 --- a/fuel_ccp/common/utils.py +++ b/fuel_ccp/common/utils.py @@ -39,13 +39,16 @@ def get_config_paths(): return paths -def address(service, port=None, external=False): +def address(service, port=None, external=False, with_scheme=False): addr = None + scheme = 'http' if external: if not port: raise RuntimeError('Port config is required for external address') if CONF.configs.ingress.enabled and port.get('ingress'): - addr = get_ingress_host(port['ingress']) + scheme = 'https' + addr = "%s:%s" % (get_ingress_host(port['ingress']), + CONF.configs.ingress.port) elif port.get('node'): addr = '%s:%s' % (CONF.configs.k8s_external_ip, port['node']) @@ -54,6 +57,9 @@ def address(service, port=None, external=False): if port: addr = '%s:%s' % (addr, port['cont']) + if with_scheme: + addr = "%s://%s" % (scheme, addr) + return addr diff --git a/fuel_ccp/deploy.py b/fuel_ccp/deploy.py index 95a7dc3d..14c81def 100644 --- a/fuel_ccp/deploy.py +++ b/fuel_ccp/deploy.py @@ -399,8 +399,9 @@ def _create_openrc(config): "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://%s/v3" % - utils.address('keystone', config['keystone']['public_port'], True) + "export OS_AUTH_URL=%s/v3" % + utils.address('keystone', config['keystone']['public_port'], True, + True) ] with open('openrc-%s' % config['namespace'], 'w') as openrc_file: openrc_file.write("\n".join(openrc)) diff --git a/fuel_ccp/resources/defaults.yaml b/fuel_ccp/resources/defaults.yaml index 64ca7551..1edc7f47 100644 --- a/fuel_ccp/resources/defaults.yaml +++ b/fuel_ccp/resources/defaults.yaml @@ -6,3 +6,4 @@ configs: ingress: enabled: False domain: external + port: 8443 diff --git a/fuel_ccp/tests/common/test_utils.py b/fuel_ccp/tests/common/test_utils.py index 3544f14a..e02ce3d9 100644 --- a/fuel_ccp/tests/common/test_utils.py +++ b/fuel_ccp/tests/common/test_utils.py @@ -136,23 +136,31 @@ class TestAddress(testscenarios.WithScenarios, base.TestCase): {'address': 'service.ccp:1234', 'external': True, 'ingress': False, 'port': {'cont': 1234, 'ingress': 'test'}}), ('external_with_ingress_enabled', - {'address': 'test.ccp.external', 'external': True, 'ingress': True, - 'port': {'cont': 1234, 'ingress': 'test'}}), + {'address': 'test.ccp.external:8443', 'external': True, + 'ingress': True, 'port': {'cont': 1234, 'ingress': 'test'}}), ('external_with_ingress_not_provided', {'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}), + ('external_with_ingress_with_scheme', + {'address': 'https://test.ccp.external:8443', 'external': True, + 'ingress': True, 'port': {'cont': 1234, 'ingress': 'test'}, + 'with_scheme': True}), ) port = None external = None ingress = False + with_scheme = False def test_address(self): self.conf.configs._merge({'ingress': {'enabled': self.ingress, - 'domain': 'external'}, + 'domain': 'external', + 'port': 8443}, 'k8s_external_ip': '1.1.1.1'}) - self.assertEqual(self.address, - utils.address('service', self.port, self.external)) + self.assertEqual(self.address, utils.address( + 'service', self.port, self.external, self.with_scheme))