diff options
| author | Anthony Young <sleepsonthefloor@gmail.com> | 2011-03-30 05:59:13 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-03-30 05:59:13 +0000 |
| commit | cda715bf86373d47ad2f2f6655ad26e77f264868 (patch) | |
| tree | 9a711a93154ba8659e6833ef21cf2329a48c52c0 /nova/api | |
| parent | 971be24dd38b576f4cf89a2c7d8856593b93c29d (diff) | |
| parent | 7856df88b22e6ff3bd0f124e3d71f130e3e9c205 (diff) | |
The VNC Proxy is an OpenStack component that allows users of Nova to access
their instances through a websocket enabled browser (like Google Chrome).
A VNC Connection works like so:
* User connects over an api and gets a url like http://ip:port/?token=xyz
* User pastes url in browser
* Browser connects to VNC Proxy though a websocket enabled client like noVNC
* VNC Proxy authorizes users token, maps the token to a host and port of an
instance's VNC server
* VNC Proxy initiates connection to VNC server, and continues proxying until
the session ends
For more info see vncconsole.rst
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/ec2/cloud.py | 7 | ||||
| -rw-r--r-- | nova/api/openstack/servers.py | 12 |
2 files changed, 18 insertions, 1 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 9e34d3317..7ba8dfbea 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -536,6 +536,13 @@ class CloudController(object): return self.compute_api.get_ajax_console(context, instance_id=instance_id) + def get_vnc_console(self, context, instance_id, **kwargs): + """Returns vnc browser url. Used by OS dashboard.""" + ec2_id = instance_id + instance_id = ec2utils.ec2_id_to_id(ec2_id) + return self.compute_api.get_vnc_console(context, + instance_id=instance_id) + def describe_volumes(self, context, volume_id=None, **kwargs): if volume_id: volumes = [] diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 75a305a14..6bd173bb8 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -477,7 +477,7 @@ class Controller(wsgi.Controller): @scheduler_api.redirect_handler def get_ajax_console(self, req, id): - """ Returns a url to an instance's ajaxterm console. """ + """Returns a url to an instance's ajaxterm console.""" try: self.compute_api.get_ajax_console(req.environ['nova.context'], int(id)) @@ -486,6 +486,16 @@ class Controller(wsgi.Controller): return exc.HTTPAccepted() @scheduler_api.redirect_handler + def get_vnc_console(self, req, id): + """Returns a url to an instance's ajaxterm console.""" + try: + self.compute_api.get_vnc_console(req.environ['nova.context'], + int(id)) + except exception.NotFound: + return faults.Fault(exc.HTTPNotFound()) + return exc.HTTPAccepted() + + @scheduler_api.redirect_handler def diagnostics(self, req, id): """Permit Admins to retrieve server diagnostics.""" ctxt = req.environ["nova.context"] |
