Add new interface 'dashboard'
openstack-dashboard exposes the hostnames (and IP addresses) that can be used by users to load Horizon. There are 3 possible sources, they are juju units ingress-address, os-public-hostname and vip config options Closes-Bug: #2030094 Change-Id: I5eb524c6258f72980ef43175f2bed21d7ca078be (cherry picked from commit484b7d8260
) (cherry picked from commit83ffa9eb3a
)
This commit is contained in:
parent
6d6dfa05a6
commit
3d2d3ea0b6
|
@ -0,0 +1 @@
|
|||
horizon_hooks.py
|
|
@ -0,0 +1 @@
|
|||
horizon_hooks.py
|
|
@ -224,6 +224,7 @@ def config_changed():
|
|||
ha_relation_joined(relation_id=relid)
|
||||
|
||||
websso_trusted_dashboard_changed()
|
||||
dashboard_relation_changed()
|
||||
|
||||
|
||||
@hooks.hook('identity-service-relation-joined')
|
||||
|
@ -463,6 +464,25 @@ def websso_trusted_dashboard_changed():
|
|||
})
|
||||
|
||||
|
||||
@hooks.hook('dashboard-relation-joined',
|
||||
'dashboard-relation-changed')
|
||||
def dashboard_relation_changed():
|
||||
"""
|
||||
Provide dashboard information.
|
||||
"""
|
||||
relations = relation_ids('dashboard')
|
||||
if not relations:
|
||||
return
|
||||
|
||||
relation_settings = {
|
||||
'os-public-hostname': config('os-public-hostname'),
|
||||
'vip': config('vip'),
|
||||
}
|
||||
|
||||
for rel_id in relations:
|
||||
relation_set(rel_id, relation_settings=relation_settings, app=True)
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
hooks.execute(sys.argv)
|
||||
|
|
|
@ -23,6 +23,8 @@ provides:
|
|||
scope: container
|
||||
websso-trusted-dashboard:
|
||||
interface: websso-trusted-dashboard
|
||||
dashboard:
|
||||
interface: dashboard
|
||||
requires:
|
||||
identity-service:
|
||||
interface: keystone
|
||||
|
|
|
@ -230,6 +230,7 @@ class TestHorizonHooks(CharmTestCase):
|
|||
],
|
||||
'certificates': [],
|
||||
'ha': [],
|
||||
'dashboard': [],
|
||||
}[rname]
|
||||
self.relation_ids.side_effect = relation_ids_side_effect
|
||||
|
||||
|
@ -457,3 +458,19 @@ class TestHorizonHooks(CharmTestCase):
|
|||
self.register_configs().write_all.assert_called_with()
|
||||
_service_reload.assert_called_with('apache2')
|
||||
self.enable_ssl.assert_called_with()
|
||||
|
||||
def test_dashboard_relation_changed(self):
|
||||
self.relation_ids.return_value = None
|
||||
hooks.dashboard_relation_changed()
|
||||
|
||||
self.test_config.set('os-public-hostname', 'mydashboard.local')
|
||||
self.test_config.set('vip', '1.2.3.4')
|
||||
self.relation_ids.return_value = ['dashboard:0']
|
||||
hooks.dashboard_relation_changed()
|
||||
|
||||
self.relation_set.assert_called_with(
|
||||
'dashboard:0',
|
||||
relation_settings={'os-public-hostname': 'mydashboard.local',
|
||||
'vip': '1.2.3.4'},
|
||||
app=True,
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue