)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"69ad5894_f3de82c6","updated":"2022-02-02 15:47:34.000000000","message":"LGTM, just a few small details.","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a626e995_dbbc0653","updated":"2022-02-03 03:05:21.000000000","message":"Thanks Nick for the review. Very silly mistake, corrected them in PS3.","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"751e8399fd6773b2f2ed328e8869f356ef805941","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"36cb6c92_cb82bc40","updated":"2022-02-07 08:29:42.000000000","message":"This patch looks more like an variation of reserved host recovery workflow. It just treat the hosts in the segment as reserved hosts, and every time it would try to evacuate instances to one host in the segment.\nI\u0027m afraid it will lead to user misunderstanding and greater lag in recovery time. \nLet us listen to other\u0027s opinion.","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"8a48b059f0eddadd2d5b42e663b0981d8f32bb7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e1d32668_9525e93a","updated":"2022-04-01 01:42:50.000000000","message":"In the Openstack, it\u0027s Nova which scheduler all the instances. The auto recovery mechanism for instance HA also rely on Nove scheduler, so the instances would evacuate across failover segments. I think the solution is to optimize Nove scheduler, such as add a new FailvoerSegmentFilter filter for instance evacuations, or we can input a scope of available compute nodes when calling Nova evacuate api.\nNow there are for recovery mechanism, \u0027auto\u0027, \u0027reserved_host\u0027, \u0027auto_priority\u0027, \u0027rh_priority\u0027. But this patch, it is an variation of reserved host recovery mechanism, which makes the four recovery mechanism more like one, and it would reduce the success rate of evacuation especially for \u0027auto_priority\u0027 and \u0027rh_priority\u0027 recovery mechanism.","commit_id":"97d7852d76652af354d6b8d90d0d0a5e38b683d3"},{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"8965281218ab283c5989f0cddf68e7293565d418","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4b70a036_3448bf36","updated":"2022-02-07 19:50:25.000000000","message":"LGTM","commit_id":"97d7852d76652af354d6b8d90d0d0a5e38b683d3"},{"author":{"_account_id":33673,"name":"Alin-Gabriel Serdean","email":"alinserdean@gmail.com","username":"alins"},"change_message_id":"f38aad712ce2a47bd43996ce8578283940109672","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"69096a47_388b1772","updated":"2022-02-16 19:40:43.000000000","message":"LGTM","commit_id":"97d7852d76652af354d6b8d90d0d0a5e38b683d3"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"40b0f759f7b00193b5fca36d22dd2ffbcea3bfed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b0227322_f699a7cc","in_reply_to":"e1d32668_9525e93a","updated":"2022-04-13 03:22:45.000000000","message":"I agree with you that the correct approach will be to enhance Nova scheduler for the functionality required rather than the retry node by node approach used in the patch. This patch is more of a workaround which has its cons as I mentioned earlier.\nLooking at the API documentation, conceptually the recovery mechanism shall only work within the segment. And this is not the case with AUTO, so it will be great if this can be mentioned explicitly in the documentation.","commit_id":"97d7852d76652af354d6b8d90d0d0a5e38b683d3"}],"masakari/engine/drivers/taskflow/driver.py":[{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":true,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _execute_auto_workflow(self, context, novaclient, process_what,"},{"line_number":53,"context_line":"                               **kwargs):"},{"line_number":54,"context_line":"        print(\"in auto workflow\")"},{"line_number":55,"context_line":"        print(kwargs)"},{"line_number":56,"context_line":"        if not kwargs[\u0027segment_host_list\u0027]:"},{"line_number":57,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8b4feca_f04bfd2e","line":54,"updated":"2022-02-02 15:47:34.000000000","message":"The print statements should be log messages","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _execute_auto_workflow(self, context, novaclient, process_what,"},{"line_number":53,"context_line":"                               **kwargs):"},{"line_number":54,"context_line":"        print(\"in auto workflow\")"},{"line_number":55,"context_line":"        print(kwargs)"},{"line_number":56,"context_line":"        if not kwargs[\u0027segment_host_list\u0027]:"},{"line_number":57,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f6a3f21e_8ab93ac8","line":54,"in_reply_to":"f8b4feca_f04bfd2e","updated":"2022-02-03 03:05:21.000000000","message":"Done","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    def _execute_auto_workflow(self, context, novaclient, process_what,"},{"line_number":53,"context_line":"                               **kwargs):"},{"line_number":54,"context_line":"        print(\"in auto workflow\")"},{"line_number":55,"context_line":"        print(kwargs)"},{"line_number":56,"context_line":"        if not kwargs[\u0027segment_host_list\u0027]:"},{"line_number":57,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"},{"line_number":58,"context_line":"            raise exception.SegmentHostsUnavailable(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dbb483ed_11343cf3","line":55,"updated":"2022-02-02 15:47:34.000000000","message":"This looks like a debug statement. Is this useful in production?","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def _execute_auto_workflow(self, context, novaclient, process_what,"},{"line_number":53,"context_line":"                               **kwargs):"},{"line_number":54,"context_line":"        print(\"in auto workflow\")"},{"line_number":55,"context_line":"        print(kwargs)"},{"line_number":56,"context_line":"        if not kwargs[\u0027segment_host_list\u0027]:"},{"line_number":57,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"},{"line_number":58,"context_line":"            raise exception.SegmentHostsUnavailable(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"588c5125_521f1a38","line":55,"in_reply_to":"dbb483ed_11343cf3","updated":"2022-02-03 03:05:21.000000000","message":"Done","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":true,"context_lines":[{"line_number":57,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"},{"line_number":58,"context_line":"            raise exception.SegmentHostsUnavailable(message\u003dmsg)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        print(\"after exception\")"},{"line_number":61,"context_line":"        process_what[\u0027segment_host_list\u0027] \u003d kwargs.pop(\u0027segment_host_list\u0027)"},{"line_number":62,"context_line":"        process_what[\u0027reserved_host_list\u0027] \u003d []"},{"line_number":63,"context_line":"        flow_engine \u003d host_failure.get_auto_flow(context, novaclient,"}],"source_content_type":"text/x-python","patch_set":2,"id":"8a29c20a_6fac4891","line":60,"updated":"2022-02-02 15:47:34.000000000","message":"dito","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"},{"line_number":58,"context_line":"            raise exception.SegmentHostsUnavailable(message\u003dmsg)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        print(\"after exception\")"},{"line_number":61,"context_line":"        process_what[\u0027segment_host_list\u0027] \u003d kwargs.pop(\u0027segment_host_list\u0027)"},{"line_number":62,"context_line":"        process_what[\u0027reserved_host_list\u0027] \u003d []"},{"line_number":63,"context_line":"        flow_engine \u003d host_failure.get_auto_flow(context, novaclient,"}],"source_content_type":"text/x-python","patch_set":2,"id":"199ceb83_2cff0938","line":60,"in_reply_to":"8a29c20a_6fac4891","updated":"2022-02-03 03:05:21.000000000","message":"Done","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _execute_rh_workflow(self, context, novaclient, process_what,"},{"line_number":73,"context_line":"                             **kwargs):"},{"line_number":74,"context_line":"        print(\"in rh workflow\")"},{"line_number":75,"context_line":"        if not kwargs[\u0027reserved_host_list\u0027]:"},{"line_number":76,"context_line":"            msg \u003d _(\u0027No reserved_hosts available for evacuation.\u0027)"},{"line_number":77,"context_line":"            raise exception.ReservedHostsUnavailable(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9700f938_bb934a28","line":74,"updated":"2022-02-02 15:47:34.000000000","message":"dito","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _execute_rh_workflow(self, context, novaclient, process_what,"},{"line_number":73,"context_line":"                             **kwargs):"},{"line_number":74,"context_line":"        print(\"in rh workflow\")"},{"line_number":75,"context_line":"        if not kwargs[\u0027reserved_host_list\u0027]:"},{"line_number":76,"context_line":"            msg \u003d _(\u0027No reserved_hosts available for evacuation.\u0027)"},{"line_number":77,"context_line":"            raise exception.ReservedHostsUnavailable(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1b040bd4_ee7b7484","line":74,"in_reply_to":"9700f938_bb934a28","updated":"2022-02-03 03:05:21.000000000","message":"Done","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    def _execute_auto_priority_workflow(self, context, novaclient,"},{"line_number":92,"context_line":"                                        process_what, **kwargs):"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            print(\"calling auto workflow\")"},{"line_number":95,"context_line":"            self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":96,"context_line":"                                        **kwargs)"},{"line_number":97,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e222aad2_af6df579","line":94,"updated":"2022-02-02 15:47:34.000000000","message":"dito","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def _execute_auto_priority_workflow(self, context, novaclient,"},{"line_number":92,"context_line":"                                        process_what, **kwargs):"},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            print(\"calling auto workflow\")"},{"line_number":95,"context_line":"            self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":96,"context_line":"                                        **kwargs)"},{"line_number":97,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8cc27a05_539eec49","line":94,"in_reply_to":"e222aad2_af6df579","updated":"2022-02-03 03:05:21.000000000","message":"Done","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":19298,"name":"Nicolas Bock","email":"nicolas.bock@canonical.com","username":"nicolasbock"},"change_message_id":"c88597a4d74d992aeea72f5cb2c9256bf981c5a7","unresolved":true,"context_lines":[{"line_number":161,"context_line":"                                          **kwargs)"},{"line_number":162,"context_line":"            elif recovery_method \u003d\u003d ("},{"line_number":163,"context_line":"                    fields.FailoverSegmentRecoveryMethod.AUTO_PRIORITY):"},{"line_number":164,"context_line":"                print(\"calling auto priority workflow\")"},{"line_number":165,"context_line":"                self._execute_auto_priority_workflow("},{"line_number":166,"context_line":"                    context, novaclient,"},{"line_number":167,"context_line":"                    process_what, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f47631ab_1d705828","line":164,"updated":"2022-02-02 15:47:34.000000000","message":"dito","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"efe78f6d2611e5114fd356922dfd6730de7ea8a0","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                          **kwargs)"},{"line_number":162,"context_line":"            elif recovery_method \u003d\u003d ("},{"line_number":163,"context_line":"                    fields.FailoverSegmentRecoveryMethod.AUTO_PRIORITY):"},{"line_number":164,"context_line":"                print(\"calling auto priority workflow\")"},{"line_number":165,"context_line":"                self._execute_auto_priority_workflow("},{"line_number":166,"context_line":"                    context, novaclient,"},{"line_number":167,"context_line":"                    process_what, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0be0daf2_083a1374","line":164,"in_reply_to":"f47631ab_1d705828","updated":"2022-02-03 03:05:21.000000000","message":"Done","commit_id":"003f2fe2c795bef5d092806a4bff0cf319d90427"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"4957213b8855f18afa3ea0170892ec261a864d24","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        super(TaskFlowDriver, self).__init__()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _execute_auto_workflow(self, context, novaclient, process_what,"},{"line_number":53,"context_line":"                               **kwargs):"},{"line_number":54,"context_line":"        if not kwargs[\u0027segment_host_list\u0027]:"},{"line_number":55,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"},{"line_number":56,"context_line":"            raise exception.SegmentHostsUnavailable(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"28b6042d_834f17ef","line":53,"range":{"start_line":53,"start_character":39,"end_line":53,"end_character":41},"updated":"2022-02-05 10:47:03.000000000","message":"Is it actually necessary to use the **kwargs catchall here or can we use e.g. segment_host_list\u003dNone?","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"a682d33216f14dc56c57f8bb3e23ec2bf83b13da","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        super(TaskFlowDriver, self).__init__()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _execute_auto_workflow(self, context, novaclient, process_what,"},{"line_number":53,"context_line":"                               **kwargs):"},{"line_number":54,"context_line":"        if not kwargs[\u0027segment_host_list\u0027]:"},{"line_number":55,"context_line":"            msg \u003d _(\u0027No hosts in same segment available for evacuation.\u0027)"},{"line_number":56,"context_line":"            raise exception.SegmentHostsUnavailable(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"03a317db_53caaae2","line":53,"range":{"start_line":53,"start_character":39,"end_line":53,"end_character":41},"in_reply_to":"28b6042d_834f17ef","updated":"2022-02-07 08:43:27.000000000","message":"Done","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"4957213b8855f18afa3ea0170892ec261a864d24","unresolved":true,"context_lines":[{"line_number":88,"context_line":"                                        process_what, **kwargs):"},{"line_number":89,"context_line":"        try:"},{"line_number":90,"context_line":"            self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":91,"context_line":"                                        **kwargs)"},{"line_number":92,"context_line":"        except Exception as ex:"},{"line_number":93,"context_line":"            with excutils.save_and_reraise_exception(reraise\u003dFalse) as ctxt:"},{"line_number":94,"context_line":"                if isinstance(ex, exception.SkipHostRecoveryException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"07ff67a6_9eea2fac","line":91,"range":{"start_line":91,"start_character":48,"end_line":91,"end_character":49},"updated":"2022-02-05 10:47:03.000000000","message":"same comment about kwargs as above","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"a682d33216f14dc56c57f8bb3e23ec2bf83b13da","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                                        process_what, **kwargs):"},{"line_number":89,"context_line":"        try:"},{"line_number":90,"context_line":"            self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":91,"context_line":"                                        **kwargs)"},{"line_number":92,"context_line":"        except Exception as ex:"},{"line_number":93,"context_line":"            with excutils.save_and_reraise_exception(reraise\u003dFalse) as ctxt:"},{"line_number":94,"context_line":"                if isinstance(ex, exception.SkipHostRecoveryException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f2ac9275_3bd109ec","line":91,"range":{"start_line":91,"start_character":48,"end_line":91,"end_character":49},"in_reply_to":"07ff67a6_9eea2fac","updated":"2022-02-07 08:43:27.000000000","message":"Resolved in PS4","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"4957213b8855f18afa3ea0170892ec261a864d24","unresolved":true,"context_lines":[{"line_number":135,"context_line":"                    \u0027auto\u0027: fields.FailoverSegmentRecoveryMethod.AUTO"},{"line_number":136,"context_line":"                })"},{"line_number":137,"context_line":"                self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":138,"context_line":"                                            **kwargs)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def execute_host_failure(self, context, host_name, recovery_method,"},{"line_number":141,"context_line":"                             notification_uuid, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"526367b7_0612e3ae","line":138,"range":{"start_line":138,"start_character":52,"end_line":138,"end_character":53},"updated":"2022-02-05 10:47:03.000000000","message":"ditto","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"a682d33216f14dc56c57f8bb3e23ec2bf83b13da","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    \u0027auto\u0027: fields.FailoverSegmentRecoveryMethod.AUTO"},{"line_number":136,"context_line":"                })"},{"line_number":137,"context_line":"                self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":138,"context_line":"                                            **kwargs)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def execute_host_failure(self, context, host_name, recovery_method,"},{"line_number":141,"context_line":"                             notification_uuid, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"e5d35cce_a0c2eb74","line":138,"range":{"start_line":138,"start_character":52,"end_line":138,"end_character":53},"in_reply_to":"526367b7_0612e3ae","updated":"2022-02-07 08:43:27.000000000","message":"Done","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"4957213b8855f18afa3ea0170892ec261a864d24","unresolved":true,"context_lines":[{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            if recovery_method \u003d\u003d fields.FailoverSegmentRecoveryMethod.AUTO:"},{"line_number":151,"context_line":"                self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":152,"context_line":"                                            **kwargs)"},{"line_number":153,"context_line":"            elif recovery_method \u003d\u003d ("},{"line_number":154,"context_line":"                    fields.FailoverSegmentRecoveryMethod.RESERVED_HOST):"},{"line_number":155,"context_line":"                self._execute_rh_workflow(context, novaclient, process_what,"}],"source_content_type":"text/x-python","patch_set":3,"id":"874a47f5_25430dd7","line":152,"range":{"start_line":152,"start_character":52,"end_line":152,"end_character":53},"updated":"2022-02-05 10:47:03.000000000","message":"ditto","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"a682d33216f14dc56c57f8bb3e23ec2bf83b13da","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            if recovery_method \u003d\u003d fields.FailoverSegmentRecoveryMethod.AUTO:"},{"line_number":151,"context_line":"                self._execute_auto_workflow(context, novaclient, process_what,"},{"line_number":152,"context_line":"                                            **kwargs)"},{"line_number":153,"context_line":"            elif recovery_method \u003d\u003d ("},{"line_number":154,"context_line":"                    fields.FailoverSegmentRecoveryMethod.RESERVED_HOST):"},{"line_number":155,"context_line":"                self._execute_rh_workflow(context, novaclient, process_what,"}],"source_content_type":"text/x-python","patch_set":3,"id":"975e04d7_1f7e5c85","line":152,"range":{"start_line":152,"start_character":52,"end_line":152,"end_character":53},"in_reply_to":"874a47f5_25430dd7","updated":"2022-02-07 08:43:27.000000000","message":"Done","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"}],"masakari/engine/drivers/taskflow/host_failure.py":[{"author":{"_account_id":6737,"name":"Edward Hope-Morley","email":"edward.hope-morley@canonical.com","username":"hopem"},"change_message_id":"4957213b8855f18afa3ea0170892ec261a864d24","unresolved":true,"context_lines":[{"line_number":300,"context_line":"        self.update_details(msg)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        def _do_evacuate(context, host_name, instance_list,"},{"line_number":303,"context_line":"                         reserved_host\u003dNone):"},{"line_number":304,"context_line":"            failed_evacuation_instances \u003d []"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            thread_pool \u003d greenpool.GreenPool("}],"source_content_type":"text/x-python","patch_set":3,"id":"c316bff4_84888dff","line":303,"range":{"start_line":303,"start_character":43,"end_line":303,"end_character":45},"updated":"2022-02-05 10:47:03.000000000","message":"since reserved_host is never going to be passed to _do_evacuate() could we remove it entirely  to avoid confusion?","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"a682d33216f14dc56c57f8bb3e23ec2bf83b13da","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        self.update_details(msg)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        def _do_evacuate(context, host_name, instance_list,"},{"line_number":303,"context_line":"                         reserved_host\u003dNone):"},{"line_number":304,"context_line":"            failed_evacuation_instances \u003d []"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"            thread_pool \u003d greenpool.GreenPool("}],"source_content_type":"text/x-python","patch_set":3,"id":"3709e4e0_2cd8c5d1","line":303,"range":{"start_line":303,"start_character":43,"end_line":303,"end_character":45},"in_reply_to":"c316bff4_84888dff","updated":"2022-02-07 08:43:27.000000000","message":"reserved_host is used in L#317","commit_id":"28ebac6a167cefc27b1430efaeaebd6653aa1a63"}]}
