)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f63643d0ed31d5b9346e551c2f8f7b7bd315963c","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"NOTE: nova-serialproxy currently supports only TCP sockets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements bp:nova-compatible-serial-console"},{"line_number":16,"context_line":"Change-Id: Ie24baedb80d43d0587f3f4f332cb0d97cf9f55ec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1af94dfe_5b349f48","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":44},"updated":"2016-03-19 00:44:28.000000000","message":"Before this patch, I guess the corresponding ironic patch is necessary to be merged. If right, it is necessary to add \"Depends-On: \u003cironic change-id\u003e\" in the commit message.","commit_id":"2a8fa54003cd494373a54c0e525dcc6547631feb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"24b968c95b05eb9e42c709c58742ef6177396bde","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: nova-serialproxy currently supports only TCP sockets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Bug: #1553083"},{"line_number":16,"context_line":"Depends-On: 55aa693f1f242b5d0edfb44bc1d8d5f5f6b5ac98"},{"line_number":17,"context_line":"Change-Id: Ie24baedb80d43d0587f3f4f332cb0d97cf9f55ec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa0719c6_bea46f57","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":52},"updated":"2016-03-21 20:25:46.000000000","message":"Which patch is depended by this patch?\nI cannot open the corresponding patch on the gerrit.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"3df0d078d14978174c0bba9d957acc3e34c34dd1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: nova-serialproxy currently supports only TCP sockets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Bug: #1553083"},{"line_number":16,"context_line":"Depends-On: 55aa693f1f242b5d0edfb44bc1d8d5f5f6b5ac98"},{"line_number":17,"context_line":"Change-Id: Ie24baedb80d43d0587f3f4f332cb0d97cf9f55ec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da0c15f0_3d915c53","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":52},"in_reply_to":"fa0719c6_bea46f57","updated":"2016-03-28 07:53:47.000000000","message":"Sorry, I\u0027ll fix it.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0ba95660acf4299d8fbc9cffc85957757f6ed9c5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"NOTE: nova-serialproxy currently supports only TCP sockets."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partial-Bug: #1553083"},{"line_number":16,"context_line":"Depends-On: 55aa693f1f242b5d0edfb44bc1d8d5f5f6b5ac98"},{"line_number":17,"context_line":"Change-Id: Ie24baedb80d43d0587f3f4f332cb0d97cf9f55ec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa0719c6_fc77019d","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":52},"in_reply_to":"fa0719c6_bea46f57","updated":"2016-03-22 07:12:49.000000000","message":"Yea, it should be depends-on on Ironicclient patch.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"66f5b787e11ad94754613fcf789cadea6fbf880a","unresolved":false,"context_lines":[{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        console_info \u003d console[\"console_info\"]"},{"line_number":1209,"context_line":"        if console_info[\"type\"] !\u003d \"socat\":"},{"line_number":1210,"context_line":"            LOG.error(_(\u0027The console type is not \"socat\".\u0027),"},{"line_number":1211,"context_line":"                        instance\u003dinstance)"},{"line_number":1212,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1af94dfe_9b44674a","line":1211,"range":{"start_line":1210,"start_character":0,"end_line":1211,"end_character":42},"updated":"2016-03-19 00:06:29.000000000","message":"it is good to include which type is gotten from ironic on LOG.erro msg.\n\nIn addition, it is necessary to cover msg with _LE().\nThe log level also seems a little high for me, because if clients do this a lot of times the log file is filled with this msg. How about warning instead?","commit_id":"2a8fa54003cd494373a54c0e525dcc6547631feb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"66f5b787e11ad94754613fcf789cadea6fbf880a","unresolved":false,"context_lines":[{"line_number":1214,"context_line":"        try:"},{"line_number":1215,"context_line":"            url \u003d urlparse.urlparse(console_info.get(\"url\"), \"\")"},{"line_number":1216,"context_line":"        except AttributeError:"},{"line_number":1217,"context_line":"            LOG.error(_(\u0027url is invalid.\u0027), instance\u003dinstance)"},{"line_number":1218,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"        if url.scheme not in [\"tcp\", \"tcp6\"]:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1af94dfe_5ba49f06","line":1217,"range":{"start_line":1217,"start_character":12,"end_line":1217,"end_character":62},"updated":"2016-03-19 00:06:29.000000000","message":"ditto","commit_id":"2a8fa54003cd494373a54c0e525dcc6547631feb"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"66f5b787e11ad94754613fcf789cadea6fbf880a","unresolved":false,"context_lines":[{"line_number":1218,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1219,"context_line":""},{"line_number":1220,"context_line":"        if url.scheme not in [\"tcp\", \"tcp6\"]:"},{"line_number":1221,"context_line":"            LOG.error(_(\u0027only \"tcp\" and \"tcp6\" are supported.\u0027),"},{"line_number":1222,"context_line":"                      instance\u003dinstance)"},{"line_number":1223,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":"        return ctype.ConsoleSerial(host\u003durl.hostname, port\u003durl.port)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1af94dfe_3ba7130c","line":1222,"range":{"start_line":1221,"start_character":12,"end_line":1222,"end_character":40},"updated":"2016-03-19 00:06:29.000000000","message":"ditto","commit_id":"2a8fa54003cd494373a54c0e525dcc6547631feb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0ba95660acf4299d8fbc9cffc85957757f6ed9c5","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"            console \u003d self.ironicclient.call(\"node.get_console\", node.uuid)"},{"line_number":1179,"context_line":"            if console[\"console_enabled\"]:"},{"line_number":1180,"context_line":"                self.ironicclient.call(\"node.set_console_mode\", node.uuid,"},{"line_number":1181,"context_line":"                                       False)"},{"line_number":1182,"context_line":"            # And enable it."},{"line_number":1183,"context_line":"            self.ironicclient.call(\"node.set_console_mode\", node.uuid, True)"},{"line_number":1184,"context_line":"            # Then aquire console information."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_b17db2b3","line":1181,"range":{"start_line":1181,"start_character":44,"end_line":1181,"end_character":45},"updated":"2016-03-22 07:12:49.000000000","message":"So in case of already enabled (which I think is the case where any user already using that console), it should return console is in use? with current implementation it will disconnect the previous user.\n\nPlease let me know if am missing anything.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":659,"name":"Akira Yoshiyama","email":"akirayoshiyama@gmail.com","username":"yosshy"},"change_message_id":"3df0d078d14978174c0bba9d957acc3e34c34dd1","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"            console \u003d self.ironicclient.call(\"node.get_console\", node.uuid)"},{"line_number":1179,"context_line":"            if console[\"console_enabled\"]:"},{"line_number":1180,"context_line":"                self.ironicclient.call(\"node.set_console_mode\", node.uuid,"},{"line_number":1181,"context_line":"                                       False)"},{"line_number":1182,"context_line":"            # And enable it."},{"line_number":1183,"context_line":"            self.ironicclient.call(\"node.set_console_mode\", node.uuid, True)"},{"line_number":1184,"context_line":"            # Then aquire console information."}],"source_content_type":"text/x-python","patch_set":6,"id":"da0c15f0_5d27f011","line":1181,"range":{"start_line":1181,"start_character":44,"end_line":1181,"end_character":45},"in_reply_to":"fa0719c6_b17db2b3","updated":"2016-03-28 07:53:47.000000000","message":"For example, when a console tab of a baremetal node was opened on Horizon and then a console dialog was opened, the second one doesn\u0027t work because most serial console like IPMI serial-on-lan don\u0027t allow to connect concurrently. So, we need to disconnect the console session and then to create a new one.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":19258,"name":"lifen","email":"lovelyc.lifen@huawei.com"},"change_message_id":"9de8132d2dd418d184f563f4303063ef6eee28ba","unresolved":false,"context_lines":[{"line_number":1180,"context_line":"                self.ironicclient.call(\"node.set_console_mode\", node.uuid,"},{"line_number":1181,"context_line":"                                       False)"},{"line_number":1182,"context_line":"            # And enable it."},{"line_number":1183,"context_line":"            self.ironicclient.call(\"node.set_console_mode\", node.uuid, True)"},{"line_number":1184,"context_line":"            # Then aquire console information."},{"line_number":1185,"context_line":"            console \u003d self.ironicclient.call(\"node.get_console\", node.uuid)"},{"line_number":1186,"context_line":"        except (exception.NovaException,         # Retry failed"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_48238fa7","line":1183,"range":{"start_line":1183,"start_character":0,"end_line":1183,"end_character":76},"updated":"2016-04-14 01:57:22.000000000","message":"Because set_console_mode is asynchronously,so here need to wait some time and then get the url.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":19258,"name":"lifen","email":"lovelyc.lifen@huawei.com"},"change_message_id":"7f6f4b720f90b3763a0058871ef18938cfebe14b","unresolved":false,"context_lines":[{"line_number":1180,"context_line":"                self.ironicclient.call(\"node.set_console_mode\", node.uuid,"},{"line_number":1181,"context_line":"                                       False)"},{"line_number":1182,"context_line":"            # And enable it."},{"line_number":1183,"context_line":"            self.ironicclient.call(\"node.set_console_mode\", node.uuid, True)"},{"line_number":1184,"context_line":"            # Then aquire console information."},{"line_number":1185,"context_line":"            console \u003d self.ironicclient.call(\"node.get_console\", node.uuid)"},{"line_number":1186,"context_line":"        except (exception.NovaException,         # Retry failed"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_4b01c969","line":1183,"range":{"start_line":1183,"start_character":0,"end_line":1183,"end_character":76},"updated":"2016-04-14 02:48:13.000000000","message":"Because set_console_mode is asynchronously,so here need to wait some time and then get the url.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"f95562fb5eb86e10fe2d95f727250866234a61fd","unresolved":false,"context_lines":[{"line_number":1180,"context_line":"                self.ironicclient.call(\"node.set_console_mode\", node.uuid,"},{"line_number":1181,"context_line":"                                       False)"},{"line_number":1182,"context_line":"            # And enable it."},{"line_number":1183,"context_line":"            self.ironicclient.call(\"node.set_console_mode\", node.uuid, True)"},{"line_number":1184,"context_line":"            # Then aquire console information."},{"line_number":1185,"context_line":"            console \u003d self.ironicclient.call(\"node.get_console\", node.uuid)"},{"line_number":1186,"context_line":"        except (exception.NovaException,         # Retry failed"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba0121b8_3accfd34","line":1183,"range":{"start_line":1183,"start_character":12,"end_line":1183,"end_character":76},"updated":"2016-03-29 08:44:19.000000000","message":"I\u0027ve tried with Ironic agent_ssh and it failed because console_info is null, so that we need to wait for console mode will be active.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d8c53a6ae5722b1bc5d03bfd4c5ed689f8d0155f","unresolved":false,"context_lines":[{"line_number":1194,"context_line":""},{"line_number":1195,"context_line":"        console_info \u003d console[\"console_info\"]"},{"line_number":1196,"context_line":"        if console_info[\"type\"] !\u003d \"socat\":"},{"line_number":1197,"context_line":"            LOG.warning(_LE(\u0027console type is not \"socat\".\u0027),"},{"line_number":1198,"context_line":"                        instance\u003dinstance)"},{"line_number":1199,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1200,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_7ebbf7c4","line":1197,"range":{"start_line":1197,"start_character":24,"end_line":1197,"end_character":27},"updated":"2016-03-21 20:22:01.000000000","message":"Here should be _LW() for fitting warning level.","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d8c53a6ae5722b1bc5d03bfd4c5ed689f8d0155f","unresolved":false,"context_lines":[{"line_number":1201,"context_line":"        try:"},{"line_number":1202,"context_line":"            url \u003d urlparse.urlparse(console_info.get(\"url\"), \"\")"},{"line_number":1203,"context_line":"        except AttributeError:"},{"line_number":1204,"context_line":"            LOG.warning(_LE(\u0027url is invalid.\u0027), instance\u003dinstance)"},{"line_number":1205,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"        if url.scheme not in [\"tcp\", \"tcp6\"]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_beb58fce","line":1204,"range":{"start_line":1204,"start_character":24,"end_line":1204,"end_character":27},"updated":"2016-03-21 20:22:01.000000000","message":"ditto","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d8c53a6ae5722b1bc5d03bfd4c5ed689f8d0155f","unresolved":false,"context_lines":[{"line_number":1205,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"        if url.scheme not in [\"tcp\", \"tcp6\"]:"},{"line_number":1208,"context_line":"            LOG.warning(_LE(\u0027only \"tcp\" and \"tcp6\" are supported.\u0027),"},{"line_number":1209,"context_line":"                        instance\u003dinstance)"},{"line_number":1210,"context_line":"            raise exception.ConsoleTypeUnavailable(console_type\u003d\u0027serial\u0027)"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa0719c6_beec6fc8","line":1208,"range":{"start_line":1208,"start_character":24,"end_line":1208,"end_character":27},"updated":"2016-03-21 20:22:01.000000000","message":"ditto","commit_id":"bf4ee3f71ed2474516feeb283b130b3da1943003"}]}
