)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"496e8437d7a580da407794e1ee5bc4b68cb1a79a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kevin_Zheng \u003czhengzhenyu@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-06-15 15:39:26 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"API: add support to abort queued live migration in microversion 2.63"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch bumped API microversion to 2.63 to add support for"},{"line_number":10,"context_line":"abort live migrations in ``queued`` and ``preparing`` status."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_73a8a91f","line":7,"range":{"start_line":7,"start_character":64,"end_line":7,"end_character":68},"updated":"2018-06-18 13:33:44.000000000","message":"2.64","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7426539f7a349cf1bc16eb23e878f5baa0756f97","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kevin_Zheng \u003czhengzhenyu@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-06-15 15:39:26 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"API: add support to abort queued live migration in microversion 2.63"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch bumped API microversion to 2.63 to add support for"},{"line_number":10,"context_line":"abort live migrations in ``queued`` and ``preparing`` status."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_6a9671f2","line":7,"range":{"start_line":7,"start_character":64,"end_line":7,"end_character":68},"in_reply_to":"5f7c97a3_73a8a91f","updated":"2018-06-29 06:52:26.000000000","message":"Done","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"496e8437d7a580da407794e1ee5bc4b68cb1a79a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"API: add support to abort queued live migration in microversion 2.63"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch bumped API microversion to 2.63 to add support for"},{"line_number":10,"context_line":"abort live migrations in ``queued`` and ``preparing`` status."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Part of blueprint abort-live-migration-in-queued-status"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_136ff5fc","line":9,"range":{"start_line":9,"start_character":38,"end_line":9,"end_character":42},"updated":"2018-06-18 13:33:44.000000000","message":"2.64","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"}],"api-ref/source/server-migrations.inc":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"496e8437d7a580da407794e1ee5bc4b68cb1a79a","unresolved":false,"context_lines":[{"line_number":201,"context_line":"If the server is locked, you must have administrator privileges to force the"},{"line_number":202,"context_line":"completion of the server migration."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"For microversions from 2.24 to 2.62 the migration status must be ``running``,"},{"line_number":205,"context_line":"for microversion 2.64 and greater, the migration status can also be ``queued``"},{"line_number":206,"context_line":"and ``preparing``."},{"line_number":207,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"5f7c97a3_938c65d8","line":204,"range":{"start_line":204,"start_character":31,"end_line":204,"end_character":35},"updated":"2018-06-18 13:33:44.000000000","message":"2.63","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7426539f7a349cf1bc16eb23e878f5baa0756f97","unresolved":false,"context_lines":[{"line_number":201,"context_line":"If the server is locked, you must have administrator privileges to force the"},{"line_number":202,"context_line":"completion of the server migration."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"For microversions from 2.24 to 2.62 the migration status must be ``running``,"},{"line_number":205,"context_line":"for microversion 2.64 and greater, the migration status can also be ``queued``"},{"line_number":206,"context_line":"and ``preparing``."},{"line_number":207,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"5f7c97a3_ea8121a2","line":204,"range":{"start_line":204,"start_character":31,"end_line":204,"end_character":35},"in_reply_to":"5f7c97a3_938c65d8","updated":"2018-06-29 06:52:26.000000000","message":"Done","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"}],"doc/api_samples/server-migrations/v2.24/live-migrate-server.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false,"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_55958c93","line":1,"updated":"2018-07-10 20:55:15.000000000","message":"Why is this file added (it\u0027s microversion 2.24)?","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false,"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_2e0aadd0","line":1,"in_reply_to":"5f7c97a3_224f4b36","updated":"2018-07-13 18:08:08.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d438381d3068302d5556db3b365efae3c2c98406","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false,"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_224f4b36","line":1,"in_reply_to":"5f7c97a3_24545cc6","updated":"2018-07-12 08:23:02.000000000","message":"now it can be solved with https://review.openstack.org/#/c/581562/","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"5f10c7460a63cc3c6020799c8127d6aa196328de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false,"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_24545cc6","line":1,"in_reply_to":"5f7c97a3_55958c93","updated":"2018-07-11 01:26:54.000000000","message":"This is because my 2.64 test is inherent from 2.24 tests and the current formation of 2.24 tests make me unable to use new microversions in my tests, as the microversion got overridden in the setup(). But by this way, I have to add a separate sample file for 2.24.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"doc/api_samples/server-migrations/v2.64/live-migrate-server.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_51b46ef1","line":3,"range":{"start_line":3,"start_character":16,"end_line":3,"end_character":50},"updated":"2018-07-13 18:08:08.000000000","message":"null","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_f1ca5a6d","line":4,"range":{"start_line":4,"start_character":27,"end_line":4,"end_character":32},"updated":"2018-07-13 18:08:08.000000000","message":"\"auto\"","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d438381d3068302d5556db3b365efae3c2c98406","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_a254bbc7","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":5},"updated":"2018-07-12 08:23:02.000000000","message":"adding \"disk_over_commit\": false in sample is good to show complete response.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ec85c4784160a5a589f5a4d3156972dd3c6f10e6","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_f7d578e7","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":5},"in_reply_to":"5f7c97a3_a254bbc7","updated":"2018-07-13 08:03:03.000000000","message":"disk_over_commit got removed in 2.25","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"01c0cadef72d47e28a672a76060d492c\","},{"line_number":4,"context_line":"        \"block_migration\": false"},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"application/json","patch_set":6,"id":"5f7c97a3_4e0da9e5","line":5,"range":{"start_line":5,"start_character":4,"end_line":5,"end_character":5},"in_reply_to":"5f7c97a3_f7d578e7","updated":"2018-07-13 18:08:08.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"7214ae52466248682288e7c52d4515df7c8dd16c","unresolved":false,"context_lines":[{"line_number":818,"context_line":"* ``GET /servers/{server_id}``"},{"line_number":819,"context_line":"* ``PUT /servers/{server_id}``"},{"line_number":820,"context_line":"* ``POST /servers/{server_id}/action (rebuild)``"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"2.64"},{"line_number":824,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_407012a5","line":821,"updated":"2018-06-19 12:13:03.000000000","message":"redundant new line","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7426539f7a349cf1bc16eb23e878f5baa0756f97","unresolved":false,"context_lines":[{"line_number":818,"context_line":"* ``GET /servers/{server_id}``"},{"line_number":819,"context_line":"* ``PUT /servers/{server_id}``"},{"line_number":820,"context_line":"* ``POST /servers/{server_id}/action (rebuild)``"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"2.64"},{"line_number":824,"context_line":"----"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_aa79e9c5","line":821,"in_reply_to":"5f7c97a3_407012a5","updated":"2018-06-29 06:52:26.000000000","message":"Done","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d438381d3068302d5556db3b365efae3c2c98406","unresolved":false,"context_lines":[{"line_number":822,"context_line":"2.64"},{"line_number":823,"context_line":"----"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"Add support for abort live migrations in ``queued`` and ``preparing`` status."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_22ebcbdd","line":825,"range":{"start_line":825,"start_character":0,"end_line":825,"end_character":77},"updated":"2018-07-12 08:23:02.000000000","message":"adding API name will be quick ref for people.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ec85c4784160a5a589f5a4d3156972dd3c6f10e6","unresolved":false,"context_lines":[{"line_number":822,"context_line":"2.64"},{"line_number":823,"context_line":"----"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"Add support for abort live migrations in ``queued`` and ``preparing`` status."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_77fba87a","line":825,"range":{"start_line":825,"start_character":0,"end_line":825,"end_character":77},"in_reply_to":"5f7c97a3_22ebcbdd","updated":"2018-07-13 08:03:03.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"nova/api/openstack/compute/server_migrations.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            self.compute_api.live_migrate_abort(context, instance, id,"},{"line_number":154,"context_line":"                                                support_abort_in_queue)"},{"line_number":155,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":156,"context_line":"            common.raise_http_conflict_for_instance_invalid_state("},{"line_number":157,"context_line":"                    state_error, \"abort live migration\", server_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_753688b6","line":154,"range":{"start_line":154,"start_character":48,"end_line":154,"end_character":70},"updated":"2018-07-10 20:55:15.000000000","message":"Suggest passing this as a kwarg since it\u0027s defined as one.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            self.compute_api.live_migrate_abort(context, instance, id,"},{"line_number":154,"context_line":"                                                support_abort_in_queue)"},{"line_number":155,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":156,"context_line":"            common.raise_http_conflict_for_instance_invalid_state("},{"line_number":157,"context_line":"                    state_error, \"abort live migration\", server_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_8e03c1bd","line":154,"range":{"start_line":154,"start_character":48,"end_line":154,"end_character":70},"in_reply_to":"5f7c97a3_02d32f39","updated":"2018-07-13 18:08:08.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d438381d3068302d5556db3b365efae3c2c98406","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            self.compute_api.live_migrate_abort(context, instance, id,"},{"line_number":154,"context_line":"                                                support_abort_in_queue)"},{"line_number":155,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":156,"context_line":"            common.raise_http_conflict_for_instance_invalid_state("},{"line_number":157,"context_line":"                    state_error, \"abort live migration\", server_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_02d32f39","line":154,"range":{"start_line":154,"start_character":48,"end_line":154,"end_character":70},"in_reply_to":"5f7c97a3_753688b6","updated":"2018-07-12 08:23:02.000000000","message":"+1","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"nova/compute/api.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"45ccc5bb5bb53adccef35a14dbb2669553007866","unresolved":false,"context_lines":[{"line_number":4311,"context_line":"        # if it is supported, we are able to also abort migrations in"},{"line_number":4312,"context_line":"        # `queued` and `preparing` status."},{"line_number":4313,"context_line":"        if (not support_abort_in_queue and migration.status !\u003d \u0027running\u0027)\\"},{"line_number":4314,"context_line":"                or migration.status not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027):"},{"line_number":4315,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration_id,"},{"line_number":4316,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":4317,"context_line":"                    state\u003dmigration.status,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_ae69398c","line":4314,"updated":"2018-06-14 08:04:11.000000000","message":"\u003e\u003e\u003e ms \u003d [\u0027running\u0027, \u0027other\u0027, \u0027queued\u0027]\n\u003e\u003e\u003e support \u003d [True, False]\n\u003e\u003e\u003e for s in support:\n...     for m in ms:\n...         flag \u003d (not s and m !\u003d \u0027running\u0027) or m not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027)\n...         print(m, s, \u0027raise\u0027 if flag else \u0027not raised\u0027)\n...\n(\u0027running\u0027, True, \u0027not raised\u0027)\n(\u0027other\u0027, True, \u0027raise\u0027)\n(\u0027queued\u0027, True, \u0027not raised\u0027)\n(\u0027running\u0027, False, \u0027not raised\u0027)\n(\u0027other\u0027, False, \u0027raise\u0027)\n(\u0027queued\u0027, False, \u0027raise\u0027)\n\nA note for other reviewer. : )","commit_id":"0bd2529bd389456bd4e4d0921d9a47d357472ffa"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ce40656b52c17957dd96afec16a8bd10f46a1e81","unresolved":false,"context_lines":[{"line_number":4311,"context_line":"        # if it is supported, we are able to also abort migrations in"},{"line_number":4312,"context_line":"        # `queued` and `preparing` status."},{"line_number":4313,"context_line":"        if (not support_abort_in_queue and migration.status !\u003d \u0027running\u0027)\\"},{"line_number":4314,"context_line":"                or migration.status not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027):"},{"line_number":4315,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration_id,"},{"line_number":4316,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":4317,"context_line":"                    state\u003dmigration.status,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_4eff4565","line":4314,"in_reply_to":"5f7c97a3_ae69398c","updated":"2018-06-14 08:07:03.000000000","message":"Thanks alot, I will copy this to the next patchset.","commit_id":"0bd2529bd389456bd4e4d0921d9a47d357472ffa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":4410,"context_line":"        :param instance: The instance that is being migrated"},{"line_number":4411,"context_line":"        :param migration_id: ID of in-progress live migration"},{"line_number":4412,"context_line":"        :param support_abort_in_queue: Flag indicating whether we can support"},{"line_number":4413,"context_line":"        abort migrations in queue"},{"line_number":4414,"context_line":""},{"line_number":4415,"context_line":"        \"\"\""},{"line_number":4416,"context_line":"        migration \u003d objects.Migration.get_by_id_and_instance(context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_f58e1879","line":4413,"range":{"start_line":4413,"start_character":28,"end_line":4413,"end_character":33},"updated":"2018-07-10 20:55:15.000000000","message":"nit: \"in queued or preparing status\"","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":4410,"context_line":"        :param instance: The instance that is being migrated"},{"line_number":4411,"context_line":"        :param migration_id: ID of in-progress live migration"},{"line_number":4412,"context_line":"        :param support_abort_in_queue: Flag indicating whether we can support"},{"line_number":4413,"context_line":"        abort migrations in queue"},{"line_number":4414,"context_line":""},{"line_number":4415,"context_line":"        \"\"\""},{"line_number":4416,"context_line":"        migration \u003d objects.Migration.get_by_id_and_instance(context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_eef355e7","line":4413,"range":{"start_line":4413,"start_character":28,"end_line":4413,"end_character":33},"in_reply_to":"5f7c97a3_f58e1879","updated":"2018-07-13 18:08:08.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":4423,"context_line":"        # if it is supported, we are able to also abort migrations in"},{"line_number":4424,"context_line":"        # `queued` and `preparing` status."},{"line_number":4425,"context_line":"        if (not support_abort_in_queue and migration.status !\u003d \u0027running\u0027)\\"},{"line_number":4426,"context_line":"                or migration.status not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027):"},{"line_number":4427,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration_id,"},{"line_number":4428,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":4429,"context_line":"                    state\u003dmigration.status,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_d50c3c3c","line":4426,"updated":"2018-07-10 20:55:15.000000000","message":"You need to check the nova-compute service version here somewhere if support_abort_in_queue and migration.status in (\u0027queued\u0027, \u0027preparing\u0027).\n\nYou can get the Service object from the instance.host:\n\nhttps://github.com/openstack/nova/blob/8469fa70dafa83cb068538679100bede7679edc3/nova/objects/service.py#L318\n\nAnd then check the nova-compute service version (\u003e\u003d33).","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":4423,"context_line":"        # if it is supported, we are able to also abort migrations in"},{"line_number":4424,"context_line":"        # `queued` and `preparing` status."},{"line_number":4425,"context_line":"        if (not support_abort_in_queue and migration.status !\u003d \u0027running\u0027)\\"},{"line_number":4426,"context_line":"                or migration.status not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027):"},{"line_number":4427,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration_id,"},{"line_number":4428,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":4429,"context_line":"                    state\u003dmigration.status,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_aefd5db3","line":4426,"in_reply_to":"5f7c97a3_d50c3c3c","updated":"2018-07-13 18:08:08.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fa3122137d208ed5956453c1fbdaaccbf9c6c79b","unresolved":false,"context_lines":[{"line_number":4423,"context_line":"        # if it is supported, we are able to also abort migrations in"},{"line_number":4424,"context_line":"        # `queued` and `preparing` status."},{"line_number":4425,"context_line":"        if (not support_abort_in_queue and migration.status !\u003d \u0027running\u0027)\\"},{"line_number":4426,"context_line":"                or migration.status not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027):"},{"line_number":4427,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration_id,"},{"line_number":4428,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":4429,"context_line":"                    state\u003dmigration.status,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_f8604dd3","line":4426,"in_reply_to":"5f7c97a3_d50c3c3c","updated":"2018-07-10 21:17:34.000000000","message":"Well maybe not, see https://review.openstack.org/#/c/568542/15/nova/compute/rpcapi.py@689","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6f8b6f3caeecdea88a3d72de4f69b4bf395a91af","unresolved":false,"context_lines":[{"line_number":4423,"context_line":"        # if it is supported, we are able to also abort migrations in"},{"line_number":4424,"context_line":"        # `queued` and `preparing` status."},{"line_number":4425,"context_line":"        if (not support_abort_in_queue and migration.status !\u003d \u0027running\u0027)\\"},{"line_number":4426,"context_line":"                or migration.status not in (\u0027queued\u0027, \u0027preparing\u0027, \u0027running\u0027):"},{"line_number":4427,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration_id,"},{"line_number":4428,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":4429,"context_line":"                    state\u003dmigration.status,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_ae4d87c6","line":4426,"in_reply_to":"5f7c97a3_f8604dd3","updated":"2018-07-12 08:12:09.000000000","message":"but checking compute version in here can raise the error early instead of going to rpc.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"nova/tests/functional/api_sample_tests/api_samples/server-migrations/v2.24/live-migrate-server.json.tpl":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"%(hostname)s\","},{"line_number":4,"context_line":"        \"block_migration\": false,"}],"source_content_type":"text/x-smarty","patch_set":6,"id":"5f7c97a3_b588a06b","line":1,"updated":"2018-07-10 20:55:15.000000000","message":"Again, 2.24?","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"nova/tests/functional/api_sample_tests/api_samples/server-migrations/v2.64/live-migrate-server.json.tpl":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"%(hostname)s\","},{"line_number":4,"context_line":"        \"block_migration\": \"auto\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":6,"id":"5f7c97a3_b1c4e261","line":3,"range":{"start_line":3,"start_character":16,"end_line":3,"end_character":30},"updated":"2018-07-13 18:08:08.000000000","message":"null","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d438381d3068302d5556db3b365efae3c2c98406","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"os-migrateLive\": {"},{"line_number":3,"context_line":"        \"host\": \"%(hostname)s\","},{"line_number":4,"context_line":"        \"block_migration\": \"auto\""},{"line_number":5,"context_line":"    }"},{"line_number":6,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":6,"id":"5f7c97a3_82f09fdc","line":4,"range":{"start_line":4,"start_character":32,"end_line":4,"end_character":33},"updated":"2018-07-12 08:23:02.000000000","message":"ditto","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}],"nova/tests/functional/api_sample_tests/test_server_migrations.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"496e8437d7a580da407794e1ee5bc4b68cb1a79a","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    microversion \u003d \u00272.64\u0027"},{"line_number":235,"context_line":"    scenarios \u003d [(\u0027v2_64\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def setUp(self):"},{"line_number":238,"context_line":"        \"\"\"setUp method for server usage.\"\"\""},{"line_number":239,"context_line":"        super(ServerMigrationsSampleJsonTestV2_64, self).setUp()"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @mock.patch.object(conductor_manager.ComputeTaskManager, \u0027_live_migrate\u0027)"},{"line_number":242,"context_line":"    def test_live_migrate_abort_migration_queued(self, _live_migrate):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_d31e5d73","line":239,"range":{"start_line":237,"start_character":0,"end_line":239,"end_character":64},"updated":"2018-06-18 13:33:44.000000000","message":"It is unnecessary.","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7426539f7a349cf1bc16eb23e878f5baa0756f97","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    microversion \u003d \u00272.64\u0027"},{"line_number":235,"context_line":"    scenarios \u003d [(\u0027v2_64\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    def setUp(self):"},{"line_number":238,"context_line":"        \"\"\"setUp method for server usage.\"\"\""},{"line_number":239,"context_line":"        super(ServerMigrationsSampleJsonTestV2_64, self).setUp()"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @mock.patch.object(conductor_manager.ComputeTaskManager, \u0027_live_migrate\u0027)"},{"line_number":242,"context_line":"    def test_live_migrate_abort_migration_queued(self, _live_migrate):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_0a425d69","line":239,"range":{"start_line":237,"start_character":0,"end_line":239,"end_character":64},"in_reply_to":"5f7c97a3_d31e5d73","updated":"2018-06-29 06:52:26.000000000","message":"Done","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        self.migration.save()"},{"line_number":241,"context_line":"        self._do_post(\u0027servers/%s/action\u0027 % self.uuid, \u0027live-migrate-server\u0027,"},{"line_number":242,"context_line":"                      {\u0027hostname\u0027: self.compute.host})"},{"line_number":243,"context_line":"        self.compute._waiting_live_migrations[self.uuid] \u003d ("},{"line_number":244,"context_line":"            self.migration, futures.Future())"},{"line_number":245,"context_line":"        uri \u003d \u0027servers/%s/migrations/%s\u0027 % (self.uuid, self.migration.id)"},{"line_number":246,"context_line":"        response \u003d self._do_delete(uri)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_d5443c1d","line":243,"updated":"2018-07-10 20:55:15.000000000","message":"Should probably leave a comment about why you need to do this in a functional test. I think we also have some fake virt drivers that will leave the instance queued....can you use FakeLiveMigrateDriver? Note that you\u0027d need to override _setup_compute_service from the ancestor base class to set the compute driver config option flag to use a different driver. If FakeLiveMigrateDriver works, then you don\u0027t need the _live_migrate mock either.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7155fc5ae8c39cad243451a752556cd3ae9c5b04","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        self.migration.save()"},{"line_number":241,"context_line":"        self._do_post(\u0027servers/%s/action\u0027 % self.uuid, \u0027live-migrate-server\u0027,"},{"line_number":242,"context_line":"                      {\u0027hostname\u0027: self.compute.host})"},{"line_number":243,"context_line":"        self.compute._waiting_live_migrations[self.uuid] \u003d ("},{"line_number":244,"context_line":"            self.migration, futures.Future())"},{"line_number":245,"context_line":"        uri \u003d \u0027servers/%s/migrations/%s\u0027 % (self.uuid, self.migration.id)"},{"line_number":246,"context_line":"        response \u003d self._do_delete(uri)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_f167ba51","line":243,"in_reply_to":"5f7c97a3_249f7cb4","updated":"2018-07-13 18:24:04.000000000","message":"Nevermind I couldn\u0027t easily get this working, we could leave a TODO to clean these tests up later to use the fake virt driver.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"5f10c7460a63cc3c6020799c8127d6aa196328de","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        self.migration.save()"},{"line_number":241,"context_line":"        self._do_post(\u0027servers/%s/action\u0027 % self.uuid, \u0027live-migrate-server\u0027,"},{"line_number":242,"context_line":"                      {\u0027hostname\u0027: self.compute.host})"},{"line_number":243,"context_line":"        self.compute._waiting_live_migrations[self.uuid] \u003d ("},{"line_number":244,"context_line":"            self.migration, futures.Future())"},{"line_number":245,"context_line":"        uri \u003d \u0027servers/%s/migrations/%s\u0027 % (self.uuid, self.migration.id)"},{"line_number":246,"context_line":"        response \u003d self._do_delete(uri)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_249f7cb4","line":243,"in_reply_to":"5f7c97a3_d5443c1d","updated":"2018-07-11 01:26:54.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3640c2a6c03d53dbd45197340f46ded23a3c7a9","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    microversion \u003d \u00272.24\u0027"},{"line_number":168,"context_line":"    sample_dir \u003d \"server-migrations\""},{"line_number":169,"context_line":"    scenarios \u003d [(\u0027v2_24\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":170,"context_line":"    create_fake_migration \u003d True"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def setUp(self):"},{"line_number":173,"context_line":"        \"\"\"setUp method for server usage.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_f4c00880","line":170,"range":{"start_line":170,"start_character":4,"end_line":170,"end_character":25},"updated":"2018-07-13 18:40:13.000000000","message":"unused","commit_id":"054d089ebc1ef4b991ab9e44858416ea37b015a4"}],"nova/tests/unit/api/openstack/compute/test_server_migrations.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"45ccc5bb5bb53adccef35a14dbb2669553007866","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                          \u0027migration-id\u0027)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"class ServerMigrationsTestsV263(ServerMigrationsTestsV21):"},{"line_number":323,"context_line":"    wsgi_api_version \u003d \u00272.63\u0027"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_eee65116","line":322,"range":{"start_line":322,"start_character":0,"end_line":322,"end_character":58},"updated":"2018-06-14 08:04:11.000000000","message":"We should inherit from ServerMigrationsTestsV224 to keep 224 behavior works well in 263.","commit_id":"0bd2529bd389456bd4e4d0921d9a47d357472ffa"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ce40656b52c17957dd96afec16a8bd10f46a1e81","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                          \u0027migration-id\u0027)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"class ServerMigrationsTestsV263(ServerMigrationsTestsV21):"},{"line_number":323,"context_line":"    wsgi_api_version \u003d \u00272.63\u0027"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_6e2b21ea","line":322,"range":{"start_line":322,"start_character":0,"end_line":322,"end_character":58},"in_reply_to":"5f7c97a3_eee65116","updated":"2018-06-14 08:07:03.000000000","message":"this must be a bad copy and paste, I will fix this togther with the rebase.","commit_id":"0bd2529bd389456bd4e4d0921d9a47d357472ffa"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"496e8437d7a580da407794e1ee5bc4b68cb1a79a","unresolved":false,"context_lines":[{"line_number":322,"context_line":"class ServerMigrationsTestsV264(ServerMigrationsTestsV224):"},{"line_number":323,"context_line":"    wsgi_api_version \u003d \u00272.64\u0027"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def setUp(self):"},{"line_number":326,"context_line":"        super(ServerMigrationsTestsV264, self).setUp()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def test_cancel_live_migration_succeeded(self):"},{"line_number":329,"context_line":"        @mock.patch.object(self.compute_api, \u0027live_migrate_abort\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_531c8d76","line":326,"range":{"start_line":325,"start_character":0,"end_line":326,"end_character":54},"updated":"2018-06-18 13:33:44.000000000","message":"It is unnecessary.","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7426539f7a349cf1bc16eb23e878f5baa0756f97","unresolved":false,"context_lines":[{"line_number":322,"context_line":"class ServerMigrationsTestsV264(ServerMigrationsTestsV224):"},{"line_number":323,"context_line":"    wsgi_api_version \u003d \u00272.64\u0027"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"    def setUp(self):"},{"line_number":326,"context_line":"        super(ServerMigrationsTestsV264, self).setUp()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def test_cancel_live_migration_succeeded(self):"},{"line_number":329,"context_line":"        @mock.patch.object(self.compute_api, \u0027live_migrate_abort\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_2a47197a","line":326,"range":{"start_line":325,"start_character":0,"end_line":326,"end_character":54},"in_reply_to":"5f7c97a3_531c8d76","updated":"2018-06-29 06:52:26.000000000","message":"Done","commit_id":"1f22eb23f645a0120d535f3f744ecb6e6a2dc5f6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                                               True)"},{"line_number":334,"context_line":"        _do_test()"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def test_cancel_live_migration_in_queue_succeeded(self):"},{"line_number":337,"context_line":"        @mock.patch.object(self.compute_api, \u0027live_migrate_abort\u0027)"},{"line_number":338,"context_line":"        @mock.patch.object(self.compute_api, \u0027get\u0027)"},{"line_number":339,"context_line":"        def _do_test(mock_get, mock_abort):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_95c32459","line":336,"updated":"2018-07-10 20:55:15.000000000","message":"This test is exactly the same as the one before it. Just remove it.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"90307a5d4456b44e1f0f602cd0c3be6e47c00e36","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                                               True)"},{"line_number":334,"context_line":"        _do_test()"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def test_cancel_live_migration_in_queue_succeeded(self):"},{"line_number":337,"context_line":"        @mock.patch.object(self.compute_api, \u0027live_migrate_abort\u0027)"},{"line_number":338,"context_line":"        @mock.patch.object(self.compute_api, \u0027get\u0027)"},{"line_number":339,"context_line":"        def _do_test(mock_get, mock_abort):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_ce945944","line":336,"in_reply_to":"5f7c97a3_95c32459","updated":"2018-07-13 18:08:08.000000000","message":"Actually change this to a negative tests where we get the 409 for the service version being too old.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3640c2a6c03d53dbd45197340f46ded23a3c7a9","unresolved":false,"context_lines":[{"line_number":275,"context_line":"            mock_abort.assert_called_once_with(self.context,"},{"line_number":276,"context_line":"                                               mock_get(),"},{"line_number":277,"context_line":"                                               \u0027migration-id\u0027,"},{"line_number":278,"context_line":"                                               False)"},{"line_number":279,"context_line":"        _do_test()"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _test_cancel_live_migration_failed(self, fake_exc, expected_exc):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_b4ba9008","line":278,"range":{"start_line":278,"start_character":47,"end_line":278,"end_character":52},"updated":"2018-07-13 18:40:13.000000000","message":"this needs to be a kwarg","commit_id":"054d089ebc1ef4b991ab9e44858416ea37b015a4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3640c2a6c03d53dbd45197340f46ded23a3c7a9","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                           side_effect\u003dexc)"},{"line_number":342,"context_line":"        @mock.patch.object(self.compute_api, \u0027get\u0027)"},{"line_number":343,"context_line":"        def _do_test(mock_get, mock_abort):"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"            error \u003d self.assertRaises(webob.exc.HTTPConflict,"},{"line_number":346,"context_line":"                                      self.controller.delete,"},{"line_number":347,"context_line":"                                      self.req, \u0027server-id\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_7432b8c2","line":344,"updated":"2018-07-13 18:40:13.000000000","message":"nit: drop the blank line","commit_id":"054d089ebc1ef4b991ab9e44858416ea37b015a4"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":5357,"context_line":"                                                   mock_rec_action):"},{"line_number":5358,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":5359,"context_line":"        instance.task_state \u003d task_states.MIGRATING"},{"line_number":5360,"context_line":"        migration \u003d self._get_migration(21, \u0027queued\u0027, \u0027live-migration\u0027)"},{"line_number":5361,"context_line":"        mock_get_migration.return_value \u003d migration"},{"line_number":5362,"context_line":""},{"line_number":5363,"context_line":"        self.compute_api.live_migrate_abort(self.context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_b56e6062","line":5360,"range":{"start_line":5360,"start_character":45,"end_line":5360,"end_character":51},"updated":"2018-07-10 20:55:15.000000000","message":"You could probably use a for loop or leverage ddt for this test so you can test both queued and preparing status are checked.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"77da771ee604f353b888b632bd4d5235b40b8506","unresolved":false,"context_lines":[{"line_number":5357,"context_line":"                                                   mock_rec_action):"},{"line_number":5358,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":5359,"context_line":"        instance.task_state \u003d task_states.MIGRATING"},{"line_number":5360,"context_line":"        migration \u003d self._get_migration(21, \u0027queued\u0027, \u0027live-migration\u0027)"},{"line_number":5361,"context_line":"        mock_get_migration.return_value \u003d migration"},{"line_number":5362,"context_line":""},{"line_number":5363,"context_line":"        self.compute_api.live_migrate_abort(self.context,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_32757934","line":5360,"range":{"start_line":5360,"start_character":45,"end_line":5360,"end_character":51},"in_reply_to":"5f7c97a3_b56e6062","updated":"2018-07-11 08:51:38.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":5363,"context_line":"        self.compute_api.live_migrate_abort(self.context,"},{"line_number":5364,"context_line":"                                            instance,"},{"line_number":5365,"context_line":"                                            migration.id,"},{"line_number":5366,"context_line":"                                            True)"},{"line_number":5367,"context_line":"        mock_rec_action.assert_called_once_with("},{"line_number":5368,"context_line":"            self.context, instance, instance_actions.LIVE_MIGRATION_CANCEL)"},{"line_number":5369,"context_line":"        mock_lm_abort.called_once_with(self.context, instance, migration)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_b5950040","line":5366,"range":{"start_line":5366,"start_character":44,"end_line":5366,"end_character":48},"updated":"2018-07-10 20:55:15.000000000","message":"Use named kwargs for passing this, otherwise it\u0027s hard to know what this is w/o looking at the method signature itself.","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"77da771ee604f353b888b632bd4d5235b40b8506","unresolved":false,"context_lines":[{"line_number":5363,"context_line":"        self.compute_api.live_migrate_abort(self.context,"},{"line_number":5364,"context_line":"                                            instance,"},{"line_number":5365,"context_line":"                                            migration.id,"},{"line_number":5366,"context_line":"                                            True)"},{"line_number":5367,"context_line":"        mock_rec_action.assert_called_once_with("},{"line_number":5368,"context_line":"            self.context, instance, instance_actions.LIVE_MIGRATION_CANCEL)"},{"line_number":5369,"context_line":"        mock_lm_abort.called_once_with(self.context, instance, migration)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_b28e6924","line":5366,"range":{"start_line":5366,"start_character":44,"end_line":5366,"end_character":48},"in_reply_to":"5f7c97a3_b5950040","updated":"2018-07-11 08:51:38.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":5372,"context_line":"    def test_live_migration_abort_in_queue_failed(self, mock_get_migration):"},{"line_number":5373,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":5374,"context_line":"        instance.task_state \u003d task_states.MIGRATING"},{"line_number":5375,"context_line":"        migration \u003d self._get_migration(21, \u0027queued\u0027, \u0027live-migration\u0027)"},{"line_number":5376,"context_line":"        mock_get_migration.return_value \u003d migration"},{"line_number":5377,"context_line":""},{"line_number":5378,"context_line":"        self.assertRaises(exception.InvalidMigrationState,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_758e8827","line":5375,"range":{"start_line":5375,"start_character":45,"end_line":5375,"end_character":51},"updated":"2018-07-10 20:55:15.000000000","message":"same as above","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"77da771ee604f353b888b632bd4d5235b40b8506","unresolved":false,"context_lines":[{"line_number":5372,"context_line":"    def test_live_migration_abort_in_queue_failed(self, mock_get_migration):"},{"line_number":5373,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":5374,"context_line":"        instance.task_state \u003d task_states.MIGRATING"},{"line_number":5375,"context_line":"        migration \u003d self._get_migration(21, \u0027queued\u0027, \u0027live-migration\u0027)"},{"line_number":5376,"context_line":"        mock_get_migration.return_value \u003d migration"},{"line_number":5377,"context_line":""},{"line_number":5378,"context_line":"        self.assertRaises(exception.InvalidMigrationState,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_f26e2163","line":5375,"range":{"start_line":5375,"start_character":45,"end_line":5375,"end_character":51},"in_reply_to":"5f7c97a3_758e8827","updated":"2018-07-11 08:51:38.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"09878dee8778d4e8006fbdc8721979406ad21c57","unresolved":false,"context_lines":[{"line_number":5380,"context_line":"                          self.context,"},{"line_number":5381,"context_line":"                          instance,"},{"line_number":5382,"context_line":"                          migration.id,"},{"line_number":5383,"context_line":"                          False)"},{"line_number":5384,"context_line":""},{"line_number":5385,"context_line":"    @mock.patch.object(objects.Migration, \u0027get_by_id_and_instance\u0027)"},{"line_number":5386,"context_line":"    def test_live_migration_abort_wrong_migration_status(self,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_157e341b","line":5383,"range":{"start_line":5383,"start_character":26,"end_line":5383,"end_character":31},"updated":"2018-07-10 20:55:15.000000000","message":"same","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"77da771ee604f353b888b632bd4d5235b40b8506","unresolved":false,"context_lines":[{"line_number":5380,"context_line":"                          self.context,"},{"line_number":5381,"context_line":"                          instance,"},{"line_number":5382,"context_line":"                          migration.id,"},{"line_number":5383,"context_line":"                          False)"},{"line_number":5384,"context_line":""},{"line_number":5385,"context_line":"    @mock.patch.object(objects.Migration, \u0027get_by_id_and_instance\u0027)"},{"line_number":5386,"context_line":"    def test_live_migration_abort_wrong_migration_status(self,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_f295c13e","line":5383,"range":{"start_line":5383,"start_character":26,"end_line":5383,"end_character":31},"in_reply_to":"5f7c97a3_157e341b","updated":"2018-07-11 08:51:38.000000000","message":"Done","commit_id":"7cd942b73f4f23ea0c935503344fd44d6c21c00e"}]}
