)]}'
{"doc/source/runnova/vncconsole.rst":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":"The VNC Proxy is an OpenStack component that allows users of Nova to access"},{"line_number":22,"context_line":"their instances through a vnc client.  In essex and beyond, there is support"},{"line_number":23,"context_line":"for for both libvirt and XenServer using both java and websocket cleints."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"In general, a VNC console Connection works like so:"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAD3%2F%2F%2B5g%3D","line":23,"updated":"2012-01-11 20:08:32.000000000","message":"s/cleints/clients/","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"Getting an Access Url"},{"line_number":51,"context_line":"---------------------"},{"line_number":52,"context_line":"Nova provides the ability to create access_urls through a servers extension."},{"line_number":53,"context_line":"(nova/api/openstack/v2/contrib/consoles.py).  Support for accessing this"},{"line_number":54,"context_line":"url via cli and dashboard is forthcoming.  During review, you can use a"},{"line_number":55,"context_line":"branch of novaclient here for testing purposes::"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAD3%2F%2F%2B5c%3D","line":53,"updated":"2012-01-11 20:08:32.000000000","message":"Rather than putting the file here, just mention the extension name.","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Nova provides the ability to create access_urls through a servers extension."},{"line_number":53,"context_line":"(nova/api/openstack/v2/contrib/consoles.py).  Support for accessing this"},{"line_number":54,"context_line":"url via cli and dashboard is forthcoming.  During review, you can use a"},{"line_number":55,"context_line":"branch of novaclient here for testing purposes::"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    git clone https://github.com/cloudbuilders/python-novaclient"},{"line_number":58,"context_line":"    git checkout vnc_redux"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAD3%2F%2F%2B5Y%3D","line":55,"updated":"2012-01-11 20:08:32.000000000","message":"This bit about the review process doesn\u0027t belong in these docs.","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    # Retrieve access url"},{"line_number":120,"context_line":"    nova get-vnc-console [server_id] novnc"},{"line_number":121,"context_line":"    # Then, paste the url ina web browser"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Support for a streamlined flow via dashboard will land in essex."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAD3%2F%2F%2B5Q%3D","line":121,"updated":"2012-01-11 20:08:32.000000000","message":"s/ina/into your/","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Important Options"},{"line_number":127,"context_line":"-----------------"},{"line_number":128,"context_line":"Some important options:"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"* :option:`--vnc_enabled\u003d[True|False]` - defaults to True. If this flag is"},{"line_number":131,"context_line":"  not set your instances will launch without vnc support."}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAD3%2F%2F%2B5M%3D","line":128,"updated":"2012-01-11 20:08:32.000000000","message":"this line is redundant","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/api/openstack/compute/contrib/consoles.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"65087b5c409f1fe1f6626abcf9903c010827c0f1","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def get_actions(self):"},{"line_number":68,"context_line":"        \"\"\"Return the actions the extension adds, as required by contract.\"\"\""},{"line_number":69,"context_line":"        actions \u003d [extensions.ActionExtension(\"servers\", \"os-getVNCConsole\","},{"line_number":70,"context_line":"                                              self.get_vnc_console)]"},{"line_number":71,"context_line":"        return actions"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAD3%2F%2F9qw%3D","line":69,"updated":"2012-01-16 22:02:46.000000000","message":"ActionExtension is deprecated; you\u0027ll need to convert this over to a ControllerExtension.","commit_id":"a157bf094fd3fe89dbec528515383d4d2a8811a1"}],"nova/api/openstack/v2/contrib/consoles.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2011 OpenStack LLC."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B4s%3D","line":3,"updated":"2012-01-11 20:08:32.000000000","message":"wrong year","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova.api.openstack.v2 import extensions"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(\u0027nova.api.openstack.v2.contrib.console_output\u0027)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class Consoles(extensions.ExtensionDescriptor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B5E%3D","line":25,"updated":"2012-01-11 20:08:32.000000000","message":"drop \u0027_output\u0027","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/compute/manager.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":1493,"context_line":"        LOG.debug(_(\"instance %s: getting vnc console\"), instance_uuid)"},{"line_number":1494,"context_line":"        instance_ref \u003d self.db.instance_get_by_uuid(context, instance_uuid)"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"        token \u003d str(uuid.uuid4())"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"        if console_type \u003d\u003d \u0027novnc\u0027:"},{"line_number":1499,"context_line":"            # For essex, novncproxy_base_url must include the full path"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B5A%3D","line":1496,"updated":"2012-01-11 20:08:32.000000000","message":"Can you use the function in nova.utils to generate this uuid?","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/consoleauth/__init__.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright (c) 2010 Openstack, LLC."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B4o%3D","line":4,"updated":"2012-01-11 20:08:32.000000000","message":"wrong year","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/consoleauth/manager.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright (c) 2010 Openstack, LLC."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B4k%3D","line":4,"updated":"2012-01-11 20:08:32.000000000","message":"wrong year","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/exception.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":692,"context_line":""},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"class ConsoleTypeInvalid(Invalid):"},{"line_number":695,"context_line":"    message \u003d _(\"Invalid Console type %(console_type)s \")"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"class NoInstanceTypesFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B48%3D","line":695,"updated":"2012-01-11 20:08:32.000000000","message":"Might as well make \u0027Console\u0027 lowercase here.","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/tests/api/openstack/v2/contrib/test_consoles.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 Anthony Young"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B4g%3D","line":1,"updated":"2012-01-11 20:08:32.000000000","message":"wrong year","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"70a2aa994c321db7afd97ac55e6f83033e05cbc6","unresolved":false,"context_lines":[{"line_number":1363,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1364,"context_line":"        session_id \u003d self._session.get_session_id()"},{"line_number":1365,"context_line":"        path \u003d \"/console?ref\u003d%s\u0026session_id\u003d%s\"\\"},{"line_number":1366,"context_line":"                   % (str(vm_ref), session_id)"},{"line_number":1367,"context_line":""},{"line_number":1368,"context_line":"        return {\u0027host\u0027: \u0027169.254.0.1\u0027, \u0027port\u0027: 80,"},{"line_number":1369,"context_line":"                \u0027internal_access_path\u0027: path}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2FLI%3D","line":1366,"updated":"2012-01-11 02:04:23.000000000","message":"This is kind of funky.  We have a pool of sessions.  So, essentially what\u0027s happening here is we\u0027re grabbing a session out of the pool temporarily, getting the ID of it, and then returning it to the pool.  Then we form this URL and return it to the caller.\n\nIs that the desired behavior?  Xen requires some sort of session ID for any active session?","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1155,"name":"sleepsonthefloor","username":"sleepsonthefloor"},"change_message_id":"008507da437db85524ce0126c50df8f611341ad3","unresolved":false,"context_lines":[{"line_number":1363,"context_line":"        vm_ref \u003d self._get_vm_opaque_ref(instance)"},{"line_number":1364,"context_line":"        session_id \u003d self._session.get_session_id()"},{"line_number":1365,"context_line":"        path \u003d \"/console?ref\u003d%s\u0026session_id\u003d%s\"\\"},{"line_number":1366,"context_line":"                   % (str(vm_ref), session_id)"},{"line_number":1367,"context_line":""},{"line_number":1368,"context_line":"        return {\u0027host\u0027: \u0027169.254.0.1\u0027, \u0027port\u0027: 80,"},{"line_number":1369,"context_line":"                \u0027internal_access_path\u0027: path}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B5o%3D","line":1366,"in_reply_to":"AAAAD3%2F%2F%2FLI%3D","updated":"2012-01-11 19:57:59.000000000","message":"The session_id is used to auth the vnc connection - I\u0027m not exactly sure of how that session_id is used internally, but I don\u0027t believe that the session_id needs to be \u0027locked\u0027 for this purpose.  Perhaps Ewan can provide some insight.  The other way to do it is to maintain a separate pool of sessions for the purpose of the consoles, but I\u0027d like to avoid that if possible.","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/virt/xenapi_conn.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        \"\"\"Stubout point. This can be replaced with a mock xenapi module.\"\"\""},{"line_number":481,"context_line":"        return __import__(\u0027XenAPI\u0027)"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"    def get_session_id(self):"},{"line_number":484,"context_line":"        \"\"\"Return a string session_id.  Used for vnc consoles.\"\"\""},{"line_number":485,"context_line":"        with self._get_session() as session:"},{"line_number":486,"context_line":"            return str(session._session)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B44%3D","line":483,"updated":"2012-01-11 20:08:32.000000000","message":"Can you make sure this new method is tested?","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"nova/vnc/xvp_proxy.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env python"},{"line_number":2,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Copyright (c) 2010 Openstack, LLC."},{"line_number":5,"context_line":"# All Rights Reserved."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B40%3D","line":4,"updated":"2012-01-11 20:08:32.000000000","message":"year is incorrect here","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"51f67ccd0783ee91592e40414a08836931328a1a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"class XCPVNCProxy(object):"},{"line_number":47,"context_line":"    \"\"\"Class to use the xvp auth protocol to proxy instance vnc consoles.\"\"\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def a2b(self, source, dest):"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            while True:"},{"line_number":52,"context_line":"                d \u003d source.recv(32384)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAD3%2F%2F%2B4w%3D","line":49,"updated":"2012-01-11 20:08:32.000000000","message":"Can you add docstrings to all these methods? And I think you can probably come up with a more descriptive name for this specific one...","commit_id":"6584c00f0d044cc4c03607c1054a82e2f78794cc"}],"setup.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"2964f144096eb411edf37e0ac7b15218cc87465b","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               \u0027bin/nova-api-os-compute\u0027,"},{"line_number":91,"context_line":"               \u0027bin/nova-api-os-volume\u0027,"},{"line_number":92,"context_line":"               \u0027bin/nova-compute\u0027,"},{"line_number":93,"context_line":"               \u0027bin/nova-console\u0027,"},{"line_number":94,"context_line":"               \u0027bin/nova-dhcpbridge\u0027,"},{"line_number":95,"context_line":"               \u0027bin/nova-direct-api\u0027,"},{"line_number":96,"context_line":"               \u0027bin/nova-logspool\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F9LA%3D","line":93,"updated":"2012-01-17 21:46:33.000000000","message":"\u0027bin/nova-consoleauth\u0027,","commit_id":"51542218cd2399fdee00af65baef2f8a1d1e213a"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"2964f144096eb411edf37e0ac7b15218cc87465b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"               \u0027bin/nova-rootwrap\u0027,"},{"line_number":101,"context_line":"               \u0027bin/nova-scheduler\u0027,"},{"line_number":102,"context_line":"               \u0027bin/nova-spoolsentry\u0027,"},{"line_number":103,"context_line":"               \u0027bin/nova-vncproxy\u0027,"},{"line_number":104,"context_line":"               \u0027bin/nova-volume\u0027,"},{"line_number":105,"context_line":"               \u0027bin/nova-vsa\u0027,"},{"line_number":106,"context_line":"               \u0027bin/nova-xvpvncproxy\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F9K8%3D","line":103,"updated":"2012-01-17 21:46:33.000000000","message":"remove","commit_id":"51542218cd2399fdee00af65baef2f8a1d1e213a"}]}
