)]}'
{"doc/source/admin/figures/SCH_5009_V00_NUAC-VNC_OpenStack.svg":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"be691d68d1a6b44241f7cc5ea6b09e0df9755e41","unresolved":false,"context_lines":[{"line_number":467,"context_line":"\t\t\u003c/g\u003e\r"},{"line_number":468,"context_line":"\t\t\u003cg id\u003d\"shape53-111\" v:mID\u003d\"53\" v:groupContext\u003d\"shape\" transform\u003d\"translate(38.8888,-154.814)\"\u003e\r"},{"line_number":469,"context_line":"\t\t\t\u003ctitle\u003eSheet.53\u003c/title\u003e\r"},{"line_number":470,"context_line":"\t\t\t\u003cdesc\u003eBrowses the url returned Http://novncip:port/?path\u003d%3Ftoken%3D\u003dxyz\u003c/desc\u003e\r"},{"line_number":471,"context_line":"\t\t\t\u003cv:textBlock v:margins\u003d\"rect(4,4,4,4)\" v:tabSpace\u003d\"42.5197\"/\u003e\r"},{"line_number":472,"context_line":"\t\t\t\u003cv:textRect cx\u003d\"58.9065\" cy\u003d\"303.793\" width\u003d\"117.82\" height\u003d\"25.387\"/\u003e\r"},{"line_number":473,"context_line":"\t\t\t\u003crect x\u003d\"0\" y\u003d\"291.1\" width\u003d\"117.813\" height\u003d\"25.387\" class\u003d\"st6\"/\u003e\r"}],"source_content_type":"application/xml","patch_set":2,"id":"ffb9cba7_41f8bf79","line":470,"range":{"start_line":470,"start_character":71,"end_line":470,"end_character":72},"updated":"2019-05-01 18:48:32.000000000","message":"I think this \u0027\u003d\u0027 needs to go away","commit_id":"375544da02e9cd64f11b9f8c3b503311d9cddc22"}],"doc/source/admin/remote-console-access.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"be691d68d1a6b44241f7cc5ea6b09e0df9755e41","unresolved":false,"context_lines":[{"line_number":30,"context_line":"console connection for example:"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"#. A user connects to the API and gets an ``access_url`` such as,"},{"line_number":33,"context_line":"   ``http://ip:port/?path\u003d%3Ftoken%3D\u003dxyz``."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"#. The user pastes the URL in a browser or uses it as a client parameter."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffb9cba7_01ee47b3","line":33,"range":{"start_line":33,"start_character":37,"end_line":33,"end_character":38},"updated":"2019-05-01 18:48:32.000000000","message":"ditto","commit_id":"375544da02e9cd64f11b9f8c3b503311d9cddc22"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"be691d68d1a6b44241f7cc5ea6b09e0df9755e41","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \"remote_console\": {"},{"line_number":85,"context_line":"      \"protocol\": \"vnc\","},{"line_number":86,"context_line":"      \"type\": \"novnc\","},{"line_number":87,"context_line":"      \"url\": \"http://example.com:6080/vnc_auto.html?path\u003d%3Ftoken%3D\u003dXYZ\""},{"line_number":88,"context_line":"    }"},{"line_number":89,"context_line":"  }"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffb9cba7_a12c1b02","line":87,"range":{"start_line":87,"start_character":68,"end_line":87,"end_character":69},"updated":"2019-05-01 18:48:32.000000000","message":"ditto","commit_id":"375544da02e9cd64f11b9f8c3b503311d9cddc22"}],"nova/objects/console_auth_token.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03acbd06118fe699bfb6c8c39d684ffdce2ade3e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        if self.obj_attr_is_set(\u0027id\u0027):"},{"line_number":63,"context_line":"            return \u0027%s?path\u003d%%3Ftoken%%3D%s\u0027 % (self.access_url_base,"},{"line_number":64,"context_line":"                                                self.token)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @staticmethod"},{"line_number":67,"context_line":"    def _from_db_object(context, obj, db_obj):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_2b295ef1","line":64,"updated":"2019-04-02 16:29:11.000000000","message":"We should use a proper url encoder for this of course","commit_id":"456160107c5af6d2a371f62cfd85fa2683eddc8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"be691d68d1a6b44241f7cc5ea6b09e0df9755e41","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        if self.obj_attr_is_set(\u0027id\u0027):"},{"line_number":64,"context_line":"            qparams \u003d {\u0027path\u0027: \u0027?token\u003d%s\u0027 % self.token}"},{"line_number":65,"context_line":"            return \u0027%s?%s\u0027 % (self.access_url_base,"},{"line_number":66,"context_line":"                              urlparse.urlencode(qparams))"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @staticmethod"},{"line_number":69,"context_line":"    def _from_db_object(context, obj, db_obj):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_e14533b5","line":66,"updated":"2019-05-01 18:48:32.000000000","message":"✔","commit_id":"375544da02e9cd64f11b9f8c3b503311d9cddc22"}],"nova/tests/unit/console/test_websocketproxy.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"be691d68d1a6b44241f7cc5ea6b09e0df9755e41","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.wh.do_proxy \u003d mock.MagicMock()"},{"line_number":50,"context_line":"        self.wh.headers \u003d mock.MagicMock()"},{"line_number":51,"context_line":"        self.path \u003d urlparse.urlencode({\u0027path\u0027: \u0027?token\u003d123-456-789\u0027})"},{"line_number":52,"context_line":"        self.path_invalid \u003d urlparse.urlencode({\u0027path\u0027: \u0027?token\u003dXXX\u0027})"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _fake_console_db(self, **updates):"},{"line_number":55,"context_line":"        console_db \u003d copy.deepcopy(fake_ca.fake_token_dict)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_0171670c","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":70},"updated":"2019-05-01 18:48:32.000000000","message":"not used","commit_id":"375544da02e9cd64f11b9f8c3b503311d9cddc22"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"be691d68d1a6b44241f7cc5ea6b09e0df9755e41","unresolved":false,"context_lines":[{"line_number":719,"context_line":"        with mock.patch(\u0027websockify.ProxyRequestHandler\u0027):"},{"line_number":720,"context_line":"            self.wh \u003d websocketproxy.NovaProxyRequestHandler()"},{"line_number":721,"context_line":"        self.wh.server \u003d self.server"},{"line_number":722,"context_line":"        self.path \u003d urlparse.urlencode({\u0027path\u0027: \u0027?token\u003d123-456-789\u0027})"},{"line_number":723,"context_line":"        self.wh.path \u003d \"http://127.0.0.1/?%s\" % self.path"},{"line_number":724,"context_line":"        self.wh.socket \u003d mock.MagicMock()"},{"line_number":725,"context_line":"        self.wh.msg \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_41543f53","line":722,"range":{"start_line":722,"start_character":8,"end_line":722,"end_character":13},"updated":"2019-05-01 18:48:32.000000000","message":"This could just be local","commit_id":"375544da02e9cd64f11b9f8c3b503311d9cddc22"}]}
