)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2019-07-21 10:34:36 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ironic serial console process doesn\u0027t exit on other conductor node"},{"line_number":8,"context_line":"after main conductor take over back the baremetal node"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"We have 3 conductor nodes."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7faddb67_6f02410c","line":8,"updated":"2019-07-22 02:01:57.000000000","message":"please shorten the title line to be more readable.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"}],"ironic/conductor/manager.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":2178,"context_line":"                break"},{"line_number":2179,"context_line":""},{"line_number":2180,"context_line":"    @METRICS.timer(\u0027ConductorManager._sync_socat_console_interval\u0027)"},{"line_number":2181,"context_line":"    @periodics.periodic(spacing\u003dCONF.conductor.sync_socat_console_interval)"},{"line_number":2182,"context_line":"    def _cancel_unused_console_pid(self, context):"},{"line_number":2183,"context_line":"        filters \u003d {\u0027reserved\u0027: False,"},{"line_number":2184,"context_line":"                   \u0027maintenance\u0027: False,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_aca60753","line":2181,"updated":"2019-07-22 02:01:57.000000000","message":"we should be able to disable this periodic task, thus this required a \"enabled\u003d\" argument.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":2180,"context_line":"    @METRICS.timer(\u0027ConductorManager._sync_socat_console_interval\u0027)"},{"line_number":2181,"context_line":"    @periodics.periodic(spacing\u003dCONF.conductor.sync_socat_console_interval)"},{"line_number":2182,"context_line":"    def _cancel_unused_console_pid(self, context):"},{"line_number":2183,"context_line":"        filters \u003d {\u0027reserved\u0027: False,"},{"line_number":2184,"context_line":"                   \u0027maintenance\u0027: False,"},{"line_number":2185,"context_line":"                   \u0027provision_state\u0027: states.ACTIVE}"},{"line_number":2186,"context_line":"        node_iter \u003d self.all_nodes(fields\u003d[\u0027id\u0027, \u0027conductor_affinity\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_ec087f2e","line":2183,"range":{"start_line":2183,"start_character":19,"end_line":2183,"end_character":37},"updated":"2019-07-22 02:01:57.000000000","message":"stop console does not require a node lock, this can be removed.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":2181,"context_line":"    @periodics.periodic(spacing\u003dCONF.conductor.sync_socat_console_interval)"},{"line_number":2182,"context_line":"    def _cancel_unused_console_pid(self, context):"},{"line_number":2183,"context_line":"        filters \u003d {\u0027reserved\u0027: False,"},{"line_number":2184,"context_line":"                   \u0027maintenance\u0027: False,"},{"line_number":2185,"context_line":"                   \u0027provision_state\u0027: states.ACTIVE}"},{"line_number":2186,"context_line":"        node_iter \u003d self.all_nodes(fields\u003d[\u0027id\u0027, \u0027conductor_affinity\u0027],"},{"line_number":2187,"context_line":"                                   filters\u003dfilters)"},{"line_number":2188,"context_line":"        for node_uuid, driver, node_id, conductor_affinity in node_iter:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_cc0b4329","line":2185,"range":{"start_line":2184,"start_character":19,"end_line":2185,"end_character":52},"updated":"2019-07-22 02:01:57.000000000","message":"these states have nothing to do with console status, a managed node could be using console as long as its console interface is active.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":2192,"context_line":"                LOG.info(\u0027Stop console for node %(node)s\u0027,"},{"line_number":2193,"context_line":"                         {\u0027node\u0027: node_uuid})"},{"line_number":2194,"context_line":"                try:"},{"line_number":2195,"context_line":"                    console_utils._stop_console(node_uuid)"},{"line_number":2196,"context_line":"                except Exception as e:"},{"line_number":2197,"context_line":"                    continue"},{"line_number":2198,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_4ffd0507","line":2195,"range":{"start_line":2195,"start_character":20,"end_line":2195,"end_character":58},"updated":"2019-07-22 02:01:57.000000000","message":"no all nodes has console interface enabled, we have to check this before stopping it.\nAnd we should not call _stop_console directly, by doing this you effectively bypassed sol deactive. console_utils is supposed be used by console drivers.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":2193,"context_line":"                         {\u0027node\u0027: node_uuid})"},{"line_number":2194,"context_line":"                try:"},{"line_number":2195,"context_line":"                    console_utils._stop_console(node_uuid)"},{"line_number":2196,"context_line":"                except Exception as e:"},{"line_number":2197,"context_line":"                    continue"},{"line_number":2198,"context_line":""},{"line_number":2199,"context_line":"    @METRICS.timer(\u0027ConductorManager.validate_driver_interfaces\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_4c4af383","line":2196,"range":{"start_line":2196,"start_character":23,"end_line":2196,"end_character":32},"updated":"2019-07-22 02:01:57.000000000","message":"this is too abroad, there are two exceptions could happend: NoConsolePid and ConsoleError, and we need to log something here instead of silently passing.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"}],"ironic/conf/conductor.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"3cf693c4b883d42a70b4065aa0dcd9856b7c9ea5","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                      \u0027conductor will check for nodes that it should \u0027"},{"line_number":145,"context_line":"                      \u0027\"take over\". Set it to 0 (or a negative value) to \u0027"},{"line_number":146,"context_line":"                      \u0027disable the check entirely.\u0027)),"},{"line_number":147,"context_line":"    cfg.IntOpt(\u0027sync_socat_console_interval\u0027,"},{"line_number":148,"context_line":"               default\u003d180,"},{"line_number":149,"context_line":"               help\u003d_(\u0027kill socat console process when not used\u0027)),"},{"line_number":150,"context_line":"    cfg.StrOpt(\u0027configdrive_swift_container\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_4c619311","line":147,"updated":"2019-07-22 02:01:57.000000000","message":"we need \"min\u003d0\" to restrict this value to be non-negative.\nironic has defined an interface for all console implementations, from the code change I think it also applies to shellinabox, we could remove the socat part to reword to make it more generic.","commit_id":"740a92cee403bce06b59d19ca8e4a763143781d0"}]}
