)]}'
{"/PATCHSET_LEVEL":[{"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":"0274885fe929603d6ea5b18502cd7e18674ac240","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d45f5914_f8404c05","updated":"2022-12-27 09:23:00.000000000","message":"Just a quick observation. An actual review is pending...","commit_id":"01094b4346e63444e0395e931dfd4bf1c3b5a2fd"},{"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":"e74c6b897f175f75918f2cf21ca3634e6459df53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7330a21a_9e9be39a","updated":"2023-01-28 12:26:53.000000000","message":"An XL patch is merging. Woohoo!","commit_id":"23c6c31409b9d27a6a528954cc9fd5df28a12d97"},{"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":"59b36bbccf8051c4f815b4bf950e9f9e5e71111f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"87f3f31b_73c275e3","updated":"2023-01-28 11:02:57.000000000","message":"Now, as mentioned in mail, you might want to focus on the client side of this (openstacksdk) because the deadlines are coming.","commit_id":"23c6c31409b9d27a6a528954cc9fd5df28a12d97"},{"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":"7c06988c7f6e286bbd44914cf8d59b951a365b19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c94ec5ce_20e90490","updated":"2023-01-28 11:02:26.000000000","message":"Waiting for Zuul and will approve once it passes.","commit_id":"23c6c31409b9d27a6a528954cc9fd5df28a12d97"}],"masakari/api/openstack/ha/vmoves.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":"0274885fe929603d6ea5b18502cd7e18674ac240","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"The VM Move API extension.\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from six.moves import http_client as http"},{"line_number":18,"context_line":"from webob import exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from masakari.api.openstack import common"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8949624_e8857da2","line":17,"updated":"2022-12-27 09:23:00.000000000","message":"We should no longer use six.","commit_id":"01094b4346e63444e0395e931dfd4bf1c3b5a2fd"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"33943d0bc4cfe3871d4f9a49cafdfe1f86cb5f64","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"The VM Move API extension.\"\"\""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from six.moves import http_client as http"},{"line_number":18,"context_line":"from webob import exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from masakari.api.openstack import common"}],"source_content_type":"text/x-python","patch_set":2,"id":"154fd908_0b276af6","line":17,"in_reply_to":"f8949624_e8857da2","updated":"2023-01-11 08:31:16.000000000","message":"Done","commit_id":"01094b4346e63444e0395e931dfd4bf1c3b5a2fd"},{"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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":45,"context_line":"            limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":46,"context_line":"            sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"            if \u0027status\u0027 in req.params:"},{"line_number":49,"context_line":"                filters[\u0027status\u0027] \u003d req.params[\u0027status\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            vmoves \u003d self.api.get_all(context,"},{"line_number":52,"context_line":"                                      notification_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"29a77781_d3f6ace0","line":49,"range":{"start_line":48,"start_character":12,"end_line":49,"end_character":56},"updated":"2023-01-14 12:58:20.000000000","message":"the API could also support filtering on type","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":46,"context_line":"            sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"            if \u0027status\u0027 in req.params:"},{"line_number":49,"context_line":"                filters[\u0027status\u0027] \u003d req.params[\u0027status\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            vmoves \u003d self.api.get_all(context,"},{"line_number":52,"context_line":"                                      notification_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"23f089a0_d21962f4","line":49,"range":{"start_line":48,"start_character":12,"end_line":49,"end_character":56},"in_reply_to":"29a77781_d3f6ace0","updated":"2023-01-18 08:52:07.000000000","message":"Done","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"}],"masakari/db/sqlalchemy/api.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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":641,"context_line":"            \u0027notification_uuid\u0027])"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    if \u0027type\u0027 in filters:"},{"line_number":644,"context_line":"        query \u003d query.filter(models.VMove.source_host \u003d\u003d filters["},{"line_number":645,"context_line":"            \u0027type\u0027])"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    if \u0027status\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":3,"id":"59df419c_5639d63f","line":644,"range":{"start_line":644,"start_character":42,"end_line":644,"end_character":54},"updated":"2023-01-14 12:58:20.000000000","message":"seems wrong, should not it be \"type\"? also, type should probably be handled like status below as both are enumerated.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":false,"context_lines":[{"line_number":641,"context_line":"            \u0027notification_uuid\u0027])"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"    if \u0027type\u0027 in filters:"},{"line_number":644,"context_line":"        query \u003d query.filter(models.VMove.source_host \u003d\u003d filters["},{"line_number":645,"context_line":"            \u0027type\u0027])"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"    if \u0027status\u0027 in filters:"}],"source_content_type":"text/x-python","patch_set":3,"id":"c98daa58_36945baa","line":644,"range":{"start_line":644,"start_character":42,"end_line":644,"end_character":54},"in_reply_to":"59df419c_5639d63f","updated":"2023-01-18 08:52:07.000000000","message":"Done","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"}],"masakari/db/sqlalchemy/migrate_repo/versions/008_add_vm_moves_table.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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                     Column(\u0027dest_host\u0027, String(255), nullable\u003dTrue),"},{"line_number":35,"context_line":"                     Column(\u0027start_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":36,"context_line":"                     Column(\u0027end_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":37,"context_line":"                     Column(\u0027type\u0027, String(36), nullable\u003dTrue),"},{"line_number":38,"context_line":"                     Column(\u0027status\u0027, String(36), nullable\u003dTrue),"},{"line_number":39,"context_line":"                     Column(\u0027message\u0027, Text, nullable\u003dTrue),"},{"line_number":40,"context_line":"                     UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_vmove0uuid\u0027),"},{"line_number":41,"context_line":"                     mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"0f76c575_0936f668","line":38,"range":{"start_line":37,"start_character":21,"end_line":38,"end_character":65},"updated":"2023-01-14 12:58:20.000000000","message":"(These might be affected by the switch to Enum in models.py. Also, note that currently there is a discrepancy in 36 vs 255 in models.py)","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                     Column(\u0027dest_host\u0027, String(255), nullable\u003dTrue),"},{"line_number":35,"context_line":"                     Column(\u0027start_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":36,"context_line":"                     Column(\u0027end_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":37,"context_line":"                     Column(\u0027type\u0027, String(36), nullable\u003dTrue),"},{"line_number":38,"context_line":"                     Column(\u0027status\u0027, String(36), nullable\u003dTrue),"},{"line_number":39,"context_line":"                     Column(\u0027message\u0027, Text, nullable\u003dTrue),"},{"line_number":40,"context_line":"                     UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_vmove0uuid\u0027),"},{"line_number":41,"context_line":"                     mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bcae8d18_d3127fc3","line":38,"range":{"start_line":37,"start_character":21,"end_line":38,"end_character":65},"in_reply_to":"0f76c575_0936f668","updated":"2023-01-18 08:52:07.000000000","message":"It has its pros and cons. It\u0027s not easy to deal with the db upgrade, If I want to add one enum value in the future. How to extend one enum?\nI prefer to not use enum in db. Enum restriction in objects is enough.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"1ff689847038f605a91de1f2e7703b60a18d4af0","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                     Column(\u0027dest_host\u0027, String(255), nullable\u003dTrue),"},{"line_number":35,"context_line":"                     Column(\u0027start_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":36,"context_line":"                     Column(\u0027end_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":37,"context_line":"                     Column(\u0027type\u0027, String(36), nullable\u003dTrue),"},{"line_number":38,"context_line":"                     Column(\u0027status\u0027, String(36), nullable\u003dTrue),"},{"line_number":39,"context_line":"                     Column(\u0027message\u0027, Text, nullable\u003dTrue),"},{"line_number":40,"context_line":"                     UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_vmove0uuid\u0027),"},{"line_number":41,"context_line":"                     mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"c9bf7a8a_370ddecd","line":38,"range":{"start_line":37,"start_character":21,"end_line":38,"end_character":65},"in_reply_to":"a7b63046_044dff66","updated":"2023-01-28 02:12:16.000000000","message":"I didn\u0027t find how to extend enum in sqlalchemy.\nI notice that other projects rarely use enum. for example, instance\u0027s vm_state, task_state in Nova. I prefer not to restrict it to enum if it will extend.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"41e171c7f2bd52ed8d73caddb939f9b7e735f8f1","unresolved":true,"context_lines":[{"line_number":34,"context_line":"                     Column(\u0027dest_host\u0027, String(255), nullable\u003dTrue),"},{"line_number":35,"context_line":"                     Column(\u0027start_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":36,"context_line":"                     Column(\u0027end_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":37,"context_line":"                     Column(\u0027type\u0027, String(36), nullable\u003dTrue),"},{"line_number":38,"context_line":"                     Column(\u0027status\u0027, String(36), nullable\u003dTrue),"},{"line_number":39,"context_line":"                     Column(\u0027message\u0027, Text, nullable\u003dTrue),"},{"line_number":40,"context_line":"                     UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_vmove0uuid\u0027),"},{"line_number":41,"context_line":"                     mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"a7b63046_044dff66","line":38,"range":{"start_line":37,"start_character":21,"end_line":38,"end_character":65},"in_reply_to":"bcae8d18_d3127fc3","updated":"2023-01-18 17:06:25.000000000","message":"I *think* sql alchemy with alembic is able to handle an extension of enum range in a civilised way but I am not sure. I am not pushing if you think otherwise. Please let me know.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"9dbb42de68283fdb6d6dc3a8add89a1e5c72e73f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                     Column(\u0027dest_host\u0027, String(255), nullable\u003dTrue),"},{"line_number":35,"context_line":"                     Column(\u0027start_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":36,"context_line":"                     Column(\u0027end_time\u0027, DateTime, nullable\u003dTrue),"},{"line_number":37,"context_line":"                     Column(\u0027type\u0027, String(36), nullable\u003dTrue),"},{"line_number":38,"context_line":"                     Column(\u0027status\u0027, String(36), nullable\u003dTrue),"},{"line_number":39,"context_line":"                     Column(\u0027message\u0027, Text, nullable\u003dTrue),"},{"line_number":40,"context_line":"                     UniqueConstraint(\u0027uuid\u0027, name\u003d\u0027uniq_vmove0uuid\u0027),"},{"line_number":41,"context_line":"                     mysql_engine\u003d\u0027InnoDB\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"14b4ea55_eebc636b","line":38,"range":{"start_line":37,"start_character":21,"end_line":38,"end_character":65},"in_reply_to":"c9bf7a8a_370ddecd","updated":"2023-01-28 10:59:20.000000000","message":"Ack","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"}],"masakari/db/sqlalchemy/models.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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":160,"context_line":"    dest_host \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":161,"context_line":"    start_time \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":162,"context_line":"    end_time \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":163,"context_line":"    type \u003d Column(String(36), nullable\u003dTrue)"},{"line_number":164,"context_line":"    status \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":165,"context_line":"    message \u003d Column(Text)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f02ada26_49d4a062","line":164,"range":{"start_line":163,"start_character":4,"end_line":164,"end_character":47},"updated":"2023-01-14 12:58:20.000000000","message":"These should be Enums.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"41e171c7f2bd52ed8d73caddb939f9b7e735f8f1","unresolved":true,"context_lines":[{"line_number":160,"context_line":"    dest_host \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":161,"context_line":"    start_time \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":162,"context_line":"    end_time \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":163,"context_line":"    type \u003d Column(String(36), nullable\u003dTrue)"},{"line_number":164,"context_line":"    status \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":165,"context_line":"    message \u003d Column(Text)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f254e9d_db21b234","line":164,"range":{"start_line":163,"start_character":4,"end_line":164,"end_character":47},"in_reply_to":"9085dce9_ae8e8d20","updated":"2023-01-18 17:06:25.000000000","message":"ditto indeed","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":true,"context_lines":[{"line_number":160,"context_line":"    dest_host \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":161,"context_line":"    start_time \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":162,"context_line":"    end_time \u003d Column(DateTime, nullable\u003dTrue)"},{"line_number":163,"context_line":"    type \u003d Column(String(36), nullable\u003dTrue)"},{"line_number":164,"context_line":"    status \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":165,"context_line":"    message \u003d Column(Text)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9085dce9_ae8e8d20","line":164,"range":{"start_line":163,"start_character":4,"end_line":164,"end_character":47},"in_reply_to":"f02ada26_49d4a062","updated":"2023-01-18 08:52:07.000000000","message":"ditto","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"}],"masakari/engine/drivers/taskflow/host_failure.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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":194,"context_line":"        finally:"},{"line_number":195,"context_line":"            periodic_call_stopped.stop()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def _evacuate_and_confirm(self, context, host_name, vmove,"},{"line_number":198,"context_line":"                              reserved_host\u003dNone):"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        def _update_vmove(vmove, status\u003dNone, start_time\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"49b5c7b4_ce01ca52","line":197,"range":{"start_line":197,"start_character":45,"end_line":197,"end_character":54},"updated":"2023-01-14 12:58:20.000000000","message":"To avoid confusion, this could be skipped now and the proper vmove property be used.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        finally:"},{"line_number":195,"context_line":"            periodic_call_stopped.stop()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def _evacuate_and_confirm(self, context, host_name, vmove,"},{"line_number":198,"context_line":"                              reserved_host\u003dNone):"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        def _update_vmove(vmove, status\u003dNone, start_time\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"d42f0486_3d29522e","line":197,"range":{"start_line":197,"start_character":45,"end_line":197,"end_character":54},"in_reply_to":"49b5c7b4_ce01ca52","updated":"2023-01-18 08:52:07.000000000","message":"Done","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":292,"context_line":"                if vm_state \u003d\u003d \u0027active\u0027:"},{"line_number":293,"context_line":"                    stop_instance \u003d False"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"            # sart to evacuate the instance"},{"line_number":296,"context_line":"            _update_vmove("},{"line_number":297,"context_line":"                vmove,"},{"line_number":298,"context_line":"                status\u003dfields.VMoveStatus.ONGOING,"}],"source_content_type":"text/x-python","patch_set":3,"id":"e4630ef0_1bab53da","line":295,"range":{"start_line":295,"start_character":14,"end_line":295,"end_character":19},"updated":"2023-01-14 12:58:20.000000000","message":"start","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                if vm_state \u003d\u003d \u0027active\u0027:"},{"line_number":293,"context_line":"                    stop_instance \u003d False"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"            # sart to evacuate the instance"},{"line_number":296,"context_line":"            _update_vmove("},{"line_number":297,"context_line":"                vmove,"},{"line_number":298,"context_line":"                status\u003dfields.VMoveStatus.ONGOING,"}],"source_content_type":"text/x-python","patch_set":3,"id":"b7ff2efe_3f8f163f","line":295,"range":{"start_line":295,"start_character":14,"end_line":295,"end_character":19},"in_reply_to":"e4630ef0_1bab53da","updated":"2023-01-18 08:52:07.000000000","message":"Done","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                self.novaclient.unlock_server(context, instance.id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def execute(self, host_name, notification_uuid, reserved_host\u003dNone):"},{"line_number":343,"context_line":"        all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":344,"context_line":"            self.context, notification_uuid, status\u003dfields.VMoveStatus.PENDING)"},{"line_number":345,"context_line":"        instance_list \u003d [i.instance_uuid for i in all_vmoves]"},{"line_number":346,"context_line":"        msg \u003d (\"Start evacuation of instances from failed host \u0027%(host_name)s\u0027\""}],"source_content_type":"text/x-python","patch_set":3,"id":"76692d58_746de9c1","line":343,"updated":"2023-01-14 12:58:20.000000000","message":"If you sort this array by instance_uuid, there will be no need to change so much in the unit tests for this module.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"41e171c7f2bd52ed8d73caddb939f9b7e735f8f1","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                self.novaclient.unlock_server(context, instance.id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def execute(self, host_name, notification_uuid, reserved_host\u003dNone):"},{"line_number":343,"context_line":"        all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":344,"context_line":"            self.context, notification_uuid, status\u003dfields.VMoveStatus.PENDING)"},{"line_number":345,"context_line":"        instance_list \u003d [i.instance_uuid for i in all_vmoves]"},{"line_number":346,"context_line":"        msg \u003d (\"Start evacuation of instances from failed host \u0027%(host_name)s\u0027\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ecfcbc92_a9eee705","line":343,"in_reply_to":"102e0064_750b3dfb","updated":"2023-01-18 17:06:25.000000000","message":"It would be only to slim down the unit test changes so that it\u0027s easier to see the desired new behaviour rather than a byproduct of a lack of sorting. But yeah, in general it\u0027s not worth wasting time on sorting. On that note, other sortings could also be removed.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":true,"context_lines":[{"line_number":340,"context_line":"                self.novaclient.unlock_server(context, instance.id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def execute(self, host_name, notification_uuid, reserved_host\u003dNone):"},{"line_number":343,"context_line":"        all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":344,"context_line":"            self.context, notification_uuid, status\u003dfields.VMoveStatus.PENDING)"},{"line_number":345,"context_line":"        instance_list \u003d [i.instance_uuid for i in all_vmoves]"},{"line_number":346,"context_line":"        msg \u003d (\"Start evacuation of instances from failed host \u0027%(host_name)s\u0027\""}],"source_content_type":"text/x-python","patch_set":3,"id":"102e0064_750b3dfb","line":343,"in_reply_to":"76692d58_746de9c1","updated":"2023-01-18 08:52:07.000000000","message":"It seems no longer needed of progress details for host failure workflow, because user can use VMoves API to observe the progress.\nA new patch to optimize the workflow in future, but not in this one.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"791fa75e3f79a370f7aff4c6ef8d42b11dee2278","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                self.novaclient.unlock_server(context, instance.id)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def execute(self, host_name, notification_uuid, reserved_host\u003dNone):"},{"line_number":343,"context_line":"        all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":344,"context_line":"            self.context, notification_uuid, status\u003dfields.VMoveStatus.PENDING)"},{"line_number":345,"context_line":"        instance_list \u003d [i.instance_uuid for i in all_vmoves]"},{"line_number":346,"context_line":"        msg \u003d (\"Start evacuation of instances from failed host \u0027%(host_name)s\u0027\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9db5e35a_882cc086","line":343,"in_reply_to":"ecfcbc92_a9eee705","updated":"2023-01-28 10:59:05.000000000","message":"Done","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            \u0027host_name\u0027: host_name, \u0027instance_list\u0027: \u0027,\u0027.join(instance_list)}"},{"line_number":349,"context_line":"        self.update_details(msg)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        def _do_evacuate(context, host_name, notification_uuid,"},{"line_number":352,"context_line":"                         reserved_host\u003dNone):"},{"line_number":353,"context_line":"            if reserved_host:"},{"line_number":354,"context_line":"                msg \u003d \"Enabling reserved host: \u0027%s\u0027\" % reserved_host"}],"source_content_type":"text/x-python","patch_set":3,"id":"5499db8f_ca8b576b","line":351,"range":{"start_line":351,"start_character":45,"end_line":351,"end_character":62},"updated":"2023-01-14 12:58:20.000000000","message":"This does not need to exist here as it can be consumed from the outer scope.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            \u0027host_name\u0027: host_name, \u0027instance_list\u0027: \u0027,\u0027.join(instance_list)}"},{"line_number":349,"context_line":"        self.update_details(msg)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        def _do_evacuate(context, host_name, notification_uuid,"},{"line_number":352,"context_line":"                         reserved_host\u003dNone):"},{"line_number":353,"context_line":"            if reserved_host:"},{"line_number":354,"context_line":"                msg \u003d \"Enabling reserved host: \u0027%s\u0027\" % reserved_host"}],"source_content_type":"text/x-python","patch_set":3,"id":"efcfdf3e_4fe48aa4","line":351,"range":{"start_line":351,"start_character":45,"end_line":351,"end_character":62},"in_reply_to":"5499db8f_ca8b576b","updated":"2023-01-18 08:52:07.000000000","message":"Make no difference.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"791fa75e3f79a370f7aff4c6ef8d42b11dee2278","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            \u0027host_name\u0027: host_name, \u0027instance_list\u0027: \u0027,\u0027.join(instance_list)}"},{"line_number":349,"context_line":"        self.update_details(msg)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        def _do_evacuate(context, host_name, notification_uuid,"},{"line_number":352,"context_line":"                         reserved_host\u003dNone):"},{"line_number":353,"context_line":"            if reserved_host:"},{"line_number":354,"context_line":"                msg \u003d \"Enabling reserved host: \u0027%s\u0027\" % reserved_host"}],"source_content_type":"text/x-python","patch_set":3,"id":"cfa01b34_44c3068d","line":351,"range":{"start_line":351,"start_character":45,"end_line":351,"end_character":62},"in_reply_to":"7ce38714_03e60046","updated":"2023-01-28 10:59:05.000000000","message":"Done","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"41e171c7f2bd52ed8d73caddb939f9b7e735f8f1","unresolved":true,"context_lines":[{"line_number":348,"context_line":"            \u0027host_name\u0027: host_name, \u0027instance_list\u0027: \u0027,\u0027.join(instance_list)}"},{"line_number":349,"context_line":"        self.update_details(msg)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        def _do_evacuate(context, host_name, notification_uuid,"},{"line_number":352,"context_line":"                         reserved_host\u003dNone):"},{"line_number":353,"context_line":"            if reserved_host:"},{"line_number":354,"context_line":"                msg \u003d \"Enabling reserved host: \u0027%s\u0027\" % reserved_host"}],"source_content_type":"text/x-python","patch_set":3,"id":"7ce38714_03e60046","line":351,"range":{"start_line":351,"start_character":45,"end_line":351,"end_character":62},"in_reply_to":"efcfdf3e_4fe48aa4","updated":"2023-01-18 17:06:25.000000000","message":"Just for interface clarity, will work the same of course.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            thread_pool \u003d greenpool.GreenPool("},{"line_number":392,"context_line":"                CONF.host_failure_recovery_threads)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":395,"context_line":"                self.context, notification_uuid,"},{"line_number":396,"context_line":"                status\u003dfields.VMoveStatus.PENDING)"},{"line_number":397,"context_line":"            for vmove in all_vmoves:"},{"line_number":398,"context_line":"                msg \u003d (\"Evacuation of instance started: \u0027%s\u0027\""},{"line_number":399,"context_line":"                       % vmove.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ea3598f_d8c3c875","line":396,"range":{"start_line":394,"start_character":12,"end_line":396,"end_character":50},"updated":"2023-01-14 12:58:20.000000000","message":"This has been created already above, L343.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"41e171c7f2bd52ed8d73caddb939f9b7e735f8f1","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            thread_pool \u003d greenpool.GreenPool("},{"line_number":392,"context_line":"                CONF.host_failure_recovery_threads)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":395,"context_line":"                self.context, notification_uuid,"},{"line_number":396,"context_line":"                status\u003dfields.VMoveStatus.PENDING)"},{"line_number":397,"context_line":"            for vmove in all_vmoves:"},{"line_number":398,"context_line":"                msg \u003d (\"Evacuation of instance started: \u0027%s\u0027\""},{"line_number":399,"context_line":"                       % vmove.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"430a7682_bc614b00","line":396,"range":{"start_line":394,"start_character":12,"end_line":396,"end_character":50},"in_reply_to":"0ee33c4a_a54c0a04","updated":"2023-01-18 17:06:25.000000000","message":"Ah, yeah, it\u0027s because of the re-assignment below. In this case, replace this line with \"nonlocal all_vmoves\" which will do the right thing (use the same outer variable properly).","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"7c06988c7f6e286bbd44914cf8d59b951a365b19","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            thread_pool \u003d greenpool.GreenPool("},{"line_number":392,"context_line":"                CONF.host_failure_recovery_threads)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":395,"context_line":"                self.context, notification_uuid,"},{"line_number":396,"context_line":"                status\u003dfields.VMoveStatus.PENDING)"},{"line_number":397,"context_line":"            for vmove in all_vmoves:"},{"line_number":398,"context_line":"                msg \u003d (\"Evacuation of instance started: \u0027%s\u0027\""},{"line_number":399,"context_line":"                       % vmove.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"969e7b89_c51d3f3b","line":396,"range":{"start_line":394,"start_character":12,"end_line":396,"end_character":50},"in_reply_to":"430a7682_bc614b00","updated":"2023-01-28 11:02:26.000000000","message":"I amended it to do what I meant.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            thread_pool \u003d greenpool.GreenPool("},{"line_number":392,"context_line":"                CONF.host_failure_recovery_threads)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":395,"context_line":"                self.context, notification_uuid,"},{"line_number":396,"context_line":"                status\u003dfields.VMoveStatus.PENDING)"},{"line_number":397,"context_line":"            for vmove in all_vmoves:"},{"line_number":398,"context_line":"                msg \u003d (\"Evacuation of instance started: \u0027%s\u0027\""},{"line_number":399,"context_line":"                       % vmove.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"0ee33c4a_a54c0a04","line":396,"range":{"start_line":394,"start_character":12,"end_line":396,"end_character":50},"in_reply_to":"5ea3598f_d8c3c875","updated":"2023-01-18 08:52:07.000000000","message":"Yep. But if it removes here, the unit test goes wrong, which logs \"UnboundLocalError: local variable \u0027all_vmoves\u0027 referenced before assignment\". Pep8 test also goes wrong, which logs \"./masakari/engine/drivers/taskflow/host_failure.py:394:26: F823 local variable \u0027all_vmoves\u0027 defined in enclosing scope on line 343 referenced before assignment\".","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"3792547f313b0e81cfd10cd9db8428e42b8e98ba","unresolved":true,"context_lines":[{"line_number":405,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":406,"context_line":"                self.context, notification_uuid)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"            successed_vmoves \u003d [i.instance_uuid for i in all_vmoves"},{"line_number":409,"context_line":"                    if i.status \u003d\u003d fields.VMoveStatus.SUCCEEDED]"},{"line_number":410,"context_line":"            if successed_vmoves:"},{"line_number":411,"context_line":"                successed_vmoves.sort()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5e9f830e_987f2627","line":408,"range":{"start_line":408,"start_character":12,"end_line":408,"end_character":21},"updated":"2023-01-14 12:58:20.000000000","message":"successful","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"author":{"_account_id":30623,"name":"suzhengwei","email":"suzhengwei@inspur.com","username":"SuZhengwei"},"change_message_id":"7b28a89c8590ca19826bbdce36fb7f5046de1ec6","unresolved":true,"context_lines":[{"line_number":405,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":406,"context_line":"                self.context, notification_uuid)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"            successed_vmoves \u003d [i.instance_uuid for i in all_vmoves"},{"line_number":409,"context_line":"                    if i.status \u003d\u003d fields.VMoveStatus.SUCCEEDED]"},{"line_number":410,"context_line":"            if successed_vmoves:"},{"line_number":411,"context_line":"                successed_vmoves.sort()"}],"source_content_type":"text/x-python","patch_set":3,"id":"980333b5_44fb6133","line":408,"range":{"start_line":408,"start_character":12,"end_line":408,"end_character":21},"in_reply_to":"5e9f830e_987f2627","updated":"2023-01-18 08:52:07.000000000","message":"succeeded","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"},{"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":"41e171c7f2bd52ed8d73caddb939f9b7e735f8f1","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            all_vmoves \u003d objects.VMoveList.get_all_vmoves("},{"line_number":406,"context_line":"                self.context, notification_uuid)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"            successed_vmoves \u003d [i.instance_uuid for i in all_vmoves"},{"line_number":409,"context_line":"                    if i.status \u003d\u003d fields.VMoveStatus.SUCCEEDED]"},{"line_number":410,"context_line":"            if successed_vmoves:"},{"line_number":411,"context_line":"                successed_vmoves.sort()"}],"source_content_type":"text/x-python","patch_set":3,"id":"f5fea2cd_079d3195","line":408,"range":{"start_line":408,"start_character":12,"end_line":408,"end_character":21},"in_reply_to":"980333b5_44fb6133","updated":"2023-01-18 17:06:25.000000000","message":"Works for me.","commit_id":"aba6025c72694bd14bc4c4257f5fb9f4d7f9aa9d"}]}
