)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"},{"line_number":14,"context_line":"results according to the migrations\u0027 statr_time."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: This adds API microversion"},{"line_number":17,"context_line":"APIImpact: Support pagination and timestamp filter for"},{"line_number":18,"context_line":"os-migrationss API"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored-By: Yikun Jiang \u003cyikunkero@gmail.com\u003e"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":41,"id":"3f4b6375_99ded60e","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":18},"updated":"2017-11-07 23:21:07.000000000","message":"You can remove these tags. DocImpact will generate a nova bug, and we don\u0027t need a nova docs bug since we can document this change in the patch itself. The APIImpact tag has no impact on nova repo changes, it only applies to nova-spec changes.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"},{"line_number":14,"context_line":"results according to the migrations\u0027 statr_time."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: This adds API microversion"},{"line_number":17,"context_line":"APIImpact: Support pagination and timestamp filter for"},{"line_number":18,"context_line":"os-migrationss API"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Co-Authored-By: Yikun Jiang \u003cyikunkero@gmail.com\u003e"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":41,"id":"3f4b6375_08260ecf","line":18,"range":{"start_line":16,"start_character":0,"end_line":18,"end_character":18},"in_reply_to":"3f4b6375_99ded60e","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3e93cb3f47364ee301d05ea1ef92724eb7ca6ff6","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"},{"line_number":14,"context_line":"results according to the migrations\u0027 statr_time."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Yikun Jiang \u003cyikunkero@gmail.com\u003e"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":60,"id":"1f485f77_cbd3925f","line":14,"range":{"start_line":14,"start_character":37,"end_line":14,"end_character":47},"updated":"2017-11-17 03:44:01.000000000","message":"updated time","commit_id":"56ae211d992dcb46b5391c4e9a1632b05b557a7a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add pagination and Changes-since filter support for os-migrations."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds pagination support and changes-since filter"},{"line_number":10,"context_line":"for os-migrationst API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":78,"id":"9f91af0f_53457bb2","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":18},"updated":"2018-01-02 18:16:04.000000000","message":"migrations","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add pagination and Changes-since filter support for os-migrations."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds pagination support and changes-since filter"},{"line_number":10,"context_line":"for os-migrationst API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":78,"id":"9f91af0f_8965f347","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":18},"in_reply_to":"9f91af0f_53457bb2","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"},{"line_number":14,"context_line":"results according to the migrations\u0027 updated time."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Yikun Jiang \u003cyikunkero@gmail.com\u003e"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implement: blueprint add-pagination-and-change-since-for-migration-list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":78,"id":"9f91af0f_73275f14","line":15,"updated":"2018-01-02 18:16:04.000000000","message":"Should also note that this microversion will return the migration uuid in the response.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"},{"line_number":14,"context_line":"results according to the migrations\u0027 updated time."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: Yikun Jiang \u003cyikunkero@gmail.com\u003e"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implement: blueprint add-pagination-and-change-since-for-migration-list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":78,"id":"9f91af0f_295ce77c","line":15,"in_reply_to":"9f91af0f_73275f14","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e052beae2f39c41225ba90fa4776ab40bc19245b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add pagination and Changes-since filter support for os-migrations."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds pagination support and changes-since filter"},{"line_number":10,"context_line":"for os-migrationst API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":79,"id":"9f91af0f_029a0862","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":18},"updated":"2018-01-05 00:28:35.000000000","message":"migrations","commit_id":"25258a6d5c3fd8f4966c6ec1b9bdaa96cf93dfb3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4c2ce3e4983044ad77acade64c32acf11b9951f5","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add pagination and Changes-since filter support for os-migrations."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds pagination support and changes-since filter"},{"line_number":10,"context_line":"for os-migrationst API."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Users can now use \u0027limit\u0027 and \u0027marker\u0027 to perform paginate"},{"line_number":13,"context_line":"query of running migrations list. Users can also filter the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":79,"id":"9f91af0f_55fe8337","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":18},"in_reply_to":"9f91af0f_029a0862","updated":"2018-01-05 08:55:54.000000000","message":"Done","commit_id":"25258a6d5c3fd8f4966c6ec1b9bdaa96cf93dfb3"}],"api-ref/source/os-migrations.inc":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Shows data on migrations."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".. warning:: The old top-level resource `/os-migrations` is frozen,"},{"line_number":10,"context_line":"             it won\u0027t be extended anymore. Use /servers/{uuid}/migrations instead."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"List Migrations"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-c++src","patch_set":41,"id":"3f4b6375_f9ccaa61","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":82},"updated":"2017-11-07 23:21:07.000000000","message":"We should probably remove this since we\u0027re now changing this API.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Shows data on migrations."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":".. warning:: The old top-level resource `/os-migrations` is frozen,"},{"line_number":10,"context_line":"             it won\u0027t be extended anymore. Use /servers/{uuid}/migrations instead."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"List Migrations"},{"line_number":13,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-c++src","patch_set":41,"id":"3f4b6375_e85bb250","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":82},"in_reply_to":"3f4b6375_f9ccaa61","updated":"2017-11-08 09:04:44.000000000","message":"Yes, sure, we should also remove the \u0027frozen\u0027 in title.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  - marker: migration_marker"},{"line_number":40,"context_line":"  - changes-since: changes_since_migration"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Response"},{"line_number":43,"context_line":"--------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. rest_parameters:: parameters.yaml"}],"source_content_type":"text/x-c++src","patch_set":41,"id":"3f4b6375_790afa89","line":42,"updated":"2017-11-07 23:21:07.000000000","message":"Wouldn\u0027t there also optionally be links in the response for paging?","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  - marker: migration_marker"},{"line_number":40,"context_line":"  - changes-since: changes_since_migration"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Response"},{"line_number":43,"context_line":"--------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. rest_parameters:: parameters.yaml"}],"source_content_type":"text/x-c++src","patch_set":41,"id":"3f4b6375_5e515c0d","line":42,"in_reply_to":"3f4b6375_790afa89","updated":"2017-11-08 09:04:44.000000000","message":"Yes, I will plus the next link","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Migrations: JSON response**"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/migrations-get.json"},{"line_number":66,"context_line":"   :language: javascript"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":41,"id":"3f4b6375_b9d2b2fb","line":65,"updated":"2017-11-07 23:21:07.000000000","message":"It might be nice to use the latest microversion sample here to show the uuid field in the response.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"**Example List Migrations: JSON response**"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/migrations-get.json"},{"line_number":66,"context_line":"   :language: javascript"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":41,"id":"3f4b6375_84c30658","line":65,"in_reply_to":"3f4b6375_b9d2b2fb","updated":"2017-11-08 09:04:44.000000000","message":"OK, I will add \"Example List Migrations (v2.54): JSON response\".","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"949cda3c185dbfa496ccdb3362d085b9405a5a42","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  - source_node: migrate_source_node"},{"line_number":54,"context_line":"  - status: migrate_status"},{"line_number":55,"context_line":"  - updated_at: updated"},{"line_number":56,"context_line":"  - uuid: migration_uuid"},{"line_number":57,"context_line":"  - migrations_links: migration_next_links_2_59"},{"line_number":58,"context_line":"  - migration_type: migration_type_2_23"},{"line_number":59,"context_line":"  - links: migration_links_2_23"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"**Example List Migrations: JSON response**"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":77,"id":"bf8cb3f7_aa2ea9a2","line":59,"range":{"start_line":56,"start_character":0,"end_line":59,"end_character":31},"updated":"2017-12-26 04:47:07.000000000","message":"The order should be as follows:\n\n  - migration_type: migration_type_2_23\n  - links: migration_links_2_23\n  - uuid: migration_uuid\n  - migrations_links: migration_next_links_2_59\n\nThe parameters added in 2.59 should be after those added in 2.23.","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2fd9284b21913fe6fc2156a201e495bb7c103f5c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  - source_node: migrate_source_node"},{"line_number":54,"context_line":"  - status: migrate_status"},{"line_number":55,"context_line":"  - updated_at: updated"},{"line_number":56,"context_line":"  - uuid: migration_uuid"},{"line_number":57,"context_line":"  - migrations_links: migration_next_links_2_59"},{"line_number":58,"context_line":"  - migration_type: migration_type_2_23"},{"line_number":59,"context_line":"  - links: migration_links_2_23"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"**Example List Migrations: JSON response**"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":77,"id":"bf8cb3f7_be02670a","line":59,"range":{"start_line":56,"start_character":0,"end_line":59,"end_character":31},"in_reply_to":"bf8cb3f7_aa2ea9a2","updated":"2017-12-26 12:04:45.000000000","message":"Yeah, new micro version fields needs to append at end.","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"949cda3c185dbfa496ccdb3362d085b9405a5a42","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Migrations (v2.59):**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/v2.59/migrations-get.json"},{"line_number":69,"context_line":"   :language: javascript"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":77,"id":"bf8cb3f7_ad1c836a","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":24},"updated":"2017-12-26 04:47:07.000000000","message":"It should be replaced with an example including \"migrations_links\" or an example including \"migrations_links\" should be added.","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2fd9284b21913fe6fc2156a201e495bb7c103f5c","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Example List Migrations (v2.59):**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/v2.59/migrations-get.json"},{"line_number":69,"context_line":"   :language: javascript"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":77,"id":"bf8cb3f7_7902b90b","line":69,"range":{"start_line":68,"start_character":0,"end_line":69,"end_character":24},"in_reply_to":"bf8cb3f7_ad1c836a","updated":"2017-12-26 12:04:45.000000000","message":"Done","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"de6df605947411250c568e22fa564ebc340a6f3b","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  - migration_type: migration_type"},{"line_number":33,"context_line":"  - source_compute: migration_source_compute"},{"line_number":34,"context_line":"  - status: migration_status"},{"line_number":35,"context_line":"  - limit: migration_limit"},{"line_number":36,"context_line":"  - marker: migration_marker"},{"line_number":37,"context_line":"  - changes-since: changes_since_migration"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Response"},{"line_number":40,"context_line":"--------"}],"source_content_type":"text/x-c++src","patch_set":85,"id":"7f96bb07_e9f4f05d","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":42},"updated":"2018-01-11 13:37:25.000000000","message":"These are added in microversion 2.59 and optional.\nSo you can sort them in alphabetical order.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"de6df605947411250c568e22fa564ebc340a6f3b","unresolved":false,"context_lines":[{"line_number":68,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/v2.59/migrations-get.json"},{"line_number":69,"context_line":"   :language: javascript"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"**Example List Migrations With Links (v2.59):**"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/v2.59/migrations-get-with-limit.json"},{"line_number":74,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":85,"id":"7f96bb07_c9bd7469","line":71,"range":{"start_line":71,"start_character":31,"end_line":71,"end_character":36},"updated":"2018-01-11 13:37:25.000000000","message":"There are \u0027links\u0027 and \u0027migration_links\u0027.\n\"Migration Links\" is adequate instead of \"Links\".","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf184fc7db5084b382755cb754955cdacbc3e916","unresolved":false,"context_lines":[{"line_number":68,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/v2.59/migrations-get.json"},{"line_number":69,"context_line":"   :language: javascript"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"**Example List Migrations With Links (v2.59):**"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":".. literalinclude:: ../../doc/api_samples/os-migrations/v2.59/migrations-get-with-limit.json"},{"line_number":74,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":85,"id":"7f96bb07_426cd935","line":71,"range":{"start_line":71,"start_character":31,"end_line":71,"end_character":36},"in_reply_to":"7f96bb07_c9bd7469","updated":"2018-01-11 15:27:17.000000000","message":"Maybe we should just call it \"With Paging\".","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":420,"context_line":"  in: query"},{"line_number":421,"context_line":"  required: false"},{"line_number":422,"context_line":"  type: string"},{"line_number":423,"context_line":"changes_since_migration:"},{"line_number":424,"context_line":"  description: |"},{"line_number":425,"context_line":"    Filters the response by a date and time stamp when the migration last"},{"line_number":426,"context_line":"    changed. To help keep track of changes this may also return recently"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3f4b6375_39000266","line":423,"updated":"2017-11-07 23:21:07.000000000","message":"This needs the min_version field for the new microversion.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":420,"context_line":"  in: query"},{"line_number":421,"context_line":"  required: false"},{"line_number":422,"context_line":"  type: string"},{"line_number":423,"context_line":"changes_since_migration:"},{"line_number":424,"context_line":"  description: |"},{"line_number":425,"context_line":"    Filters the response by a date and time stamp when the migration last"},{"line_number":426,"context_line":"    changed. To help keep track of changes this may also return recently"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3f4b6375_e82052b2","line":423,"in_reply_to":"3f4b6375_39000266","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":4003,"context_line":"  min_version: 2.23"},{"line_number":4004,"context_line":"migration_uuid:"},{"line_number":4005,"context_line":"  description: |"},{"line_number":4006,"context_line":"    The UUID of the migration"},{"line_number":4007,"context_line":"  in: body"},{"line_number":4008,"context_line":"  required: true"},{"line_number":4009,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3f4b6375_19fb0679","line":4006,"updated":"2017-11-07 23:21:07.000000000","message":"Put a period at the end of the sentence.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":4003,"context_line":"  min_version: 2.23"},{"line_number":4004,"context_line":"migration_uuid:"},{"line_number":4005,"context_line":"  description: |"},{"line_number":4006,"context_line":"    The UUID of the migration"},{"line_number":4007,"context_line":"  in: body"},{"line_number":4008,"context_line":"  required: true"},{"line_number":4009,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3f4b6375_a826dac9","line":4006,"in_reply_to":"3f4b6375_19fb0679","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"95fd798179e71148eb78deacdb9a59dada55b29f","unresolved":false,"context_lines":[{"line_number":829,"context_line":"  min_version: 2.54"},{"line_number":830,"context_line":"migration_marker:"},{"line_number":831,"context_line":"  description: |"},{"line_number":832,"context_line":"    The last-seen item. Use the ``limit`` parameter to make an initial limited"},{"line_number":833,"context_line":"    request and use the last-seen item from the response as the ``marker``"},{"line_number":834,"context_line":"    parameter value in a subsequent limited request."},{"line_number":835,"context_line":"  in: query"},{"line_number":836,"context_line":"  required: false"},{"line_number":837,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":43,"id":"3f4b6375_d91555e7","line":834,"range":{"start_line":832,"start_character":0,"end_line":834,"end_character":52},"updated":"2017-11-09 02:52:10.000000000","message":"Mention what can be used as marker here?","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9f0232d58237ab37987a3516472dbbf3b1a107af","unresolved":false,"context_lines":[{"line_number":829,"context_line":"  min_version: 2.54"},{"line_number":830,"context_line":"migration_marker:"},{"line_number":831,"context_line":"  description: |"},{"line_number":832,"context_line":"    The last-seen item. Use the ``limit`` parameter to make an initial limited"},{"line_number":833,"context_line":"    request and use the last-seen item from the response as the ``marker``"},{"line_number":834,"context_line":"    parameter value in a subsequent limited request."},{"line_number":835,"context_line":"  in: query"},{"line_number":836,"context_line":"  required: false"},{"line_number":837,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":43,"id":"1f485f77_32ffee68","line":834,"range":{"start_line":832,"start_character":0,"end_line":834,"end_character":52},"in_reply_to":"3f4b6375_d91555e7","updated":"2017-11-09 11:51:34.000000000","message":"OK, I will update as below:\ns/The last-seen item./The UUID of the last-seen migration./","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"949cda3c185dbfa496ccdb3362d085b9405a5a42","unresolved":false,"context_lines":[{"line_number":448,"context_line":"  min_version: 2.58"},{"line_number":449,"context_line":"changes_since_migration:"},{"line_number":450,"context_line":"  description: |"},{"line_number":451,"context_line":"    Filters the response by a date and time stamp when the migration last"},{"line_number":452,"context_line":"    changed."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    The date and time stamp format is `ISO 8601 \u003chttps://en.wikipedia.org/wiki/ISO_8601\u003e`_:"},{"line_number":455,"context_line":"    ::"}],"source_content_type":"text/x-yaml","patch_set":77,"id":"bf8cb3f7_ea24b1c8","line":452,"range":{"start_line":451,"start_character":4,"end_line":452,"end_character":12},"updated":"2017-12-26 04:47:07.000000000","message":"It would be better to add the description like \"Those changed after the specified date and time stamp are returned\".","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2fd9284b21913fe6fc2156a201e495bb7c103f5c","unresolved":false,"context_lines":[{"line_number":448,"context_line":"  min_version: 2.58"},{"line_number":449,"context_line":"changes_since_migration:"},{"line_number":450,"context_line":"  description: |"},{"line_number":451,"context_line":"    Filters the response by a date and time stamp when the migration last"},{"line_number":452,"context_line":"    changed."},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"    The date and time stamp format is `ISO 8601 \u003chttps://en.wikipedia.org/wiki/ISO_8601\u003e`_:"},{"line_number":455,"context_line":"    ::"}],"source_content_type":"text/x-yaml","patch_set":77,"id":"bf8cb3f7_f936c9e7","line":452,"range":{"start_line":451,"start_character":4,"end_line":452,"end_character":12},"in_reply_to":"bf8cb3f7_ea24b1c8","updated":"2017-12-26 12:04:45.000000000","message":"Done","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_139a9313","line":4148,"updated":"2018-01-02 18:16:04.000000000","message":"I know we didn\u0027t talk about this in the spec, but I wonder if we want to take the opportunity to also return the uuid in the server migrations API:\n\nhttps://github.com/openstack/nova/blob/afd45295f44c51fbd7ac543a82cee8f383054f00/nova/api/openstack/compute/server_migrations.py#L28\n\nSince if we added that change later to the server migrations API, it will be a different microversion which could be kind of confusing. It\u0027s not a big deal, but I figured I\u0027d bring it up.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_2c3b95eb","line":4148,"in_reply_to":"9f91af0f_139a9313","updated":"2018-01-04 08:04:55.000000000","message":"agreed, so, we need add this change in this patch? or in following patch WITHOUT micro version change?","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a34662809dcb99042d783b89890164323c40833e","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_917cff1f","line":4148,"in_reply_to":"9f91af0f_287da1e6","updated":"2018-01-08 02:21:17.000000000","message":"I agree with Matt, this patch is good place for adding uuid to the \u0027/servers/{uuid}/migrations\u0027, since this patch add uuid to the \u0027/os-migrations\u0027 also.\n\nAnother question is we currently use \u0027id\u0027 to get the specific migration in  the \u0027/servers/{uuid}/migrations/{id}\u0027 API, do want to change to the \u0027uuid\u0027? I feel it is fine, the uuid is used to query the consumer in the placement.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e052beae2f39c41225ba90fa4776ab40bc19245b","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_42901044","line":4148,"in_reply_to":"9f91af0f_2c3b95eb","updated":"2018-01-05 00:28:35.000000000","message":"If we add uuid to the response for the server migrations API, it requires a microversion. That\u0027s why I was thinking it might be nice to just do it in this change as well so it\u0027s the same microversion in both APIs. We should maybe ask Alex Xu for his opinion.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"448eae9c26ee3c815bac14ee8971677d26e3fb91","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_70771504","line":4148,"in_reply_to":"9f91af0f_42901044","updated":"2018-01-05 09:28:22.000000000","message":"I have a patch to modify the output of server migration APIs.\n\nList/show all server migration types (2/2)\nhttps://review.openstack.org/#/c/459483/\n\nIMO, adding migration uuid to the response had better be done separately after both this patch and my patch are merged.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"924c2912b0f9a7de6e2c3ae95cb3bfde5a7365ea","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_287da1e6","line":4148,"in_reply_to":"9f91af0f_70771504","updated":"2018-01-05 14:13:23.000000000","message":"\u003e IMO, adding migration uuid to the response had better be done separately after both this patch and my patch are merged.\n\nI\u0027d rather not do an entirely separate microversion just to add the uuid field to the response for the server migrations API. So if it was going to be either this one or the migration types patch, I\u0027d rather be consistent and do it in this microversion so the uuid shows up in both APIs.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"655c52a0b59d96fcd351e22a0de3c065eaf5df90","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_4d01ee04","line":4148,"in_reply_to":"9f91af0f_917cff1f","updated":"2018-01-08 14:57:13.000000000","message":"\u003e Another question is we currently use \u0027id\u0027 to get the specific migration in the \u0027/servers/{uuid}/migrations/{id}\u0027 API, do want to change to the \u0027uuid\u0027? I feel it is fine, the uuid is used to query the consumer in the placement.\n\nIn the spec review we talked about whether or not we should make id field in the os-migrations response a uuid or add another uuid field to the response and leave the id field alone. We aren\u0027t very consistent with this between the os-aggregates and os-services APIs, but we decided to follow what os-aggregates did and return both id and uuid responses.\n\nAs for the server migrations API, those are scoped to a particular server which is looked up to find the cell it\u0027s in, so the migration id being the int primary key is OK since we already know which cell we\u0027re in. The os-services API is not like that, so for the 2.53 microversion I opted to change the id to be the uuid value since we need that to be unique across cells for the lookup.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"c3aadd67387cc87d68373d732d35300ab72c265d","unresolved":false,"context_lines":[{"line_number":4145,"context_line":"  required: true"},{"line_number":4146,"context_line":"  type: string"},{"line_number":4147,"context_line":"  min_version: 2.23"},{"line_number":4148,"context_line":"migration_uuid:"},{"line_number":4149,"context_line":"  description: |"},{"line_number":4150,"context_line":"    The UUID of the migration."},{"line_number":4151,"context_line":"  in: body"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_8cb06645","line":4148,"in_reply_to":"9f91af0f_917cff1f","updated":"2018-01-08 03:35:58.000000000","message":"Yeah, I also agree add uuid in server migrations response in this change, and I submit a patch for our convenient reviewing. https://review.openstack.org/#/c/531633\n\nAnd for @alex question, there\u0027s no doubt that we need change all `id` to `uuid` finally, but consider about some other APIs:\n\nhttps://github.com/openstack/nova/blob/e975603b881d357853bb4c5288d30fcfce7ad751/api-ref/source/server-migrations.inc#list-migrations\n\n1. Force Migration Complete Action\nPOST /servers/{server_id}/migrations/{migration_id}/action\n2. Delete (Abort) Migration\nDELETE /servers/{server_id}/migrations/{migration_id}\n\nalso need to be changed.\n\nSo, IMO, I prefer put these changes(migration_id \u003d\u003d\u003e migration_uuid) in a separate new micro version. and other idea?","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"}],"doc/api_samples/os-migrations/v2.54/migrations-get-with-limit.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    ],"},{"line_number":20,"context_line":"    \"migrations_links\": [{"},{"line_number":21,"context_line":"\t\t\"href\": \"http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/migrations?limit\u003d1\u0026marker\u003d42341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":22,"context_line":"\t\t\"rel\": \"next\""},{"line_number":23,"context_line":"\t}]"},{"line_number":24,"context_line":"}"}],"source_content_type":"application/json","patch_set":41,"id":"3f4b6375_992c9602","line":21,"updated":"2017-11-07 23:21:07.000000000","message":"whitespace issues here","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    ],"},{"line_number":20,"context_line":"    \"migrations_links\": [{"},{"line_number":21,"context_line":"\t\t\"href\": \"http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/migrations?limit\u003d1\u0026marker\u003d42341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":22,"context_line":"\t\t\"rel\": \"next\""},{"line_number":23,"context_line":"\t}]"},{"line_number":24,"context_line":"}"}],"source_content_type":"application/json","patch_set":41,"id":"3f4b6375_4811a65c","line":21,"in_reply_to":"3f4b6375_992c9602","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"}],"doc/api_samples/os-migrations/v2.54/migrations-get-with-timestamp-filter.json":[{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"3ca212da57df01cd345085b475f1dc11dee73847","unresolved":false,"context_lines":[{"line_number":14,"context_line":"            \"status\": \"migrating\","},{"line_number":15,"context_line":"            \"migration_type\": \"resize\","},{"line_number":16,"context_line":"            \"updated_at\": \"2016-06-23T13:42:02.000000\","},{"line_number":17,"context_line":"            \"uuid\": \"42341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":18,"context_line":"        },"},{"line_number":19,"context_line":"        {"},{"line_number":20,"context_line":"            \"created_at\": \"2016-06-23T13:42:02.000000\","}],"source_content_type":"application/json","patch_set":28,"id":"3f4b6375_4c7297af","line":17,"range":{"start_line":17,"start_character":58,"end_line":17,"end_character":59},"updated":"2017-10-31 04:22:26.000000000","message":"please remove","commit_id":"a20266468cdf88799a0316e83626a5e3bc99dbed"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"499777f6afa564c2162e72dd4f02ca15b902f2dc","unresolved":false,"context_lines":[{"line_number":14,"context_line":"            \"status\": \"migrating\","},{"line_number":15,"context_line":"            \"migration_type\": \"resize\","},{"line_number":16,"context_line":"            \"updated_at\": \"2016-06-23T13:42:02.000000\","},{"line_number":17,"context_line":"            \"uuid\": \"42341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":18,"context_line":"        },"},{"line_number":19,"context_line":"        {"},{"line_number":20,"context_line":"            \"created_at\": \"2016-06-23T13:42:02.000000\","}],"source_content_type":"application/json","patch_set":28,"id":"3f4b6375_efeff5e6","line":17,"range":{"start_line":17,"start_character":58,"end_line":17,"end_character":59},"in_reply_to":"3f4b6375_4c7297af","updated":"2017-10-31 06:18:55.000000000","message":"Done","commit_id":"a20266468cdf88799a0316e83626a5e3bc99dbed"},{"author":{"_account_id":19853,"name":"Nguyen Hung Phuong","email":"phuongnh@vn.fujitsu.com","username":"phuongnh"},"change_message_id":"3ca212da57df01cd345085b475f1dc11dee73847","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            \"status\": \"error\","},{"line_number":31,"context_line":"            \"migration_type\": \"resize\","},{"line_number":32,"context_line":"            \"updated_at\": \"2016-06-23T13:42:02.000000\","},{"line_number":33,"context_line":"            \"uuid\": \"32341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":"    ]"},{"line_number":36,"context_line":"}"}],"source_content_type":"application/json","patch_set":28,"id":"3f4b6375_6c6f93c5","line":33,"range":{"start_line":33,"start_character":58,"end_line":33,"end_character":59},"updated":"2017-10-31 04:22:26.000000000","message":"ditto","commit_id":"a20266468cdf88799a0316e83626a5e3bc99dbed"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"499777f6afa564c2162e72dd4f02ca15b902f2dc","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            \"status\": \"error\","},{"line_number":31,"context_line":"            \"migration_type\": \"resize\","},{"line_number":32,"context_line":"            \"updated_at\": \"2016-06-23T13:42:02.000000\","},{"line_number":33,"context_line":"            \"uuid\": \"32341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":"    ]"},{"line_number":36,"context_line":"}"}],"source_content_type":"application/json","patch_set":28,"id":"3f4b6375_8fbe41d2","line":33,"range":{"start_line":33,"start_character":58,"end_line":33,"end_character":59},"in_reply_to":"3f4b6375_6c6f93c5","updated":"2017-10-31 06:18:55.000000000","message":"Done","commit_id":"a20266468cdf88799a0316e83626a5e3bc99dbed"}],"doc/api_samples/os-migrations/v2.59/migrations-get-with-limit.json":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"de6df605947411250c568e22fa564ebc340a6f3b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"            \"uuid\": \"42341d4b-346a-40d0-83c6-5f4f6892b650\""},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    ],"},{"line_number":20,"context_line":"    \"migrations_links\": [{"},{"line_number":21,"context_line":"        \"href\": \"http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-migrations?limit\u003d1\u0026marker\u003d42341d4b-346a-40d0-83c6-5f4f6892b650\","},{"line_number":22,"context_line":"        \"rel\": \"next\""},{"line_number":23,"context_line":"    }]"},{"line_number":24,"context_line":"}"}],"source_content_type":"application/json","patch_set":85,"id":"7f96bb07_495f2441","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":6},"updated":"2018-01-11 13:37:25.000000000","message":"Format. How about the following?\n\n    \"migrations_links\": [\n        {\n            \"href\": \"http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-migrations?limit\u003d1\u0026marker\u003d42341d4b-346a-40d0-83c6-5f4f6892b650\",\n            \"rel\": \"next\"\n        }\n    ]","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f3f85325f08f2f067549f76093b1d101a634d0dc","unresolved":false,"context_lines":[{"line_number":128,"context_line":"             The os-services and os-hypervisors APIs now return a uuid in the"},{"line_number":129,"context_line":"             id field, and takes a uuid in requests. PUT and GET requests"},{"line_number":130,"context_line":"             and responses are also changed."},{"line_number":131,"context_line":"    * 2.54 - Add pagination support and changes-since filter for"},{"line_number":132,"context_line":"             os-migrations API."},{"line_number":133,"context_line":"\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_8c3339ab","line":132,"range":{"start_line":131,"start_character":13,"end_line":132,"end_character":31},"updated":"2017-10-27 08:22:10.000000000","message":"uuid change also talk here?","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"499777f6afa564c2162e72dd4f02ca15b902f2dc","unresolved":false,"context_lines":[{"line_number":128,"context_line":"             The os-services and os-hypervisors APIs now return a uuid in the"},{"line_number":129,"context_line":"             id field, and takes a uuid in requests. PUT and GET requests"},{"line_number":130,"context_line":"             and responses are also changed."},{"line_number":131,"context_line":"    * 2.54 - Add pagination support and changes-since filter for"},{"line_number":132,"context_line":"             os-migrations API."},{"line_number":133,"context_line":"\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_b7872e10","line":132,"range":{"start_line":131,"start_character":13,"end_line":132,"end_character":31},"in_reply_to":"3f4b6375_8c3339ab","updated":"2017-10-31 06:18:55.000000000","message":"Done","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"8b762e539449c1a0ac9ad694202225b3b6fb5e52","unresolved":false,"context_lines":[{"line_number":128,"context_line":"             The os-services and os-hypervisors APIs now return a uuid in the"},{"line_number":129,"context_line":"             id field, and takes a uuid in requests. PUT and GET requests"},{"line_number":130,"context_line":"             and responses are also changed."},{"line_number":131,"context_line":"    * 2.54 - Add pagination support and changes-since filter for"},{"line_number":132,"context_line":"             os-migrations API."},{"line_number":133,"context_line":"\"\"\""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_9a4b525e","line":132,"range":{"start_line":131,"start_character":13,"end_line":132,"end_character":31},"in_reply_to":"3f4b6375_8c3339ab","updated":"2017-10-28 01:28:57.000000000","message":"Yeah, I will update.","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"}],"nova/api/openstack/compute/migrations.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d7c46aa08323643f892e83b654e246d00f0c07a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        context.can(migrations_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":81,"context_line":"        search_opts \u003d {}"},{"line_number":82,"context_line":"        search_opts.update(req.GET)"},{"line_number":83,"context_line":"        filters_added_in_v234 \u003d [\u0027limit\u0027, \u0027marker\u0027, \u0027changes-since\u0027]"},{"line_number":84,"context_line":"        if not api_version_request.is_supported(req, min_version\u003d\u00272.34\u0027):"},{"line_number":85,"context_line":"            [req.search_opts.pop(filter) for filter in filters_added_in_v234"},{"line_number":86,"context_line":"             if filter in search_opts]"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f4e5783_865f240d","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":68},"updated":"2017-10-12 18:27:43.000000000","message":"We should use query parameter schema validation now. See how this is done on the servers index() method.","commit_id":"5bb1736a85ff4df1c628f22769f0c17a84c8b5d4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"27aba369730d429c46b1d1982131cd76ac14506f","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        search_opts.update(req.GET)"},{"line_number":83,"context_line":"        filters_added_in_v234 \u003d [\u0027limit\u0027, \u0027marker\u0027, \u0027changes-since\u0027]"},{"line_number":84,"context_line":"        if not api_version_request.is_supported(req, min_version\u003d\u00272.34\u0027):"},{"line_number":85,"context_line":"            [req.search_opts.pop(filter) for filter in filters_added_in_v234"},{"line_number":86,"context_line":"             if filter in search_opts]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if \u0027changes-since\u0027 in search_opts:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f5c4f37_b9bdfd69","line":85,"range":{"start_line":85,"start_character":13,"end_line":85,"end_character":17},"updated":"2017-09-21 09:55:48.000000000","message":"AttributeError: search_opts","commit_id":"5bb1736a85ff4df1c628f22769f0c17a84c8b5d4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d7c46aa08323643f892e83b654e246d00f0c07a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            [req.search_opts.pop(filter) for filter in filters_added_in_v234"},{"line_number":86,"context_line":"             if filter in search_opts]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if \u0027changes-since\u0027 in search_opts:"},{"line_number":89,"context_line":"            try:"},{"line_number":90,"context_line":"                parsed \u003d timeutils.parse_isotime("},{"line_number":91,"context_line":"                    search_opts[\u0027changes-since\u0027])"},{"line_number":92,"context_line":"            except ValueError:"},{"line_number":93,"context_line":"                msg \u003d _(\u0027Invalid changes-since value\u0027)"},{"line_number":94,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":95,"context_line":"            search_opts[\u0027changes-since\u0027] \u003d parsed"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        migrations \u003d self.compute_api.get_migrations(context, search_opts)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"5f4e5783_e6aff8e0","line":95,"range":{"start_line":88,"start_character":8,"end_line":95,"end_character":49},"updated":"2017-10-12 18:27:43.000000000","message":"This can be done with query parameter schema validation.","commit_id":"5bb1736a85ff4df1c628f22769f0c17a84c8b5d4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f3f85325f08f2f067549f76093b1d101a634d0dc","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            del obj[\u0027hidden\u0027]"},{"line_number":57,"context_line":"            if not api_version_request.is_supported("},{"line_number":58,"context_line":"                    req, min_version\u003dMIGRATIONS_PAGINATION_MIN_VERSION):"},{"line_number":59,"context_line":"                del obj[\u0027uuid\u0027]"},{"line_number":60,"context_line":"            if \u0027memory_total\u0027 in obj:"},{"line_number":61,"context_line":"                for key in detail_keys:"},{"line_number":62,"context_line":"                    del obj[key]"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_ecee2deb","line":59,"range":{"start_line":59,"start_character":16,"end_line":59,"end_character":31},"updated":"2017-10-27 08:22:10.000000000","message":"this is not talked in commit msg, guess combine those 2 together is too complicated..","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"8b762e539449c1a0ac9ad694202225b3b6fb5e52","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            del obj[\u0027hidden\u0027]"},{"line_number":57,"context_line":"            if not api_version_request.is_supported("},{"line_number":58,"context_line":"                    req, min_version\u003dMIGRATIONS_PAGINATION_MIN_VERSION):"},{"line_number":59,"context_line":"                del obj[\u0027uuid\u0027]"},{"line_number":60,"context_line":"            if \u0027memory_total\u0027 in obj:"},{"line_number":61,"context_line":"                for key in detail_keys:"},{"line_number":62,"context_line":"                    del obj[key]"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_ba304eea","line":59,"range":{"start_line":59,"start_character":16,"end_line":59,"end_character":31},"in_reply_to":"3f4b6375_ecee2deb","updated":"2017-10-28 01:28:57.000000000","message":"Sure, I will plus this in commit msg.\n\nReturn id with uuid value or return both id and uuid, we have discussed in spec, just FYI:\nhttps://review.openstack.org/#/c/506030/ PS12、PS13\n\nFinally, we decided to return both an id and uuid key to avoid confusing. And any other idea, you can feel free to let me know. Thanks for review. : )","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                migrations_dict[\u0027migrations_links\u0027] \u003d migrations_links"},{"line_number":100,"context_line":"        return migrations_dict"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.22\")  # noqa"},{"line_number":103,"context_line":"    @extensions.expected_errors(())"},{"line_number":104,"context_line":"    @validation.query_schema(schema_migrations.list_query_schema_v20,"},{"line_number":105,"context_line":"                             \"2.1\", \"2.22\")"},{"line_number":106,"context_line":"    def index(self, req):"},{"line_number":107,"context_line":"        \"\"\"Return all migrations in progress.\"\"\""},{"line_number":108,"context_line":"        return self._index(req)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @wsgi.Controller.api_version(\"2.23\", \"2.53\")  # noqa"},{"line_number":111,"context_line":"    @extensions.expected_errors(())"},{"line_number":112,"context_line":"    @validation.query_schema(schema_migrations.list_query_schema_v20,"},{"line_number":113,"context_line":"                             \"2.23\", \"2.53\")"},{"line_number":114,"context_line":"    def index(self, req):"},{"line_number":115,"context_line":"        \"\"\"Return all migrations in progress.\"\"\""},{"line_number":116,"context_line":"        return self._index(req, add_link\u003dTrue)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @wsgi.Controller.api_version(\"2.54\")  # noqa"},{"line_number":119,"context_line":"    @extensions.expected_errors(400)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_f9514a63","line":116,"range":{"start_line":102,"start_character":4,"end_line":116,"end_character":46},"updated":"2017-11-07 23:21:07.000000000","message":"Splitting this into two separate methods is a bit confusing, because the schema is the same, the only difference is whether the links should be returned.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                migrations_dict[\u0027migrations_links\u0027] \u003d migrations_links"},{"line_number":100,"context_line":"        return migrations_dict"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.22\")  # noqa"},{"line_number":103,"context_line":"    @extensions.expected_errors(())"},{"line_number":104,"context_line":"    @validation.query_schema(schema_migrations.list_query_schema_v20,"},{"line_number":105,"context_line":"                             \"2.1\", \"2.22\")"},{"line_number":106,"context_line":"    def index(self, req):"},{"line_number":107,"context_line":"        \"\"\"Return all migrations in progress.\"\"\""},{"line_number":108,"context_line":"        return self._index(req)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @wsgi.Controller.api_version(\"2.23\", \"2.53\")  # noqa"},{"line_number":111,"context_line":"    @extensions.expected_errors(())"},{"line_number":112,"context_line":"    @validation.query_schema(schema_migrations.list_query_schema_v20,"},{"line_number":113,"context_line":"                             \"2.23\", \"2.53\")"},{"line_number":114,"context_line":"    def index(self, req):"},{"line_number":115,"context_line":"        \"\"\"Return all migrations in progress.\"\"\""},{"line_number":116,"context_line":"        return self._index(req, add_link\u003dTrue)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @wsgi.Controller.api_version(\"2.54\")  # noqa"},{"line_number":119,"context_line":"    @extensions.expected_errors(400)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_c3ffb7a8","line":116,"range":{"start_line":102,"start_character":4,"end_line":116,"end_character":46},"in_reply_to":"3f4b6375_f9514a63","updated":"2017-11-08 09:04:44.000000000","message":"To be honest, I\u0027m not sure what the real rules on splitting method. An alternative approach is something like:\n\n@wsgi.Controller.api_version(\"2.1\", \"2.53\")  # noqa\n@extensions.expected_errors(())\n@validation.query_schema(schema_migrations.list_query_schema_v20,\n                         \"2.1\", \"2.53\")\ndef index(self, req):\n    if api_version_request.is_supported(req, min_version\u003d\u00272.23\u0027):\n        return self._index(req, add_link\u003dTrue)\n    else:\n        return self._index(req)\n\nI think maybe the previous one is more clearer, we can see clearly that:\nwith 2.1~2.22 call `self._index(req)` \nwith 2.23~2.53 call `self._index(req, add_link\u003dTrue)`\nand also no need to check (api_version_request.is_supported) in any micro version.\n\nYeah, it\u0027s really add some duplicated code(such as the same expected_error and the same schema). I was a little hesitant before.\n\nAnd then, I also have a look on other interfaces, such as keypair:\nhttps://github.com/openstack/nova/blob/e48db05b0d5820d9c8838ee55dfacb04cf88289f/nova/api/openstack/compute/keypairs.py#L251\n\nSo, finally, I split this into two separate methods. Maybe the keypair\u0027s index is a bad example, Could you give me some advice on it?","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            else:"},{"line_number":93,"context_line":"                migrations \u003d self.compute_api.get_migrations("},{"line_number":94,"context_line":"                    context, search_opts)"},{"line_number":95,"context_line":"        except exception.MarkerNotFound as e:"},{"line_number":96,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        migrations \u003d self._output(req, migrations, add_link, add_uuid)"},{"line_number":99,"context_line":"        migrations_dict \u003d {\u0027migrations\u0027: migrations}"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_532b3b93","line":96,"range":{"start_line":95,"start_character":8,"end_line":96,"end_character":68},"updated":"2018-01-02 18:16:04.000000000","message":"This try/except should be scoped to just the get_migrations_sorted call.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            else:"},{"line_number":93,"context_line":"                migrations \u003d self.compute_api.get_migrations("},{"line_number":94,"context_line":"                    context, search_opts)"},{"line_number":95,"context_line":"        except exception.MarkerNotFound as e:"},{"line_number":96,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        migrations \u003d self._output(req, migrations, add_link, add_uuid)"},{"line_number":99,"context_line":"        migrations_dict \u003d {\u0027migrations\u0027: migrations}"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_89cad317","line":96,"range":{"start_line":95,"start_character":8,"end_line":96,"end_character":68},"in_reply_to":"9f91af0f_532b3b93","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"dec755951d4815c603e2b3eeabee886f0fc14912","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            # live-migration."},{"line_number":67,"context_line":"            if add_link and obj[\u0027migration_type\u0027] \u003d\u003d \"live-migration\" and ("},{"line_number":68,"context_line":"                    obj[\"status\"] in live_migration_in_progress):"},{"line_number":69,"context_line":"                obj[\"links\"] \u003d self._view_builder._get_links("},{"line_number":70,"context_line":"                    req, obj[\"id\"],"},{"line_number":71,"context_line":"                    self._collection_name % obj[\u0027instance_uuid\u0027])"},{"line_number":72,"context_line":"            elif add_link is False:"},{"line_number":73,"context_line":"                del obj[\u0027migration_type\u0027]"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":84,"id":"9f91af0f_1f4e71c0","line":71,"range":{"start_line":69,"start_character":16,"end_line":71,"end_character":65},"updated":"2018-01-10 13:06:52.000000000","message":"I think we forget a thing...\n\nwe already have links field https://github.com/openstack/nova/blob/master/doc/api_samples/os-migrations/v2.23/migrations-get.json#L10\n\nso we should merge them into single field?","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aec716507599a8d8b3fa95ab0bc56229f5026587","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            # live-migration."},{"line_number":67,"context_line":"            if add_link and obj[\u0027migration_type\u0027] \u003d\u003d \"live-migration\" and ("},{"line_number":68,"context_line":"                    obj[\"status\"] in live_migration_in_progress):"},{"line_number":69,"context_line":"                obj[\"links\"] \u003d self._view_builder._get_links("},{"line_number":70,"context_line":"                    req, obj[\"id\"],"},{"line_number":71,"context_line":"                    self._collection_name % obj[\u0027instance_uuid\u0027])"},{"line_number":72,"context_line":"            elif add_link is False:"},{"line_number":73,"context_line":"                del obj[\u0027migration_type\u0027]"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":84,"id":"9f91af0f_6d2277bb","line":71,"range":{"start_line":69,"start_character":16,"end_line":71,"end_character":65},"in_reply_to":"9f91af0f_1f4e71c0","updated":"2018-01-10 14:53:21.000000000","message":"My understanding with the paging links is they have a different name, like server_links and hypervisor_links, etc. The \u0027links\u0027 are for bookmarks and references to another API call.\n\nhttps://github.com/openstack/nova/blob/master/doc/api_samples/os-hypervisors/v2.33/hypervisors-list-resp.json#L10\n\nhttps://github.com/openstack/nova/blob/master/api-ref/source/parameters.yaml#L2554\n\nhttps://github.com/openstack/nova/blob/master/api-ref/source/parameters.yaml#L3685\n\netc","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"dec755951d4815c603e2b3eeabee886f0fc14912","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        context.can(migrations_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":81,"context_line":"        search_opts \u003d {}"},{"line_number":82,"context_line":"        search_opts.update(req.GET)"},{"line_number":83,"context_line":"        if \u0027changes-since\u0027 in search_opts:"},{"line_number":84,"context_line":"            search_opts[\u0027changes-since\u0027] \u003d timeutils.parse_isotime("},{"line_number":85,"context_line":"                search_opts[\u0027changes-since\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.59\u0027):"},{"line_number":88,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":84,"id":"9f91af0f_5fb15946","line":85,"range":{"start_line":83,"start_character":8,"end_line":85,"end_character":45},"updated":"2018-01-10 13:06:52.000000000","message":"We didn\u0027t limit extra query parameter before 2.59, so this will expose \u0027change-since\u0027 query parameter to the old version API.\n\nThis parameter pass down to the db layer method directly https://review.openstack.org/#/c/514904/34/nova/db/sqlalchemy/api.py@4401","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aec716507599a8d8b3fa95ab0bc56229f5026587","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        context.can(migrations_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":81,"context_line":"        search_opts \u003d {}"},{"line_number":82,"context_line":"        search_opts.update(req.GET)"},{"line_number":83,"context_line":"        if \u0027changes-since\u0027 in search_opts:"},{"line_number":84,"context_line":"            search_opts[\u0027changes-since\u0027] \u003d timeutils.parse_isotime("},{"line_number":85,"context_line":"                search_opts[\u0027changes-since\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.59\u0027):"},{"line_number":88,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":84,"id":"9f91af0f_6d0b5729","line":85,"range":{"start_line":83,"start_character":8,"end_line":85,"end_character":45},"in_reply_to":"9f91af0f_5fb15946","updated":"2018-01-10 14:53:21.000000000","message":"Hmm, options are:\n\n1. Ignore it and assume people aren\u0027t going to do that.\n\n2. Check for it explicitly in the API code \u003c2.59 and remove it from the filters that go to the DB API.","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4fb4129a7ce6e2c4f3135845239c984029a9741f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        context.can(migrations_policies.POLICY_ROOT % \u0027index\u0027)"},{"line_number":81,"context_line":"        search_opts \u003d {}"},{"line_number":82,"context_line":"        search_opts.update(req.GET)"},{"line_number":83,"context_line":"        if \u0027changes-since\u0027 in search_opts:"},{"line_number":84,"context_line":"            search_opts[\u0027changes-since\u0027] \u003d timeutils.parse_isotime("},{"line_number":85,"context_line":"                search_opts[\u0027changes-since\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.59\u0027):"},{"line_number":88,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":84,"id":"7f96bb07_2483f606","line":85,"range":{"start_line":83,"start_character":8,"end_line":85,"end_character":45},"in_reply_to":"9f91af0f_6d0b5729","updated":"2018-01-10 16:47:13.000000000","message":"I spoke with Alex about this in IRC. I\u0027ll make the change in option #2 so we can keep this moving.","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ecb946766a890fb187bec054c3d1314e499b8eb4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            search_opts[\u0027changes-since\u0027] \u003d timeutils.parse_isotime("},{"line_number":85,"context_line":"                search_opts[\u0027changes-since\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.59\u0027):"},{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                migrations \u003d self.compute_api.get_migrations_sorted("},{"line_number":90,"context_line":"                    context, search_opts,"}],"source_content_type":"text/x-python","patch_set":84,"id":"7f96bb07_a44706bd","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":68},"updated":"2018-01-10 16:53:29.000000000","message":"nit: small optimization here, we could just check that sort_keys is set because it will if microversion\u003e\u003d2.59.","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b803b266c36e0843edc4952f3daa0396bcf10739","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.22\")  # noqa"},{"line_number":117,"context_line":"    @wsgi.expected_errors(())"},{"line_number":118,"context_line":"    @validation.query_schema(schema_migrations.list_query_schema_v20,"},{"line_number":119,"context_line":"                             \"2.1\", \"2.22\")"},{"line_number":120,"context_line":"    def index(self, req):"},{"line_number":121,"context_line":"        \"\"\"Return all migrations using the query parameters as filters.\"\"\""},{"line_number":122,"context_line":"        return self._index(req)"}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_0c4feabd","line":119,"range":{"start_line":119,"start_character":29,"end_line":119,"end_character":34},"updated":"2018-01-11 14:00:23.000000000","message":"2.0.\nthis used to be validated for v2.0 case also as min_version was None previously.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf184fc7db5084b382755cb754955cdacbc3e916","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.22\")  # noqa"},{"line_number":117,"context_line":"    @wsgi.expected_errors(())"},{"line_number":118,"context_line":"    @validation.query_schema(schema_migrations.list_query_schema_v20,"},{"line_number":119,"context_line":"                             \"2.1\", \"2.22\")"},{"line_number":120,"context_line":"    def index(self, req):"},{"line_number":121,"context_line":"        \"\"\"Return all migrations using the query parameters as filters.\"\"\""},{"line_number":122,"context_line":"        return self._index(req)"}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_4255b94f","line":119,"range":{"start_line":119,"start_character":29,"end_line":119,"end_character":34},"in_reply_to":"7f96bb07_0c4feabd","updated":"2018-01-11 15:27:17.000000000","message":"I don\u0027t know that this matters. We have both 2.0 and 2.1 all over the API and it doesn\u0027t seem to make a difference.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6fa0291ba15543b8748f565d8531994b8f4b23bb","unresolved":false,"context_lines":[{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* \"GET /os-migrations\" will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":26,"id":"3f4b6375_4254c154","line":695,"range":{"start_line":695,"start_character":2,"end_line":695,"end_character":22},"updated":"2017-10-30 06:44:00.000000000","message":"It should be ``GET /os-migrations`` because of consistency (See microversion 2.53 description).","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"499777f6afa564c2162e72dd4f02ca15b902f2dc","unresolved":false,"context_lines":[{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* \"GET /os-migrations\" will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":26,"id":"3f4b6375_f78da631","line":695,"range":{"start_line":695,"start_character":2,"end_line":695,"end_character":22},"in_reply_to":"3f4b6375_4254c154","updated":"2017-10-31 06:18:55.000000000","message":"Done","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":690,"context_line":""},{"line_number":691,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_7999da1c","line":693,"range":{"start_line":693,"start_character":15,"end_line":693,"end_character":22},"updated":"2017-11-07 23:21:07.000000000","message":"I don\u0027t think the os-migrations API filters out non-running migrations does it? The GET /servers/{server_id/migrations API does that.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":690,"context_line":""},{"line_number":691,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_a3139b00","line":693,"range":{"start_line":693,"start_character":15,"end_line":693,"end_character":22},"in_reply_to":"3f4b6375_7999da1c","updated":"2017-11-08 09:04:44.000000000","message":"Yes, I will update it.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":691,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_b98ab2b8","line":694,"range":{"start_line":694,"start_character":34,"end_line":694,"end_character":51},"updated":"2017-11-07 23:21:07.000000000","message":"This isn\u0027t instance actions, nor start time, so maybe \"to filter results based on the last time the migration record was updated.\" Something like that.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":691,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_198ae6bd","line":694,"range":{"start_line":694,"start_character":24,"end_line":694,"end_character":30},"updated":"2017-11-07 23:21:07.000000000","message":"based","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":691,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_44a3ceb2","line":694,"range":{"start_line":694,"start_character":24,"end_line":694,"end_character":30},"in_reply_to":"3f4b6375_198ae6bd","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":691,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_03d14f23","line":694,"range":{"start_line":694,"start_character":34,"end_line":694,"end_character":51},"in_reply_to":"3f4b6375_b98ab2b8","updated":"2017-11-08 09:04:44.000000000","message":"Oh, Sorry for the low level mistake...","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_79c2faea","line":695,"range":{"start_line":695,"start_character":54,"end_line":695,"end_character":57},"updated":"2017-11-07 23:21:07.000000000","message":"Not for, in addition to.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":692,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":693,"context_line":"  when listing running migrations. Users can also use filter ``changes-since``"},{"line_number":694,"context_line":"  to filter the results depend on action start time."},{"line_number":695,"context_line":"* ``GET /os-migrations`` will now return a uuid value for the migrations id in"},{"line_number":696,"context_line":"  the response."}],"source_content_type":"text/x-rst","patch_set":41,"id":"3f4b6375_43a8678a","line":695,"range":{"start_line":695,"start_character":54,"end_line":695,"end_character":57},"in_reply_to":"3f4b6375_79c2faea","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"95fd798179e71148eb78deacdb9a59dada55b29f","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":693,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":694,"context_line":"  when listing migrations. Users can also use filter ``changes-since` to"},{"line_number":695,"context_line":"  filter the results based on the last time the migration record was updated."},{"line_number":696,"context_line":"* ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":697,"context_line":"  migrations id in the response."}],"source_content_type":"text/x-rst","patch_set":43,"id":"3f4b6375_f9fff1a8","line":694,"range":{"start_line":694,"start_character":46,"end_line":694,"end_character":69},"updated":"2017-11-09 02:52:10.000000000","message":"The order seems wrong, might be changes-since filter","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"bbd1d3c674292bc261ffdf7c51c33889740700e2","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":693,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":694,"context_line":"  when listing migrations. Users can also use filter ``changes-since` to"},{"line_number":695,"context_line":"  filter the results based on the last time the migration record was updated."},{"line_number":696,"context_line":"* ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":697,"context_line":"  migrations id in the response."}],"source_content_type":"text/x-rst","patch_set":43,"id":"3f4b6375_d6f76259","line":694,"range":{"start_line":694,"start_character":68,"end_line":694,"end_character":69},"updated":"2017-11-09 02:06:22.000000000","message":"here","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9f0232d58237ab37987a3516472dbbf3b1a107af","unresolved":false,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":693,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":694,"context_line":"  when listing migrations. Users can also use filter ``changes-since` to"},{"line_number":695,"context_line":"  filter the results based on the last time the migration record was updated."},{"line_number":696,"context_line":"* ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":697,"context_line":"  migrations id in the response."}],"source_content_type":"text/x-rst","patch_set":43,"id":"1f485f77_92a8e277","line":694,"range":{"start_line":694,"start_character":46,"end_line":694,"end_character":69},"in_reply_to":"3f4b6375_f9fff1a8","updated":"2017-11-09 11:51:34.000000000","message":"Done","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":744,"context_line":"2.59"},{"line_number":745,"context_line":"----"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"Added pagination support for migrations, there are two changes:"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":750,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"}],"source_content_type":"text/x-rst","patch_set":78,"id":"9f91af0f_0e04aa14","line":747,"range":{"start_line":747,"start_character":41,"end_line":747,"end_character":63},"updated":"2018-01-02 18:16:04.000000000","message":"There are really four changes:\n\n1. Pagination support using limit/marker.\n2. Filtering by changes-since.\n3. The uuid key in the response.\n4. The query parameter schema no longer allows additional properties.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":744,"context_line":"2.59"},{"line_number":745,"context_line":"----"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"Added pagination support for migrations, there are two changes:"},{"line_number":748,"context_line":""},{"line_number":749,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":750,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"}],"source_content_type":"text/x-rst","patch_set":78,"id":"9f91af0f_a9e477ad","line":747,"range":{"start_line":747,"start_character":41,"end_line":747,"end_character":63},"in_reply_to":"9f91af0f_0e04aa14","updated":"2018-01-04 08:04:55.000000000","message":"Yes, I will update it, it\u0027s more clearly.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":748,"context_line":""},{"line_number":749,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":750,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":751,"context_line":"  when listing migrations. Users can also use ``changes-since`` filter to"},{"line_number":752,"context_line":"* ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":753,"context_line":"  migrations id in the response."}],"source_content_type":"text/x-rst","patch_set":78,"id":"9f91af0f_930a2324","line":751,"range":{"start_line":751,"start_character":27,"end_line":751,"end_character":73},"updated":"2018-01-02 18:16:04.000000000","message":"This is incomplete.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":748,"context_line":""},{"line_number":749,"context_line":"* Add pagination support and ``changes-since`` filter for os-migrations"},{"line_number":750,"context_line":"  API. Users can now use ``limit`` and ``marker`` to perform paginate query"},{"line_number":751,"context_line":"  when listing migrations. Users can also use ``changes-since`` filter to"},{"line_number":752,"context_line":"* ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":753,"context_line":"  migrations id in the response."}],"source_content_type":"text/x-rst","patch_set":78,"id":"9f91af0f_69f0af68","line":751,"range":{"start_line":751,"start_character":27,"end_line":751,"end_character":73},"in_reply_to":"9f91af0f_930a2324","updated":"2018-01-04 08:04:55.000000000","message":"oops, it seems some error when rebase.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b803b266c36e0843edc4952f3daa0396bcf10739","unresolved":false,"context_lines":[{"line_number":752,"context_line":"* Users can also use ``changes-since`` filter to filter the results based"},{"line_number":753,"context_line":"  on the last time the migration record was updated."},{"line_number":754,"context_line":"* ``GET /os-migrations``,"},{"line_number":755,"context_line":"  ``GET /servers/{server_id}/migrations/{migration_id}`` and"},{"line_number":756,"context_line":"  ``GET /servers/{server_id}/migrations`` will now return a uuid value in"},{"line_number":757,"context_line":"  addition to the migrations id in the response."},{"line_number":758,"context_line":"* The query parameter schema of the ``GET /os-migrations`` API no longer"},{"line_number":759,"context_line":"  allows additional properties."}],"source_content_type":"text/x-rst","patch_set":85,"id":"7f96bb07_a70daf38","line":756,"range":{"start_line":755,"start_character":0,"end_line":756,"end_character":73},"updated":"2018-01-11 14:00:23.000000000","message":"these changes are not mentioned in spec. is it discussed separately ? if not we should add those in spec first.\n\none question i have, why we are adding pagination support for ``GET /servers/{server_id}/migrations`` ?\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/queens/approved/add-pagination-and-change-since-for-migration-list.html","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a65abcee0bb909b92646d106f3005f431070ee1e","unresolved":false,"context_lines":[{"line_number":752,"context_line":"* Users can also use ``changes-since`` filter to filter the results based"},{"line_number":753,"context_line":"  on the last time the migration record was updated."},{"line_number":754,"context_line":"* ``GET /os-migrations``,"},{"line_number":755,"context_line":"  ``GET /servers/{server_id}/migrations/{migration_id}`` and"},{"line_number":756,"context_line":"  ``GET /servers/{server_id}/migrations`` will now return a uuid value in"},{"line_number":757,"context_line":"  addition to the migrations id in the response."},{"line_number":758,"context_line":"* The query parameter schema of the ``GET /os-migrations`` API no longer"},{"line_number":759,"context_line":"  allows additional properties."}],"source_content_type":"text/x-rst","patch_set":85,"id":"7f96bb07_b861503c","line":756,"range":{"start_line":755,"start_character":0,"end_line":756,"end_character":73},"in_reply_to":"7f96bb07_02e491ab","updated":"2018-01-11 16:27:49.000000000","message":"https://review.openstack.org/#/c/532904/","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf184fc7db5084b382755cb754955cdacbc3e916","unresolved":false,"context_lines":[{"line_number":752,"context_line":"* Users can also use ``changes-since`` filter to filter the results based"},{"line_number":753,"context_line":"  on the last time the migration record was updated."},{"line_number":754,"context_line":"* ``GET /os-migrations``,"},{"line_number":755,"context_line":"  ``GET /servers/{server_id}/migrations/{migration_id}`` and"},{"line_number":756,"context_line":"  ``GET /servers/{server_id}/migrations`` will now return a uuid value in"},{"line_number":757,"context_line":"  addition to the migrations id in the response."},{"line_number":758,"context_line":"* The query parameter schema of the ``GET /os-migrations`` API no longer"},{"line_number":759,"context_line":"  allows additional properties."}],"source_content_type":"text/x-rst","patch_set":85,"id":"7f96bb07_02e491ab","line":756,"range":{"start_line":755,"start_character":0,"end_line":756,"end_character":73},"in_reply_to":"7f96bb07_a70daf38","updated":"2018-01-11 15:27:17.000000000","message":"Adding the uuid to the response for server migrations came up during review since it\u0027s a good opportunity to add that change so it\u0027s consistent with the os-migrations API returning uuid in the response. It wasn\u0027t in the spec. I\u0027ll add a change to the spec to reflect that.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"nova/api/openstack/compute/schemas/migrations.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6fa0291ba15543b8748f565d8531994b8f4b23bb","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \u0027limit\u0027: parameter_types.single_param("},{"line_number":23,"context_line":"            parameter_types.non_negative_integer),"},{"line_number":24,"context_line":"        \u0027marker\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027changes-since\u0027: multi_params({\u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"                                       \u0027format\u0027: \u0027date-time\u0027}),"},{"line_number":27,"context_line":"    },"},{"line_number":28,"context_line":"    \u0027additionalProperties\u0027: False"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_62869dde","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":37},"updated":"2017-10-30 06:44:00.000000000","message":"Why is this \u0027multi_params\u0027?","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d2e576b8429e1f60c8125b27e147d9f897af49c0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \u0027limit\u0027: parameter_types.single_param("},{"line_number":23,"context_line":"            parameter_types.non_negative_integer),"},{"line_number":24,"context_line":"        \u0027marker\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027changes-since\u0027: multi_params({\u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"                                       \u0027format\u0027: \u0027date-time\u0027}),"},{"line_number":27,"context_line":"    },"},{"line_number":28,"context_line":"    \u0027additionalProperties\u0027: False"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_cee57bde","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":37},"in_reply_to":"3f4b6375_62869dde","updated":"2017-10-30 09:07:17.000000000","message":"most functions nova provided now are multi-params?\nI agree if this is brand new features it might be good to take it as single..","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"e1482bae0b18353b19fd7354f8bb9634cbcd47ad","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \u0027limit\u0027: parameter_types.single_param("},{"line_number":23,"context_line":"            parameter_types.non_negative_integer),"},{"line_number":24,"context_line":"        \u0027marker\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027changes-since\u0027: multi_params({\u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"                                       \u0027format\u0027: \u0027date-time\u0027}),"},{"line_number":27,"context_line":"    },"},{"line_number":28,"context_line":"    \u0027additionalProperties\u0027: False"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_f1d5b644","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":37},"in_reply_to":"3f4b6375_cee57bde","updated":"2017-10-30 09:29:28.000000000","message":"@Takashi and @jichenjc\n\nSorry, this is a wrong copy from server schema:\nhttps://github.com/openstack/nova/blob/ceabc1753cb6c44f70fd45682b494f86abef6e72/nova/api/openstack/compute/schemas/servers.py#L359\n\nI got some information from @alex_xu: the multi_params in server schema is for backward-compatible, we can know more in consistent-query-parameters-validation spec(http://specs.openstack.org/openstack/nova-specs/specs/ocata/implemented/consistent-query-parameters-validation.html)\n\nSo, for new adding parameter, we should use single_param. I will fix it in next patch.","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"408e892628131f0574632fc09d084885906df170","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \u0027limit\u0027: parameter_types.single_param("},{"line_number":23,"context_line":"            parameter_types.non_negative_integer),"},{"line_number":24,"context_line":"        \u0027marker\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027changes-since\u0027: multi_params({\u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"                                       \u0027format\u0027: \u0027date-time\u0027}),"},{"line_number":27,"context_line":"    },"},{"line_number":28,"context_line":"    \u0027additionalProperties\u0027: False"}],"source_content_type":"text/x-python","patch_set":26,"id":"3f4b6375_115f32e6","line":25,"range":{"start_line":25,"start_character":25,"end_line":25,"end_character":37},"in_reply_to":"3f4b6375_f1d5b644","updated":"2017-10-30 09:33:01.000000000","message":"\u003e Also for matching the current behaviour, we need to enable multiple values for all the parameters(using the macro function ‘multi_params’ to extract the schema for multiple values).\n\nThis is the information from spec.","commit_id":"1833dbafb81f5a3743b547c4a00cfb3a0a01377b"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"53733ccf8baf8c5c41258715d3c0605842f226e9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"list_query_params_v254 \u003d {"},{"line_number":18,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":19,"context_line":"    \u0027properties\u0027: {"},{"line_number":20,"context_line":"        # The 2.54 microversion added support for paging by limit and marker."},{"line_number":21,"context_line":"        \u0027limit\u0027: parameter_types.single_param("},{"line_number":22,"context_line":"            parameter_types.non_negative_integer),"},{"line_number":23,"context_line":"        \u0027marker\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"}],"source_content_type":"text/x-python","patch_set":31,"id":"3f4b6375_3bcf8b80","line":20,"range":{"start_line":20,"start_character":8,"end_line":20,"end_character":77},"updated":"2017-10-31 09:27:14.000000000","message":"mention also change since here?","commit_id":"7e2b1d0811a0685111e37f498b5bb689e1a6ef4c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.api.validation import parameter_types"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"list_query_schema_v20 \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":21,"context_line":"    \u0027properties\u0027: {"},{"line_number":22,"context_line":"        \u0027cell_name\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_d97d6eb2","line":19,"updated":"2017-11-07 23:21:07.000000000","message":"I think we should probably split this out into it\u0027s own patch since it\u0027s changing existing API code to add the json schema validation, and it would be simpler to review this separately from the paging migrations API change.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from nova.api.validation import parameter_types"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"list_query_schema_v20 \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":21,"context_line":"    \u0027properties\u0027: {"},{"line_number":22,"context_line":"        \u0027cell_name\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_e3907350","line":19,"in_reply_to":"3f4b6375_d97d6eb2","updated":"2017-11-08 09:04:44.000000000","message":"OK, I can do it, thanks.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"49cdaa2c489a15d4a51496d85f210864f26b0231","unresolved":false,"context_lines":[{"line_number":19,"context_line":"list_query_schema_v20 \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":21,"context_line":"    \u0027properties\u0027: {"},{"line_number":22,"context_line":"        \u0027cell_name\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":23,"context_line":"        \u0027hidden\u0027: parameter_types.single_param(parameter_types.boolean),"},{"line_number":24,"context_line":"        \u0027host\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027instance_uuid\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"}],"source_content_type":"text/x-python","patch_set":43,"id":"3f4b6375_599ba565","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":70},"updated":"2017-11-09 03:08:38.000000000","message":"This seems missing in the API-ref, but this one is confusing, let\u0027s see how others think about this.","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"e0b919a2dc9dfdec69463c3f248cbbc3400f35a3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"list_query_schema_v20 \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":21,"context_line":"    \u0027properties\u0027: {"},{"line_number":22,"context_line":"        \u0027cell_name\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":23,"context_line":"        \u0027hidden\u0027: parameter_types.single_param(parameter_types.boolean),"},{"line_number":24,"context_line":"        \u0027host\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027instance_uuid\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"}],"source_content_type":"text/x-python","patch_set":43,"id":"1f485f77_ddd8ab80","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":70},"in_reply_to":"1f485f77_d251ba64","updated":"2017-11-10 01:16:50.000000000","message":"The cell_name was added in blueprint list-resizes-through-admin-api. https://review.openstack.org/#/c/30232/\n\nThere are some test case also check it: https://github.com/openstack/nova/blob/75f2da2e388abd0941f8ee2a4d139ed3cbe75d6d/nova/tests/unit/api/openstack/compute/test_migrations.py#L172\n\nand some addition info, it was already deprecated by nova cli:\nhttps://bugs.launchpad.net/python-novaclient/+bug/1668743\nhttps://review.openstack.org/#/c/439141/\n\nAPI should support cell_name until it is deprecated. \n\nLet\u0027s see how others idea.","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9f0232d58237ab37987a3516472dbbf3b1a107af","unresolved":false,"context_lines":[{"line_number":19,"context_line":"list_query_schema_v20 \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":21,"context_line":"    \u0027properties\u0027: {"},{"line_number":22,"context_line":"        \u0027cell_name\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":23,"context_line":"        \u0027hidden\u0027: parameter_types.single_param(parameter_types.boolean),"},{"line_number":24,"context_line":"        \u0027host\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":25,"context_line":"        \u0027instance_uuid\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"}],"source_content_type":"text/x-python","patch_set":43,"id":"1f485f77_d251ba64","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":70},"in_reply_to":"3f4b6375_599ba565","updated":"2017-11-09 11:51:34.000000000","message":"Sure, seems we should add it, but it\u0027s a little wired do it in this patch, so, if we need plus it, I prefer to fix it into it\u0027s own patch.","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"05d5135c173897abff1c534bd7d9e63650158a9c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027migration_type\u0027: parameter_types.common_query_param,"},{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"    # For backward compatible changes"},{"line_number":30,"context_line":"    # TODO(mriedem): In a future microversion, consider changing"},{"line_number":31,"context_line":"    # additionalProperties to False, remove the \u0027hidden\u0027 filter since"},{"line_number":32,"context_line":"    # it\u0027s vestigial, and enforce type and enum checks for the filters"},{"line_number":33,"context_line":"    # where that makes sense, e.g. instance_uuid, status and migration_type."},{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":58,"id":"1f485f77_4b2d8bfc","line":33,"range":{"start_line":30,"start_character":4,"end_line":33,"end_character":76},"updated":"2017-11-15 23:44:26.000000000","message":"We could also consider these changes in the new microversion, but maybe it\u0027s best to just leave those for another separate microversion so this doesn\u0027t get cluttered up with too many changes.","commit_id":"491bcbdea8391b383d667be980d9e69fe44e6e86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027migration_type\u0027: parameter_types.common_query_param,"},{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"    # For backward compatible changes"},{"line_number":30,"context_line":"    # TODO(mriedem): In a future microversion, consider changing"},{"line_number":31,"context_line":"    # additionalProperties to False, remove the \u0027hidden\u0027 filter since"},{"line_number":32,"context_line":"    # it\u0027s vestigial, and enforce type and enum checks for the filters"},{"line_number":33,"context_line":"    # where that makes sense, e.g. instance_uuid, status and migration_type."},{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_4e195277","line":33,"range":{"start_line":30,"start_character":4,"end_line":33,"end_character":76},"updated":"2018-01-02 18:16:04.000000000","message":"You could remove this TODO now.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \u0027migration_type\u0027: parameter_types.common_query_param,"},{"line_number":28,"context_line":"    },"},{"line_number":29,"context_line":"    # For backward compatible changes"},{"line_number":30,"context_line":"    # TODO(mriedem): In a future microversion, consider changing"},{"line_number":31,"context_line":"    # additionalProperties to False, remove the \u0027hidden\u0027 filter since"},{"line_number":32,"context_line":"    # it\u0027s vestigial, and enforce type and enum checks for the filters"},{"line_number":33,"context_line":"    # where that makes sense, e.g. instance_uuid, status and migration_type."},{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_89f3b373","line":33,"range":{"start_line":30,"start_character":4,"end_line":33,"end_character":76},"in_reply_to":"9f91af0f_4e195277","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"dec755951d4815c603e2b3eeabee886f0fc14912","unresolved":false,"context_lines":[{"line_number":34,"context_line":"list_query_params_v259[\u0027properties\u0027].update({"},{"line_number":35,"context_line":"    # The 2.59 microversion added support for paging by limit and marker"},{"line_number":36,"context_line":"    # and filtering by changes-since."},{"line_number":37,"context_line":"    \u0027limit\u0027: parameter_types.single_param("},{"line_number":38,"context_line":"        parameter_types.non_negative_integer),"},{"line_number":39,"context_line":"    \u0027marker\u0027: parameter_types.single_param({\u0027type\u0027: \u0027string\u0027}),"},{"line_number":40,"context_line":"    \u0027changes-since\u0027: parameter_types.single_param("},{"line_number":41,"context_line":"        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027}),"},{"line_number":42,"context_line":"})"}],"source_content_type":"text/x-python","patch_set":84,"id":"9f91af0f_7c3c6b2e","line":39,"range":{"start_line":37,"start_character":4,"end_line":39,"end_character":63},"updated":"2018-01-10 13:06:52.000000000","message":"super nit, we can put it in common place https://github.com/openstack/nova/blob/master/nova/api/validation/parameter_types.py#L475. We can change that later.","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b803b266c36e0843edc4952f3daa0396bcf10739","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027changes-since\u0027: parameter_types.single_param("},{"line_number":41,"context_line":"        {\u0027type\u0027: \u0027string\u0027, \u0027format\u0027: \u0027date-time\u0027}),"},{"line_number":42,"context_line":"})"},{"line_number":43,"context_line":"list_query_params_v259[\u0027additionalProperties\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_cc4b4285","line":43,"range":{"start_line":43,"start_character":22,"end_line":43,"end_character":54},"updated":"2018-01-11 14:00:23.000000000","message":"+1, thanks","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"nova/api/openstack/compute/views/migrations.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"de6df605947411250c568e22fa564ebc340a6f3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":85,"id":"7f96bb07_ac74b69a","line":25,"updated":"2018-01-11 13:37:25.000000000","message":"If you create a new view builder, building a response body  (\u0027_output\u0027 method(*)) should be in this class.\n\n*: https://github.com/openstack/nova/blob/90a92d33edaea2b7411a5fd528f3159a486e1fd0/nova/api/openstack/compute/migrations.py#L33-L69","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf184fc7db5084b382755cb754955cdacbc3e916","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":85,"id":"7f96bb07_a2eefd85","line":25,"in_reply_to":"7f96bb07_ac74b69a","updated":"2018-01-11 15:27:17.000000000","message":"That\u0027s a larger refactor than I\u0027d like to see in this patch, so it can be done separately on top I think.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d7c46aa08323643f892e83b654e246d00f0c07a","unresolved":false,"context_lines":[{"line_number":4739,"context_line":"        else:"},{"line_number":4740,"context_line":"            limit \u003d filters[\u0027limit\u0027]"},{"line_number":4741,"context_line":"    sort_keys \u003d [\u0027created_at\u0027, \u0027id\u0027]"},{"line_number":4742,"context_line":"    sort_dirs \u003d [\u0027asc\u0027, \u0027desc\u0027]"},{"line_number":4743,"context_line":"    query \u003d model_query(context, models.Migration)"},{"line_number":4744,"context_line":"    if \u0027changes-since\u0027 in filters:"},{"line_number":4745,"context_line":"        changes_since \u003d timeutils.normalize_time(filters[\u0027changes-since\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f4e5783_06821450","line":4742,"range":{"start_line":4742,"start_character":4,"end_line":4742,"end_character":31},"updated":"2017-10-12 18:27:43.000000000","message":"When listing instances, the default sort direction is descending. We should do the same.","commit_id":"5bb1736a85ff4df1c628f22769f0c17a84c8b5d4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d7c46aa08323643f892e83b654e246d00f0c07a","unresolved":false,"context_lines":[{"line_number":4767,"context_line":"        query \u003d query.filter(models.Migration.instance_uuid \u003d\u003d uuid)"},{"line_number":4768,"context_line":"    if \u0027marker\u0027 in filters:"},{"line_number":4769,"context_line":"        try:"},{"line_number":4770,"context_line":"            marker \u003d migration_get(context, filters[\u0027marker\u0027])"},{"line_number":4771,"context_line":"        except exception.MigrationNotFound:"},{"line_number":4772,"context_line":"            raise exception.MarkerNotFound"},{"line_number":4773,"context_line":"    return sqlalchemyutils.paginate_query(query,"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f4e5783_06f7b4f7","line":4770,"range":{"start_line":4770,"start_character":21,"end_line":4770,"end_character":34},"updated":"2017-10-12 18:27:43.000000000","message":"OK this has to change to get the marker by uuid.","commit_id":"5bb1736a85ff4df1c628f22769f0c17a84c8b5d4"}],"nova/tests/functional/api_sample_tests/test_migrations.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"31e59189fe01cca6c9209a7bda7cbdd5f0cd65ab","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            {\"instance_1\": INSTANCE_UUID_1}, response, 200)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_get_migrations_with_marker(self):"},{"line_number":279,"context_line":"        response \u003d self._do_get(\u0027os-migrations?marker\u003d2\u0027)"},{"line_number":280,"context_line":"        self.assertEqual(200, response.status_code)"},{"line_number":281,"context_line":"        self._verify_response("},{"line_number":282,"context_line":"            \u0027migrations-get-with-marker\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"5f4e5783_8707d982","line":279,"range":{"start_line":279,"start_character":47,"end_line":279,"end_character":55},"updated":"2017-10-16 11:49:29.000000000","message":"oops","commit_id":"41911a2b163c09089bc09969c37df7914c5a9706"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":199,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":200,"context_line":"            \u0027status\u0027: \u0027running\u0027,"},{"line_number":201,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":202,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":203,"context_line":"            \u0027new_instance_type_id\u0027: 2,"},{"line_number":204,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":205,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":206,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_2eb88e28","line":203,"range":{"start_line":202,"start_character":12,"end_line":203,"end_character":38},"updated":"2018-01-02 18:16:04.000000000","message":"These shouldn\u0027t be different.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":199,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":200,"context_line":"            \u0027status\u0027: \u0027running\u0027,"},{"line_number":201,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":202,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":203,"context_line":"            \u0027new_instance_type_id\u0027: 2,"},{"line_number":204,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":205,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":206,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_8998931b","line":203,"range":{"start_line":202,"start_character":12,"end_line":203,"end_character":38},"in_reply_to":"9f91af0f_2eb88e28","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":219,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":220,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":221,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 2,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_6eae96e8","line":222,"range":{"start_line":221,"start_character":12,"end_line":222,"end_character":38},"updated":"2018-01-02 18:16:04.000000000","message":"The instance type doesn\u0027t change with a live migration. I know this is fake data, but it\u0027s confusing if people are looking at the samples.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":219,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":220,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":221,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 2,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_299f0704","line":222,"range":{"start_line":221,"start_character":12,"end_line":222,"end_character":38},"in_reply_to":"9f91af0f_6eae96e8","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 2,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"},{"line_number":226,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"},{"line_number":227,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":228,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":229,"context_line":"            \u0027uuid\u0027: \u002722341d4b-346a-40d0-83c6-5f4f6892b650\u0027"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_ee9aa6c3","line":226,"range":{"start_line":225,"start_character":12,"end_line":226,"end_character":70},"updated":"2018-01-02 18:16:04.000000000","message":"These are the exact same time as the record above, which seems unrealistic when we have the ability to filter by changes-since and sorting by created_at.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 2,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"},{"line_number":226,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 13, 42, 2),"},{"line_number":227,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":228,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":229,"context_line":"            \u0027uuid\u0027: \u002722341d4b-346a-40d0-83c6-5f4f6892b650\u0027"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_cc8c6981","line":226,"range":{"start_line":225,"start_character":12,"end_line":226,"end_character":70},"in_reply_to":"9f91af0f_ee9aa6c3","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":261,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":262,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":263,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":264,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":265,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":266,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":267,"context_line":"            \u0027uuid\u0027: \u002742341d4b-346a-40d0-83c6-5f4f6892b650\u0027"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_ee838655","line":264,"range":{"start_line":263,"start_character":12,"end_line":264,"end_character":70},"updated":"2018-01-02 18:16:04.000000000","message":"Same times as the resize record above, which seems odd.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":261,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":262,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":263,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":264,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":265,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":266,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":267,"context_line":"            \u0027uuid\u0027: \u002742341d4b-346a-40d0-83c6-5f4f6892b650\u0027"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_6ce99d18","line":264,"range":{"start_line":263,"start_character":12,"end_line":264,"end_character":70},"in_reply_to":"9f91af0f_ee838655","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"de6df605947411250c568e22fa564ebc340a6f3b","unresolved":false,"context_lines":[{"line_number":189,"context_line":"class MigrationsSamplesJsonTestV2_59(MigrationsSamplesJsonTestV2_23):"},{"line_number":190,"context_line":"    microversion \u003d \u00272.59\u0027"},{"line_number":191,"context_line":"    scenarios \u003d [(\u0027v2_59\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":192,"context_line":"    fake_migrations \u003d ["},{"line_number":193,"context_line":"        # in-progress live-migration."},{"line_number":194,"context_line":"        {"},{"line_number":195,"context_line":"            \u0027source_node\u0027: \u0027node1\u0027,"},{"line_number":196,"context_line":"            \u0027dest_node\u0027: \u0027node2\u0027,"},{"line_number":197,"context_line":"            \u0027source_compute\u0027: \u0027compute1\u0027,"},{"line_number":198,"context_line":"            \u0027dest_compute\u0027: \u0027compute2\u0027,"},{"line_number":199,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":200,"context_line":"            \u0027status\u0027: \u0027running\u0027,"},{"line_number":201,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":202,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":203,"context_line":"            \u0027new_instance_type_id\u0027: 1,"},{"line_number":204,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":205,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":206,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 11, 42, 2),"},{"line_number":207,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 11, 42, 2),"},{"line_number":208,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":209,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":210,"context_line":"            \u0027uuid\u0027: \u002712341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":211,"context_line":"        },"},{"line_number":212,"context_line":"        # non in-progress live-migration."},{"line_number":213,"context_line":"        {"},{"line_number":214,"context_line":"            \u0027source_node\u0027: \u0027node1\u0027,"},{"line_number":215,"context_line":"            \u0027dest_node\u0027: \u0027node2\u0027,"},{"line_number":216,"context_line":"            \u0027source_compute\u0027: \u0027compute1\u0027,"},{"line_number":217,"context_line":"            \u0027dest_compute\u0027: \u0027compute2\u0027,"},{"line_number":218,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":219,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":220,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":221,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 1,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 12, 42, 2),"},{"line_number":226,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 12, 42, 2),"},{"line_number":227,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":228,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":229,"context_line":"            \u0027uuid\u0027: \u002722341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":230,"context_line":"        },"},{"line_number":231,"context_line":"        # non in-progress resize."},{"line_number":232,"context_line":"        {"},{"line_number":233,"context_line":"            \u0027source_node\u0027: \u0027node10\u0027,"},{"line_number":234,"context_line":"            \u0027dest_node\u0027: \u0027node20\u0027,"},{"line_number":235,"context_line":"            \u0027source_compute\u0027: \u0027compute10\u0027,"},{"line_number":236,"context_line":"            \u0027dest_compute\u0027: \u0027compute20\u0027,"},{"line_number":237,"context_line":"            \u0027dest_host\u0027: \u00275.6.7.8\u0027,"},{"line_number":238,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":239,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_2,"},{"line_number":240,"context_line":"            \u0027old_instance_type_id\u0027: 5,"},{"line_number":241,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":242,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":243,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":244,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":245,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":246,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":247,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":248,"context_line":"            \u0027uuid\u0027: \u002732341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":249,"context_line":"        },"},{"line_number":250,"context_line":"        # in-progress resize."},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            \u0027source_node\u0027: \u0027node10\u0027,"},{"line_number":253,"context_line":"            \u0027dest_node\u0027: \u0027node20\u0027,"},{"line_number":254,"context_line":"            \u0027source_compute\u0027: \u0027compute10\u0027,"},{"line_number":255,"context_line":"            \u0027dest_compute\u0027: \u0027compute20\u0027,"},{"line_number":256,"context_line":"            \u0027dest_host\u0027: \u00275.6.7.8\u0027,"},{"line_number":257,"context_line":"            \u0027status\u0027: \u0027migrating\u0027,"},{"line_number":258,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_2,"},{"line_number":259,"context_line":"            \u0027old_instance_type_id\u0027: 5,"},{"line_number":260,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":261,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":262,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":263,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 14, 42, 2),"},{"line_number":264,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 14, 42, 2),"},{"line_number":265,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":266,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":267,"context_line":"            \u0027uuid\u0027: \u002742341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":268,"context_line":"        }"},{"line_number":269,"context_line":"    ]"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_get_migrations_with_limit(self):"}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_4cdc1274","line":268,"range":{"start_line":192,"start_character":0,"end_line":268,"end_character":9},"updated":"2018-01-11 13:37:25.000000000","message":"These code is almost duplicate of line 96-169.\nDuplication should be reduced.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf184fc7db5084b382755cb754955cdacbc3e916","unresolved":false,"context_lines":[{"line_number":189,"context_line":"class MigrationsSamplesJsonTestV2_59(MigrationsSamplesJsonTestV2_23):"},{"line_number":190,"context_line":"    microversion \u003d \u00272.59\u0027"},{"line_number":191,"context_line":"    scenarios \u003d [(\u0027v2_59\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":192,"context_line":"    fake_migrations \u003d ["},{"line_number":193,"context_line":"        # in-progress live-migration."},{"line_number":194,"context_line":"        {"},{"line_number":195,"context_line":"            \u0027source_node\u0027: \u0027node1\u0027,"},{"line_number":196,"context_line":"            \u0027dest_node\u0027: \u0027node2\u0027,"},{"line_number":197,"context_line":"            \u0027source_compute\u0027: \u0027compute1\u0027,"},{"line_number":198,"context_line":"            \u0027dest_compute\u0027: \u0027compute2\u0027,"},{"line_number":199,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":200,"context_line":"            \u0027status\u0027: \u0027running\u0027,"},{"line_number":201,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":202,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":203,"context_line":"            \u0027new_instance_type_id\u0027: 1,"},{"line_number":204,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":205,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":206,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 11, 42, 2),"},{"line_number":207,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 11, 42, 2),"},{"line_number":208,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":209,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":210,"context_line":"            \u0027uuid\u0027: \u002712341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":211,"context_line":"        },"},{"line_number":212,"context_line":"        # non in-progress live-migration."},{"line_number":213,"context_line":"        {"},{"line_number":214,"context_line":"            \u0027source_node\u0027: \u0027node1\u0027,"},{"line_number":215,"context_line":"            \u0027dest_node\u0027: \u0027node2\u0027,"},{"line_number":216,"context_line":"            \u0027source_compute\u0027: \u0027compute1\u0027,"},{"line_number":217,"context_line":"            \u0027dest_compute\u0027: \u0027compute2\u0027,"},{"line_number":218,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":219,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":220,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":221,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 1,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 12, 42, 2),"},{"line_number":226,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 12, 42, 2),"},{"line_number":227,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":228,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":229,"context_line":"            \u0027uuid\u0027: \u002722341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":230,"context_line":"        },"},{"line_number":231,"context_line":"        # non in-progress resize."},{"line_number":232,"context_line":"        {"},{"line_number":233,"context_line":"            \u0027source_node\u0027: \u0027node10\u0027,"},{"line_number":234,"context_line":"            \u0027dest_node\u0027: \u0027node20\u0027,"},{"line_number":235,"context_line":"            \u0027source_compute\u0027: \u0027compute10\u0027,"},{"line_number":236,"context_line":"            \u0027dest_compute\u0027: \u0027compute20\u0027,"},{"line_number":237,"context_line":"            \u0027dest_host\u0027: \u00275.6.7.8\u0027,"},{"line_number":238,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":239,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_2,"},{"line_number":240,"context_line":"            \u0027old_instance_type_id\u0027: 5,"},{"line_number":241,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":242,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":243,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":244,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":245,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":246,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":247,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":248,"context_line":"            \u0027uuid\u0027: \u002732341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":249,"context_line":"        },"},{"line_number":250,"context_line":"        # in-progress resize."},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            \u0027source_node\u0027: \u0027node10\u0027,"},{"line_number":253,"context_line":"            \u0027dest_node\u0027: \u0027node20\u0027,"},{"line_number":254,"context_line":"            \u0027source_compute\u0027: \u0027compute10\u0027,"},{"line_number":255,"context_line":"            \u0027dest_compute\u0027: \u0027compute20\u0027,"},{"line_number":256,"context_line":"            \u0027dest_host\u0027: \u00275.6.7.8\u0027,"},{"line_number":257,"context_line":"            \u0027status\u0027: \u0027migrating\u0027,"},{"line_number":258,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_2,"},{"line_number":259,"context_line":"            \u0027old_instance_type_id\u0027: 5,"},{"line_number":260,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":261,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":262,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":263,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 14, 42, 2),"},{"line_number":264,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 14, 42, 2),"},{"line_number":265,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":266,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":267,"context_line":"            \u0027uuid\u0027: \u002742341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":268,"context_line":"        }"},{"line_number":269,"context_line":"    ]"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_get_migrations_with_limit(self):"}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_829e6105","line":268,"range":{"start_line":192,"start_character":0,"end_line":268,"end_character":9},"in_reply_to":"7f96bb07_4cdc1274","updated":"2018-01-11 15:27:17.000000000","message":"Yeah, can be done in a separate follow up patch.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea7e4bc72157ef92e4a462ed9ae80240d8c3f653","unresolved":false,"context_lines":[{"line_number":189,"context_line":"class MigrationsSamplesJsonTestV2_59(MigrationsSamplesJsonTestV2_23):"},{"line_number":190,"context_line":"    microversion \u003d \u00272.59\u0027"},{"line_number":191,"context_line":"    scenarios \u003d [(\u0027v2_59\u0027, {\u0027api_major_version\u0027: \u0027v2.1\u0027})]"},{"line_number":192,"context_line":"    fake_migrations \u003d ["},{"line_number":193,"context_line":"        # in-progress live-migration."},{"line_number":194,"context_line":"        {"},{"line_number":195,"context_line":"            \u0027source_node\u0027: \u0027node1\u0027,"},{"line_number":196,"context_line":"            \u0027dest_node\u0027: \u0027node2\u0027,"},{"line_number":197,"context_line":"            \u0027source_compute\u0027: \u0027compute1\u0027,"},{"line_number":198,"context_line":"            \u0027dest_compute\u0027: \u0027compute2\u0027,"},{"line_number":199,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":200,"context_line":"            \u0027status\u0027: \u0027running\u0027,"},{"line_number":201,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":202,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":203,"context_line":"            \u0027new_instance_type_id\u0027: 1,"},{"line_number":204,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":205,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":206,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 11, 42, 2),"},{"line_number":207,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 11, 42, 2),"},{"line_number":208,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":209,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":210,"context_line":"            \u0027uuid\u0027: \u002712341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":211,"context_line":"        },"},{"line_number":212,"context_line":"        # non in-progress live-migration."},{"line_number":213,"context_line":"        {"},{"line_number":214,"context_line":"            \u0027source_node\u0027: \u0027node1\u0027,"},{"line_number":215,"context_line":"            \u0027dest_node\u0027: \u0027node2\u0027,"},{"line_number":216,"context_line":"            \u0027source_compute\u0027: \u0027compute1\u0027,"},{"line_number":217,"context_line":"            \u0027dest_compute\u0027: \u0027compute2\u0027,"},{"line_number":218,"context_line":"            \u0027dest_host\u0027: \u00271.2.3.4\u0027,"},{"line_number":219,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":220,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_1,"},{"line_number":221,"context_line":"            \u0027old_instance_type_id\u0027: 1,"},{"line_number":222,"context_line":"            \u0027new_instance_type_id\u0027: 1,"},{"line_number":223,"context_line":"            \u0027migration_type\u0027: \u0027live-migration\u0027,"},{"line_number":224,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":225,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o1, 29, 12, 42, 2),"},{"line_number":226,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o1, 29, 12, 42, 2),"},{"line_number":227,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":228,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":229,"context_line":"            \u0027uuid\u0027: \u002722341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":230,"context_line":"        },"},{"line_number":231,"context_line":"        # non in-progress resize."},{"line_number":232,"context_line":"        {"},{"line_number":233,"context_line":"            \u0027source_node\u0027: \u0027node10\u0027,"},{"line_number":234,"context_line":"            \u0027dest_node\u0027: \u0027node20\u0027,"},{"line_number":235,"context_line":"            \u0027source_compute\u0027: \u0027compute10\u0027,"},{"line_number":236,"context_line":"            \u0027dest_compute\u0027: \u0027compute20\u0027,"},{"line_number":237,"context_line":"            \u0027dest_host\u0027: \u00275.6.7.8\u0027,"},{"line_number":238,"context_line":"            \u0027status\u0027: \u0027error\u0027,"},{"line_number":239,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_2,"},{"line_number":240,"context_line":"            \u0027old_instance_type_id\u0027: 5,"},{"line_number":241,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":242,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":243,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":244,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":245,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 13, 42, 2),"},{"line_number":246,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":247,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":248,"context_line":"            \u0027uuid\u0027: \u002732341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":249,"context_line":"        },"},{"line_number":250,"context_line":"        # in-progress resize."},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            \u0027source_node\u0027: \u0027node10\u0027,"},{"line_number":253,"context_line":"            \u0027dest_node\u0027: \u0027node20\u0027,"},{"line_number":254,"context_line":"            \u0027source_compute\u0027: \u0027compute10\u0027,"},{"line_number":255,"context_line":"            \u0027dest_compute\u0027: \u0027compute20\u0027,"},{"line_number":256,"context_line":"            \u0027dest_host\u0027: \u00275.6.7.8\u0027,"},{"line_number":257,"context_line":"            \u0027status\u0027: \u0027migrating\u0027,"},{"line_number":258,"context_line":"            \u0027instance_uuid\u0027: INSTANCE_UUID_2,"},{"line_number":259,"context_line":"            \u0027old_instance_type_id\u0027: 5,"},{"line_number":260,"context_line":"            \u0027new_instance_type_id\u0027: 6,"},{"line_number":261,"context_line":"            \u0027migration_type\u0027: \u0027resize\u0027,"},{"line_number":262,"context_line":"            \u0027hidden\u0027: False,"},{"line_number":263,"context_line":"            \u0027created_at\u0027: datetime.datetime(2016, 0o6, 23, 14, 42, 2),"},{"line_number":264,"context_line":"            \u0027updated_at\u0027: datetime.datetime(2016, 0o6, 23, 14, 42, 2),"},{"line_number":265,"context_line":"            \u0027deleted_at\u0027: None,"},{"line_number":266,"context_line":"            \u0027deleted\u0027: False,"},{"line_number":267,"context_line":"            \u0027uuid\u0027: \u002742341d4b-346a-40d0-83c6-5f4f6892b650\u0027"},{"line_number":268,"context_line":"        }"},{"line_number":269,"context_line":"    ]"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    def test_get_migrations_with_limit(self):"}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_d8ed3c26","line":268,"range":{"start_line":192,"start_character":0,"end_line":268,"end_character":9},"in_reply_to":"7f96bb07_829e6105","updated":"2018-01-11 16:03:57.000000000","message":"Actually there are subtle differences with the 2.23 tests, like with the timestamps and the old/new instance types, so these should stay.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"nova/tests/unit/api/openstack/compute/test_migrations.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def setUp(self):"},{"line_number":229,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":230,"context_line":"        super(MigrationsTestCaseV254, self).setUp()"},{"line_number":231,"context_line":"        self.req \u003d fakes.HTTPRequest.blank("},{"line_number":232,"context_line":"            \u0027\u0027, version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index(self):"},{"line_number":235,"context_line":"        migrations \u003d {\u0027migrations\u0027: self.controller._output("}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_f95b8a50","line":232,"range":{"start_line":231,"start_character":8,"end_line":232,"end_character":70},"updated":"2017-11-07 23:21:07.000000000","message":"This is redundant with the parent class.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def setUp(self):"},{"line_number":229,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":230,"context_line":"        super(MigrationsTestCaseV254, self).setUp()"},{"line_number":231,"context_line":"        self.req \u003d fakes.HTTPRequest.blank("},{"line_number":232,"context_line":"            \u0027\u0027, version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_index(self):"},{"line_number":235,"context_line":"        migrations \u003d {\u0027migrations\u0027: self.controller._output("}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_638ec32e","line":232,"range":{"start_line":231,"start_character":8,"end_line":232,"end_character":70},"in_reply_to":"3f4b6375_f95b8a50","updated":"2017-11-08 09:04:44.000000000","message":"Yes, I will remove it.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.assertIn(\u0027migration_type\u0027, response[\u0027migrations\u0027][0])"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get_migrations\u0027)"},{"line_number":259,"context_line":"    def test_index_with_invalid_marker(self, mock_migrations_get):"},{"line_number":260,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":261,"context_line":"        mock_migrations_get.side_effect \u003d exception.MarkerNotFound("},{"line_number":262,"context_line":"            marker\u003duuids.invalid_marker)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_393b62ea","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":38},"updated":"2017-11-07 23:21:07.000000000","message":"How about invalid limit or changes-since values? We should test for those.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.assertIn(\u0027migration_type\u0027, response[\u0027migrations\u0027][0])"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get_migrations\u0027)"},{"line_number":259,"context_line":"    def test_index_with_invalid_marker(self, mock_migrations_get):"},{"line_number":260,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":261,"context_line":"        mock_migrations_get.side_effect \u003d exception.MarkerNotFound("},{"line_number":262,"context_line":"            marker\u003duuids.invalid_marker)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_e379932e","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":38},"in_reply_to":"3f4b6375_393b62ea","updated":"2017-11-08 09:04:44.000000000","message":"OK, sure.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":295,"context_line":"class MigrationsPolicyEnforcementV254(MigrationsPolicyEnforcementV223):"},{"line_number":296,"context_line":"    wsgi_api_version \u003d \u00272.54\u0027"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def setUp(self):"},{"line_number":299,"context_line":"        super(MigrationsPolicyEnforcementV254, self).setUp()"},{"line_number":300,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027, version\u003dself.wsgi_api_version)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_f9202ab2","line":300,"range":{"start_line":298,"start_character":4,"end_line":300,"end_character":77},"updated":"2017-11-07 23:21:07.000000000","message":"You don\u0027t need this, the parent class handles it.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":295,"context_line":"class MigrationsPolicyEnforcementV254(MigrationsPolicyEnforcementV223):"},{"line_number":296,"context_line":"    wsgi_api_version \u003d \u00272.54\u0027"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def setUp(self):"},{"line_number":299,"context_line":"        super(MigrationsPolicyEnforcementV254, self).setUp()"},{"line_number":300,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027, version\u003dself.wsgi_api_version)"}],"source_content_type":"text/x-python","patch_set":41,"id":"3f4b6375_e323d303","line":300,"range":{"start_line":298,"start_character":4,"end_line":300,"end_character":77},"in_reply_to":"3f4b6375_f9202ab2","updated":"2017-11-08 09:04:44.000000000","message":"Done","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"9e997c0078429fd3b0210e21a5a02d61ca50573c","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        for i, mig in enumerate(migrations[\u0027migrations\u0027]):"},{"line_number":274,"context_line":"            # first item is in-progress live migration"},{"line_number":275,"context_line":"            if i \u003d\u003d 0:"},{"line_number":276,"context_line":"                self.assertIn(\u0027links\u0027, mig)"},{"line_number":277,"context_line":"            else:"},{"line_number":278,"context_line":"                self.assertNotIn(\u0027links\u0027, mig)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"            self.assertIn(\u0027migration_type\u0027, mig)"},{"line_number":281,"context_line":"            self.assertIn(\u0027id\u0027, mig)"},{"line_number":282,"context_line":"            self.assertNotIn(\u0027deleted\u0027, mig)"},{"line_number":283,"context_line":"            self.assertNotIn(\u0027deleted_at\u0027, mig)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        with mock.patch.object(self.controller.compute_api,"},{"line_number":286,"context_line":"                               \u0027get_migrations_sorted\u0027) as m_get:"}],"source_content_type":"text/x-python","patch_set":72,"id":"df87a7cf_38bf2bfc","line":283,"range":{"start_line":275,"start_character":0,"end_line":283,"end_character":47},"updated":"2017-12-18 03:39:06.000000000","message":"uuid missing?","commit_id":"0f84a81c553f612230e6b844d3818e8af1d13306"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"5b8cad6d6e75bdba3f65b029b41ef299d7f8d0a1","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        for i, mig in enumerate(migrations[\u0027migrations\u0027]):"},{"line_number":274,"context_line":"            # first item is in-progress live migration"},{"line_number":275,"context_line":"            if i \u003d\u003d 0:"},{"line_number":276,"context_line":"                self.assertIn(\u0027links\u0027, mig)"},{"line_number":277,"context_line":"            else:"},{"line_number":278,"context_line":"                self.assertNotIn(\u0027links\u0027, mig)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"            self.assertIn(\u0027migration_type\u0027, mig)"},{"line_number":281,"context_line":"            self.assertIn(\u0027id\u0027, mig)"},{"line_number":282,"context_line":"            self.assertNotIn(\u0027deleted\u0027, mig)"},{"line_number":283,"context_line":"            self.assertNotIn(\u0027deleted_at\u0027, mig)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        with mock.patch.object(self.controller.compute_api,"},{"line_number":286,"context_line":"                               \u0027get_migrations_sorted\u0027) as m_get:"}],"source_content_type":"text/x-python","patch_set":72,"id":"df87a7cf_b77100ab","line":283,"range":{"start_line":275,"start_character":0,"end_line":283,"end_character":47},"in_reply_to":"df87a7cf_38bf2bfc","updated":"2017-12-18 07:57:23.000000000","message":"Done","commit_id":"0f84a81c553f612230e6b844d3818e8af1d13306"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"949cda3c185dbfa496ccdb3362d085b9405a5a42","unresolved":false,"context_lines":[{"line_number":262,"context_line":"class MigrationsTestCaseV259(MigrationsTestCaseV223):"},{"line_number":263,"context_line":"    wsgi_api_version \u003d \u00272.59\u0027"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def setUp(self):"},{"line_number":266,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":267,"context_line":"        super(MigrationsTestCaseV259, self).setUp()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_index(self):"},{"line_number":270,"context_line":"        migrations \u003d {\u0027migrations\u0027: self.controller._output("}],"source_content_type":"text/x-python","patch_set":77,"id":"bf8cb3f7_0a09d52f","line":267,"range":{"start_line":265,"start_character":0,"end_line":267,"end_character":51},"updated":"2017-12-26 04:47:07.000000000","message":"It is not necessary.","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"2fd9284b21913fe6fc2156a201e495bb7c103f5c","unresolved":false,"context_lines":[{"line_number":262,"context_line":"class MigrationsTestCaseV259(MigrationsTestCaseV223):"},{"line_number":263,"context_line":"    wsgi_api_version \u003d \u00272.59\u0027"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def setUp(self):"},{"line_number":266,"context_line":"        \"\"\"Run before each test.\"\"\""},{"line_number":267,"context_line":"        super(MigrationsTestCaseV259, self).setUp()"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_index(self):"},{"line_number":270,"context_line":"        migrations \u003d {\u0027migrations\u0027: self.controller._output("}],"source_content_type":"text/x-python","patch_set":77,"id":"bf8cb3f7_99353ddd","line":267,"range":{"start_line":265,"start_character":0,"end_line":267,"end_character":51},"in_reply_to":"bf8cb3f7_0a09d52f","updated":"2017-12-26 12:04:45.000000000","message":"yep","commit_id":"d6dd09410b59df4ffba5ae151d1c80796c13cb87"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            self.assertIn(\u0027links\u0027, response[\u0027migrations\u0027][0])"},{"line_number":288,"context_line":"            self.assertIn(\u0027migration_type\u0027, response[\u0027migrations\u0027][0])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get_migrations\u0027)"},{"line_number":291,"context_line":"    def test_index_with_invalid_marker(self, mock_migrations_get):"},{"line_number":292,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":293,"context_line":"        mock_migrations_get.side_effect \u003d exception.MarkerNotFound("}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_6e977692","line":290,"range":{"start_line":290,"start_character":38,"end_line":290,"end_character":52},"updated":"2018-01-02 18:16:04.000000000","message":"This should be get_migrations_sorted - get_migrations doesn\u0027t take a marker. So this test is broken somehow.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            self.assertIn(\u0027links\u0027, response[\u0027migrations\u0027][0])"},{"line_number":288,"context_line":"            self.assertIn(\u0027migration_type\u0027, response[\u0027migrations\u0027][0])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get_migrations\u0027)"},{"line_number":291,"context_line":"    def test_index_with_invalid_marker(self, mock_migrations_get):"},{"line_number":292,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":293,"context_line":"        mock_migrations_get.side_effect \u003d exception.MarkerNotFound("}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_4cb5b9cc","line":290,"range":{"start_line":290,"start_character":38,"end_line":290,"end_character":52},"in_reply_to":"9f91af0f_6e977692","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":296,"context_line":"            \u0027/os-migrations?marker\u003d%s\u0027 % uuids.invalid_marker,"},{"line_number":297,"context_line":"            version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"},{"line_number":298,"context_line":"        self.assertRaises(exc.HTTPBadRequest,"},{"line_number":299,"context_line":"                          self.controller.index, req)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_index_with_invalid_limit(self):"},{"line_number":302,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_aef25e05","line":299,"range":{"start_line":298,"start_character":8,"end_line":299,"end_character":53},"updated":"2018-01-02 18:16:04.000000000","message":"Should probably assert the error you\u0027re getting is the one you expect and not some other 400.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":296,"context_line":"            \u0027/os-migrations?marker\u003d%s\u0027 % uuids.invalid_marker,"},{"line_number":297,"context_line":"            version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"},{"line_number":298,"context_line":"        self.assertRaises(exc.HTTPBadRequest,"},{"line_number":299,"context_line":"                          self.controller.index, req)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_index_with_invalid_limit(self):"},{"line_number":302,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_eccb6d50","line":299,"range":{"start_line":298,"start_character":8,"end_line":299,"end_character":53},"in_reply_to":"9f91af0f_aef25e05","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                          self.controller.index, req)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_index_with_invalid_limit(self):"},{"line_number":302,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":303,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":304,"context_line":"            \u0027/os-migrations?limit\u003dx\u0027, version\u003dself.wsgi_api_version,"},{"line_number":305,"context_line":"            use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_6edc5674","line":302,"range":{"start_line":302,"start_character":47,"end_line":302,"end_character":65},"updated":"2018-01-02 18:16:04.000000000","message":"limit","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                          self.controller.index, req)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_index_with_invalid_limit(self):"},{"line_number":302,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":303,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":304,"context_line":"            \u0027/os-migrations?limit\u003dx\u0027, version\u003dself.wsgi_api_version,"},{"line_number":305,"context_line":"            use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_6c375db2","line":302,"range":{"start_line":302,"start_character":47,"end_line":302,"end_character":65},"in_reply_to":"9f91af0f_6edc5674","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                          self.controller.index, req)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_index_with_invalid_change_since(self):"},{"line_number":315,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":316,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":317,"context_line":"            \u0027/os-migrations?change_since\u003dwrong_time\u0027,"},{"line_number":318,"context_line":"            version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_2ee64e46","line":315,"range":{"start_line":315,"start_character":47,"end_line":315,"end_character":65},"updated":"2018-01-02 18:16:04.000000000","message":"changes-since value","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                          self.controller.index, req)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def test_index_with_invalid_change_since(self):"},{"line_number":315,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""},{"line_number":316,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":317,"context_line":"            \u0027/os-migrations?change_since\u003dwrong_time\u0027,"},{"line_number":318,"context_line":"            version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_2c41550c","line":315,"range":{"start_line":315,"start_character":47,"end_line":315,"end_character":65},"in_reply_to":"9f91af0f_2ee64e46","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":348,"context_line":"class MigrationsPolicyEnforcementV259(MigrationsPolicyEnforcementV223):"},{"line_number":349,"context_line":"    wsgi_api_version \u003d \u00272.59\u0027"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_4ee39234","line":351,"range":{"start_line":351,"start_character":4,"end_line":351,"end_character":8},"updated":"2018-01-02 18:16:04.000000000","message":"?","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":348,"context_line":"class MigrationsPolicyEnforcementV259(MigrationsPolicyEnforcementV223):"},{"line_number":349,"context_line":"    wsgi_api_version \u003d \u00272.59\u0027"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f91af0f_0cc7b147","line":351,"range":{"start_line":351,"start_character":4,"end_line":351,"end_character":8},"in_reply_to":"9f91af0f_4ee39234","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e052beae2f39c41225ba90fa4776ab40bc19245b","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                              self.controller.index, req)"},{"line_number":300,"context_line":"        self.assertEqual("},{"line_number":301,"context_line":"            \"Marker %s could not be found.\" % uuids.invalid_marker,"},{"line_number":302,"context_line":"            str(e))"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def test_index_with_invalid_limit(self):"},{"line_number":305,"context_line":"        \"\"\"Tests detail paging with an invalid limit.\"\"\""}],"source_content_type":"text/x-python","patch_set":79,"id":"9f91af0f_42ded011","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":15},"updated":"2018-01-05 00:28:35.000000000","message":"Use six.text_type - casting an exception to a str can be a problem with unicode if this is ever translated.","commit_id":"25258a6d5c3fd8f4966c6ec1b9bdaa96cf93dfb3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4c2ce3e4983044ad77acade64c32acf11b9951f5","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                              self.controller.index, req)"},{"line_number":300,"context_line":"        self.assertEqual("},{"line_number":301,"context_line":"            \"Marker %s could not be found.\" % uuids.invalid_marker,"},{"line_number":302,"context_line":"            str(e))"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def test_index_with_invalid_limit(self):"},{"line_number":305,"context_line":"        \"\"\"Tests detail paging with an invalid limit.\"\"\""}],"source_content_type":"text/x-python","patch_set":79,"id":"9f91af0f_15c8fb1f","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":15},"in_reply_to":"9f91af0f_42ded011","updated":"2018-01-05 08:55:54.000000000","message":"Done","commit_id":"25258a6d5c3fd8f4966c6ec1b9bdaa96cf93dfb3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d7fc2ab310845a3b40bff49af232528773ecf2da","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    def test_index_with_invalid_change_since(self):"},{"line_number":319,"context_line":"        \"\"\"Tests detail paging with an invalid change-since value.\"\"\""},{"line_number":320,"context_line":"        req \u003d fakes.HTTPRequest.blank("},{"line_number":321,"context_line":"            \u0027/os-migrations?change-since\u003dwrong_time\u0027,"},{"line_number":322,"context_line":"            version\u003dself.wsgi_api_version, use_admin_context\u003dTrue)"},{"line_number":323,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":324,"context_line":"                          self.controller.index, req)"}],"source_content_type":"text/x-python","patch_set":84,"id":"7f96bb07_07f59ccb","line":321,"range":{"start_line":321,"start_character":28,"end_line":321,"end_character":40},"updated":"2018-01-10 17:28:06.000000000","message":"This should be \"changes-since\".","commit_id":"289c1b5ec817f93c902855ce672e6d212e86dba9"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"de6df605947411250c568e22fa564ebc340a6f3b","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            self.assertEqual(migrations, response)"},{"line_number":288,"context_line":"            self.assertIn(\u0027links\u0027, response[\u0027migrations\u0027][0])"},{"line_number":289,"context_line":"            self.assertIn(\u0027migration_type\u0027, response[\u0027migrations\u0027][0])"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get_migrations_sorted\u0027)"},{"line_number":292,"context_line":"    def test_index_with_invalid_marker(self, mock_migrations_get):"},{"line_number":293,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_acafd692","line":290,"updated":"2018-01-11 13:37:25.000000000","message":"The following test cases are missing.\n\n* Successful case with \u0027limit\u0027 and \u0027marker\u0027 (microversion 2.59)\n* Successful case with \u0027changes_since\u0027 (microversion 2.59)","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf184fc7db5084b382755cb754955cdacbc3e916","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            self.assertEqual(migrations, response)"},{"line_number":288,"context_line":"            self.assertIn(\u0027links\u0027, response[\u0027migrations\u0027][0])"},{"line_number":289,"context_line":"            self.assertIn(\u0027migration_type\u0027, response[\u0027migrations\u0027][0])"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get_migrations_sorted\u0027)"},{"line_number":292,"context_line":"    def test_index_with_invalid_marker(self, mock_migrations_get):"},{"line_number":293,"context_line":"        \"\"\"Tests detail paging with an invalid marker (not found).\"\"\""}],"source_content_type":"text/x-python","patch_set":85,"id":"7f96bb07_42b1398f","line":290,"in_reply_to":"7f96bb07_acafd692","updated":"2018-01-11 15:27:17.000000000","message":"Those are covered by the API samples functional tests, we don\u0027t need the duplication here. It\u0027s a pretty standard pattern in our microversion patches that the unit tests are covering the negative scenarios and the API samples functional tests are covering the normal paths.","commit_id":"92a0fc0b9f89f2472a574ef86c007d209a516a41"}],"releasenotes/notes/bp-add-pagination-for-os-migrations-2f8d5d257b0c5658.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c976e250e7d0ca267d20b33bbbc83cddbc77e1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Add pagination support and changes-since filter for"},{"line_number":4,"context_line":"      os-migrations API. Users can now use limit and"},{"line_number":5,"context_line":"      marker to perform paginate query when listing running"},{"line_number":6,"context_line":"      migrations. Users can also use filter changes-since to"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3f4b6375_791e7a70","line":3,"updated":"2017-11-07 23:21:07.000000000","message":"Same comments as in the rest api version history doc.\n\nNote that you can write this in the same restructured text format if you add a pipe, e.g.:\n\nfeatures:\n  - |\n    Add pagination...\n\nThen you can do lists.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"b81cf4ae90f945542b7b5db819d275b935213cd0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Add pagination support and changes-since filter for"},{"line_number":4,"context_line":"      os-migrations API. Users can now use limit and"},{"line_number":5,"context_line":"      marker to perform paginate query when listing running"},{"line_number":6,"context_line":"      migrations. Users can also use filter changes-since to"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"3f4b6375_63cb631d","line":3,"in_reply_to":"3f4b6375_791e7a70","updated":"2017-11-08 09:04:44.000000000","message":"Done, Thanks.","commit_id":"26864da063c3f3d5ff5b206cd1fe5acba05453d5"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"95fd798179e71148eb78deacdb9a59dada55b29f","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."},{"line_number":7,"context_line":"      Users can now use limit and marker to perform paginate query when listing"},{"line_number":8,"context_line":"      migrations. Users can also use filter changes-since to filter the results"},{"line_number":9,"context_line":"      based on the last time the migration record was updated."},{"line_number":10,"context_line":"    - ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":11,"context_line":"      migrations id in the response."}],"source_content_type":"text/x-yaml","patch_set":43,"id":"3f4b6375_592a852c","line":8,"range":{"start_line":8,"start_character":37,"end_line":8,"end_character":57},"updated":"2017-11-09 02:52:10.000000000","message":"changes-since filter","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9f0232d58237ab37987a3516472dbbf3b1a107af","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."},{"line_number":7,"context_line":"      Users can now use limit and marker to perform paginate query when listing"},{"line_number":8,"context_line":"      migrations. Users can also use filter changes-since to filter the results"},{"line_number":9,"context_line":"      based on the last time the migration record was updated."},{"line_number":10,"context_line":"    - ``GET /os-migrations`` will now return a uuid value in addition to the"},{"line_number":11,"context_line":"      migrations id in the response."}],"source_content_type":"text/x-yaml","patch_set":43,"id":"1f485f77_12b632db","line":8,"range":{"start_line":8,"start_character":37,"end_line":8,"end_character":57},"in_reply_to":"3f4b6375_592a852c","updated":"2017-11-09 11:51:34.000000000","message":"Done","commit_id":"bc86cc0e97363175f2da0d227fd0d94cc9415c82"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added pagination support for migrations, there are two changes:"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."},{"line_number":7,"context_line":"      Users can now use limit and marker to perform paginate query when listing"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_ee04e6c8","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":43},"updated":"2018-01-02 18:16:04.000000000","message":"Let\u0027s be clear that you\u0027re changing the ``GET /os-migrations`` API if we\u0027re not changing the ``GET /servers/{uuid}/migrations`` API. It can get confusing.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5db103400b9c5c7416360a1937300624bbeebc15","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added pagination support for migrations, there are two changes:"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."},{"line_number":7,"context_line":"      Users can now use limit and marker to perform paginate query when listing"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_6ec5368e","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":67},"updated":"2018-01-02 18:16:04.000000000","message":"Same comments as in the REST API history doc.","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added pagination support for migrations, there are two changes:"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."},{"line_number":7,"context_line":"      Users can now use limit and marker to perform paginate query when listing"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_acfd653b","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":67},"in_reply_to":"9f91af0f_6ec5368e","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1601ad3af53797b956c2e494e3c2186c55c41bf7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added pagination support for migrations, there are two changes:"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."},{"line_number":7,"context_line":"      Users can now use limit and marker to perform paginate query when listing"}],"source_content_type":"text/x-yaml","patch_set":78,"id":"9f91af0f_6c951de4","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":43},"in_reply_to":"9f91af0f_ee04e6c8","updated":"2018-01-04 08:04:55.000000000","message":"Done","commit_id":"7397f73e46b78e23796b47059335b63a98fd8315"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e052beae2f39c41225ba90fa4776ab40bc19245b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added pagination support for the ``GET /os-migrations`` API, there are four"},{"line_number":5,"context_line":"    changes:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."}],"source_content_type":"text/x-yaml","patch_set":79,"id":"9f91af0f_c2d180fd","line":4,"updated":"2018-01-05 00:28:35.000000000","message":"I\u0027d just copy what you have from the REST API version history doc, which I think is a bit better than this release note which has some redundancy in it, like mentioning changes-since in the first two bullets.","commit_id":"25258a6d5c3fd8f4966c6ec1b9bdaa96cf93dfb3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4c2ce3e4983044ad77acade64c32acf11b9951f5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added pagination support for the ``GET /os-migrations`` API, there are four"},{"line_number":5,"context_line":"    changes:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    - Add pagination support and changes-since filter for os-migrations API."}],"source_content_type":"text/x-yaml","patch_set":79,"id":"9f91af0f_35997f1e","line":4,"in_reply_to":"9f91af0f_c2d180fd","updated":"2018-01-05 08:55:54.000000000","message":"Done","commit_id":"25258a6d5c3fd8f4966c6ec1b9bdaa96cf93dfb3"}]}
