Merge lp:~gnuoy/charms/trusty/nova-compute/add-console-access into lp:~openstack-charmers-archive/charms/trusty/nova-compute/next

Proposed by Liam Young
Status: Merged
Merged at revision: 75
Proposed branch: lp:~gnuoy/charms/trusty/nova-compute/add-console-access
Merge into: lp:~openstack-charmers-archive/charms/trusty/nova-compute/next
Diff against target: 113 lines (+68/-2)
3 files modified
hooks/nova_compute_context.py (+36/-1)
hooks/nova_compute_utils.py (+3/-1)
templates/havana/nova.conf (+29/-0)
To merge this branch: bzr merge lp:~gnuoy/charms/trusty/nova-compute/add-console-access
Reviewer Review Type Date Requested Status
OpenStack Charmers Pending
Review via email: mp+226320@code.launchpad.net

Description of the change

Add support for console access via a proxy running on nova-cloud-controller

To post a comment you must log in.
79. By Liam Young

Rebased

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'hooks/nova_compute_context.py'
--- hooks/nova_compute_context.py 2014-07-25 09:40:47 +0000
+++ hooks/nova_compute_context.py 2014-07-29 15:30:08 +0000
@@ -310,7 +310,42 @@
310310
311 if self.restart_trigger():311 if self.restart_trigger():
312 ctxt['restart_trigger'] = self.restart_trigger()312 ctxt['restart_trigger'] = self.restart_trigger()
313313 return ctxt
314
315
316class InstanceConsoleContext(context.OSContextGenerator):
317 interfaces = []
318
319 def get_console_info(self, proto, **kwargs):
320 console_settings = {
321 proto + '_proxy_address':
322 relation_get('console_proxy_%s_address' % (proto), **kwargs),
323 proto + '_proxy_host':
324 relation_get('console_proxy_%s_host' % (proto), **kwargs),
325 proto + '_proxy_port':
326 relation_get('console_proxy_%s_port' % (proto), **kwargs),
327 }
328 return console_settings
329
330 def __call__(self):
331 ctxt = {}
332 for rid in relation_ids('cloud-compute'):
333 for unit in related_units(rid):
334 rel = {'rid': rid, 'unit': unit}
335 proto = relation_get('console_access_protocol', **rel)
336 if not proto:
337 # only bother with units that have a proto set.
338 continue
339 ctxt['console_keymap'] = relation_get('console_keymap', **rel)
340 ctxt['console_access_protocol'] = proto
341 ctxt['console_vnc_type'] = True if 'vnc' in proto else False
342 if proto == 'vnc':
343 ctxt = dict(ctxt, **self.get_console_info('xvpvnc', **rel))
344 ctxt = dict(ctxt, **self.get_console_info('novnc', **rel))
345 else:
346 ctxt = dict(ctxt, **self.get_console_info(proto, **rel))
347 break
348 ctxt['console_listen_addr'] = get_host_ip(unit_get('private-address'))
314 return ctxt349 return ctxt
315350
316351
317352
=== modified file 'hooks/nova_compute_utils.py'
--- hooks/nova_compute_utils.py 2014-06-24 13:44:41 +0000
+++ hooks/nova_compute_utils.py 2014-07-29 15:30:08 +0000
@@ -32,6 +32,7 @@
32 NovaComputeLibvirtContext,32 NovaComputeLibvirtContext,
33 NovaComputeCephContext,33 NovaComputeCephContext,
34 NeutronComputeContext,34 NeutronComputeContext,
35 InstanceConsoleContext,
35)36)
3637
37CA_CERT_PATH = '/usr/local/share/ca-certificates/keystone_juju_ca_cert.crt'38CA_CERT_PATH = '/usr/local/share/ca-certificates/keystone_juju_ca_cert.crt'
@@ -77,7 +78,8 @@
77 context.SubordinateConfigContext(78 context.SubordinateConfigContext(
78 interface='nova-ceilometer',79 interface='nova-ceilometer',
79 service='nova',80 service='nova',
80 config_file=NOVA_CONF)],81 config_file=NOVA_CONF),
82 InstanceConsoleContext(), ],
81 },83 },
82}84}
8385
8486
=== modified file 'templates/havana/nova.conf'
--- templates/havana/nova.conf 2014-06-23 13:08:14 +0000
+++ templates/havana/nova.conf 2014-07-29 15:30:08 +0000
@@ -36,6 +36,25 @@
36rbd_secret_uuid = {{ rbd_secret_uuid }}36rbd_secret_uuid = {{ rbd_secret_uuid }}
37{% endif -%}37{% endif -%}
3838
39{% if console_vnc_type -%}
40vnc_enabled = True
41novnc_enabled = True
42vnc_keymap = {{ console_keymap }}
43vncserver_listen = 0.0.0.0
44vncserver_proxyclient_address = {{ console_listen_addr }}
45{% if console_access_protocol == 'novnc' or console_access_protocol == 'vnc' -%}
46novncproxy_base_url = {{ novnc_proxy_address }}
47{% endif -%}
48{% if console_access_protocol == 'xvpvnc' or console_access_protocol == 'vnc' -%}
49xvpvncproxy_port = {{ xvpvnc_proxy_port }}
50xvpvncproxy_host = {{ xvpvnc_proxy_host }}
51xvpvncproxy_base_url = {{ xvpvnc_proxy_address }}
52{% endif -%}
53{% else -%}
54vnc_enabled = False
55novnc_enabled = False
56{% endif -%}
57
39{% if neutron_plugin and neutron_plugin == 'ovs' -%}58{% if neutron_plugin and neutron_plugin == 'ovs' -%}
40libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver59libvirt_vif_driver = nova.virt.libvirt.vif.LibvirtGenericVIFDriver
41{% if neutron_security_groups -%}60{% if neutron_security_groups -%}
@@ -85,3 +104,13 @@
85{{ key }} = {{ value }}104{{ key }} = {{ value }}
86{% endfor -%}105{% endfor -%}
87{% endif -%}106{% endif -%}
107
108{% if console_access_protocol == 'spice' -%}
109[spice]
110agent_enabled = True
111enabled = True
112html5proxy_base_url = {{ spice_proxy_address }}
113keymap = {{ console_keymap }}
114server_listen = 0.0.0.0
115server_proxyclient_address = {{ console_listen_addr }}
116{% endif -%}

Subscribers

People subscribed via source and target branches