diff --git a/config_tempest/services/horizon.py b/config_tempest/services/horizon.py index 76a41eb3..93a651f6 100644 --- a/config_tempest/services/horizon.py +++ b/config_tempest/services/horizon.py @@ -22,11 +22,14 @@ from config_tempest import constants as C def configure_horizon(conf, **kwargs): - """Derive the horizon URIs from the identity's URI.""" - uri = conf.get('identity', 'uri') - u = urllib.parse.urlparse(uri) - base = '%s://%s%s' % (u.scheme, u.netloc.replace( - ':' + str(u.port), ''), '/dashboard') + """Verify horizon is working (fallback to introspect from identity URI)""" + if conf.has_option("dashboard", "dashboard_url"): + base = conf.get("dashboard", "dashboard_url") + else: + uri = conf.get('identity', 'uri') + u = urllib.parse.urlparse(uri) + base = '%s://%s%s' % (u.scheme, u.netloc.replace( + ':' + str(u.port), ''), '/dashboard') assert base.startswith('http:') or base.startswith('https:') has_horizon = True try: diff --git a/config_tempest/tests/services/test_horizon.py b/config_tempest/tests/services/test_horizon.py index fc1bdb71..ce871b90 100644 --- a/config_tempest/tests/services/test_horizon.py +++ b/config_tempest/tests/services/test_horizon.py @@ -28,6 +28,18 @@ class TestConfigTempest(BaseConfigTempestTest): super(TestConfigTempest, self).setUp() self.conf = self._get_conf("v2.0", "v3") + def test_configure_horizon_overridden(self): + mock_function = mock.Mock(return_value=True) + self.useFixture(MonkeyPatch('six.moves.urllib.request.urlopen', + mock_function)) + self.conf.set("dashboard", "dashboard_url", "http://172.16.52.151") + horizon.configure_horizon(self.conf) + self.assertEqual(self.conf.get('service_available', 'horizon'), "True") + self.assertEqual(self.conf.get('dashboard', 'dashboard_url'), + "http://172.16.52.151/") + self.assertEqual(self.conf.get('dashboard', 'login_url'), + "http://172.16.52.151/auth/login/") + def test_configure_horizon_ipv4(self): mock_function = mock.Mock(return_value=True) self.useFixture(MonkeyPatch('six.moves.urllib.request.urlopen',