)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6b109e8edbfb73112c9a3967f93dabadcbe86647","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Reduce code duplication"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reduced source code by extracting duplicated code"},{"line_number":10,"context_line":"(nova/compute/manager.py)"},{"line_number":11,"context_line":"http://openqa.sed.hu/dashboard/index/4?did\u003d1 , in 39~CloneClass"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dae33548_c51198ae","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":49},"updated":"2016-02-15 18:58:08.000000000","message":"Can you add comment that it was related to instance console?","commit_id":"f1f619c3c24074274d869ed1d53c42b9d3a104ce"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6b109e8edbfb73112c9a3967f93dabadcbe86647","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reduced source code by extracting duplicated code"},{"line_number":10,"context_line":"(nova/compute/manager.py)"},{"line_number":11,"context_line":"http://openqa.sed.hu/dashboard/index/4?did\u003d1 , in 39~CloneClass"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6e669add67de884ec78ef87a244c02097355a6b1"},{"line_number":14,"context_line":"Closes-Bug: 1536715"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dae33548_25f96481","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":63},"updated":"2016-02-15 18:58:08.000000000","message":"Remove this please","commit_id":"f1f619c3c24074274d869ed1d53c42b9d3a104ce"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"106f9ea9a25487dcfc2b5918c675a36813079cad","unresolved":false,"context_lines":[{"line_number":11,"context_line":"(nova/compute/manager.py)"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I6e669add67de884ec78ef87a244c02097355a6b1"},{"line_number":14,"context_line":"Closes-Bug: 1536715"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"dae33548_7e758c96","line":14,"updated":"2016-02-16 16:30:19.000000000","message":"I don\u0027t feel that it is a bug (maybe a wishlist still)","commit_id":"a31527650656fe2ebbb27694216ac87553102ece"}],"nova/compute/manager.py":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"9025da6beddfdaa2ad8769c6ee4102f5d20275f5","unresolved":false,"context_lines":[{"line_number":4431,"context_line":"            return b\u0027\\n\u0027.join(log.split(b\u0027\\n\u0027)[-int(length):])"},{"line_number":4432,"context_line":""},{"line_number":4433,"context_line":"    def _get_conn_inform(self, type_str, conf_enable, console_type_str,"},{"line_number":4434,"context_line":"                         a_url, console_fn, context, instance, console_type):"},{"line_number":4435,"context_line":"        \"\"\"Return connection information for a \u0027type_str\u0027 console.\"\"\""},{"line_number":4436,"context_line":"        context \u003d context.elevated()"},{"line_number":4437,"context_line":"        LOG.debug(\"Getting \" + type_str + \" console\", instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_6c332f15","line":4434,"range":{"start_line":4434,"start_character":25,"end_line":4434,"end_character":30},"updated":"2016-01-22 13:57:43.000000000","message":"This name could be a bit better","commit_id":"0fdd210ee655fc0aaab60b9c2cf0766b8343cea1"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"9025da6beddfdaa2ad8769c6ee4102f5d20275f5","unresolved":false,"context_lines":[{"line_number":4434,"context_line":"                         a_url, console_fn, context, instance, console_type):"},{"line_number":4435,"context_line":"        \"\"\"Return connection information for a \u0027type_str\u0027 console.\"\"\""},{"line_number":4436,"context_line":"        context \u003d context.elevated()"},{"line_number":4437,"context_line":"        LOG.debug(\"Getting \" + type_str + \" console\", instance\u003dinstance)"},{"line_number":4438,"context_line":"        token \u003d str(uuid.uuid4())"},{"line_number":4439,"context_line":""},{"line_number":4440,"context_line":"        if not conf_enable:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_cca57b47","line":4437,"updated":"2016-01-22 13:57:43.000000000","message":"Can you use string formatting there?","commit_id":"0fdd210ee655fc0aaab60b9c2cf0766b8343cea1"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"106f9ea9a25487dcfc2b5918c675a36813079cad","unresolved":false,"context_lines":[{"line_number":4460,"context_line":"        except exception.InstanceNotFound:"},{"line_number":4461,"context_line":"            if instance.vm_state !\u003d vm_states.BUILDING:"},{"line_number":4462,"context_line":"                raise"},{"line_number":4463,"context_line":"            raise exception.InstanceNotReady(instance_id\u003dinstance.uuid)"},{"line_number":4464,"context_line":"        return connect_info"},{"line_number":4465,"context_line":""},{"line_number":4466,"context_line":"    @messaging.expected_exceptions(exception.ConsoleTypeInvalid,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_aac86f23","line":4463,"updated":"2016-02-16 16:30:19.000000000","message":"there was a blank line before return","commit_id":"a31527650656fe2ebbb27694216ac87553102ece"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"8d0cb5410a4269b11fd4e473d372b8b4aa46a0ed","unresolved":false,"context_lines":[{"line_number":4478,"context_line":"                \"vnc\", CONF.vnc.enabled, \u0027novnc\u0027,"},{"line_number":4479,"context_line":"                CONF.vnc.novncproxy_base_url, self.driver.get_vnc_console,"},{"line_number":4480,"context_line":"                context, instance, console_type)"},{"line_number":4481,"context_line":"        else:"},{"line_number":4482,"context_line":"            return self._get_conn_inform("},{"line_number":4483,"context_line":"                \"vnc\", CONF.vnc.enabled, \u0027xvpvnc\u0027,"},{"line_number":4484,"context_line":"                CONF.vnc.xvpvncproxy_base_url, self.driver.get_vnc_console,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_0d0dfde7","line":4481,"updated":"2016-02-17 14:10:44.000000000","message":"Shouldn\u0027t you still validate here if console_type \u003d\u003d \u0027xpvnc\u0027 ?  Is it possible that console_type isn\u0027t novnc or xpvns ?  If so then raise exception.ConsoleTypeInvalid.","commit_id":"ff5959eab7bdf8f08662bbeca468a9aef750904e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"8d0cb5410a4269b11fd4e473d372b8b4aa46a0ed","unresolved":false,"context_lines":[{"line_number":4507,"context_line":"    @wrap_instance_fault"},{"line_number":4508,"context_line":"    def get_rdp_console(self, context, console_type, instance):"},{"line_number":4509,"context_line":"        \"\"\"Return connection information for a RDP console.\"\"\""},{"line_number":4510,"context_line":"        return self._get_conn_inform("},{"line_number":4511,"context_line":"            \"RDP\", CONF.rdp.enabled, \u0027rdp-html5\u0027,"},{"line_number":4512,"context_line":"            CONF.rdp.html5_proxy_base_url, self.driver.get_rdp_console,"},{"line_number":4513,"context_line":"            context, instance, console_type)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dae33548_4dcc256a","line":4510,"updated":"2016-02-17 14:10:44.000000000","message":"Same thing here.  Should we check if console_type \u003d\u003d \u0027rdp-html5\u0027 ?","commit_id":"ff5959eab7bdf8f08662bbeca468a9aef750904e"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"db179fe1e0ddb34f7ccfdf7fd69f351092f466ae","unresolved":false,"context_lines":[{"line_number":4385,"context_line":"            access_url \u003d \u0027%s?token\u003d%s\u0027 % (CONF.vnc.novncproxy_base_url, token)"},{"line_number":4386,"context_line":"        elif console_type \u003d\u003d \u0027xvpvnc\u0027:"},{"line_number":4387,"context_line":"            access_url \u003d \u0027%s?token\u003d%s\u0027 % (CONF.vnc.xvpvncproxy_base_url, token)"},{"line_number":4388,"context_line":"        else:"},{"line_number":4389,"context_line":"            raise exception.ConsoleTypeInvalid(console_type\u003dconsole_type)"},{"line_number":4390,"context_line":""},{"line_number":4391,"context_line":"        try:"},{"line_number":4392,"context_line":"            # Retrieve connect info from driver, and then decorate with our"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_90886424","side":"PARENT","line":4389,"range":{"start_line":4388,"start_character":8,"end_line":4389,"end_character":73},"updated":"2016-07-04 14:00:44.000000000","message":"it looks like you missed that","commit_id":"4c4591f2cd887fdc22828e12f0c297c051bbd912"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"db179fe1e0ddb34f7ccfdf7fd69f351092f466ae","unresolved":false,"context_lines":[{"line_number":4407,"context_line":"                CONF.vnc.novncproxy_base_url, self.driver.get_vnc_console,"},{"line_number":4408,"context_line":"                context, instance, console_type)"},{"line_number":4409,"context_line":"        else:"},{"line_number":4410,"context_line":"            return self._get_conn_inform("},{"line_number":4411,"context_line":"                \"vnc\", CONF.vnc.enabled, \u0027xvpvnc\u0027,"},{"line_number":4412,"context_line":"                CONF.vnc.xvpvncproxy_base_url, self.driver.get_vnc_console,"},{"line_number":4413,"context_line":"                context, instance, console_type)"},{"line_number":4414,"context_line":""},{"line_number":4415,"context_line":"    @messaging.expected_exceptions(exception.ConsoleTypeInvalid,"},{"line_number":4416,"context_line":"                                   exception.InstanceNotReady,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_1078f4c3","line":4413,"range":{"start_line":4410,"start_character":12,"end_line":4413,"end_character":48},"updated":"2016-07-04 14:00:44.000000000","message":"so if it\u0027s not \u0027xvpvnc\u0027 this one will fail on line 4377, right? why not to remove console_type_str and perform validation in get_xxx_console methods instead? In this case validation won\u0027t be spread on two methods. It will make the code a bit easier to read.","commit_id":"c46708cd12bcc711ec8a189fb001cdae39a90869"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8b7f60158ed1d4ce2e7a274f10b1148c4a979d","unresolved":false,"context_lines":[{"line_number":4430,"context_line":"        else:"},{"line_number":4431,"context_line":"            return b\u0027\\n\u0027.join(log.split(b\u0027\\n\u0027)[-int(length):])"},{"line_number":4432,"context_line":""},{"line_number":4433,"context_line":"    def _get_conn_inform(self, type_str, conf_enable,"},{"line_number":4434,"context_line":"                         access_url, console_fn, context,"},{"line_number":4435,"context_line":"                         instance, console_type):"},{"line_number":4436,"context_line":"        \"\"\"Return connection information for a \u0027type_str\u0027 console.\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_5145bf6f","line":4433,"range":{"start_line":4433,"start_character":8,"end_line":4433,"end_character":24},"updated":"2017-11-10 00:02:19.000000000","message":"_get_connect_info?","commit_id":"8f87b90d3117d07344648116a28570e2aba65201"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8b7f60158ed1d4ce2e7a274f10b1148c4a979d","unresolved":false,"context_lines":[{"line_number":4466,"context_line":"        \"\"\"Return connection information for a vnc console.\"\"\""},{"line_number":4467,"context_line":"        if console_type \u003d\u003d \u0027novnc\u0027 or console_type \u003d\u003d \u0027xvpvnc\u0027:"},{"line_number":4468,"context_line":"            return self._get_conn_inform("},{"line_number":4469,"context_line":"                \"vnc\", CONF.vnc.enabled, CONF.vnc.novncproxy_base_url,"},{"line_number":4470,"context_line":"                self.driver.get_vnc_console, context, instance, console_type)"},{"line_number":4471,"context_line":"        else:"},{"line_number":4472,"context_line":"            raise exception.ConsoleTypeInvalid(console_type\u003dconsole_type)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_f1adcb31","line":4469,"range":{"start_line":4469,"start_character":50,"end_line":4469,"end_character":69},"updated":"2017-11-10 00:02:19.000000000","message":"This should be \u0027xvpvncproxy_base_url\u0027 for the \u0027xvpvnc\u0027 console_type, right?","commit_id":"8f87b90d3117d07344648116a28570e2aba65201"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8b8b7f60158ed1d4ce2e7a274f10b1148c4a979d","unresolved":false,"context_lines":[{"line_number":4466,"context_line":"        \"\"\"Return connection information for a vnc console.\"\"\""},{"line_number":4467,"context_line":"        if console_type \u003d\u003d \u0027novnc\u0027 or console_type \u003d\u003d \u0027xvpvnc\u0027:"},{"line_number":4468,"context_line":"            return self._get_conn_inform("},{"line_number":4469,"context_line":"                \"vnc\", CONF.vnc.enabled, CONF.vnc.novncproxy_base_url,"},{"line_number":4470,"context_line":"                self.driver.get_vnc_console, context, instance, console_type)"},{"line_number":4471,"context_line":"        else:"},{"line_number":4472,"context_line":"            raise exception.ConsoleTypeInvalid(console_type\u003dconsole_type)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f485f77_914b3786","line":4469,"range":{"start_line":4469,"start_character":50,"end_line":4469,"end_character":69},"updated":"2017-11-10 00:02:19.000000000","message":"ditto","commit_id":"8f87b90d3117d07344648116a28570e2aba65201"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"106f9ea9a25487dcfc2b5918c675a36813079cad","unresolved":false,"context_lines":[{"line_number":3606,"context_line":"        console \u003d self.compute.get_mks_console(self.context, \u0027webmks\u0027,"},{"line_number":3607,"context_line":"                                               instance\u003dinstance)"},{"line_number":3608,"context_line":"        self.assertTrue(console)"},{"line_number":3609,"context_line":""},{"line_number":3610,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":3611,"context_line":""},{"line_number":3612,"context_line":"    def test_rdphtml5_rdp_console(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_ea9a7762","line":3609,"updated":"2016-02-16 16:30:19.000000000","message":"you can remove this extra line to look the same","commit_id":"a31527650656fe2ebbb27694216ac87553102ece"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"106f9ea9a25487dcfc2b5918c675a36813079cad","unresolved":false,"context_lines":[{"line_number":3608,"context_line":"        self.assertTrue(console)"},{"line_number":3609,"context_line":""},{"line_number":3610,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":3611,"context_line":""},{"line_number":3612,"context_line":"    def test_rdphtml5_rdp_console(self):"},{"line_number":3613,"context_line":"        # Make sure we can a rdp console for an instance."},{"line_number":3614,"context_line":"        self.flags(enabled\u003dFalse, group\u003d\u0027vnc\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_2ad3bf05","line":3611,"updated":"2016-02-16 16:30:19.000000000","message":"I think you could create one private test function and run several testcases using it (and also re-rewrite some existing cases to remove some duplicated code in the test file)","commit_id":"a31527650656fe2ebbb27694216ac87553102ece"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"e75d630834af88c81847df6052f33a13ab30504a","unresolved":false,"context_lines":[{"line_number":3608,"context_line":"        self.assertTrue(console)"},{"line_number":3609,"context_line":""},{"line_number":3610,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":3611,"context_line":""},{"line_number":3612,"context_line":"    def test_rdphtml5_rdp_console(self):"},{"line_number":3613,"context_line":"        # Make sure we can a rdp console for an instance."},{"line_number":3614,"context_line":"        self.flags(enabled\u003dFalse, group\u003d\u0027vnc\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dae33548_57350bf5","line":3611,"in_reply_to":"dae33548_2ad3bf05","updated":"2016-02-16 17:34:13.000000000","message":"I think that this should be done as a followup rather than here, so we are sure that everything is fine in this patch.","commit_id":"a31527650656fe2ebbb27694216ac87553102ece"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"3d690939a0bf277dcd9f1b46cc99b83ea87aa1dd","unresolved":false,"context_lines":[{"line_number":3341,"context_line":""},{"line_number":3342,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":3343,"context_line":""},{"line_number":3344,"context_line":"    def test_console_types(self):"},{"line_number":3345,"context_line":"        # This testing all get_*_console function"},{"line_number":3346,"context_line":"        group \u003d [\u0027vnc\u0027, \u0027vnc\u0027, \u0027spice\u0027, \u0027rdp\u0027, \u0027mks\u0027, \u0027serial_console\u0027]"},{"line_number":3347,"context_line":"        console_type \u003d [\u0027novnc\u0027, \u0027xvpvnc\u0027, \u0027spice-html5\u0027, \u0027rdp-html5\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_9fe666ae","line":3344,"updated":"2016-02-17 09:33:03.000000000","message":"There should be one private generic method that takes get_console and console_type parameters imo. So you just pass method and console_type from a test, e.g.,\n\ndef test_novnc_vnc_console(self):\n    _test_console_types(self.compute.get_vnc_console, \u0027novnc\u0027)","commit_id":"e1be44cc62fffe1c22986d23556f712e807a580d"}]}
