)]}'
{"masakari/conf/engine_driver.py":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"e3701dae9448ee9e82cd2f9f2edc99cfe20428dc","unresolved":true,"context_lines":[{"line_number":115,"context_line":"]"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"taskflow_driver_recovery_flows \u003d ["},{"line_number":118,"context_line":"    cfg.StrOpt(\"service_disable_reason_for_failed_host\","},{"line_number":119,"context_line":"               default\u003d\"Masakari detected host failed.\","},{"line_number":120,"context_line":"               help\u003d\"Compute disable reason in case Masakari detects host \""},{"line_number":121,"context_line":"                    \"failure.\"),"},{"line_number":122,"context_line":"    cfg.StrOpt(\"service_disable_reason_for_failed_process\","},{"line_number":123,"context_line":"               default\u003d\"Masakari detected process failed.\","},{"line_number":124,"context_line":"               help\u003d\"Compute disable reason in case Masakari detects process \""},{"line_number":125,"context_line":"                    \"failure.\"),"},{"line_number":126,"context_line":"    cfg.Opt(\u0027host_auto_failure_recovery_tasks\u0027,"},{"line_number":127,"context_line":"            type\u003dtypes.Dict("},{"line_number":128,"context_line":"                bounds\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9037281c_b6f042e0","line":125,"range":{"start_line":118,"start_character":0,"end_line":125,"end_character":32},"updated":"2021-08-17 06:35:10.000000000","message":"I think the goal now would be to use host_failure_opts and create analogous process_failure_opts. Then you can use the same opt name \"service_disable_reason\" in both and they are properly grouped.","commit_id":"2c574ab112c3847cf5e1f6fb7de3d122cfd085a0"}],"masakari/conf/nova.py":[{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"00de08f83b988d12c3fc8bab442b26f5a42a1c4f","unresolved":true,"context_lines":[{"line_number":55,"context_line":"                    \u0027privileged account.\u0027),"},{"line_number":56,"context_line":"    cfg.StrOpt(\u0027os_system_scope\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Scope for system operations.\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\"service_disable_reason_for_failed_host\","},{"line_number":59,"context_line":"               default\u003d\"Masakari detected host failed.\","},{"line_number":60,"context_line":"               help\u003d\"Compute disable reason \""},{"line_number":61,"context_line":"                    \"in case Masakari detects host failure.\"),"},{"line_number":62,"context_line":"    cfg.StrOpt(\"service_disable_reason_for_failed_process\","},{"line_number":63,"context_line":"               default\u003d\"Masakari detected process failed.\","},{"line_number":64,"context_line":"               help\u003d\"Compute disable reason \""},{"line_number":65,"context_line":"                    \"in case Masakari detects process failure.\"),"},{"line_number":66,"context_line":"]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def register_opts(conf):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa65e86_2c1cd570","line":66,"range":{"start_line":58,"start_character":0,"end_line":66,"end_character":0},"updated":"2021-08-16 06:30:19.000000000","message":"Better to add the new configurations to conf/engine_driver.py.","commit_id":"4530c20dc7c36a97a3653aba19a9fadf2e7dc427"}],"masakari/engine/drivers/taskflow/process_failure.py":[{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"00de08f83b988d12c3fc8bab442b26f5a42a1c4f","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        if not self.novaclient.is_service_disabled(self.context, host_name,"},{"line_number":46,"context_line":"                                                   process_name):"},{"line_number":47,"context_line":"            # disable compute node on given host"},{"line_number":48,"context_line":"            self.novaclient.enable_disable_service(self.context, host_name,"},{"line_number":49,"context_line":"                reason\u003dCONF.service_disable_reason_for_failed_process)"},{"line_number":50,"context_line":"            msg \u003d \"Disabled compute service on host: \u0027%s\u0027\" % host_name"},{"line_number":51,"context_line":"            self.update_details(msg, 1.0)"},{"line_number":52,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"409dce33_74c28dab","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":70},"updated":"2021-08-16 06:30:19.000000000","message":"Would you please update the unite tests for this patch?","commit_id":"4530c20dc7c36a97a3653aba19a9fadf2e7dc427"}],"masakari/tests/unit/fakes.py":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"fe1933c491ec889b88ab9df605f8bc1ee730cdd8","unresolved":true,"context_lines":[{"line_number":172,"context_line":"                    services.append(service)"},{"line_number":173,"context_line":"            return services"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        def disable_log_reason(self, service_id, reason):"},{"line_number":176,"context_line":"            for _service in self._services:"},{"line_number":177,"context_line":"                if _service.id \u003d\u003d service_id:"},{"line_number":178,"context_line":"                    service \u003d _service"},{"line_number":179,"context_line":"            service.status \u003d \u0027disabled\u0027"},{"line_number":180,"context_line":"            service.disabled_reason \u003d reason"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def __init__(self):"},{"line_number":183,"context_line":"        self.servers \u003d FakeNovaClient.ServerManager()"},{"line_number":184,"context_line":"        self.services \u003d FakeNovaClient.Services()"}],"source_content_type":"text/x-python","patch_set":1,"id":"a3336d33_970db1b7","line":181,"range":{"start_line":175,"start_character":0,"end_line":181,"end_character":0},"updated":"2021-08-07 10:38:11.000000000","message":"what is this for?","commit_id":"af6111c008fd61e0f23cd310e29c4210e0f9a161"},{"author":{"_account_id":32927,"name":"mitya-eremeev-2","display_name":"Mitya Eremeev","email":"mitossvyaz@mail.ru","username":"mitya-eremeev-2"},"change_message_id":"fa2238b2b6b530a7b5158e2b3520f73768f9ac4f","unresolved":true,"context_lines":[{"line_number":172,"context_line":"                    services.append(service)"},{"line_number":173,"context_line":"            return services"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        def disable_log_reason(self, service_id, reason):"},{"line_number":176,"context_line":"            for _service in self._services:"},{"line_number":177,"context_line":"                if _service.id \u003d\u003d service_id:"},{"line_number":178,"context_line":"                    service \u003d _service"},{"line_number":179,"context_line":"            service.status \u003d \u0027disabled\u0027"},{"line_number":180,"context_line":"            service.disabled_reason \u003d reason"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def __init__(self):"},{"line_number":183,"context_line":"        self.servers \u003d FakeNovaClient.ServerManager()"},{"line_number":184,"context_line":"        self.services \u003d FakeNovaClient.Services()"}],"source_content_type":"text/x-python","patch_set":1,"id":"e3cc1d0c_afb63c26","line":181,"range":{"start_line":175,"start_character":0,"end_line":181,"end_character":0},"in_reply_to":"a3336d33_970db1b7","updated":"2021-08-09 07:43:58.000000000","message":"The method \"nova.services.disable_log_reason\" was never used in code because \"reason\" was always None (dead code)\nNow \"reason\" is not None and the method is called.\nhttps://opendev.org/openstack/masakari/src/branch/master/masakari/compute/nova.py#L162\n\nWe need to mock the method for many tests.\n\nFor instance:\nTraceback (most recent call last):\n\n  File \"/usr/lib/python3.8/unittest/mock.py\", line 1325, in patched\n    return func(*newargs, **newkeywargs)\n  File \"/home/mitya/code/masakari/masakari/tests/unit/engine/drivers/taskflow/test_process_failure_flow.py\", line 130, in test_compute_process_failure_flow_compute_service_disabled_failed\n    task.execute(self.process_name, self.service_host)\n  File \"/home/mitya/code/masakari/masakari/engine/drivers/taskflow/process_failure.py\", line 48, in execute\n    self.novaclient.enable_disable_service(\n  File \"/home/mitya/code/masakari/masakari/compute/nova.py\", line 58, in wrapper\n    res \u003d method(self, ctx, *args, **kwargs)\n  File \"/home/mitya/code/masakari/masakari/compute/nova.py\", line 161, in enable_disable_service\n    nova.services.disable_log_reason(service.id, reason)\nAttributeError: \u0027Services\u0027 object has no attribute \u0027disable_log_reason\u0027","commit_id":"af6111c008fd61e0f23cd310e29c4210e0f9a161"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"4b4b56833a2ff0f365887f543b2a01ab3cf55f44","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                    services.append(service)"},{"line_number":173,"context_line":"            return services"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        def disable_log_reason(self, service_id, reason):"},{"line_number":176,"context_line":"            for _service in self._services:"},{"line_number":177,"context_line":"                if _service.id \u003d\u003d service_id:"},{"line_number":178,"context_line":"                    service \u003d _service"},{"line_number":179,"context_line":"            service.status \u003d \u0027disabled\u0027"},{"line_number":180,"context_line":"            service.disabled_reason \u003d reason"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def __init__(self):"},{"line_number":183,"context_line":"        self.servers \u003d FakeNovaClient.ServerManager()"},{"line_number":184,"context_line":"        self.services \u003d FakeNovaClient.Services()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3b6321d8_deb9a872","line":181,"range":{"start_line":175,"start_character":0,"end_line":181,"end_character":0},"in_reply_to":"e3cc1d0c_afb63c26","updated":"2021-08-14 18:43:00.000000000","message":"Thanks, I see now!","commit_id":"af6111c008fd61e0f23cd310e29c4210e0f9a161"}]}
