)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"590f4c8ea93911cec6adbcc0716b70c86043db32","unresolved":false,"context_lines":[{"line_number":9,"context_line":"microversion v2.25 will change parameter of os-migrateLive, this patch"},{"line_number":10,"context_line":"adds supports to that changes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depend-on: Ibb0d50f0f7444028ef9d0c294aea41edf0024b31"},{"line_number":13,"context_line":"Implements: blueprint making-live-migration-api-friendly"},{"line_number":14,"context_line":"Change-Id: I01b22593724616bc0a7793c509ecabf095d6927d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9aed3d3a_35795ff7","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":7},"updated":"2016-02-27 13:19:49.000000000","message":"s/Depend/Depends","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"517e57665726234f330d901fcbddd08e0f2da99e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"microversion v2.25 will change parameter of os-migrateLive, this patch"},{"line_number":10,"context_line":"adds supports to that changes."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depend-on: Ibb0d50f0f7444028ef9d0c294aea41edf0024b31"},{"line_number":13,"context_line":"Implements: blueprint making-live-migration-api-friendly"},{"line_number":14,"context_line":"Change-Id: I01b22593724616bc0a7793c509ecabf095d6927d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9aed3d3a_6f10215a","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":7},"in_reply_to":"9aed3d3a_35795ff7","updated":"2016-02-29 01:43:21.000000000","message":"Done","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"}],"novaclient/tests/unit/v2/fakes.py":[{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"1d56bf2ed1d869d3f07d6fb58da8ea6671d66912","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_e5ef0e85","line":713,"updated":"2016-02-29 16:49:04.000000000","message":"I do not like this solution, but I see that the proper fix will require a bit of redesign of the tests, good to have the Fixme in the comment.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"35e51c5a342df342d595248e416fa1f504455448","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_d9eba9da","line":713,"in_reply_to":"9aed3d3a_3549fbb7","updated":"2016-03-01 08:23:58.000000000","message":"got it. \nother place call it.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"2e723617af3917660560fb69e6f76d2d8222bc53","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_55811f8e","line":713,"in_reply_to":"9aed3d3a_3549fbb7","updated":"2016-03-01 08:09:02.000000000","message":"strangely, let me try it.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"17ba514ac941aeaa2388554d675eb70492575c64","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_fb3dcfc4","line":713,"in_reply_to":"9aed3d3a_5d6cc5cf","updated":"2016-03-01 02:04:40.000000000","message":"yes, now api_version can works.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"0b5c71c38fb7cdf38440f03d9074101a84020b8b","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_e1008236","line":713,"in_reply_to":"9aed3d3a_81e096ce","updated":"2016-03-01 03:26:50.000000000","message":"yeah, I get, it\u0027s from https://github.com/openstack/python-novaclient/blob/master/novaclient/tests/unit/fixture_data/servers.py#L422\n\nbut this is not a good implement...","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"b71bb8c7573a122ff32b4bf25547c5802ceb78d5","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_d581affc","line":713,"in_reply_to":"9aed3d3a_81e096ce","updated":"2016-03-01 07:58:32.000000000","message":"yes. This is classmethod.\n\nbut from the code, we can change it to instance method.\n\nor another solution, we can pass the api_version to it as a parameter.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"d3c765dfca65090bc55fbc6693f71ad5c3449ccc","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_3549fbb7","line":713,"in_reply_to":"9aed3d3a_d581affc","updated":"2016-03-01 08:03:52.000000000","message":"Tried instance method, but not work, you will find the reason why it is class method from https://github.com/openstack/python-novaclient/blob/master/novaclient/tests/unit/fixture_data/servers.py#L422","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7697c82665c07eabfaec9e3b250f3f5555046048","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_5d6cc5cf","line":713,"in_reply_to":"9aed3d3a_e5ef0e85","updated":"2016-02-29 18:39:31.000000000","message":"v2.23 adds api_version properties to `FakeHTTPClient` class, so we can make check_server_actions as instance method and use `if self.api_version \u003c api_versions.APIVersion(\"2.25\")` check","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"0e93ae6b70763f0b1f5cca80b0ae6dc472f9e3ae","unresolved":false,"context_lines":[{"line_number":710,"context_line":"            # Fixeme(eliqiao): in v2.25, we removed disk_over_commit from"},{"line_number":711,"context_line":"            # the body, but we can not get api_version here, so we will get"},{"line_number":712,"context_line":"            # exception if we assert the body no matter the versions"},{"line_number":713,"context_line":"            pass"},{"line_number":714,"context_line":"        elif action \u003d\u003d \u0027os-resetState\u0027:"},{"line_number":715,"context_line":"            assert list(body[action]) \u003d\u003d [\u0027state\u0027]"},{"line_number":716,"context_line":"        elif action \u003d\u003d \u0027resetNetwork\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_81e096ce","line":713,"in_reply_to":"9aed3d3a_fb3dcfc4","updated":"2016-03-01 03:20:00.000000000","message":"hi, I don\u0027t think we can get api_version here. please check #688, this is a class method. We can not get api_version which is a class member.\n\nAnd I got one question do we need to really use a classmethod for check_server_actions?\n\nEli.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"35e51c5a342df342d595248e416fa1f504455448","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        action \u003d list(body)[0]"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        if self.check_server_actions(body):"},{"line_number":737,"context_line":"            # NOTE(snikitin): No need to do any operations here. This \u0027pass\u0027"},{"line_number":738,"context_line":"            # is needed to avoid AssertionError in the last \u0027else\u0027 statement"},{"line_number":739,"context_line":"            # if we found \u0027action\u0027 in method check_server_actions and"},{"line_number":740,"context_line":"            # raise AssertionError if we didn\u0027t find \u0027action\u0027 at all."},{"line_number":741,"context_line":"            pass"},{"line_number":742,"context_line":"        elif action \u003d\u003d \u0027rebuild\u0027:"},{"line_number":743,"context_line":"            body \u003d body[action]"},{"line_number":744,"context_line":"            adminPass \u003d body.get(\u0027adminPass\u0027, \u0027randompassword\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_79affd7c","line":741,"range":{"start_line":737,"start_character":11,"end_line":741,"end_character":16},"updated":"2016-03-01 08:23:58.000000000","message":"This is not your code. \n\nyou can ignore the follow comments.\n \nbut just be curious on this comments.\n\nseems this check can be removed and  be in the last else.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"d22e62bc2d150887a78475afd3e7801185e23e67","unresolved":false,"context_lines":[{"line_number":738,"context_line":"            # if we found \u0027action\u0027 in method check_server_actions and"},{"line_number":739,"context_line":"            # raise AssertionError if we didn\u0027t find \u0027action\u0027 at all."},{"line_number":740,"context_line":"            pass"},{"line_number":741,"context_line":"        elif action \u003d\u003d \u0027os-migrateLive\u0027:"},{"line_number":742,"context_line":"            if self.api_version \u003c api_versions.APIVersion(\"2.25\"):"},{"line_number":743,"context_line":"                assert set(body[action].keys()) \u003d\u003d set([\u0027host\u0027,"},{"line_number":744,"context_line":"                                                        \u0027block_migration\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9aed3d3a_d5824fc7","line":741,"range":{"start_line":741,"start_character":13,"end_line":741,"end_character":40},"updated":"2016-03-01 08:06:10.000000000","message":"yes, this is another solution, check it here.","commit_id":"1d597e4c623eb2f0894c12f84d7060fc2e9198d3"}],"novaclient/tests/unit/v2/test_servers.py":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"17ba514ac941aeaa2388554d675eb70492575c64","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"class ServersV225Test(ServersV219Test):"},{"line_number":1083,"context_line":"    def setUp(self):"},{"line_number":1084,"context_line":"        super(ServersV219Test, self).setUp()"},{"line_number":1085,"context_line":"        self.cs.api_version \u003d api_versions.APIVersion(\"2.19\")"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"    def test_live_migrate_server(self):"},{"line_number":1088,"context_line":"        s \u003d self.cs.servers.get(1234)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_db3f2bb2","line":1085,"range":{"start_line":1085,"start_character":56,"end_line":1085,"end_character":57},"updated":"2016-03-01 02:04:40.000000000","message":"2.25?","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"0e93ae6b70763f0b1f5cca80b0ae6dc472f9e3ae","unresolved":false,"context_lines":[{"line_number":1082,"context_line":"class ServersV225Test(ServersV219Test):"},{"line_number":1083,"context_line":"    def setUp(self):"},{"line_number":1084,"context_line":"        super(ServersV219Test, self).setUp()"},{"line_number":1085,"context_line":"        self.cs.api_version \u003d api_versions.APIVersion(\"2.19\")"},{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"    def test_live_migrate_server(self):"},{"line_number":1088,"context_line":"        s \u003d self.cs.servers.get(1234)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_d6ad42ea","line":1085,"range":{"start_line":1085,"start_character":56,"end_line":1085,"end_character":57},"in_reply_to":"9aed3d3a_db3f2bb2","updated":"2016-03-01 03:20:00.000000000","message":"Done","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"}],"novaclient/v2/servers.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        :param host: destination host name."},{"line_number":417,"context_line":"        :param block_migration: if True, do block_migration."},{"line_number":418,"context_line":"        :param disk_over_commit: if True, Allow overcommit."},{"line_number":419,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        return self.manager.live_migrate(self, host,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_f5037740","line":418,"range":{"start_line":418,"start_character":8,"end_line":418,"end_character":59},"updated":"2016-02-27 13:28:02.000000000","message":"please, change a docstring to include info about allowed versions.","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"517e57665726234f330d901fcbddd08e0f2da99e","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        :param host: destination host name."},{"line_number":417,"context_line":"        :param block_migration: if True, do block_migration."},{"line_number":418,"context_line":"        :param disk_over_commit: if True, Allow overcommit."},{"line_number":419,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        return self.manager.live_migrate(self, host,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_522342a7","line":418,"range":{"start_line":418,"start_character":8,"end_line":418,"end_character":59},"in_reply_to":"9aed3d3a_f5037740","updated":"2016-02-29 01:43:21.000000000","message":"Done","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        :param disk_over_commit: if True, Allow overcommit."},{"line_number":419,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        return self.manager.live_migrate(self, host,"},{"line_number":422,"context_line":"                                         block_migration,"},{"line_number":423,"context_line":"                                         disk_over_commit)"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_5599831e","line":421,"updated":"2016-02-27 13:28:02.000000000","message":"Let\u0027s add check like at L62-68","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"517e57665726234f330d901fcbddd08e0f2da99e","unresolved":false,"context_lines":[{"line_number":418,"context_line":"        :param disk_over_commit: if True, Allow overcommit."},{"line_number":419,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        return self.manager.live_migrate(self, host,"},{"line_number":422,"context_line":"                                         block_migration,"},{"line_number":423,"context_line":"                                         disk_over_commit)"},{"line_number":424,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_b23c4ec9","line":421,"in_reply_to":"9aed3d3a_5599831e","updated":"2016-02-29 01:43:21.000000000","message":"Done","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"        :param host: destination host name."},{"line_number":1513,"context_line":"        :param block_migration: if True, do block_migration, can be set as"},{"line_number":1514,"context_line":"                                \u0027auto\u0027"},{"line_number":1515,"context_line":"        :param disk_over_commit: no use"},{"line_number":1516,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1517,"context_line":"        \"\"\""},{"line_number":1518,"context_line":"        return self._action(\u0027os-migrateLive\u0027, server,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_75c80723","line":1515,"range":{"start_line":1515,"start_character":8,"end_line":1515,"end_character":39},"updated":"2016-02-27 13:28:02.000000000","message":"let\u0027s remove this parameter at all","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"517e57665726234f330d901fcbddd08e0f2da99e","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"        :param host: destination host name."},{"line_number":1513,"context_line":"        :param block_migration: if True, do block_migration, can be set as"},{"line_number":1514,"context_line":"                                \u0027auto\u0027"},{"line_number":1515,"context_line":"        :param disk_over_commit: no use"},{"line_number":1516,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":1517,"context_line":"        \"\"\""},{"line_number":1518,"context_line":"        return self._action(\u0027os-migrateLive\u0027, server,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_52a862db","line":1515,"range":{"start_line":1515,"start_character":8,"end_line":1515,"end_character":39},"in_reply_to":"9aed3d3a_75c80723","updated":"2016-02-29 01:43:21.000000000","message":"Done","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5fccae638ae361b0625cc9102da98c5954077a9b","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                                             block_migration,"},{"line_number":426,"context_line":"                                             disk_over_commit)"},{"line_number":427,"context_line":"        else:"},{"line_number":428,"context_line":"            return self.manager.live_migrate(self, host,"},{"line_number":429,"context_line":"                                             block_migration)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def reset_state(self, state\u003d\u0027error\u0027):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_2b180c1d","line":428,"updated":"2016-03-02 04:52:57.000000000","message":"We just quiet when user pass the disk_over_commit at here. This is a little confuse for user. At least we raise an exception like update and evacuate method.\n\nIdeally, I think we can make the api_version.wraps work on resource class. But due to close to freeze, it is ok just raise exception at here.","commit_id":"776397770e0954b55f669c578399d3c54a255872"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"45a86739a3c98bccf06c541aa502b23c206291cf","unresolved":false,"context_lines":[{"line_number":425,"context_line":"                                             block_migration,"},{"line_number":426,"context_line":"                                             disk_over_commit)"},{"line_number":427,"context_line":"        else:"},{"line_number":428,"context_line":"            return self.manager.live_migrate(self, host,"},{"line_number":429,"context_line":"                                             block_migration)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def reset_state(self, state\u003d\u0027error\u0027):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7af24918_d934dffc","line":428,"in_reply_to":"7af24918_2b180c1d","updated":"2016-03-02 06:06:01.000000000","message":"hi Alex, thanks for your comments, I don\u0027t think it make sense that we checking disk_over_commit here, since it always get a default value\u003dFalse, hence we can not check if the value is passed from user or not.\n\nyeah, agree that we can make this better to modify api+version.wraps, but not now.\n\n\nI will update patch and add parameter checking.\n\nThanks，\nEli.","commit_id":"776397770e0954b55f669c578399d3c54a255872"}],"novaclient/v2/shell.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8c6c0d19021076e8090af3eaadacfcfb70c0740a","unresolved":false,"context_lines":[{"line_number":3687,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":3688,"context_line":"    dest\u003d\u0027block_migrate\u0027,"},{"line_number":3689,"context_line":"    default\u003dFalse,"},{"line_number":3690,"context_line":"    help\u003d_(\u0027True in case of block_migration. (Default\u003dNone:live_migration)\u0027))"},{"line_number":3691,"context_line":"@cliutils.arg("},{"line_number":3692,"context_line":"    \u0027--block_migrate\u0027,"},{"line_number":3693,"context_line":"    action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_963f1386","line":3690,"range":{"start_line":3690,"start_character":54,"end_line":3690,"end_character":59},"updated":"2015-12-22 12:49:17.000000000","message":"It is not true. Default is still False.","commit_id":"772a4ec2a0e7bc019c7d245f94eef92787506c18"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":3801,"context_line":"    utils.print_list([aggregate], columns, formatters\u003dformatters)"},{"line_number":3802,"context_line":""},{"line_number":3803,"context_line":""},{"line_number":3804,"context_line":"@api_versions.wraps(\"2.0\", \"2.24\")"},{"line_number":3805,"context_line":"@cliutils.arg(\u0027server\u0027, metavar\u003d\u0027\u003cserver\u003e\u0027, help\u003d_(\u0027Name or ID of server.\u0027))"},{"line_number":3806,"context_line":"@cliutils.arg("},{"line_number":3807,"context_line":"    \u0027host\u0027, metavar\u003d\u0027\u003chost\u003e\u0027, default\u003dNone, nargs\u003d\u0027?\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_f5b1b790","line":3804,"range":{"start_line":3804,"start_character":0,"end_line":3804,"end_character":34},"updated":"2016-02-27 13:28:02.000000000","message":"We can use one method for both 2.0-2.24 and 2.25-latest. \n\nStep1 - Remove this line.","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":3823,"context_line":"    \u0027--disk-over-commit\u0027,"},{"line_number":3824,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":3825,"context_line":"    dest\u003d\u0027disk_over_commit\u0027,"},{"line_number":3826,"context_line":"    default\u003dFalse,"},{"line_number":3827,"context_line":"    help\u003d_(\u0027Allow overcommit. (Default\u003dFalse)\u0027))"},{"line_number":3828,"context_line":"@cliutils.arg("},{"line_number":3829,"context_line":"    \u0027--disk_over_commit\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_35acbf33","line":3826,"updated":"2016-02-27 13:28:02.000000000","message":"step2: add arguments `start_version\u003d\"2.0\", end_version\u003d2.24`","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":3828,"context_line":"@cliutils.arg("},{"line_number":3829,"context_line":"    \u0027--disk_over_commit\u0027,"},{"line_number":3830,"context_line":"    real_action\u003d\u0027store_true\u0027,"},{"line_number":3831,"context_line":"    action\u003dshell.DeprecatedAction,"},{"line_number":3832,"context_line":"    use\u003d_(\u0027use \"%s\"; this option will be removed in \u0027"},{"line_number":3833,"context_line":"          \u0027novaclient 3.3.0.\u0027) % \u0027--disk-over-commit\u0027,"},{"line_number":3834,"context_line":"    help\u003dargparse.SUPPRESS)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_75648721","line":3831,"updated":"2016-02-27 13:28:02.000000000","message":"same here","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"517e57665726234f330d901fcbddd08e0f2da99e","unresolved":false,"context_lines":[{"line_number":3848,"context_line":"    \u0027--block-migrate\u0027,"},{"line_number":3849,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":3850,"context_line":"    dest\u003d\u0027block_migrate\u0027,"},{"line_number":3851,"context_line":"    default\u003d\u0027auto\u0027,"},{"line_number":3852,"context_line":"    help\u003d_(\u0027True in case of block_migration. (Default\u003dauto:live_migration)\u0027))"},{"line_number":3853,"context_line":"@cliutils.arg("},{"line_number":3854,"context_line":"    \u0027--block_migrate\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_927b0a28","line":3851,"range":{"start_line":3851,"start_character":2,"end_line":3851,"end_character":19},"updated":"2016-02-29 01:43:21.000000000","message":"I need to change the default value of block_migration too..\nnot sure if your solution works\n\ncan I add 2 \u0027--block-migrate\u0027 arg (with different start_version) same time?","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3f7d138059bb012acb1e0cfd12f05fa12c8623fa","unresolved":false,"context_lines":[{"line_number":3848,"context_line":"    \u0027--block-migrate\u0027,"},{"line_number":3849,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":3850,"context_line":"    dest\u003d\u0027block_migrate\u0027,"},{"line_number":3851,"context_line":"    default\u003d\u0027auto\u0027,"},{"line_number":3852,"context_line":"    help\u003d_(\u0027True in case of block_migration. (Default\u003dauto:live_migration)\u0027))"},{"line_number":3853,"context_line":"@cliutils.arg("},{"line_number":3854,"context_line":"    \u0027--block_migrate\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_9824c460","line":3851,"range":{"start_line":3851,"start_character":2,"end_line":3851,"end_character":19},"in_reply_to":"9aed3d3a_927b0a28","updated":"2016-02-29 07:17:36.000000000","message":"\u003e I need to change the default value of block_migration too..\n\nSorry, I missed changes in default value.\n\n\u003e can I add 2 \u0027--block-migrate\u0027 arg (with different start_version) same time?\n\nYes, you can. But versions should not conflict. In your case:\n\n    @cliutils.arg(\n        \u0027--block-migrate\u0027,\n        action\u003d\u0027store_true\u0027,\n        dest\u003d\u0027block_migrate\u0027,\n        default\u003d\u0027False\u0027,\n        start_version\u003d\"2.0\",\n        end_version\u003d\"2.24\"\n        help\u003d_(\u0027True in case of block_migration. (Default\u003dFalse:live_migration)\u0027))\n    @cliutils.arg(\n        \u0027--block-migrate\u0027,\n        action\u003d\u0027store_true\u0027,\n        dest\u003d\u0027block_migrate\u0027,\n        default\u003d\u0027auto\u0027,\n        start_version\u003d\"2.25\"\n        help\u003d_(\u0027True in case of block_migration. (Default\u003dauto:live_migration)\u0027))\n\n\u003e It seems current implement doesn\u0027t support this case:\n\u003e \n\u003e ArgumentError: argument --block_migrate: conflicting option string(s): --block_migrate\n\nIt looks like you forgot to setup end_version for one of arguments.","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"d9071e8ffa4cedfe6986d96aa896aad4880575f6","unresolved":false,"context_lines":[{"line_number":3848,"context_line":"    \u0027--block-migrate\u0027,"},{"line_number":3849,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":3850,"context_line":"    dest\u003d\u0027block_migrate\u0027,"},{"line_number":3851,"context_line":"    default\u003d\u0027auto\u0027,"},{"line_number":3852,"context_line":"    help\u003d_(\u0027True in case of block_migration. (Default\u003dauto:live_migration)\u0027))"},{"line_number":3853,"context_line":"@cliutils.arg("},{"line_number":3854,"context_line":"    \u0027--block_migrate\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_69b93979","line":3851,"range":{"start_line":3851,"start_character":2,"end_line":3851,"end_character":19},"in_reply_to":"9aed3d3a_927b0a28","updated":"2016-02-29 06:12:36.000000000","message":"It seems current implement doesn\u0027t support this case:\n\nArgumentError: argument --block_migrate: conflicting option string(s): --block_migrate","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"af18470d0363e81da22d67ff24f8d76c18ee8f15","unresolved":false,"context_lines":[{"line_number":3848,"context_line":"    \u0027--block-migrate\u0027,"},{"line_number":3849,"context_line":"    action\u003d\u0027store_true\u0027,"},{"line_number":3850,"context_line":"    dest\u003d\u0027block_migrate\u0027,"},{"line_number":3851,"context_line":"    default\u003d\u0027auto\u0027,"},{"line_number":3852,"context_line":"    help\u003d_(\u0027True in case of block_migration. (Default\u003dauto:live_migration)\u0027))"},{"line_number":3853,"context_line":"@cliutils.arg("},{"line_number":3854,"context_line":"    \u0027--block_migrate\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_db43e640","line":3851,"range":{"start_line":3851,"start_character":2,"end_line":3851,"end_character":19},"in_reply_to":"9aed3d3a_9824c460","updated":"2016-02-29 07:48:35.000000000","message":"@Andrey\nhmm. yes, before I tried (yes, I added end_version in previous block-migration arg) , but failed. have you verified this implement?","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa8728bc8d95bf6f9a6df78ac64d9c51f539e787","unresolved":false,"context_lines":[{"line_number":3858,"context_line":"          \u0027novaclient 3.3.0.\u0027) % \u0027--block-migrate\u0027,"},{"line_number":3859,"context_line":"    help\u003dargparse.SUPPRESS)"},{"line_number":3860,"context_line":"def do_live_migration(cs, args):"},{"line_number":3861,"context_line":"    \"\"\"Migrate running server to a new machine.\"\"\""},{"line_number":3862,"context_line":"    _find_server(cs, args.server).live_migrate(args.host,"},{"line_number":3863,"context_line":"                                               args.block_migrate)"},{"line_number":3864,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_b5456f71","line":3861,"updated":"2016-02-27 13:28:02.000000000","message":"Step3: add check for existence of `dist_over_commit` argument.\n\n    if \"dist_over_commit\" in args:\n        server.live_migrate(args.host, args.block_migrate, args.disk_over_commit)\n    else:\n        server.live_migrate(args.host, args.block_migrate)","commit_id":"835a6e27a143cd341256d9e92737dfddf202c1e3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"151f2ddda0c14b37a8772e6d0c0afcd566c40292","unresolved":false,"context_lines":[{"line_number":3828,"context_line":"    help\u003dargparse.SUPPRESS,"},{"line_number":3829,"context_line":"    start_version\u003d\"2.0\", end_version\u003d\"2.24\")"},{"line_number":3830,"context_line":"@cliutils.arg("},{"line_number":3831,"context_line":"    \u0027--block_migrate\u0027,"},{"line_number":3832,"context_line":"    real_action\u003d\u0027store_true\u0027,"},{"line_number":3833,"context_line":"    action\u003dshell.DeprecatedAction,"},{"line_number":3834,"context_line":"    use\u003d_(\u0027use \"%s\"; this option will be removed in \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_aaeaee0c","line":3831,"updated":"2016-02-29 17:09:24.000000000","message":"This option is due to be removed; I\u0027d advocate for dropping this clause entirely and just not support --block_migrate for microversions beyond 2.24.  For that matter, the new block doesn\u0027t add anything at all, so there\u0027s no reason to even restrict version on it.","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"0e93ae6b70763f0b1f5cca80b0ae6dc472f9e3ae","unresolved":false,"context_lines":[{"line_number":3828,"context_line":"    help\u003dargparse.SUPPRESS,"},{"line_number":3829,"context_line":"    start_version\u003d\"2.0\", end_version\u003d\"2.24\")"},{"line_number":3830,"context_line":"@cliutils.arg("},{"line_number":3831,"context_line":"    \u0027--block_migrate\u0027,"},{"line_number":3832,"context_line":"    real_action\u003d\u0027store_true\u0027,"},{"line_number":3833,"context_line":"    action\u003dshell.DeprecatedAction,"},{"line_number":3834,"context_line":"    use\u003d_(\u0027use \"%s\"; this option will be removed in \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_9037424c","line":3831,"in_reply_to":"9aed3d3a_aaeaee0c","updated":"2016-03-01 03:20:00.000000000","message":"yeah, gotcha. I am going to remove this block and remove end_version restrict from #3829","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"1d56bf2ed1d869d3f07d6fb58da8ea6671d66912","unresolved":false,"context_lines":[{"line_number":3834,"context_line":"    use\u003d_(\u0027use \"%s\"; this option will be removed in \u0027"},{"line_number":3835,"context_line":"          \u0027novaclient 3.3.0.\u0027) % \u0027--block-migrate\u0027,"},{"line_number":3836,"context_line":"    help\u003dargparse.SUPPRESS,"},{"line_number":3837,"context_line":"    start_version\u003d\"2.25\")"},{"line_number":3838,"context_line":"@cliutils.arg("},{"line_number":3839,"context_line":"    \u0027--disk-over-commit\u0027,"},{"line_number":3840,"context_line":"    action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_949bd117","line":3837,"updated":"2016-02-29 16:49:04.000000000","message":"I admit my ignorance for novaclient code but do we need to duplicate the code here? Is it not possible just bump the end_version at the line 3829?","commit_id":"e7332d4dae40c83c4f83714c57aa1703da72aeea"}]}
