)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"47c796ec85f23bfbfc93d513a9019364d1710208","unresolved":false,"context_lines":[{"line_number":13,"context_line":"public use."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I3d1485468d1d0a79d4002981ebe05b6cdf2332e7"},{"line_number":16,"context_line":"Closes-Bug: #1651677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da4df55a_b8d534ba","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":20},"updated":"2016-12-25 00:13:26.000000000","message":"I\u0027m ok with this change, but it is not a bug. It is a feature request","commit_id":"9d8e3feeefe654d1884ec1c4d96fa6de30267e41"}],"novaclient/v2/servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7b91d5266e4cd1d0cb452c3f76322ce1ee3d30e2","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    def get_console_url(self, protocol, console_type):"},{"line_number":125,"context_line":"        \"\"\""},{"line_number":126,"context_line":"        Retrieve a console of a particular protocol and console_type"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        \"\"\""},{"line_number":129,"context_line":"        return self.manager.get_console_url(self, protocol, console_type)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_198b68c4","line":127,"updated":"2017-01-05 16:38:49.000000000","message":"1. It is no longer necessary to end a docstring with a blank line.  I realize you may have been going by the example of get_mks_console() here, but this blank line can be eliminated (femtonit)\n\n2. On the other hand, this doc string does not document the method arguments.  Please add documentation for the arguments, so users can know what they mean (not a femtonit ;)","commit_id":"48c0d0c26db0adf531067819de33398f7661f76d"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"acbf97e1300956b621153e23f0262ee5486b5d8c","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    def get_console_url(self, protocol, console_type):"},{"line_number":125,"context_line":"        \"\"\""},{"line_number":126,"context_line":"        Retrieve a console of a particular protocol and console_type"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        \"\"\""},{"line_number":129,"context_line":"        return self.manager.get_console_url(self, protocol, console_type)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_897b7827","line":127,"in_reply_to":"ba5201f7_198b68c4","updated":"2017-01-06 01:47:03.000000000","message":"Done","commit_id":"48c0d0c26db0adf531067819de33398f7661f76d"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7b91d5266e4cd1d0cb452c3f76322ce1ee3d30e2","unresolved":false,"context_lines":[{"line_number":1861,"context_line":"        \"\"\""},{"line_number":1862,"context_line":"        Retrieve a console url of a server."},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"        :"},{"line_number":1865,"context_line":"        :param protocol: protocol can be vnc/spice/rdp/serial/mks"},{"line_number":1866,"context_line":"        :param console_type: type can be novnc/xvpvnc for protocol vnc;"},{"line_number":1867,"context_line":"        spice-html5 for protocol spice; rdp-html5 for protocol rdp;"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_59a89020","line":1864,"range":{"start_line":1864,"start_character":8,"end_line":1864,"end_character":9},"updated":"2017-01-05 16:38:49.000000000","message":"What does a colon on a line by itself mean?  Please drop that, or use it to document the \u0027server\u0027 parameter.","commit_id":"48c0d0c26db0adf531067819de33398f7661f76d"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"acbf97e1300956b621153e23f0262ee5486b5d8c","unresolved":false,"context_lines":[{"line_number":1861,"context_line":"        \"\"\""},{"line_number":1862,"context_line":"        Retrieve a console url of a server."},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"        :"},{"line_number":1865,"context_line":"        :param protocol: protocol can be vnc/spice/rdp/serial/mks"},{"line_number":1866,"context_line":"        :param console_type: type can be novnc/xvpvnc for protocol vnc;"},{"line_number":1867,"context_line":"        spice-html5 for protocol spice; rdp-html5 for protocol rdp;"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_09bdc8b6","line":1864,"range":{"start_line":1864,"start_character":8,"end_line":1864,"end_character":9},"in_reply_to":"ba5201f7_59a89020","updated":"2017-01-06 01:47:03.000000000","message":"Done","commit_id":"48c0d0c26db0adf531067819de33398f7661f76d"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7b91d5266e4cd1d0cb452c3f76322ce1ee3d30e2","unresolved":false,"context_lines":[{"line_number":1865,"context_line":"        :param protocol: protocol can be vnc/spice/rdp/serial/mks"},{"line_number":1866,"context_line":"        :param console_type: type can be novnc/xvpvnc for protocol vnc;"},{"line_number":1867,"context_line":"        spice-html5 for protocol spice; rdp-html5 for protocol rdp;"},{"line_number":1868,"context_line":"        serial for protocol serial; webmks for protocol mks."},{"line_number":1869,"context_line":"        \"\"\""},{"line_number":1870,"context_line":"        body \u003d {\u0027remote_console\u0027: {\u0027protocol\u0027: protocol,"},{"line_number":1871,"context_line":"                                   \u0027type\u0027: console_type}}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_792ab491","line":1868,"updated":"2017-01-05 16:38:49.000000000","message":"I\u0027d like to see the continuation lines for parameter documentation indented to make it a little easier to read.  Any indentation is fine, as long as it\u0027s consistent, but my preferred indentation is to line up with the description from the preceding line, i.e.:\n\n    :param console_type: type can be novnc/xvpvnc for protocol vnc;\n                         spice-html5 for protocol spice; …","commit_id":"48c0d0c26db0adf531067819de33398f7661f76d"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"acbf97e1300956b621153e23f0262ee5486b5d8c","unresolved":false,"context_lines":[{"line_number":1865,"context_line":"        :param protocol: protocol can be vnc/spice/rdp/serial/mks"},{"line_number":1866,"context_line":"        :param console_type: type can be novnc/xvpvnc for protocol vnc;"},{"line_number":1867,"context_line":"        spice-html5 for protocol spice; rdp-html5 for protocol rdp;"},{"line_number":1868,"context_line":"        serial for protocol serial; webmks for protocol mks."},{"line_number":1869,"context_line":"        \"\"\""},{"line_number":1870,"context_line":"        body \u003d {\u0027remote_console\u0027: {\u0027protocol\u0027: protocol,"},{"line_number":1871,"context_line":"                                   \u0027type\u0027: console_type}}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_69cc946a","line":1868,"in_reply_to":"ba5201f7_792ab491","updated":"2017-01-06 01:47:03.000000000","message":"Done","commit_id":"48c0d0c26db0adf531067819de33398f7661f76d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"5d50de72ec6c5682bcb343cb8960c1d63c6dc220","unresolved":false,"context_lines":[{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        protocol \u003d type_protocol_mapping.get(console_type)"},{"line_number":965,"context_line":"        if not protocol:"},{"line_number":966,"context_line":"            raise KeyError(\u0027Unsupported console_type \"%s\"\u0027) % console_type"},{"line_number":967,"context_line":""},{"line_number":968,"context_line":"        return protocol"},{"line_number":969,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_c35a2683","line":966,"range":{"start_line":966,"start_character":12,"end_line":966,"end_character":74},"updated":"2017-01-16 02:58:14.000000000","message":"The test case for this case should be added.\nAnd it should be as follows:\n\nKeyError(\u0027Unsupported console_type \"%s\"\u0027 % console_type)","commit_id":"7b72e6cee3b3819e69389895d7f1283d6e0d1974"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"5d50de72ec6c5682bcb343cb8960c1d63c6dc220","unresolved":false,"context_lines":[{"line_number":985,"context_line":"        }"},{"line_number":986,"context_line":"        action \u003d type_action_mapping.get(console_type)"},{"line_number":987,"context_line":"        if not action:"},{"line_number":988,"context_line":"            raise KeyError(\u0027Unsupported console_type \"%s\"\u0027) % console_type"},{"line_number":989,"context_line":"        return self._action(action, server, {\u0027type\u0027: console_type})"},{"line_number":990,"context_line":""},{"line_number":991,"context_line":"    @api_versions.wraps(\u00272.6\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_e35d627a","line":988,"range":{"start_line":988,"start_character":17,"end_line":988,"end_character":74},"updated":"2017-01-16 02:58:14.000000000","message":"ditto","commit_id":"7b72e6cee3b3819e69389895d7f1283d6e0d1974"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b02a62192b3c3b3bcf1680f0fc7b87de04e23019","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        resp, body \u003d self.api.client.post(url, body\u003dbody)"},{"line_number":1065,"context_line":"        return self.convert_into_with_meta(body, resp)"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    @api_versions.wraps(\u00272.8\u0027)"},{"line_number":1068,"context_line":"    def get_console_url(self, server, console_type):"},{"line_number":1069,"context_line":"        \"\"\""},{"line_number":1070,"context_line":"        Retrieve a console url of a server."},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        :param server: server to get console url for"},{"line_number":1073,"context_line":"        :param console_type: type can be novnc/xvpvnc for protocol vnc;"},{"line_number":1074,"context_line":"                             spice-html5 for protocol spice; rdp-html5 for"},{"line_number":1075,"context_line":"                             protocol rdp; serial for protocol serial;"},{"line_number":1076,"context_line":"                             webmks for protocol mks."},{"line_number":1077,"context_line":"        \"\"\""},{"line_number":1078,"context_line":"        protocol \u003d self._get_protocol(console_type)"},{"line_number":1079,"context_line":"        body \u003d {\u0027remote_console\u0027: {\u0027protocol\u0027: protocol,"},{"line_number":1080,"context_line":"                                   \u0027type\u0027: console_type}}"},{"line_number":1081,"context_line":"        url \u003d \u0027/servers/%s/remote-consoles\u0027 % base.getid(server)"},{"line_number":1082,"context_line":"        resp, body \u003d self.api.client.post(url, body\u003dbody)"},{"line_number":1083,"context_line":"        return self.convert_into_with_meta(body, resp)"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"    def get_password(self, server, private_key\u003dNone):"},{"line_number":1086,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"7a3c09a3_db973146","line":1083,"range":{"start_line":1067,"start_character":0,"end_line":1083,"end_character":54},"updated":"2017-01-17 07:18:46.000000000","message":"This is totally same with 2.6 ones. It only enable one more console type, I think we needn\u0027t a separate method.","commit_id":"445022cb8593365bfa8866ab8c6bed7b4340f0ca"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"7ca13aa40fa0d9de8aac197a4bb49d701be883e5","unresolved":false,"context_lines":[{"line_number":1064,"context_line":"        resp, body \u003d self.api.client.post(url, body\u003dbody)"},{"line_number":1065,"context_line":"        return self.convert_into_with_meta(body, resp)"},{"line_number":1066,"context_line":""},{"line_number":1067,"context_line":"    @api_versions.wraps(\u00272.8\u0027)"},{"line_number":1068,"context_line":"    def get_console_url(self, server, console_type):"},{"line_number":1069,"context_line":"        \"\"\""},{"line_number":1070,"context_line":"        Retrieve a console url of a server."},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"        :param server: server to get console url for"},{"line_number":1073,"context_line":"        :param console_type: type can be novnc/xvpvnc for protocol vnc;"},{"line_number":1074,"context_line":"                             spice-html5 for protocol spice; rdp-html5 for"},{"line_number":1075,"context_line":"                             protocol rdp; serial for protocol serial;"},{"line_number":1076,"context_line":"                             webmks for protocol mks."},{"line_number":1077,"context_line":"        \"\"\""},{"line_number":1078,"context_line":"        protocol \u003d self._get_protocol(console_type)"},{"line_number":1079,"context_line":"        body \u003d {\u0027remote_console\u0027: {\u0027protocol\u0027: protocol,"},{"line_number":1080,"context_line":"                                   \u0027type\u0027: console_type}}"},{"line_number":1081,"context_line":"        url \u003d \u0027/servers/%s/remote-consoles\u0027 % base.getid(server)"},{"line_number":1082,"context_line":"        resp, body \u003d self.api.client.post(url, body\u003dbody)"},{"line_number":1083,"context_line":"        return self.convert_into_with_meta(body, resp)"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"    def get_password(self, server, private_key\u003dNone):"},{"line_number":1086,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"7a3c09a3_33f939c8","line":1083,"range":{"start_line":1067,"start_character":0,"end_line":1083,"end_character":54},"in_reply_to":"7a3c09a3_db973146","updated":"2017-01-17 08:34:56.000000000","message":"Done","commit_id":"445022cb8593365bfa8866ab8c6bed7b4340f0ca"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3366204da5621d9102f1ec2325f9e4114d6c12bf","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        return self.get_console_url(server, console_type)"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"    def _get_protocol(self, console_type):"},{"line_number":955,"context_line":"        type_protocol_mapping \u003d {"},{"line_number":956,"context_line":"            \u0027novnc\u0027: \u0027vnc\u0027,"},{"line_number":957,"context_line":"            \u0027xvpvnc\u0027: \u0027vnc\u0027,"},{"line_number":958,"context_line":"            \u0027spice-html5\u0027: \u0027spice\u0027,"},{"line_number":959,"context_line":"            \u0027rdp-html5\u0027: \u0027rdp\u0027,"},{"line_number":960,"context_line":"            \u0027serial\u0027: \u0027serial\u0027,"},{"line_number":961,"context_line":"            \u0027webmks\u0027: \u0027mks\u0027"},{"line_number":962,"context_line":"        }"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        protocol \u003d type_protocol_mapping.get(console_type)"},{"line_number":965,"context_line":"        if not protocol:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_7a0e143c","line":962,"range":{"start_line":955,"start_character":8,"end_line":962,"end_character":9},"updated":"2017-01-17 17:59:23.000000000","message":"I\u0027d like to see this be a global-scope constant, so that the dictionary doesn\u0027t have to be created each time the method gets called.","commit_id":"b678a848c3ac72c3be33fd70191e690c30dc2fd3"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"95ea7b3eb9ee58e4522acce935d8fe402df2875a","unresolved":false,"context_lines":[{"line_number":952,"context_line":"        return self.get_console_url(server, console_type)"},{"line_number":953,"context_line":""},{"line_number":954,"context_line":"    def _get_protocol(self, console_type):"},{"line_number":955,"context_line":"        type_protocol_mapping \u003d {"},{"line_number":956,"context_line":"            \u0027novnc\u0027: \u0027vnc\u0027,"},{"line_number":957,"context_line":"            \u0027xvpvnc\u0027: \u0027vnc\u0027,"},{"line_number":958,"context_line":"            \u0027spice-html5\u0027: \u0027spice\u0027,"},{"line_number":959,"context_line":"            \u0027rdp-html5\u0027: \u0027rdp\u0027,"},{"line_number":960,"context_line":"            \u0027serial\u0027: \u0027serial\u0027,"},{"line_number":961,"context_line":"            \u0027webmks\u0027: \u0027mks\u0027"},{"line_number":962,"context_line":"        }"},{"line_number":963,"context_line":""},{"line_number":964,"context_line":"        protocol \u003d type_protocol_mapping.get(console_type)"},{"line_number":965,"context_line":"        if not protocol:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_4c1d1065","line":962,"range":{"start_line":955,"start_character":8,"end_line":962,"end_character":9},"in_reply_to":"7a3c09a3_7a0e143c","updated":"2017-01-18 01:23:03.000000000","message":"Done","commit_id":"b678a848c3ac72c3be33fd70191e690c30dc2fd3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3366204da5621d9102f1ec2325f9e4114d6c12bf","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        :param console_type: type can be novnc, xvpvnc, spice-html5,"},{"line_number":977,"context_line":"                             rdp-html5 and serial."},{"line_number":978,"context_line":"        \"\"\""},{"line_number":979,"context_line":"        type_action_mapping \u003d {"},{"line_number":980,"context_line":"            \u0027novnc\u0027: \u0027os-getVNCConsole\u0027,"},{"line_number":981,"context_line":"            \u0027xvpvnc\u0027: \u0027os-getVNCConsole\u0027,"},{"line_number":982,"context_line":"            \u0027spice-html5\u0027: \u0027os-getSPICEConsole\u0027,"},{"line_number":983,"context_line":"            \u0027rdp-html5\u0027: \u0027os-getRDPConsole\u0027,"},{"line_number":984,"context_line":"            \u0027serial\u0027: \u0027os-getSerialConsole\u0027"},{"line_number":985,"context_line":"        }"},{"line_number":986,"context_line":"        action \u003d type_action_mapping.get(console_type)"},{"line_number":987,"context_line":"        if not action:"},{"line_number":988,"context_line":"            raise exceptions.UnsupportedConsoleType(console_type)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_9a24a0c5","line":985,"range":{"start_line":979,"start_character":8,"end_line":985,"end_character":9},"updated":"2017-01-17 17:59:23.000000000","message":"This could be made into a global-scope constant, like above.","commit_id":"b678a848c3ac72c3be33fd70191e690c30dc2fd3"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"95ea7b3eb9ee58e4522acce935d8fe402df2875a","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        :param console_type: type can be novnc, xvpvnc, spice-html5,"},{"line_number":977,"context_line":"                             rdp-html5 and serial."},{"line_number":978,"context_line":"        \"\"\""},{"line_number":979,"context_line":"        type_action_mapping \u003d {"},{"line_number":980,"context_line":"            \u0027novnc\u0027: \u0027os-getVNCConsole\u0027,"},{"line_number":981,"context_line":"            \u0027xvpvnc\u0027: \u0027os-getVNCConsole\u0027,"},{"line_number":982,"context_line":"            \u0027spice-html5\u0027: \u0027os-getSPICEConsole\u0027,"},{"line_number":983,"context_line":"            \u0027rdp-html5\u0027: \u0027os-getRDPConsole\u0027,"},{"line_number":984,"context_line":"            \u0027serial\u0027: \u0027os-getSerialConsole\u0027"},{"line_number":985,"context_line":"        }"},{"line_number":986,"context_line":"        action \u003d type_action_mapping.get(console_type)"},{"line_number":987,"context_line":"        if not action:"},{"line_number":988,"context_line":"            raise exceptions.UnsupportedConsoleType(console_type)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_ac2cb499","line":985,"range":{"start_line":979,"start_character":8,"end_line":985,"end_character":9},"in_reply_to":"7a3c09a3_9a24a0c5","updated":"2017-01-18 01:23:03.000000000","message":"Done","commit_id":"b678a848c3ac72c3be33fd70191e690c30dc2fd3"}]}
