)]}'
{"specs/mitaka/approved/abort-live-migration.rst":[{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4add4ff1e72f8b1d50147dd3e345fd2812183525","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  - Policy violation."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":123,"context_line":"  - the migration state is invalid for cancellation, i.e. the task"},{"line_number":124,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da85f559_c3dba97a","line":123,"updated":"2015-11-12 15:02:03.000000000","message":"I think you mean the instance state is invalid, if we use a POST and we add a new action then the resource is the instance not the live-migration.","commit_id":"9e3bb58e3e7ca172f9f28f5cf46ad6cb9f89dc2b"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"269c4897c0f9d2816f7144841a1069ad146ec560","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  - Policy violation."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":123,"context_line":"  - the migration state is invalid for cancellation, i.e. the task"},{"line_number":124,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":15,"id":"da85f559_8587dbb3","line":123,"in_reply_to":"da85f559_c3dba97a","updated":"2015-11-12 17:53:21.000000000","message":"Done","commit_id":"9e3bb58e3e7ca172f9f28f5cf46ad6cb9f89dc2b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c8602daa4cf157a2c0540e33dc31b5200f28a712","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Provide a way to query and abort an ongoing live migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_b4267dcc","line":8,"updated":"2015-11-17 14:33:31.000000000","message":"need to update this title now too.","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"19720edacb9f64838eff190c0139d57026badc20","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Provide a way to query and abort an ongoing live migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_9a09232f","line":8,"updated":"2015-11-17 14:34:36.000000000","message":"remove query from title - progress already covered by percentage reporting in instance","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Provide a way to query and abort an ongoing live migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_113c0de1","line":8,"in_reply_to":"ba8a016a_b4267dcc","updated":"2015-11-18 18:16:31.000000000","message":"Done","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5a3a20aa0777c0a1bb02ed800b3b68abeffc7acc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Proposed change"},{"line_number":59,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"A API operation on the instance object called \u0027live-migrate-abort\u0027 is"},{"line_number":62,"context_line":"proposed which can be used to cancel an ongoing operation an instance."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Rolling back a live migration should be very quick, as the source host"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_1db186e1","line":61,"updated":"2015-11-18 06:38:09.000000000","message":"s/A API/An API/","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Proposed change"},{"line_number":59,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"A API operation on the instance object called \u0027live-migrate-abort\u0027 is"},{"line_number":62,"context_line":"proposed which can be used to cancel an ongoing operation an instance."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Rolling back a live migration should be very quick, as the source host"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_711c7977","line":61,"in_reply_to":"ba8a016a_1db186e1","updated":"2015-11-18 18:16:31.000000000","message":"Done","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"ebdde622ce9576d6c5a43e85de99918b692514cf","unresolved":false,"context_lines":[{"line_number":69,"context_line":"In this situation a cancellation request should be declined because"},{"line_number":70,"context_line":"rolling back to the source node would be more work than completing the"},{"line_number":71,"context_line":"migration. In fact it is probably impossible!  Nova would need to be"},{"line_number":72,"context_line":"involved in the switch form pre-copy to post-copy so that it could"},{"line_number":73,"context_line":"switch the networking to the target host. Thus nova would know that the"},{"line_number":74,"context_line":"instance has switched and decline any cancellation requests.  If the"},{"line_number":75,"context_line":"instance migration were to encounter difficulties completing during the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"da85f559_8ce4b6ac","line":72,"updated":"2015-11-13 14:51:03.000000000","message":"nit: s/form/from","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"In this situation a cancellation request should be declined because"},{"line_number":70,"context_line":"rolling back to the source node would be more work than completing the"},{"line_number":71,"context_line":"migration. In fact it is probably impossible!  Nova would need to be"},{"line_number":72,"context_line":"involved in the switch form pre-copy to post-copy so that it could"},{"line_number":73,"context_line":"switch the networking to the target host. Thus nova would know that the"},{"line_number":74,"context_line":"instance has switched and decline any cancellation requests.  If the"},{"line_number":75,"context_line":"instance migration were to encounter difficulties completing during the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_3116f155","line":72,"in_reply_to":"da85f559_8ce4b6ac","updated":"2015-11-18 18:16:31.000000000","message":"Done","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5a3a20aa0777c0a1bb02ed800b3b68abeffc7acc","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    \"live-migrate-abort\": null"},{"line_number":111,"context_line":"  }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"  Normal http response code: `204 No Content`"},{"line_number":114,"context_line":"  No response body is needed"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"  Expected error http response code: `404 Not Found`"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_9df3369e","line":113,"updated":"2015-11-18 06:38:09.000000000","message":"I think this should be async call, if yes, we should use 202","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    \"live-migrate-abort\": null"},{"line_number":111,"context_line":"  }"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"  Normal http response code: `204 No Content`"},{"line_number":114,"context_line":"  No response body is needed"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"  Expected error http response code: `404 Not Found`"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_f108692f","line":113,"in_reply_to":"ba8a016a_9df3369e","updated":"2015-11-18 18:16:31.000000000","message":"Done","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5c3744ae0f74c762fa669e8da3837ce4737acfca","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":123,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":124,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Security impact"},{"line_number":127,"context_line":"---------------"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_49cbf753","line":125,"updated":"2015-11-17 16:04:48.000000000","message":"We should also include the discussion on using instance actions:\nhttp://developer.openstack.org/api-ref-compute-v2.1.html#os-instance-actions-v2.1\n\nI think we need an instance action for both live-migrate, and live-migrate-abort. A successful abort would error out the live-migrate action, and show a success for the live-migrate-abort action, etc.\n\nWe should also talk about what state the server will be in when aborted successfully (for example, if paused, the server will be active again, etc?)","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":123,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":124,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Security impact"},{"line_number":127,"context_line":"---------------"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_0857e226","line":125,"in_reply_to":"ba8a016a_49cbf753","updated":"2015-11-18 18:16:31.000000000","message":"Done","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3c7e2ed5e7e3851f0288a080ec796c63854459e5","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* Unit and Functional tests in Nova"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* Tempest tests"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  Currently the multinode jobs can test live migration. I expect the"},{"line_number":194,"context_line":"  devstack setup used by those tests to be able to complete a live"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_0eabb51e","line":191,"updated":"2015-11-17 15:58:34.000000000","message":"not sure about the formatting here, I think you probably want to remove those two bullet points and just keep the paragraph below present.","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* Unit and Functional tests in Nova"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* Tempest tests"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  Currently the multinode jobs can test live migration. I expect the"},{"line_number":194,"context_line":"  devstack setup used by those tests to be able to complete a live"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_0c0ab621","line":191,"in_reply_to":"ba8a016a_0eabb51e","updated":"2015-11-18 18:16:31.000000000","message":"Done","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3c7e2ed5e7e3851f0288a080ec796c63854459e5","unresolved":false,"context_lines":[{"line_number":198,"context_line":"  never completes. This will probably not be feasible in tempest, so"},{"line_number":199,"context_line":"  functional tests in nova\u0027s tree should be used. This should be"},{"line_number":200,"context_line":"  extended to verify the impact of attempting to cancel a migration"},{"line_number":201,"context_line":"  during various phase of the migration."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Documentation Impact"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_6e5a8152","line":201,"updated":"2015-11-17 15:58:34.000000000","message":"fake virt driver seems like a good idea.\n\nIts a shame not to test the calls out to libvirt, etc, but I like that we test the rest of the components.","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ce6442f6232e0a70fafda53b614e1ae0b875ecc7","unresolved":false,"context_lines":[{"line_number":198,"context_line":"  never completes. This will probably not be feasible in tempest, so"},{"line_number":199,"context_line":"  functional tests in nova\u0027s tree should be used. This should be"},{"line_number":200,"context_line":"  extended to verify the impact of attempting to cancel a migration"},{"line_number":201,"context_line":"  during various phase of the migration."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Documentation Impact"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba8a016a_0c587631","line":201,"in_reply_to":"ba8a016a_6e5a8152","updated":"2015-11-18 18:16:31.000000000","message":"I\u0027m thinking the unit test will use fake driver for speed of test execution but for functional test we need to create an instance with memory activity and large disk so we can test live migration and aborting thereof properly","commit_id":"91a60993235b1c70f930139fc5158017fb8198f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Provide a way to abort an ongoing live migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"},{"line_number":12,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-live-migration"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"At present, intervention at the hypervisor level is required to cancel"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_38b4467e","line":11,"updated":"2015-11-19 16:00:36.000000000","message":"Nit: can drop this line, for consistency.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Provide a way to abort an ongoing live migration"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"},{"line_number":12,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-live-migration"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"At present, intervention at the hypervisor level is required to cancel"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_aa644eb8","line":11,"in_reply_to":"ba8a016a_38b4467e","updated":"2015-11-19 18:12:31.000000000","message":"Added blueprint","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"In the case of the libvirt driver it will obtain the domain object for"},{"line_number":103,"context_line":"the target instance and invoke job abort on it.  If there is no job"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_b35a97f0","line":100,"updated":"2015-11-19 16:00:36.000000000","message":"Nit, these last three paragraphs can be removed, as that detail is covered in the REST API impact, and most of this is assumed for an API call of this nature. But I don\u0027t mind leaving it here.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"In the case of the libvirt driver it will obtain the domain object for"},{"line_number":103,"context_line":"the target instance and invoke job abort on it.  If there is no job"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_cac75262","line":100,"in_reply_to":"ba8a016a_b35a97f0","updated":"2015-11-19 18:12:31.000000000","message":"ok, will leave them in since they are there and you don\u0027t object but noted for next time","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"a749cdb3301e56985bea6d97b6beaca786da7735","unresolved":false,"context_lines":[{"line_number":106,"context_line":"and is executing the post migration phase.  It could also occur if the"},{"line_number":107,"context_line":"migration is still executing the pre migration phase.  Finally, if it"},{"line_number":108,"context_line":"could mean the libvirt job has failed but nova has not updated the"},{"line_number":109,"context_line":"task state.  In all of these cases a exception will be returned to the"},{"line_number":110,"context_line":"compute manager to indicate that the operation was unsuccessful."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"If the libvirt job abort operation succeeds then the thread performing"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_fff552ec","line":109,"updated":"2015-11-19 12:17:50.000000000","message":"nit: an exception","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":106,"context_line":"and is executing the post migration phase.  It could also occur if the"},{"line_number":107,"context_line":"migration is still executing the pre migration phase.  Finally, if it"},{"line_number":108,"context_line":"could mean the libvirt job has failed but nova has not updated the"},{"line_number":109,"context_line":"task state.  In all of these cases a exception will be returned to the"},{"line_number":110,"context_line":"compute manager to indicate that the operation was unsuccessful."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"If the libvirt job abort operation succeeds then the thread performing"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_2aa29e99","line":109,"in_reply_to":"ba8a016a_fff552ec","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":112,"context_line":"If the libvirt job abort operation succeeds then the thread performing"},{"line_number":113,"context_line":"the live migration will receive an error from the libvirt driver and"},{"line_number":114,"context_line":"perform the live migration rollback steps, including reseting the"},{"line_number":115,"context_line":"instance\u0027s task state to none."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The live-migrate-abort thread will emit a notification message to"},{"line_number":118,"context_line":"indicate the outcome of the operation."}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_33c30759","line":115,"updated":"2015-11-19 16:00:36.000000000","message":"Interesting, this does feel a little libvirt specific.\n\nDo we not also need to tell that thread we are expecting a cancel, otherwise it feels like the instance should go into an ERROR state, which is clearly not what we want here.\n\nAlthough thinking about it, I guess we should mark the migration object as error/failed but leave the instance in the ACTIVE state?\n\nProbably should iron out some of these details.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":112,"context_line":"If the libvirt job abort operation succeeds then the thread performing"},{"line_number":113,"context_line":"the live migration will receive an error from the libvirt driver and"},{"line_number":114,"context_line":"perform the live migration rollback steps, including reseting the"},{"line_number":115,"context_line":"instance\u0027s task state to none."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The live-migrate-abort thread will emit a notification message to"},{"line_number":118,"context_line":"indicate the outcome of the operation."}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_ca575224","line":115,"in_reply_to":"ba8a016a_33c30759","updated":"2015-11-19 18:12:31.000000000","message":"The mechanisms used to abort the migration operation is necessarily driver specific.\n\nMy observations are that when you manually abort the libvirt job the nova code that started it rolls back the migration and returns the instance to an active state with the task state set to none.  Therefore it is my assumption that this is what will happen when we implement this operation, if not then that is a bug which will need to be addressed in the implementation.\n\nI believe Claudiu Belu plans to implement this for Hyperv.  The mechanism used will be different from libvirt, which is why we have different drivers of course.  However the outcome should be the same as described above.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":125,"context_line":"live-migrate-abort operation.  If the operator were to execute the"},{"line_number":126,"context_line":"operation multiple times the subsequent invocations would simply fail."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This will need an increment to the rpcapi version too."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Alternatives"},{"line_number":131,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_73a2ef9a","line":128,"updated":"2015-11-19 16:00:36.000000000","message":"Nit: not sure we really need these last 4 paragraphs, that is all assumed really, and the Notification impact covers the extra bits.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":125,"context_line":"live-migrate-abort operation.  If the operator were to execute the"},{"line_number":126,"context_line":"operation multiple times the subsequent invocations would simply fail."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This will need an increment to the rpcapi version too."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Alternatives"},{"line_number":131,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_6a37464d","line":128,"in_reply_to":"ba8a016a_73a2ef9a","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":125,"context_line":"live-migrate-abort operation.  If the operator were to execute the"},{"line_number":126,"context_line":"operation multiple times the subsequent invocations would simply fail."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"This will need an increment to the rpcapi version too."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Alternatives"},{"line_number":131,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_aacd2e32","line":128,"in_reply_to":"ba8a016a_73a2ef9a","updated":"2015-11-19 18:12:31.000000000","message":"removed most of them, but moved the one stating the abort operation does not change the instance task state before previous paragraph","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"To be added in a new microversion."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"* Stop an in-progress live migration"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  `POST /servers/{id}/action`"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_d9ead5da","line":152,"updated":"2015-11-19 16:00:36.000000000","message":"we should probably describe the changes to the instance task_state that show this was a success?","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"To be added in a new microversion."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"* Stop an in-progress live migration"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  `POST /servers/{id}/action`"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_450ef3e5","line":152,"in_reply_to":"ba8a016a_d9ead5da","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"a749cdb3301e56985bea6d97b6beaca786da7735","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new python-novaclient command will be available, e.g."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"nova live-migrate-cancel \u003cinstance\u003e"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Developer impact"},{"line_number":204,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_9fd3e603","line":201,"updated":"2015-11-19 12:17:50.000000000","message":"I\u0027d call it live-migration-abort to be consistent with the name of the action and because at the moment python nova-client uses live-migration and not live-migrate","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new python-novaclient command will be available, e.g."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"nova live-migrate-cancel \u003cinstance\u003e"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Developer impact"},{"line_number":204,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_a5c0ff50","line":201,"in_reply_to":"ba8a016a_5876ead7","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new python-novaclient command will be available, e.g."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"nova live-migrate-cancel \u003cinstance\u003e"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Developer impact"},{"line_number":204,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_c5f0a3cb","line":201,"in_reply_to":"ba8a016a_9fd3e603","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new python-novaclient command will be available, e.g."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"nova live-migrate-cancel \u003cinstance\u003e"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Developer impact"},{"line_number":204,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_5876ead7","line":201,"in_reply_to":"ba8a016a_9fd3e603","updated":"2015-11-19 16:00:36.000000000","message":"yeah, +1, but we could do that in a follow up I guess.\n\nFWIW, this normally goes in Other end user impact, but I see what you have put it in here. Either way is fine.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"a749cdb3301e56985bea6d97b6beaca786da7735","unresolved":false,"context_lines":[{"line_number":220,"context_line":"Work Items"},{"line_number":221,"context_line":"----------"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"* python-novaclient \u0027nova live-migration-cancel\u0027"},{"line_number":224,"context_line":"* Cancel live migration API operation"},{"line_number":225,"context_line":"* Cancelling a live migration per hypervisor"},{"line_number":226,"context_line":"  * libvirt"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_1f061686","line":223,"updated":"2015-11-19 12:17:50.000000000","message":"Please make this consistent to the name you mention in the \"Other deployer impact\" section.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":220,"context_line":"Work Items"},{"line_number":221,"context_line":"----------"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"* python-novaclient \u0027nova live-migration-cancel\u0027"},{"line_number":224,"context_line":"* Cancel live migration API operation"},{"line_number":225,"context_line":"* Cancelling a live migration per hypervisor"},{"line_number":226,"context_line":"  * libvirt"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_25940f41","line":223,"in_reply_to":"ba8a016a_1f061686","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Testing"},{"line_number":236,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"  Currently the multinode jobs can test live migration. I expect the"},{"line_number":239,"context_line":"  devstack setup used by those tests to be able to complete a live"},{"line_number":240,"context_line":"  migration very quickly, so it may be necessary to use a fake virt"},{"line_number":241,"context_line":"  driver to simulate a live migration slow enough that cancelling it"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_d8373afd","line":238,"updated":"2015-11-19 16:00:36.000000000","message":"Nit: ideally remove the indent here.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":235,"context_line":"Testing"},{"line_number":236,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"  Currently the multinode jobs can test live migration. I expect the"},{"line_number":239,"context_line":"  devstack setup used by those tests to be able to complete a live"},{"line_number":240,"context_line":"  migration very quickly, so it may be necessary to use a fake virt"},{"line_number":241,"context_line":"  driver to simulate a live migration slow enough that cancelling it"}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_c59e6362","line":238,"in_reply_to":"ba8a016a_d8373afd","updated":"2015-11-19 18:12:31.000000000","message":"Done","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"a749cdb3301e56985bea6d97b6beaca786da7735","unresolved":false,"context_lines":[{"line_number":251,"context_line":"  during various phase of the migration. The proposed approach is to"},{"line_number":252,"context_line":"  use the live migration CI job currently being created and create an"},{"line_number":253,"context_line":"  instance with memory activity and large disk so we can test all"},{"line_number":254,"context_line":"  aspects of live migration, including aborting the live migration."},{"line_number":255,"context_line":"  Testing of attempts to cancel a migration during pre or post"},{"line_number":256,"context_line":"  migration phases can be done in the unit testing as described above."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_8ccc1fbc","line":254,"updated":"2015-11-19 12:17:50.000000000","message":"Do we really need a instance with large disk and memory activity or do we need just a way to keep the migration lasting long?","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4ddd0c48129b55f318d67dc66abc1730c12aafff","unresolved":false,"context_lines":[{"line_number":251,"context_line":"  during various phase of the migration. The proposed approach is to"},{"line_number":252,"context_line":"  use the live migration CI job currently being created and create an"},{"line_number":253,"context_line":"  instance with memory activity and large disk so we can test all"},{"line_number":254,"context_line":"  aspects of live migration, including aborting the live migration."},{"line_number":255,"context_line":"  Testing of attempts to cancel a migration during pre or post"},{"line_number":256,"context_line":"  migration phases can be done in the unit testing as described above."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_93a43308","line":254,"in_reply_to":"ba8a016a_8ccc1fbc","updated":"2015-11-19 16:00:36.000000000","message":"yeah, feels like we just need something that is reliably long enough so that we can cancel it.\n\nIt feels like a fake virt driver with live-migrate thats always infinite, seems like a good approach.","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"0891e67ca3f7c668cd6df276703b2c5af3388585","unresolved":false,"context_lines":[{"line_number":251,"context_line":"  during various phase of the migration. The proposed approach is to"},{"line_number":252,"context_line":"  use the live migration CI job currently being created and create an"},{"line_number":253,"context_line":"  instance with memory activity and large disk so we can test all"},{"line_number":254,"context_line":"  aspects of live migration, including aborting the live migration."},{"line_number":255,"context_line":"  Testing of attempts to cancel a migration during pre or post"},{"line_number":256,"context_line":"  migration phases can be done in the unit testing as described above."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"ba8a016a_4057c1c9","line":254,"in_reply_to":"ba8a016a_93a43308","updated":"2015-11-19 18:12:31.000000000","message":"I\u0027ve tidied up this section a bit to separate out unit and functional tests.  My thinking is that we can use a fake driver for unit tests but not functional testing?","commit_id":"f6c9181bb20aca10da41dc39084bc1ceb0c285e7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43c88295ef4d2fd7ecc088dc5c0508f87a6a156a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-live-migration"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"At present, intervention at the hypervisor level is required to cancel"},{"line_number":15,"context_line":"a live migration. This spec proposes a adding a new operation on the"},{"line_number":16,"context_line":"instance object to cancel a live migration of that instance."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_74eb99dc","line":15,"updated":"2015-11-19 23:29:22.000000000","message":"s/a adding/adding/","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"f8af1ef774dc724989ad42f75922d726c44cfd5a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-live-migration"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"At present, intervention at the hypervisor level is required to cancel"},{"line_number":15,"context_line":"a live migration. This spec proposes a adding a new operation on the"},{"line_number":16,"context_line":"instance object to cancel a live migration of that instance."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_2654f9c7","line":15,"in_reply_to":"ba8a016a_74eb99dc","updated":"2015-11-20 08:47:27.000000000","message":"Done","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43c88295ef4d2fd7ecc088dc5c0508f87a6a156a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_b43d812c","line":99,"updated":"2015-11-19 23:29:22.000000000","message":"Note this should be a 400 Bad Request, with an error message in the body about the operation not being supported. This should *not* return a 501 Not Implemented HTTP result code.","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"4c9f7ca4ac015e5af9b2b20c0bc844bf44c26157","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_41d567e2","line":99,"in_reply_to":"ba8a016a_01a19ff7","updated":"2015-11-20 08:55:15.000000000","message":"Paul, would it be visible over instance-actions that abort was scheduled, but failed for some reasons, i.e. not supported by driver?","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"441a711d42b7df9ab9648ed84c0719861e69b8fc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_daeb7277","line":99,"in_reply_to":"ba8a016a_41d567e2","updated":"2015-11-20 13:24:37.000000000","message":"yes, maybe we need to express this as a 400 Bad Request?\nI\u0027m not familiar enough with way the instance action event object is generated and how to report a failure, will investigate the details","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"f8af1ef774dc724989ad42f75922d726c44cfd5a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_01a19ff7","line":99,"in_reply_to":"ba8a016a_b43d812c","updated":"2015-11-20 08:47:27.000000000","message":"I may be missing something here but since the API server sent the request to the compute manager as an async call and has already replied with a \u0027202 Accepted\u0027, so what we are talking about here is raising an exception that will cause the outcome to be reported correctly in the instance action events table and notification msg?","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"f1ab26d7fdd40c01509cdc14748284406b40bc93","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a \u0027not supported\u0027 exception"},{"line_number":100,"context_line":"will be returned."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_8ea3379e","line":99,"in_reply_to":"ba8a016a_b43d812c","updated":"2015-11-23 08:28:50.000000000","message":"Now I get it, the exception raised should have a code of 400, which means the the instance action event and notification message will reflect a 400.","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"1c3368c26bda0650d84a077b810a04a5fdb86e93","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Body::"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  {"},{"line_number":152,"context_line":"    \"live-migrate-abort\": null"},{"line_number":153,"context_line":"  }"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_4ad7b7ed","line":152,"updated":"2015-11-20 12:19:59.000000000","message":"So, honestly, the restful approach here would be the following:\n\n{\n    \"os-migrateLive\": {\n        \"host\": \"01c0cadef72d47e28a672a76060d492c\",\n        \"block_migration\": false,\n        \"disk_over_commit\": false\n    }\n}\n\nWhich is the existing creation of the migration.\n\nGET /servers/{id}/migrations\n\nWhich would return some migration id, information on the server.\n\nDELETE /servers/{id}/migrations/{id} \n\nThat kills the migration.\n\nIt would also provide the GET interface at the same time which would let use expose other information to the user. Possibly some progress details down the road.","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"945af61c981b0098d209c4ed86518e0339878a14","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Body::"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  {"},{"line_number":152,"context_line":"    \"live-migrate-abort\": null"},{"line_number":153,"context_line":"  }"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_0b5d2eec","line":152,"in_reply_to":"ba8a016a_2dfb6a49","updated":"2015-11-20 14:11:36.000000000","message":"Done","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"035ee3a38d06652db27e9a28b39ccd681966f793","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Body::"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  {"},{"line_number":152,"context_line":"    \"live-migrate-abort\": null"},{"line_number":153,"context_line":"  }"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_f67f6664","line":152,"in_reply_to":"ba8a016a_4ad7b7ed","updated":"2015-11-20 16:09:22.000000000","message":"GET /servers/{id}/migrations - should this one return all server migrations, not only current one?","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"f1ab26d7fdd40c01509cdc14748284406b40bc93","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Body::"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  {"},{"line_number":152,"context_line":"    \"live-migrate-abort\": null"},{"line_number":153,"context_line":"  }"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_6ed613f3","line":152,"in_reply_to":"ba8a016a_4ad7b7ed","updated":"2015-11-23 08:28:50.000000000","message":"I get what you are driving at now but agree with Jay\u0027s comments that we should implement the abort as an instance action for now and fix all this when we do task api","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"441a711d42b7df9ab9648ed84c0719861e69b8fc","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Body::"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  {"},{"line_number":152,"context_line":"    \"live-migrate-abort\": null"},{"line_number":153,"context_line":"  }"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_5a546220","line":152,"in_reply_to":"ba8a016a_4ad7b7ed","updated":"2015-11-20 13:24:37.000000000","message":"The original version of this specification took an approach like that but people seem more comfortable with the live-migrate-abort operation on the instance object.","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a433570633fff76965671098589836817cc388bc","unresolved":false,"context_lines":[{"line_number":149,"context_line":"Body::"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  {"},{"line_number":152,"context_line":"    \"live-migrate-abort\": null"},{"line_number":153,"context_line":"  }"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_2dfb6a49","line":152,"in_reply_to":"ba8a016a_5a546220","updated":"2015-11-20 13:40:06.000000000","message":"huh, really?","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43c88295ef4d2fd7ecc088dc5c0508f87a6a156a","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":165,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":166,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_b4002135","line":166,"updated":"2015-11-19 23:29:22.000000000","message":"Add the 400 Bad Request for when a underlying driver cannot support the operation.","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"441a711d42b7df9ab9648ed84c0719861e69b8fc","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":165,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":166,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_7a24c6c5","line":166,"in_reply_to":"ba8a016a_2a3353f8","updated":"2015-11-20 13:24:37.000000000","message":"Done","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"f8af1ef774dc724989ad42f75922d726c44cfd5a","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":165,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":166,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_e1d25b5b","line":166,"in_reply_to":"ba8a016a_b4002135","updated":"2015-11-20 08:47:27.000000000","message":"As per above, due to the use of an async call to the compute manager we won\u0027t find out if the driver can support the operation until after the API server has replied?","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"1c3368c26bda0650d84a077b810a04a5fdb86e93","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":165,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":166,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":19,"id":"ba8a016a_2a3353f8","line":166,"in_reply_to":"ba8a016a_e1d25b5b","updated":"2015-11-20 12:19:59.000000000","message":"right, the capabilities aren\u0027t surfaced","commit_id":"dbf49c629201a7c9e3d4580be871c46ca25c0cd2"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"d0da211e2540522de953fe0c557cd7b950d1df53","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a new excecption called"},{"line_number":100,"context_line":"\u0027AbortMigrationNotSupported\u0027 with a status code of 400 will be"},{"line_number":101,"context_line":"returned."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"ba8a016a_dacfabb1","line":99,"updated":"2015-11-23 12:44:29.000000000","message":"s/exception/excecption","commit_id":"b405013eab059ac2ebf7245f7a2a749eaf4b477b"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b0ba0ee98bbae0babd614cdc203fb7a88cebe03e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"response code.  The compute manager will emit a notification message"},{"line_number":97,"context_line":"indicating that the live-migrate-abort operation has started.  It will"},{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a new excecption called"},{"line_number":100,"context_line":"\u0027AbortMigrationNotSupported\u0027 with a status code of 400 will be"},{"line_number":101,"context_line":"returned."},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"ba8a016a_94a49208","line":99,"in_reply_to":"ba8a016a_dacfabb1","updated":"2015-11-23 14:40:49.000000000","message":"Done","commit_id":"b405013eab059ac2ebf7245f7a2a749eaf4b477b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a0e848eb59ce7ec7013e249de57de59f3a686e1e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a new excecption called"},{"line_number":100,"context_line":"\u0027AbortMigrationNotSupported\u0027 with a status code of 400 will be"},{"line_number":101,"context_line":"returned."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Note the instance task state will not be updated by the"},{"line_number":104,"context_line":"live-migrate-abort operation.  If the operator were to execute the"}],"source_content_type":"text/x-rst","patch_set":20,"id":"ba8a016a_fa62af3c","line":101,"updated":"2015-11-23 12:53:53.000000000","message":"@tdurakov brought up a good point. The behaviour of the resize and live-migration server actions is to log an error to the instance actions table and return 202 Accepted. We should be consistent here. Sorry for the confusion, Paul.","commit_id":"b405013eab059ac2ebf7245f7a2a749eaf4b477b"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b0ba0ee98bbae0babd614cdc203fb7a88cebe03e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"then invoke a method on the driver to abort the migration.  If the"},{"line_number":99,"context_line":"driver is unable to perform this operation a new excecption called"},{"line_number":100,"context_line":"\u0027AbortMigrationNotSupported\u0027 with a status code of 400 will be"},{"line_number":101,"context_line":"returned."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Note the instance task state will not be updated by the"},{"line_number":104,"context_line":"live-migrate-abort operation.  If the operator were to execute the"}],"source_content_type":"text/x-rst","patch_set":20,"id":"ba8a016a_2f1b13cc","line":101,"in_reply_to":"ba8a016a_fa62af3c","updated":"2015-11-23 14:40:49.000000000","message":"Yep, that is what I\u0027m trying to describe here.  The API server returns 202 to the caller. \n\nI\u0027ve created a paragraph to make it clear, what I am talking about here is the code we set when creating an exception object that inherits from NovaException it sets the code attribute to 400.  This is used when generating the instance action event object and notification message in the event of an unsuccessful outcome due to lack of driver support for migration cancellation.","commit_id":"b405013eab059ac2ebf7245f7a2a749eaf4b477b"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"8f76553c5dacf6ef05d44fdc8ab7231972b2a0d7","unresolved":false,"context_lines":[{"line_number":99,"context_line":"the live-migrate-abort operation has started.  It will then invoke a"},{"line_number":100,"context_line":"method on the driver to abort the migration.  If the driver is unable"},{"line_number":101,"context_line":"to perform this operation a new exception called"},{"line_number":102,"context_line":"\u0027AbortMigrationNotSupported\u0027 with a status code of 400 will be"},{"line_number":103,"context_line":"returned."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":21,"id":"ba8a016a_61a5af45","line":102,"updated":"2015-11-23 14:57:12.000000000","message":"Please remove 400 from description, as there is no http responses to operator.","commit_id":"017219beca1d95f61dc792233128d8b799eed9fa"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fd9140e489831164ae91e35980d6a08665bc2cc8","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Body::"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"  {"},{"line_number":154,"context_line":"    \"live-migrate-abort\": null"},{"line_number":155,"context_line":"  }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":22,"id":"ba8a016a_b39ae96c","line":154,"updated":"2015-11-24 04:41:42.000000000","message":"The api-wg guideline mentions\n\nhttps://github.com/openstack/api-wg/blob/master/guidelines/naming.rst#fields-in-an-api-request-or-response-body\n\n Field names should use snake_case style, not CamelCase or MixedCase style.\n\nSo hyphens are not good in a request body.\nIn addition, the \"start\" action name is os-migrateLive.\n\nSo how about\n\n \"abort_live_migration\": null\n\n?\n\nThat is different from the existing api, but easy to understand the meaning and fits to api-wg guideline IMO.","commit_id":"7ccd85fbef5166b2f930c6fc2bc75b1cf723c37f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7915f34bc808b5d619a3b54206bcef0f113a8951","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Body::"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"  {"},{"line_number":154,"context_line":"    \"live-migrate-abort\": null"},{"line_number":155,"context_line":"  }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":22,"id":"9a8ffd7b_23c4e23e","line":154,"in_reply_to":"ba8a016a_27d0e9f5","updated":"2015-11-24 12:09:20.000000000","message":"+1 for abort_migrate_live","commit_id":"7ccd85fbef5166b2f930c6fc2bc75b1cf723c37f"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"71458327df9cbe20763c865d1b48f4dad0d9a2a7","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Body::"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"  {"},{"line_number":154,"context_line":"    \"live-migrate-abort\": null"},{"line_number":155,"context_line":"  }"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"  Normal http response code: `202 Accepted`"}],"source_content_type":"text/x-rst","patch_set":22,"id":"ba8a016a_27d0e9f5","line":154,"in_reply_to":"ba8a016a_b39ae96c","updated":"2015-11-24 10:43:21.000000000","message":"or abort_migrate_live?\n\nI don\u0027t like us mixing migrate and migration too much.","commit_id":"7ccd85fbef5166b2f930c6fc2bc75b1cf723c37f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"7e45f46a787a8529bde307e7c194dcc138e811d1","unresolved":false,"context_lines":[{"line_number":119,"context_line":"the live_migrate_abort operation has started.  It will then invoke a"},{"line_number":120,"context_line":"method on the driver to abort the migration.  If the driver is unable"},{"line_number":121,"context_line":"to perform this operation a new exception called"},{"line_number":122,"context_line":"\u0027AbortMigrationNotSupported\u0027 will be returned."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Note the instance task state will not be updated by the"},{"line_number":125,"context_line":"live_migrate_abort operation.  If the operator were to execute the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_eba328fe","line":122,"updated":"2015-11-30 05:20:28.000000000","message":"This exception never gets reported to the user, right? I assume this is the case based on the call from the api to nova-compute being async. So, how does a user know that their migration cancellation failed?","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c4fb3a7b75ff03699794c9dd106e9621324e45e0","unresolved":false,"context_lines":[{"line_number":119,"context_line":"the live_migrate_abort operation has started.  It will then invoke a"},{"line_number":120,"context_line":"method on the driver to abort the migration.  If the driver is unable"},{"line_number":121,"context_line":"to perform this operation a new exception called"},{"line_number":122,"context_line":"\u0027AbortMigrationNotSupported\u0027 will be returned."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Note the instance task state will not be updated by the"},{"line_number":125,"context_line":"live_migrate_abort operation.  If the operator were to execute the"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_88de1ddb","line":122,"in_reply_to":"9a8ffd7b_eba328fe","updated":"2015-11-30 08:38:35.000000000","message":"Yes I should have said that the method in the compute manager will be wrapped with the decorators that cause it to generate instance action and notification events.  The exception generated here would be processed by those wrappers and thus the user would be able to to query the instance actions to discover the outcome of the cancellation operation.  \n\nWill add this when I update the spec next.  I plan to wait till tomorrow\u0027s API meeting at which I\u0027m hoping to get agreement on whether this spec should be implemented using as an action on the instance or via the the instance/migration(s) approach described here.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"398c51fd6603723b5831ea76cbd52a6c879ded19","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  The operation will return the id of the active migration operation"},{"line_number":168,"context_line":"  for the instance."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  `GET /servers/{id}/migration`"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Body::"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_8ebd33b9","line":170,"updated":"2015-11-26 11:12:40.000000000","message":"If we are adding a new URI for migration, we will be able to implement migration action also with POST. but this my point is a little overkill now..","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a25de72f6e9106392c5d057211b5b9feccdcf231","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  The operation will return the id of the active migration operation"},{"line_number":168,"context_line":"  for the instance."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  `GET /servers/{id}/migration`"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Body::"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_27306007","line":170,"in_reply_to":"9a8ffd7b_21ce9582","updated":"2015-11-30 17:35:36.000000000","message":"Given that we only have one inflight migration, singular seems fine.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c4fb3a7b75ff03699794c9dd106e9621324e45e0","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  The operation will return the id of the active migration operation"},{"line_number":168,"context_line":"  for the instance."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  `GET /servers/{id}/migration`"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Body::"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_88fcddb8","line":170,"in_reply_to":"9a8ffd7b_8ebd33b9","updated":"2015-11-30 08:38:35.000000000","message":"If  it is decided that this approach rather than the instance action approach proffered in patch set 23 is the right way to go then we will probably have to update the spec https://review.openstack.org/#/c/229040 to make it use a POST but that is outside the scope of this spec.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d266710ed6a372fa3bfd792ef7a176c57fe7ed17","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  The operation will return the id of the active migration operation"},{"line_number":168,"context_line":"  for the instance."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  `GET /servers/{id}/migration`"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Body::"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_21ce9582","line":170,"in_reply_to":"9a8ffd7b_8ebd33b9","updated":"2015-11-26 12:59:36.000000000","message":"This is collection resource, so this should be \u0027migrations\u0027. Although we only have one in-progress migration.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"398c51fd6603723b5831ea76cbd52a6c879ded19","unresolved":false,"context_lines":[{"line_number":178,"context_line":"  Body::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  {"},{"line_number":181,"context_line":"    migration: {id}"},{"line_number":182,"context_line":"  }"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"  Expected error http response code: `404 Not Found`"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_6ed56f1a","line":181,"updated":"2015-11-26 11:12:40.000000000","message":"How about\n\n {\n     \"id\": {id}\n }\n\nfor fitting the other API design?\n\nalso maybe nice to contain the other attributes(source/destination hosts, etc) also.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9ce5f624bc29bdc555fbeca82326769e501ba65e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"  Body::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  {"},{"line_number":181,"context_line":"    migration: {id}"},{"line_number":182,"context_line":"  }"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"  Expected error http response code: `404 Not Found`"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_cb8744b3","line":181,"in_reply_to":"9a8ffd7b_01059144","updated":"2015-11-30 05:57:53.000000000","message":"nice point, and this collection is only for a single server because the URL contains {server-id}.\nSo this collection will contain history of live-migrations of each server. That seems tasks-API so much.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d266710ed6a372fa3bfd792ef7a176c57fe7ed17","unresolved":false,"context_lines":[{"line_number":178,"context_line":"  Body::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  {"},{"line_number":181,"context_line":"    migration: {id}"},{"line_number":182,"context_line":"  }"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"  Expected error http response code: `404 Not Found`"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_01059144","line":181,"in_reply_to":"9a8ffd7b_6ed56f1a","updated":"2015-11-26 12:59:36.000000000","message":"yea, agree that we should list the all the attributes. Then user needn\u0027t send another request to get some detail info.\n\nBut because this is collection resource, the body should be:\n\n{\n   migrations: [\n       {\n....\n       }\n   ]\n}","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c4fb3a7b75ff03699794c9dd106e9621324e45e0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"  Body::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  {"},{"line_number":181,"context_line":"    migration: {id}"},{"line_number":182,"context_line":"  }"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"  Expected error http response code: `404 Not Found`"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_a8f761d1","line":181,"in_reply_to":"9a8ffd7b_cb8744b3","updated":"2015-11-30 08:38:35.000000000","message":"I can change it to migrations and return a list if people feel strongly about this but this does seem to be adding functionality this spec was never intended to add, i.e. ability to query history of migrations.\n\nI can return details of each migration if desired but will need to ensure that the compute node/host names are removed if the caller is not an admin.\n\nAlso, I\u0027m a little concerned that this \u0027enhancement\u0027 will lead to someone else pointing out that now an admin can query migrations using GET /os-migrations and also GET /servers/{id}/migration and question if this is represents an inconsistency?  I guess it could be argued that it is ok because the GET /os-migrations does not support filtering by instance (just host and status) so getting details of migrations relating to an instance via this API is ok?","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d266710ed6a372fa3bfd792ef7a176c57fe7ed17","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":210,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":211,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Security impact"},{"line_number":214,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_217c551e","line":211,"updated":"2015-11-26 12:59:36.000000000","message":"If the task state isn\u0027t \u0027migrating\u0027, why there is in-progress migration can be listed.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c4fb3a7b75ff03699794c9dd106e9621324e45e0","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":210,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":211,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Security impact"},{"line_number":214,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_65ec44bb","line":211,"in_reply_to":"9a8ffd7b_217c551e","updated":"2015-11-30 08:38:35.000000000","message":"You could get this situation when executing a DELETE operation on a migration that has ended since you did the GET","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a25de72f6e9106392c5d057211b5b9feccdcf231","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":210,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":211,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Security impact"},{"line_number":214,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_6792e8f8","line":211,"in_reply_to":"9a8ffd7b_65ec44bb","updated":"2015-11-30 17:35:36.000000000","message":"Honestly, I\u0027d probably go with 400 bad request instead for this instead.","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"2cd4bdb1823eecfddc443f7002f47ab226851ff2","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"  Expected error http response code: `409 Conflict`"},{"line_number":210,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":211,"context_line":"  state is not \u0027migrating\u0027."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Security impact"},{"line_number":214,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":24,"id":"9a8ffd7b_4d81d58e","line":211,"in_reply_to":"9a8ffd7b_6792e8f8","updated":"2015-12-01 13:40:01.000000000","message":"Done","commit_id":"c382b4772ae6dbc70d124f21a7875985a60c115f"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"f9918e5ed754325782e77d9db5514584e2fa5390","unresolved":false,"context_lines":[{"line_number":86,"context_line":"post copy the instance would need to be paused to allow the migration"},{"line_number":87,"context_line":"to complete."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The GET /server/{id}/migrations operation will entail the API server"},{"line_number":90,"context_line":"verifing the existence and task state of the instance.  If the instance"},{"line_number":91,"context_line":"does not exist (or is not visible to the user invoking this operation)"},{"line_number":92,"context_line":"a 404 response code will be returned. Otherwise the API server will"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_5a617ca7","line":89,"updated":"2015-12-01 16:12:48.000000000","message":"it should be GET /servers","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":86,"context_line":"post copy the instance would need to be paused to allow the migration"},{"line_number":87,"context_line":"to complete."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The GET /server/{id}/migrations operation will entail the API server"},{"line_number":90,"context_line":"verifing the existence and task state of the instance.  If the instance"},{"line_number":91,"context_line":"does not exist (or is not visible to the user invoking this operation)"},{"line_number":92,"context_line":"a 404 response code will be returned. Otherwise the API server will"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_2d5d5f15","line":89,"in_reply_to":"9a8ffd7b_5a617ca7","updated":"2015-12-01 17:28:10.000000000","message":"Done","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"f9918e5ed754325782e77d9db5514584e2fa5390","unresolved":false,"context_lines":[{"line_number":96,"context_line":"objects then the migration details will be returned to the caller,"},{"line_number":97,"context_line":"otherwise a 404 response code will be returned."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The DELETE /server/{id}/migrations/{id} operation will entail the API"},{"line_number":100,"context_line":"server calling the migration_get method on the migration class to"},{"line_number":101,"context_line":"verify the existence of an ongoing migration operation onmthe instance."},{"line_number":102,"context_line":"It will then call a method on the ServersController class called"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_ba2508c3","line":99,"updated":"2015-12-01 16:12:48.000000000","message":"nit: see above","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":96,"context_line":"objects then the migration details will be returned to the caller,"},{"line_number":97,"context_line":"otherwise a 404 response code will be returned."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The DELETE /server/{id}/migrations/{id} operation will entail the API"},{"line_number":100,"context_line":"server calling the migration_get method on the migration class to"},{"line_number":101,"context_line":"verify the existence of an ongoing migration operation onmthe instance."},{"line_number":102,"context_line":"It will then call a method on the ServersController class called"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_4daf83e3","line":99,"in_reply_to":"9a8ffd7b_ba2508c3","updated":"2015-12-01 17:28:10.000000000","message":"Done","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"f9918e5ed754325782e77d9db5514584e2fa5390","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The DELETE /server/{id}/migrations/{id} operation will entail the API"},{"line_number":100,"context_line":"server calling the migration_get method on the migration class to"},{"line_number":101,"context_line":"verify the existence of an ongoing migration operation onmthe instance."},{"line_number":102,"context_line":"It will then call a method on the ServersController class called"},{"line_number":103,"context_line":"live_migrate_abort"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_9f2a768f","line":101,"updated":"2015-12-01 16:12:48.000000000","message":"nit:s/onmthe/on the","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"The DELETE /server/{id}/migrations/{id} operation will entail the API"},{"line_number":100,"context_line":"server calling the migration_get method on the migration class to"},{"line_number":101,"context_line":"verify the existence of an ongoing migration operation onmthe instance."},{"line_number":102,"context_line":"It will then call a method on the ServersController class called"},{"line_number":103,"context_line":"live_migrate_abort"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_6daa87d4","line":101,"in_reply_to":"9a8ffd7b_9f2a768f","updated":"2015-12-01 17:28:10.000000000","message":"Done","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"f9918e5ed754325782e77d9db5514584e2fa5390","unresolved":false,"context_lines":[{"line_number":124,"context_line":"The compute manager method invoked will be wrapped with the decorators"},{"line_number":125,"context_line":"that cause it to generate instance action and notification events. The"},{"line_number":126,"context_line":"exception generated here would be processed by those wrappers and thus"},{"line_number":127,"context_line":"the user would be able to to query the instance actions to discover the"},{"line_number":128,"context_line":"outcome of the cancellation operation."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_5a509c0a","line":127,"updated":"2015-12-01 16:12:48.000000000","message":"nit: remove one of the two \"to\"","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":124,"context_line":"The compute manager method invoked will be wrapped with the decorators"},{"line_number":125,"context_line":"that cause it to generate instance action and notification events. The"},{"line_number":126,"context_line":"exception generated here would be processed by those wrappers and thus"},{"line_number":127,"context_line":"the user would be able to to query the instance actions to discover the"},{"line_number":128,"context_line":"outcome of the cancellation operation."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Note the instance task state will not be updated by the"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_8df24b05","line":127,"in_reply_to":"9a8ffd7b_5a509c0a","updated":"2015-12-01 17:28:10.000000000","message":"Done","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8d0736cae866fd8996c9259630e170a8c22c4124","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"To be added in a new microversion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"* Obtain id of an in-progress live migration"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"  The operation will return the id of the active migration operation"},{"line_number":174,"context_line":"  for the instance."}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_9a46044e","line":171,"updated":"2015-12-01 16:01:11.000000000","message":"How about we say \"Obtain all the in-progress migrations\"","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"To be added in a new microversion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"* Obtain id of an in-progress live migration"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"  The operation will return the id of the active migration operation"},{"line_number":174,"context_line":"  for the instance."}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_e884255e","line":171,"in_reply_to":"9a8ffd7b_9a46044e","updated":"2015-12-01 17:28:10.000000000","message":"I\u0027m happy with this but that will mean a change to the implementation to only return a sub set of all the migrations.  This is fine from the point of view of the abort operation but it kind of misuses the GET.  It would not be returning all the migrations for an instance, just some in a given state, which should be...\n\nGET /servers/{id}/migrations?status\u003drunning\n\nOr we could implement the GET as below and have the nova client call it with status\u003drunning in the live-migration-abort implementation?","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8d0736cae866fd8996c9259630e170a8c22c4124","unresolved":false,"context_lines":[{"line_number":222,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":223,"context_line":"  - the instance does not exist or no migrations on instance found"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"  Expected error http response code: `400 Forbidden`"},{"line_number":226,"context_line":"  - Policy violation."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"* Stop an in-progress live migration"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_3b4da799","line":225,"updated":"2015-12-01 16:01:11.000000000","message":"400 is BadRequest. I guess you want to write 403 at here?","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":222,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":223,"context_line":"  - the instance does not exist or no migrations on instance found"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"  Expected error http response code: `400 Forbidden`"},{"line_number":226,"context_line":"  - Policy violation."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"* Stop an in-progress live migration"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_ad462f79","line":225,"in_reply_to":"9a8ffd7b_3b4da799","updated":"2015-12-01 17:28:10.000000000","message":"Done","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"f9918e5ed754325782e77d9db5514584e2fa5390","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"A new python-novaclient command will be available, e.g."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"nova live-migrate-abort \u003cinstance\u003e"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Performance Impact"},{"line_number":271,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_35828b53","line":268,"updated":"2015-12-01 16:12:48.000000000","message":"please use: nova live-migration-abort","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"c0a337375c33dc1d65f7d9a38bf4537d3dcd3700","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"A new python-novaclient command will be available, e.g."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"nova live-migrate-abort \u003cinstance\u003e"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Performance Impact"},{"line_number":271,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":26,"id":"9a8ffd7b_4813f15c","line":268,"in_reply_to":"9a8ffd7b_35828b53","updated":"2015-12-01 17:28:10.000000000","message":"Done","commit_id":"87ac34acf6998b4b63e8261ba572e2031879bb4a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2f835b72cbe0e18706a4360fea1dd263d97e83af","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"id\": 6789,"},{"line_number":197,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":198,"context_line":"        \"new_instance_type_id\": 2,"},{"line_number":199,"context_line":"        \"old_instance_type_id\": 1,"},{"line_number":200,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":201,"context_line":"        \"source_node\": \"node2\","},{"line_number":202,"context_line":"        \"status\": \"running\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_36691526","line":199,"updated":"2015-12-02 04:03:55.000000000","message":"The above *_instance_type_id should be changed to\n\n \"new_flavor_id\" ..,\n \"old_flavor_id\": ..\n\nbecause old_instance_type_id and new_instance_type_id are internal values(auto-incremented value when creating a flavor) on nova server side and these values should not present for users.\n\nNova needs to pass public flavor_id (which are specified when creating a flavor) to users via REST API.\n\nWe can see this problem on https://review.openstack.org/#/c/219431/14/specs/mitaka/approved/display-flavor-id-in-migration.rst also.","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"4333ee45fd50753701658a84c1f77443aa8b9e4d","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"id\": 6789,"},{"line_number":197,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":198,"context_line":"        \"new_instance_type_id\": 2,"},{"line_number":199,"context_line":"        \"old_instance_type_id\": 1,"},{"line_number":200,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":201,"context_line":"        \"source_node\": \"node2\","},{"line_number":202,"context_line":"        \"status\": \"running\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_058846c4","line":199,"in_reply_to":"9a8ffd7b_36691526","updated":"2015-12-02 12:29:12.000000000","message":"Done","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"73813a2e704e4ccd415b07b7810f71602f8b0b28","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"id\": 6789,"},{"line_number":197,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":198,"context_line":"        \"new_instance_type_id\": 2,"},{"line_number":199,"context_line":"        \"old_instance_type_id\": 1,"},{"line_number":200,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":201,"context_line":"        \"source_node\": \"node2\","},{"line_number":202,"context_line":"        \"status\": \"running\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_694a5b85","line":199,"in_reply_to":"9a8ffd7b_36691526","updated":"2015-12-02 07:43:25.000000000","message":"This spec accurately reflects the current representation of the migration object. The spec you refer to proposes a change to the way the migrations object represent new and old flavors but it is not yet merged or implemented so for now my spec accurately reflects what would be returned.  If I were to change my spec as per your recommendation others would rightly -1 it.\n\nAlso, this data is in no way relevant to the functionality being proposed in this spec.","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"4333ee45fd50753701658a84c1f77443aa8b9e4d","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"id\": 6789,"},{"line_number":197,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":198,"context_line":"        \"new_instance_type_id\": 2,"},{"line_number":199,"context_line":"        \"old_instance_type_id\": 1,"},{"line_number":200,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":201,"context_line":"        \"source_node\": \"node2\","},{"line_number":202,"context_line":"        \"status\": \"running\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_05012638","line":199,"in_reply_to":"9a8ffd7b_4831880a","updated":"2015-12-02 12:29:12.000000000","message":"Done","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"fdeefa44f0e65cd0b9ee4a53d77b39080c2e4bad","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"id\": 6789,"},{"line_number":197,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":198,"context_line":"        \"new_instance_type_id\": 2,"},{"line_number":199,"context_line":"        \"old_instance_type_id\": 1,"},{"line_number":200,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":201,"context_line":"        \"source_node\": \"node2\","},{"line_number":202,"context_line":"        \"status\": \"running\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_4831880a","line":199,"in_reply_to":"9a8ffd7b_57ffe900","updated":"2015-12-02 10:59:43.000000000","message":"I think kenichi\u0027s point here, is we are adding a new API here, lets get it right from the beginning.","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"5e155537ffc3c3efeb385086e5aed799d0973a85","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"id\": 6789,"},{"line_number":197,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":198,"context_line":"        \"new_instance_type_id\": 2,"},{"line_number":199,"context_line":"        \"old_instance_type_id\": 1,"},{"line_number":200,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":201,"context_line":"        \"source_node\": \"node2\","},{"line_number":202,"context_line":"        \"status\": \"running\","}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_57ffe900","line":199,"in_reply_to":"9a8ffd7b_694a5b85","updated":"2015-12-02 09:57:52.000000000","message":"@Ken\u0027ichi Ohmichi\tat the moment in the GET for os-migrations we get back \"new_instance_type_id\" and \"old_instance_type_id\" and probably that the reason because Paul reported those two values.\nThat seems to me a detail which can be discussed during the code-review, here we need to agree on the general direction of the proposed change.","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":14511,"name":"Maciej Szankin","email":"maciej+review@szankin.pl","username":"mszankin"},"change_message_id":"78f9b113744aafc050a109f17c8ea19df271ca15","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  }"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"  Note that if the caller is not a cloud admin then source and dest"},{"line_number":209,"context_line":"  fields will be ommitted from the response."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":212,"context_line":"  - the instance does not exist or no running migrations for instance"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_633a6f9a","line":209,"updated":"2015-12-02 11:05:53.000000000","message":"omitted","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"4333ee45fd50753701658a84c1f77443aa8b9e4d","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  }"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"  Note that if the caller is not a cloud admin then source and dest"},{"line_number":209,"context_line":"  fields will be ommitted from the response."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":212,"context_line":"  - the instance does not exist or no running migrations for instance"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_a5f93a50","line":209,"in_reply_to":"9a8ffd7b_633a6f9a","updated":"2015-12-02 12:29:12.000000000","message":"Done","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":14511,"name":"Maciej Szankin","email":"maciej+review@szankin.pl","username":"mszankin"},"change_message_id":"78f9b113744aafc050a109f17c8ea19df271ca15","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"New API needs to be documented:"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"* Compute API extensions documentation."},{"line_number":322,"context_line":"  http://developer.openstack.org/api-ref-compute-v2.1.html"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"* nova.compute.api documentation"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_0812a062","line":321,"updated":"2015-12-02 11:05:53.000000000","message":"Dot at the end is unnecessary","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"4333ee45fd50753701658a84c1f77443aa8b9e4d","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"New API needs to be documented:"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"* Compute API extensions documentation."},{"line_number":322,"context_line":"  http://developer.openstack.org/api-ref-compute-v2.1.html"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"* nova.compute.api documentation"}],"source_content_type":"text/x-rst","patch_set":28,"id":"9a8ffd7b_6596f2f1","line":321,"in_reply_to":"9a8ffd7b_0812a062","updated":"2015-12-02 12:29:12.000000000","message":"Done","commit_id":"d2735d31b141f79c983f5c83ddbf3803ab5bccdf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7526b602884a95ed01c2565649e1ca20bb64e","unresolved":false,"context_lines":[{"line_number":91,"context_line":"instance does not exist (or is not visible to the user invoking this"},{"line_number":92,"context_line":"operation) a 404 response code will be returned. Otherwise the API"},{"line_number":93,"context_line":"server will return details of all the running migration operations for"},{"line_number":94,"context_line":"the instance. It will use the get_by_instance_and_status method on the"},{"line_number":95,"context_line":"migration class, specifying the instance uuid and status of running."},{"line_number":96,"context_line":"If no migration objects are returned a 404 response code will be"},{"line_number":97,"context_line":"returned.  If one or more migration object is returned then the"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_140b922b","line":94,"updated":"2015-12-02 13:53:01.000000000","message":"I thought it is meant to include the completed, and errored migrations for that instance too. But I am unsure.","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"db33a7ec731ad58b8d74aef217fbbac20667b98b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"instance does not exist (or is not visible to the user invoking this"},{"line_number":92,"context_line":"operation) a 404 response code will be returned. Otherwise the API"},{"line_number":93,"context_line":"server will return details of all the running migration operations for"},{"line_number":94,"context_line":"the instance. It will use the get_by_instance_and_status method on the"},{"line_number":95,"context_line":"migration class, specifying the instance uuid and status of running."},{"line_number":96,"context_line":"If no migration objects are returned a 404 response code will be"},{"line_number":97,"context_line":"returned.  If one or more migration object is returned then the"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_f7c28b52","line":94,"in_reply_to":"9a8ffd7b_140b922b","updated":"2015-12-02 14:58:38.000000000","message":"I think it was decided by sdague during the API meeting that just returning running was ok","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7526b602884a95ed01c2565649e1ca20bb64e","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":197,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":198,"context_line":"        \"dest_host\": \"1.2.3.5\","},{"line_number":199,"context_line":"        \"dest_node\": \"node3\","},{"line_number":200,"context_line":"        \"id\": 6789,"},{"line_number":201,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":202,"context_line":"        \"new_flavor_id\": 2,"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_2be67415","line":199,"updated":"2015-12-02 13:53:01.000000000","message":"feels like we should only have the item you specify in the API, the compute.","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"db33a7ec731ad58b8d74aef217fbbac20667b98b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":197,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":198,"context_line":"        \"dest_host\": \"1.2.3.5\","},{"line_number":199,"context_line":"        \"dest_node\": \"node3\","},{"line_number":200,"context_line":"        \"id\": 6789,"},{"line_number":201,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":202,"context_line":"        \"new_flavor_id\": 2,"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_f245b942","line":199,"in_reply_to":"9a8ffd7b_2be67415","updated":"2015-12-02 14:58:38.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"7fe7106c8bfa84fdb733a29fc7fc282800b5055b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":197,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":198,"context_line":"        \"dest_host\": \"1.2.3.5\","},{"line_number":199,"context_line":"        \"dest_node\": \"node3\","},{"line_number":200,"context_line":"        \"id\": 6789,"},{"line_number":201,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":202,"context_line":"        \"new_flavor_id\": 2,"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_5e113403","line":199,"in_reply_to":"9a8ffd7b_2be67415","updated":"2015-12-02 14:04:53.000000000","message":"I\u0027d leave info about source and destination during migrations, it could be useful for user.","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"db33a7ec731ad58b8d74aef217fbbac20667b98b","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":197,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":198,"context_line":"        \"dest_host\": \"1.2.3.5\","},{"line_number":199,"context_line":"        \"dest_node\": \"node3\","},{"line_number":200,"context_line":"        \"id\": 6789,"},{"line_number":201,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":202,"context_line":"        \"new_flavor_id\": 2,"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_17b2af94","line":199,"in_reply_to":"9a8ffd7b_5e113403","updated":"2015-12-02 14:58:38.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7526b602884a95ed01c2565649e1ca20bb64e","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":203,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":204,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":205,"context_line":"        \"source_node\": \"node2\","},{"line_number":206,"context_line":"        \"status\": \"running\","},{"line_number":207,"context_line":"        \"updated_at\": \"2013-10-29T14:42:02.000000\","},{"line_number":208,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_0b229052","line":205,"updated":"2015-12-02 13:53:01.000000000","message":"given you can only specify the compute, maybe we should drop all the node talk?","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"db33a7ec731ad58b8d74aef217fbbac20667b98b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":203,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":204,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":205,"context_line":"        \"source_node\": \"node2\","},{"line_number":206,"context_line":"        \"status\": \"running\","},{"line_number":207,"context_line":"        \"updated_at\": \"2013-10-29T14:42:02.000000\","},{"line_number":208,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_97969fee","line":205,"in_reply_to":"9a8ffd7b_0b229052","updated":"2015-12-02 14:58:38.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e7c7526b602884a95ed01c2565649e1ca20bb64e","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":204,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":205,"context_line":"        \"source_node\": \"node2\","},{"line_number":206,"context_line":"        \"status\": \"running\","},{"line_number":207,"context_line":"        \"updated_at\": \"2013-10-29T14:42:02.000000\","},{"line_number":208,"context_line":"      }"},{"line_number":209,"context_line":"    ]"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_c8bb2e0e","line":206,"updated":"2015-12-02 13:53:01.000000000","message":"Nit: should this also include cancelled/aborted now?","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"db33a7ec731ad58b8d74aef217fbbac20667b98b","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":204,"context_line":"        \"source_compute\": \"compute2\","},{"line_number":205,"context_line":"        \"source_node\": \"node2\","},{"line_number":206,"context_line":"        \"status\": \"running\","},{"line_number":207,"context_line":"        \"updated_at\": \"2013-10-29T14:42:02.000000\","},{"line_number":208,"context_line":"      }"},{"line_number":209,"context_line":"    ]"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_17ddcfdf","line":206,"in_reply_to":"9a8ffd7b_c8bb2e0e","updated":"2015-12-02 14:58:38.000000000","message":"maybe but the implementation I was envisaging would mean that a cancelled migration would show a status of failed, if this is important we could implement it to set this to \u0027aborted\u0027","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b3aeb35a60e3cfd932953c2e45f35869f10973ae","unresolved":false,"context_lines":[{"line_number":210,"context_line":"  }"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"  Note that if the caller is not a cloud admin then source and dest"},{"line_number":213,"context_line":"  fields will be omitted from the response."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":216,"context_line":"  - the instance does not exist or no running migrations for instance"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_14c3928a","line":213,"updated":"2015-12-02 13:29:42.000000000","message":"can we add a policy rule \u0027os_compute_api:servers:migrations:index:hosts\u0027 for this instead of hard-code admin role?","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"3c0e6453ea6c0c59e010bbe5213f314da6cc1bdf","unresolved":false,"context_lines":[{"line_number":210,"context_line":"  }"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"  Note that if the caller is not a cloud admin then source and dest"},{"line_number":213,"context_line":"  fields will be omitted from the response."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":216,"context_line":"  - the instance does not exist or no running migrations for instance"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_61a7bd0b","line":213,"in_reply_to":"9a8ffd7b_14c3928a","updated":"2015-12-02 14:32:48.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b3aeb35a60e3cfd932953c2e45f35869f10973ae","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  - the instance does not exist or no running migrations for instance"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":219,"context_line":"  - Policy violation."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"* Stop an in-progress live migration"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_d4ebcada","line":219,"updated":"2015-12-02 13:29:42.000000000","message":"So maybe we should describe the policy rule name at here. How about \u0027os_compute_api:servers:migrations:index\u0027","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"3c0e6453ea6c0c59e010bbe5213f314da6cc1bdf","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  - the instance does not exist or no running migrations for instance"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":219,"context_line":"  - Policy violation."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"* Stop an in-progress live migration"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_08fb76c2","line":219,"in_reply_to":"9a8ffd7b_d4ebcada","updated":"2015-12-02 14:32:48.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b3aeb35a60e3cfd932953c2e45f35869f10973ae","unresolved":false,"context_lines":[{"line_number":240,"context_line":"  Expected error http response code: `400 Bad Request`"},{"line_number":241,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":242,"context_line":"  state is not \u0027migrating\u0027 or the migration id is not in a running"},{"line_number":243,"context_line":"  state."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Security impact"},{"line_number":246,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_94bc62bc","line":243,"updated":"2015-12-02 13:29:42.000000000","message":"we also return 400 when the migration is resize, cold-migration, evacuate.","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"3c0e6453ea6c0c59e010bbe5213f314da6cc1bdf","unresolved":false,"context_lines":[{"line_number":240,"context_line":"  Expected error http response code: `400 Bad Request`"},{"line_number":241,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":242,"context_line":"  state is not \u0027migrating\u0027 or the migration id is not in a running"},{"line_number":243,"context_line":"  state."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Security impact"},{"line_number":246,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_c8000eae","line":243,"in_reply_to":"9a8ffd7b_94bc62bc","updated":"2015-12-02 14:32:48.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"6a7218d809d5e298fea66563ab6083fff7f580a5","unresolved":false,"context_lines":[{"line_number":240,"context_line":"  Expected error http response code: `400 Bad Request`"},{"line_number":241,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":242,"context_line":"  state is not \u0027migrating\u0027 or the migration id is not in a running"},{"line_number":243,"context_line":"  state."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Security impact"},{"line_number":246,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_88bbe6e4","line":243,"in_reply_to":"9a8ffd7b_94bc62bc","updated":"2015-12-02 13:40:29.000000000","message":"This is covered by sentence \"the task state is not migrating\". All these actions have different task states.","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b3aeb35a60e3cfd932953c2e45f35869f10973ae","unresolved":false,"context_lines":[{"line_number":241,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":242,"context_line":"  state is not \u0027migrating\u0027 or the migration id is not in a running"},{"line_number":243,"context_line":"  state."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Security impact"},{"line_number":246,"context_line":"---------------"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_7489be25","line":244,"updated":"2015-12-02 13:29:42.000000000","message":"we should add policy rule name at here \u0027os_compute_api:servers:migrations:delete\u0027","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"3c0e6453ea6c0c59e010bbe5213f314da6cc1bdf","unresolved":false,"context_lines":[{"line_number":241,"context_line":"  - the instance state is invalid for cancellation, i.e. the task"},{"line_number":242,"context_line":"  state is not \u0027migrating\u0027 or the migration id is not in a running"},{"line_number":243,"context_line":"  state."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Security impact"},{"line_number":246,"context_line":"---------------"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"9a8ffd7b_a8326aa5","line":244,"in_reply_to":"9a8ffd7b_7489be25","updated":"2015-12-02 14:32:48.000000000","message":"Done","commit_id":"ddf6d1b19443c1f8362d15bff4bfe1f0eec55648"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"82fee11b29818ebc42078bacdb9626da386a4765","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":208,"context_line":"  - the instance does not exist or no running migrations where the type"},{"line_number":209,"context_line":" is \u0027live-migration\u0027 on this instance"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":212,"context_line":"  - Policy violation if the caller is not granted access to"}],"source_content_type":"text/x-rst","patch_set":31,"id":"9a8ffd7b_52236558","line":209,"updated":"2015-12-02 15:01:34.000000000","message":"My fault, I missed this one from previous review. We should return empty list {\"migrations\": []} when there isn\u0027t any running migration.\n\nAnd did i miss something? we said on irc we return all type migration in this API. the last sentence say we only return live-migration at here?","commit_id":"3ae023dab1b62621b89cafb637a8d1a46454b53e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"630ba835d99aed175243ade93702738c6173d8a6","unresolved":false,"context_lines":[{"line_number":189,"context_line":"      {"},{"line_number":190,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":191,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":192,"context_line":"        \"id\": 6789,"},{"line_number":193,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":194,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":195,"context_line":"        \"old_flavor_id\": 1,"}],"source_content_type":"text/x-rst","patch_set":34,"id":"9a8ffd7b_60cf7b56","line":192,"updated":"2015-12-03 11:35:20.000000000","message":"hmm... I have a feeling should probably be a uuid as well really. I guess we don\u0027t have one for migrations right now. ho humm.","commit_id":"26d2460b5ca71028f03a5d625ab50a31005e3258"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"ddc601bfaf22373e0dee67771fd32d99113d8221","unresolved":false,"context_lines":[{"line_number":189,"context_line":"      {"},{"line_number":190,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":191,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":192,"context_line":"        \"id\": 6789,"},{"line_number":193,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":194,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":195,"context_line":"        \"old_flavor_id\": 1,"}],"source_content_type":"text/x-rst","patch_set":34,"id":"9a8ffd7b_d9bf3ece","line":192,"in_reply_to":"9a8ffd7b_60cf7b56","updated":"2015-12-03 12:21:59.000000000","message":"I agree but it seems outside the scope of this change.  I thought we wanted uuids everywhere we have ids but when I mentioned this to sdague in irc he seemed to suggest it was not required.","commit_id":"26d2460b5ca71028f03a5d625ab50a31005e3258"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4f6cf00abcaaee3358e97d07d9096a606c894507","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":191,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":192,"context_line":"        \"id\": 6789,"},{"line_number":193,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":194,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":195,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":196,"context_line":"        \"source_compute\": \"compute2\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"9a8ffd7b_aeefae1b","line":193,"updated":"2015-12-03 00:42:56.000000000","message":"So sorry for missing here on my previous review.\n\nbetter to use \"server_uuid\" instead of \"instance_uuid\" for new APIs because of api-wg guideline https://github.com/openstack/api-wg/blob/master/guidelines/terms.rst\n\n * **server** vs. **instance**\n  **server** shall be used to describe a virtual machine, a\n  bare-metal machine, or a containerized virtual machine that is used\n  by OpenStack users for compute purposes. The older term\n  **instance** that is also by Amazon Web Services EC2 API to\n  describe a virtual machine, should *not* be used in OpenStack REST\n  APIs.\n\nand there are the other APIs which contains \"server_uuid\".\nSo here should be \"server_uuid\".\n\nBut the deadline of spec freeze is close and this point can be fixed later. So I posted a patch for fixing this(https://review.openstack.org/252689) and it is enough to merge another later.","commit_id":"26d2460b5ca71028f03a5d625ab50a31005e3258"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0bb20e96d1103ef38b9c2dae70239cd9552cb54b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":191,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":192,"context_line":"        \"id\": 6789,"},{"line_number":193,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":194,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":195,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":196,"context_line":"        \"source_compute\": \"compute2\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"9a8ffd7b_c3be7164","line":193,"in_reply_to":"9a8ffd7b_20997379","updated":"2015-12-03 11:57:55.000000000","message":"Yep, fine to deal with that during code review","commit_id":"26d2460b5ca71028f03a5d625ab50a31005e3258"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"630ba835d99aed175243ade93702738c6173d8a6","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":191,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":192,"context_line":"        \"id\": 6789,"},{"line_number":193,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":194,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":195,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":196,"context_line":"        \"source_compute\": \"compute2\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"9a8ffd7b_20997379","line":193,"in_reply_to":"9a8ffd7b_aeefae1b","updated":"2015-12-03 11:35:20.000000000","message":"oh, totally missed that, very good point.","commit_id":"26d2460b5ca71028f03a5d625ab50a31005e3258"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ecb51ee132db014ce36a4362a67d8d2bcf4edc15","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        \"created_at\": \"2013-10-29T13:42:02.000000\","},{"line_number":191,"context_line":"        \"dest_compute\": \"compute3\","},{"line_number":192,"context_line":"        \"id\": 6789,"},{"line_number":193,"context_line":"        \"instance_uuid\": \"instance_id_123\","},{"line_number":194,"context_line":"        \"new_flavor_id\": 2,"},{"line_number":195,"context_line":"        \"old_flavor_id\": 1,"},{"line_number":196,"context_line":"        \"source_compute\": \"compute2\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"9a8ffd7b_1671150c","line":193,"in_reply_to":"9a8ffd7b_c3be7164","updated":"2015-12-03 12:13:19.000000000","message":"I see that in the follow up patch, cool.","commit_id":"26d2460b5ca71028f03a5d625ab50a31005e3258"}],"specs/mitaka/approved/refresh-abort-live-migration.rst":[{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"88a965a0b79794f8b94bb114223ad203c3b14ae6","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  No response body is needed"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":140,"context_line":"  - the migration does not exist, perhaps it has finished"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":143,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_0967d94d","line":140,"updated":"2015-09-29 14:37:35.000000000","message":"If LM with given ID does not exist then I\u0027m fine with \u0027404 Not Found\u0027. However, if such LM exists but, e.g., is already cancelled or has already finished then it should return \u0027400 Bad Request\u0027 IMO.","commit_id":"1d65fe10c6d9012dff56b87c29239fb5f23d047c"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"33b456612c0bf7b02ce880060b8e8461d6a66bdc","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  No response body is needed"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":140,"context_line":"  - the migration does not exist, perhaps it has finished"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":143,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_d7cefcb6","line":140,"in_reply_to":"9a1a9d01_0967d94d","updated":"2015-10-01 11:55:45.000000000","message":"Done","commit_id":"1d65fe10c6d9012dff56b87c29239fb5f23d047c"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"e62555a221a74101706913f179621217634b83f2","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  No response body is needed"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"  Expected error http response code: `404 Not Found`"},{"line_number":140,"context_line":"  - the migration does not exist, perhaps it has finished"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":143,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_8c85d3ae","line":140,"in_reply_to":"9a1a9d01_0967d94d","updated":"2015-10-01 14:16:50.000000000","message":"actually I wonder if 409 would be a better fit for a migration that cannot be cancelled because it is already finished...\n\nsee http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html","commit_id":"1d65fe10c6d9012dff56b87c29239fb5f23d047c"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":14,"context_line":"When using live migrations, an operator might want to see which are still"},{"line_number":15,"context_line":"ongoing, their status and may also wish to cancel them. Currently this"},{"line_number":16,"context_line":"requires intervention at the hypervisor level. This spec proposes a new"},{"line_number":17,"context_line":"nova API for listing inspecting and cancelling in-progress live migrations."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_9ce5170a","line":17,"updated":"2015-10-23 09:43:49.000000000","message":"might be better to split this in two, one spec for listing + inspecting then another for cancelling","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"When using live migrations, an operator might want to see which are still"},{"line_number":15,"context_line":"ongoing, their status and may also wish to cancel them. Currently this"},{"line_number":16,"context_line":"requires intervention at the hypervisor level. This spec proposes a new"},{"line_number":17,"context_line":"nova API for listing inspecting and cancelling in-progress live migrations."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_a1cf427e","line":17,"in_reply_to":"3a29b11f_9ce5170a","updated":"2015-10-29 05:10:25.000000000","message":"happy to do so if people prefer this, will see if others express the same preference","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":32,"context_line":"level, which Nova recognises and resets the instance state."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"In order to refer to a specific live migration, in order to cancel it, an API"},{"line_number":35,"context_line":"is suggested here to list and fetch details of ongoing live migrations."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"When the admin account that initiates a live migration invokes the"},{"line_number":38,"context_line":"live-migration operation they send their current token. This is validated"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_3cf083c8","line":35,"updated":"2015-10-23 09:43:49.000000000","message":"this is in the wrong section","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"level, which Nova recognises and resets the instance state."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"In order to refer to a specific live migration, in order to cancel it, an API"},{"line_number":35,"context_line":"is suggested here to list and fetch details of ongoing live migrations."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"When the admin account that initiates a live migration invokes the"},{"line_number":38,"context_line":"live-migration operation they send their current token. This is validated"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_e1abfa87","line":35,"in_reply_to":"3a29b11f_3cf083c8","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":40,"context_line":"associated with the migration operation. During the post migration phase this"},{"line_number":41,"context_line":"token is used to communicate with the Neutron API and thus validated again."},{"line_number":42,"context_line":"If the migration operation takes longer than the remaining time before the"},{"line_number":43,"context_line":"token expires then this operation will fail."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"There is an upstream blue print for this issue -"},{"line_number":46,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_bce573dc","line":43,"updated":"2015-10-23 09:43:49.000000000","message":"this feels like spec #3...","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"associated with the migration operation. During the post migration phase this"},{"line_number":41,"context_line":"token is used to communicate with the Neutron API and thus validated again."},{"line_number":42,"context_line":"If the migration operation takes longer than the remaining time before the"},{"line_number":43,"context_line":"token expires then this operation will fail."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"There is an upstream blue print for this issue -"},{"line_number":46,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_a196624a","line":43,"in_reply_to":"3a29b11f_bce573dc","updated":"2015-10-29 05:10:25.000000000","message":"Again, open to splitting this up, will probably do so after summit","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":57,"context_line":"----------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As an operator of an OpenStack cloud, I would like the ability to query, stop"},{"line_number":60,"context_line":"and roll back an ongoing live migration."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_7cfb5b79","line":60,"updated":"2015-10-23 09:43:49.000000000","message":"This section is for saying why. Concrete examples please!","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"----------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"As an operator of an OpenStack cloud, I would like the ability to query, stop"},{"line_number":60,"context_line":"and roll back an ongoing live migration."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_41e18ecf","line":60,"in_reply_to":"3a29b11f_7cfb5b79","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"None"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Proposed change"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_7c7fdb14","line":65,"updated":"2015-10-23 09:43:49.000000000","message":"delete this section","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"None"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Proposed change"},{"line_number":68,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_e1e77ae2","line":65,"in_reply_to":"3a29b11f_7c7fdb14","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"32bc1b47b7491fe228bb772f16bdf694be93c8eb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"The Migration object and MigrationList object will be used to establish which"},{"line_number":72,"context_line":"migrations exist, with additional optional data provided by the compute driver."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This will need an increment to the rpcapi version too."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Alternatives"},{"line_number":77,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_aa4e146d","line":74,"updated":"2015-10-20 14:00:33.000000000","message":"as I understand, it\u0027s not only new api, but a some mechanics that allows to cancel any step of live-migration(before live-migration happens, in time of hypervisor call and after that)? Could you provide more details about implementation of this cancel process","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":71,"context_line":"The Migration object and MigrationList object will be used to establish which"},{"line_number":72,"context_line":"migrations exist, with additional optional data provided by the compute driver."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This will need an increment to the rpcapi version too."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Alternatives"},{"line_number":77,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_fc7bebf2","line":74,"in_reply_to":"3a29b11f_aa4e146d","updated":"2015-10-23 09:43:49.000000000","message":"+1, with details of the semantics around each stage of the process. EG can we cancel a migration in post-copy phase?","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    }"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"  It will be possible to filter this list by source-compute,"},{"line_number":122,"context_line":"  dest-compute, status or type (or any combination of them)."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"* Fetch details of an individual live migration"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_5c71bf0a","line":122,"updated":"2015-10-23 09:43:49.000000000","message":"Please can we have option details? The proposed change can be a bit fluffy but the API section must have every detail.","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8511ce35583ddbce14d72b95e9e1be2b447cd14f","unresolved":false,"context_lines":[{"line_number":158,"context_line":"  - the migration does not exist, perhaps it has finished"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":161,"context_line":"  - the migration exists but the user is not authorized to cancel it"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_a7285787","line":161,"updated":"2015-10-21 12:41:51.000000000","message":"This is potentially a data leakage.","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"  - the migration does not exist, perhaps it has finished"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":161,"context_line":"  - the migration exists but the user is not authorized to cancel it"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_614a8ac7","line":161,"in_reply_to":"3a29b11f_a7285787","updated":"2015-10-29 05:10:25.000000000","message":"Agreed, clarified that 404 will  be returned when user does not have rights over the instance.  403 would only be returned in the case where a non admin\nuser has management authority over the instance but has not been granted the authority to cancel live migrations of their instances","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8511ce35583ddbce14d72b95e9e1be2b447cd14f","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":161,"context_line":"  - the migration exists but the user is not authorized to cancel it"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"},{"line_number":165,"context_line":"  be because the hypervisor does not support cancellation of live migrations."},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_8c15424a","line":163,"updated":"2015-10-21 12:41:51.000000000","message":"this is not what 405 means. This should be a 400.","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  Expected error http response code: `403 Forbidden`"},{"line_number":161,"context_line":"  - the migration exists but the user is not authorized to cancel it"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"},{"line_number":165,"context_line":"  be because the hypervisor does not support cancellation of live migrations."},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_417d0ee6","line":163,"in_reply_to":"3a29b11f_8c15424a","updated":"2015-10-29 05:10:25.000000000","message":"For cases where the hypervisor type does not support cancellation of live migrations this seemed like the right response?","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"32bc1b47b7491fe228bb772f16bdf694be93c8eb","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"},{"line_number":165,"context_line":"  be because the hypervisor does not support cancellation of live migrations."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  Expected error http response code: `408 Request timeout`"},{"line_number":168,"context_line":"  - the migration cancellation failed to complete within the time allowed"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_a732cd0e","line":165,"updated":"2015-10-20 14:00:33.000000000","message":"Is there any support matrix for that? Could you list at least as a comment a list of hypervisor that support live-migration cancel?","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  Expected error http response code: `405 Method not supported`"},{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"},{"line_number":165,"context_line":"  be because the hypervisor does not support cancellation of live migrations."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  Expected error http response code: `408 Request timeout`"},{"line_number":168,"context_line":"  - the migration cancellation failed to complete within the time allowed"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_e15a1a83","line":165,"in_reply_to":"3a29b11f_a732cd0e","updated":"2015-10-29 05:10:25.000000000","message":"I need to investigate to figure this out","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"8511ce35583ddbce14d72b95e9e1be2b447cd14f","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"},{"line_number":165,"context_line":"  be because the hypervisor does not support cancellation of live migrations."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  Expected error http response code: `408 Request timeout`"},{"line_number":168,"context_line":"  - the migration cancellation failed to complete within the time allowed"},{"line_number":169,"context_line":"  This could be 60 seconds a configurable period set by configuration value"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_2c0f4e38","line":167,"updated":"2015-10-21 12:41:51.000000000","message":"this is also not what 408 means, please do not use it.","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  - it is not possible to even attempt to cancel the live migration. Likely to"},{"line_number":165,"context_line":"  be because the hypervisor does not support cancellation of live migrations."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  Expected error http response code: `408 Request timeout`"},{"line_number":168,"context_line":"  - the migration cancellation failed to complete within the time allowed"},{"line_number":169,"context_line":"  This could be 60 seconds a configurable period set by configuration value"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_e1d1bace","line":167,"in_reply_to":"3a29b11f_2c0f4e38","updated":"2015-10-29 05:10:25.000000000","message":"What should we use for timeout?","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":189,"context_line":"Notifications impact"},{"line_number":190,"context_line":"--------------------"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Emmit notification message indicating successful cancellation of migration"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Other end user impact"},{"line_number":195,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_3c92c3f6","line":192,"range":{"start_line":192,"start_character":0,"end_line":192,"end_character":5},"updated":"2015-10-23 09:43:49.000000000","message":"nit: emit","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":189,"context_line":"Notifications impact"},{"line_number":190,"context_line":"--------------------"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Emmit notification message indicating successful cancellation of migration"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Other end user impact"},{"line_number":195,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_61e60ab6","line":192,"in_reply_to":"3a29b11f_3c92c3f6","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":212,"context_line":"any cancellation requests.  If the instance migration were to encounter"},{"line_number":213,"context_line":"difficulties completing during the post copy the instance would need to be"},{"line_number":214,"context_line":"paused or rebooted to allow the migration to complete.  Obviously rebooting"},{"line_number":215,"context_line":"the instance would be a last resort since it would interrupt the instance."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Other deployer impact"},{"line_number":218,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_bc39f3f3","line":215,"updated":"2015-10-23 09:43:49.000000000","message":"Most of this is nothing to do with performance, it\u0027s binary. Move to proposed change section.","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"any cancellation requests.  If the instance migration were to encounter"},{"line_number":213,"context_line":"difficulties completing during the post copy the instance would need to be"},{"line_number":214,"context_line":"paused or rebooted to allow the migration to complete.  Obviously rebooting"},{"line_number":215,"context_line":"the instance would be a last resort since it would interrupt the instance."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Other deployer impact"},{"line_number":218,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_214b3289","line":215,"in_reply_to":"3a29b11f_bc39f3f3","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":243,"context_line":"* Cancelling a live migration per hypervisor"},{"line_number":244,"context_line":"  libvirt"},{"line_number":245,"context_line":"  hyper-v"},{"line_number":246,"context_line":"  vmware"},{"line_number":247,"context_line":"* DELETE method on a live migration"},{"line_number":248,"context_line":"* python-novaclient operations"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_fc1a0b7c","line":246,"updated":"2015-10-23 09:43:49.000000000","message":"nit: sub-bullet these","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":243,"context_line":"* Cancelling a live migration per hypervisor"},{"line_number":244,"context_line":"  libvirt"},{"line_number":245,"context_line":"  hyper-v"},{"line_number":246,"context_line":"  vmware"},{"line_number":247,"context_line":"* DELETE method on a live migration"},{"line_number":248,"context_line":"* python-novaclient operations"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_c1fefe37","line":246,"in_reply_to":"3a29b11f_fc1a0b7c","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a06459f75fe9823bdc3f6d4d9dc3378a9b0a9104","unresolved":false,"context_lines":[{"line_number":264,"context_line":"  quickly, so it may be necessary to use a fake virt driver to simulate a live"},{"line_number":265,"context_line":"  migration slow enough that cancelling it reliably is possible. Ideally we"},{"line_number":266,"context_line":"  would use a live migration which never completes. This will probably not be"},{"line_number":267,"context_line":"  feasible in tempest, so functional tests in nova\u0027s tree should be used."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Documentation Impact"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a29b11f_f701c405","line":267,"updated":"2015-10-23 09:43:49.000000000","message":"we should test cancelling each phase","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"b12f93418d8f99527dd7ff3f9dc848ad395f931c","unresolved":false,"context_lines":[{"line_number":264,"context_line":"  quickly, so it may be necessary to use a fake virt driver to simulate a live"},{"line_number":265,"context_line":"  migration slow enough that cancelling it reliably is possible. Ideally we"},{"line_number":266,"context_line":"  would use a live migration which never completes. This will probably not be"},{"line_number":267,"context_line":"  feasible in tempest, so functional tests in nova\u0027s tree should be used."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Documentation Impact"},{"line_number":270,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a26ad4f_817d66b3","line":267,"in_reply_to":"3a29b11f_f701c405","updated":"2015-10-29 05:10:25.000000000","message":"Done","commit_id":"08ef5751fc72ad08707091e07cfc00c4ff660112"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e0d3e474597362029b1df0bcc01f963c9ea41d76","unresolved":false,"context_lines":[{"line_number":60,"context_line":"1. The migration may be failing to complete due to the instance\u0027s workload."},{"line_number":61,"context_line":"   In some cases the solution to this issue may be to suspend the instance"},{"line_number":62,"context_line":"   but in other cases the migration may need to be abandoned or at least"},{"line_number":63,"context_line":"   postponed."},{"line_number":64,"context_line":"2. The migration may be having an adverse impact on the instance,"},{"line_number":65,"context_line":"   i.e. the instance owner may be observing degraded performance of their"},{"line_number":66,"context_line":"   application and be requesting that the cloud operator address this"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a26ad4f_d550f460","line":63,"updated":"2015-10-29 07:22:58.000000000","message":"might like to mention post-copy here","commit_id":"c5d22c577d09d42ee9ebed165821591aea7b38f2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e0d3e474597362029b1df0bcc01f963c9ea41d76","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   and the cloud operator may have consulted with the instance owner and"},{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Project Priority"},{"line_number":78,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a26ad4f_55f2a470","line":75,"updated":"2015-10-29 07:22:58.000000000","message":"this doesn\u0027t seem substantially different to case 1?","commit_id":"c5d22c577d09d42ee9ebed165821591aea7b38f2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"e0d3e474597362029b1df0bcc01f963c9ea41d76","unresolved":false,"context_lines":[{"line_number":94,"context_line":"In this situation a cancellation request should be declined because rolling"},{"line_number":95,"context_line":"back to the source node would be more work than completing the migration. In"},{"line_number":96,"context_line":"fact it is probably impossible!  Nova would need to be involved in the switch"},{"line_number":97,"context_line":"form pre-copy to post-copy so that it could switch the networking to the"},{"line_number":98,"context_line":"target host. Thus nova would know that the instance has switched and decline"},{"line_number":99,"context_line":"any cancellation requests.  If the instance migration were to encounter"},{"line_number":100,"context_line":"difficulties completing during the post copy the instance would need to be"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1a26ad4f_55670425","line":97,"updated":"2015-10-29 07:22:58.000000000","message":"nit: from","commit_id":"c5d22c577d09d42ee9ebed165821591aea7b38f2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"},{"line_number":12,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"When using live migrations, an operator might want to see which are still"},{"line_number":15,"context_line":"ongoing, their status and may also wish to cancel them. Currently this"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_3f62053f","line":12,"updated":"2015-11-11 17:31:56.000000000","message":"not sure what the \"refresh\" bit is about?","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Blueprint:"},{"line_number":12,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"When using live migrations, an operator might want to see which are still"},{"line_number":15,"context_line":"ongoing, their status and may also wish to cancel them. Currently this"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_18004d65","line":12,"in_reply_to":"da85f559_3f62053f","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":37,"context_line":"associated with the migration operation. During the post migration phase this"},{"line_number":38,"context_line":"token is used to communicate with the Neutron API and thus validated again."},{"line_number":39,"context_line":"If the migration operation takes longer than the remaining time before the"},{"line_number":40,"context_line":"token expires then this operation will fail."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"There is an upstream blue print for this issue -"},{"line_number":43,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_df941944","line":40,"updated":"2015-11-11 17:31:56.000000000","message":"This is out of scope for this blueprint, it should be a separate blueprint.\n\nWe got some agreement on an approach with keystone I would love help getting that implemented:\nhttps://etherpad.openstack.org/p/mitaka-nova-service-users\n\nI think jamielennox was going to look into that.\n\nThe basic idea is to use a service token + some logical response you get from keystone when validating the token, so you don\u0027t need to worry about the tenants token expiring, you just claim their token was previously validated by your service token when it was valid, or something like that.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":37,"context_line":"associated with the migration operation. During the post migration phase this"},{"line_number":38,"context_line":"token is used to communicate with the Neutron API and thus validated again."},{"line_number":39,"context_line":"If the migration operation takes longer than the remaining time before the"},{"line_number":40,"context_line":"token expires then this operation will fail."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"There is an upstream blue print for this issue -"},{"line_number":43,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_78f15994","line":40,"in_reply_to":"da85f559_0101c437","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"1c5fdfafb2ca06ef0c71949a93b4d54769df01eb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"associated with the migration operation. During the post migration phase this"},{"line_number":38,"context_line":"token is used to communicate with the Neutron API and thus validated again."},{"line_number":39,"context_line":"If the migration operation takes longer than the remaining time before the"},{"line_number":40,"context_line":"token expires then this operation will fail."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"There is an upstream blue print for this issue -"},{"line_number":43,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_0101c437","line":40,"in_reply_to":"da85f559_df941944","updated":"2015-11-12 08:30:17.000000000","message":"Agreed with this being out of scope","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":37,"context_line":"associated with the migration operation. During the post migration phase this"},{"line_number":38,"context_line":"token is used to communicate with the Neutron API and thus validated again."},{"line_number":39,"context_line":"If the migration operation takes longer than the remaining time before the"},{"line_number":40,"context_line":"token expires then this operation will fail."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"There is an upstream blue print for this issue -"},{"line_number":43,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_b8fb4178","line":40,"in_reply_to":"da85f559_df941944","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"There is an upstream blue print for this issue -"},{"line_number":43,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"},{"line_number":44,"context_line":"but it is not being actively pursued."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"We could address this issue within this specification by updating the"},{"line_number":47,"context_line":"context object within the source compute process when the same user that"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_94faf841","line":44,"updated":"2015-11-11 17:31:56.000000000","message":"Nit: I would remove this text, this is that blueprint now.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"There is an upstream blue print for this issue -"},{"line_number":43,"context_line":"https://blueprints.launchpad.net/nova/+spec/refresh-abort-live-migration"},{"line_number":44,"context_line":"but it is not being actively pursued."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"We could address this issue within this specification by updating the"},{"line_number":47,"context_line":"context object within the source compute process when the same user that"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_382e71fb","line":44,"in_reply_to":"da85f559_94faf841","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":48,"context_line":"started the migration gets the status of the migration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"An alternative approach might be to talk to keystone about the possibility of"},{"line_number":51,"context_line":"authorized users being able to request tokens with non standard expiry period?"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Use Cases"},{"line_number":54,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_3fdf650e","line":51,"updated":"2015-11-11 17:31:56.000000000","message":"These other two need to be dropped I think.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":48,"context_line":"started the migration gets the status of the migration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"An alternative approach might be to talk to keystone about the possibility of"},{"line_number":51,"context_line":"authorized users being able to request tokens with non standard expiry period?"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Use Cases"},{"line_number":54,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5831f558","line":51,"in_reply_to":"da85f559_3fdf650e","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":60,"context_line":"1. The migration may be failing to complete due to the instance\u0027s workload."},{"line_number":61,"context_line":"   In some cases the solution to this issue may be to suspend the instance"},{"line_number":62,"context_line":"   but in other cases the migration may need to be abandoned or at least"},{"line_number":63,"context_line":"   postponed."},{"line_number":64,"context_line":"2. The migration may be having an adverse impact on the instance,"},{"line_number":65,"context_line":"   i.e. the instance owner may be observing degraded performance of their"},{"line_number":66,"context_line":"   application and be requesting that the cloud operator address this"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_9f4451b7","line":63,"updated":"2015-11-11 17:31:56.000000000","message":"Feels like we should prefer the pause approach first:\nhttps://review.openstack.org/#/c/229040\n\nThat might be enough for it to quickly complete.\n\nIt would be interesting to know what \"stage\" of live-migration the VM is in, so you know what is likely to work.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":60,"context_line":"1. The migration may be failing to complete due to the instance\u0027s workload."},{"line_number":61,"context_line":"   In some cases the solution to this issue may be to suspend the instance"},{"line_number":62,"context_line":"   but in other cases the migration may need to be abandoned or at least"},{"line_number":63,"context_line":"   postponed."},{"line_number":64,"context_line":"2. The migration may be having an adverse impact on the instance,"},{"line_number":65,"context_line":"   i.e. the instance owner may be observing degraded performance of their"},{"line_number":66,"context_line":"   application and be requesting that the cloud operator address this"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_b84261ac","line":63,"in_reply_to":"da85f559_9f4451b7","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   and the cloud operator may have consulted with the instance owner and"},{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_1f8621db","line":75,"updated":"2015-11-11 17:31:56.000000000","message":"Great use cases here :)","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"1c5fdfafb2ca06ef0c71949a93b4d54769df01eb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   and the cloud operator may have consulted with the instance owner and"},{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_bca7bfa5","line":75,"in_reply_to":"da85f559_1f8621db","updated":"2015-11-12 08:30:17.000000000","message":"I thought that this use case is already covered (at least in case of libvirt) by some of the work danpb did, where these things are now configurable. See https://review.openstack.org/#/c/162253/\n\nIt would be excelent to have a single way to do this and not make it driver specific.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   and the cloud operator may have consulted with the instance owner and"},{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_7e1ce169","line":75,"in_reply_to":"da85f559_75bde400","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   and the cloud operator may have consulted with the instance owner and"},{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_78a95923","line":75,"in_reply_to":"da85f559_bca7bfa5","updated":"2015-11-12 12:02:09.000000000","message":"Not the same thing I think, the previous change relates to setting the maximum downtime during the cut over from source to target version of the instance.  This comment relates to the case where the sheer volume of data on the instance ephemeral disk(s) means that the live migration would take too long to be viable.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ddb03ad9f9b0a83ba9562813e277cc9a1459f610","unresolved":false,"context_lines":[{"line_number":72,"context_line":"   and the cloud operator may have consulted with the instance owner and"},{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_75bde400","line":75,"in_reply_to":"da85f559_bca7bfa5","updated":"2015-11-12 11:08:17.000000000","message":"The configuration options don\u0027t really deal with these things \"on the fly\", I still like the idea of choosing to abandon when required for some other reason.\n\nThere are claims this is being added for vmware, hyperv and libvirt, which excited me.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"a8e21affcc2fd168e8c7743d1955265c61f161a2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_a71db663","line":76,"updated":"2015-11-02 14:03:04.000000000","message":"Project priority section is missing.\n\nProject priorities are decided, this should be: Live Migration","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"63de6b5d586924fe94c76af75a7b2674e68e7910","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_c7f552ed","line":76,"in_reply_to":"1a26ad4f_a71db663","updated":"2015-11-02 14:05:40.000000000","message":"The priorities section was deleted from the spec template, we are no longer using that - we track all priorities reviews in etherpad regardless.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_3f7be5f6","line":76,"in_reply_to":"1a26ad4f_c7f552ed","updated":"2015-11-11 17:31:56.000000000","message":"+1 to danpb","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   decided to abandon the live migration and employ a different strategy."},{"line_number":74,"context_line":"   For example, stop the instance, perform the hypervisor maintenance,"},{"line_number":75,"context_line":"   then restart the instance."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"},{"line_number":78,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_a403cfb7","line":76,"in_reply_to":"1a26ad4f_c7f552ed","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* The currently-existing API for starting a live migration will be modified."},{"line_number":123,"context_line":"  At the moment the response to that request is empty, but we will return"},{"line_number":124,"context_line":"  the id of the created Migration object."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* Fetch a list of in-progress migrations"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_3a60d3a4","line":124,"updated":"2015-11-11 17:31:56.000000000","message":"-1 this idea.\n\nWe already return the request-id, can\u0027t we use that to find the migration-id?\n\nWe should make this consistent with resize and migrate also.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* The currently-existing API for starting a live migration will be modified."},{"line_number":123,"context_line":"  At the moment the response to that request is empty, but we will return"},{"line_number":124,"context_line":"  the id of the created Migration object."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* Fetch a list of in-progress migrations"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5e2c7d98","line":124,"in_reply_to":"da85f559_3a60d3a4","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"1c5fdfafb2ca06ef0c71949a93b4d54769df01eb","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* The currently-existing API for starting a live migration will be modified."},{"line_number":123,"context_line":"  At the moment the response to that request is empty, but we will return"},{"line_number":124,"context_line":"  the id of the created Migration object."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* Fetch a list of in-progress migrations"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_fc8787b2","line":124,"in_reply_to":"da85f559_3a60d3a4","updated":"2015-11-12 08:30:17.000000000","message":"there was a very good email from Jay suggesting API changes for live migration. Current API is quite broken in several places.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2015-October/077881.html\n\nI\u0027d personally prefer to do that than to bolt on more stuff onto a broken thing","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* The currently-existing API for starting a live migration will be modified."},{"line_number":123,"context_line":"  At the moment the response to that request is empty, but we will return"},{"line_number":124,"context_line":"  the id of the created Migration object."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* Fetch a list of in-progress migrations"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_383431fa","line":124,"in_reply_to":"da85f559_d5937059","updated":"2015-11-12 12:02:09.000000000","message":"changing this to be an operation on the instance so all mute","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ddb03ad9f9b0a83ba9562813e277cc9a1459f610","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"* The currently-existing API for starting a live migration will be modified."},{"line_number":123,"context_line":"  At the moment the response to that request is empty, but we will return"},{"line_number":124,"context_line":"  the id of the created Migration object."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"* Fetch a list of in-progress migrations"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_d5937059","line":124,"in_reply_to":"da85f559_fc8787b2","updated":"2015-11-12 11:08:17.000000000","message":"Thats a good point, I did actually propose what Jay is talking about two years ago, but I never was allowed the time to implement that :(\n\nIt would be nice to get the unification done, but I don\u0027t want to block all progress on that.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":165,"context_line":"      \"dest_compute\" : ..."},{"line_number":166,"context_line":"      \"status\" : ..."},{"line_number":167,"context_line":"      \"type\" : ..."},{"line_number":168,"context_line":"      \"progress\" : ...         # percentage completion, 0-100"},{"line_number":169,"context_line":"    }"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"  The \"progress\" field is intended to allow an operator to provide tooling for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_3f9765ed","line":168,"updated":"2015-11-11 17:31:56.000000000","message":"I wonder if we really want something like sub_task: \"moving disk\" vs \"syncing memory\"\n\nProbably also want a \"last_updated\" time.\n\nnot sure progress percentages work very well.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":165,"context_line":"      \"dest_compute\" : ..."},{"line_number":166,"context_line":"      \"status\" : ..."},{"line_number":167,"context_line":"      \"type\" : ..."},{"line_number":168,"context_line":"      \"progress\" : ...         # percentage completion, 0-100"},{"line_number":169,"context_line":"    }"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"  The \"progress\" field is intended to allow an operator to provide tooling for"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_1814cd4a","line":168,"in_reply_to":"da85f559_3f9765ed","updated":"2015-11-12 12:02:09.000000000","message":"changing this to be an operation on the instance so no longer applicable","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":172,"context_line":"  monitoring the progress of live migrations, for example to detect cases which"},{"line_number":173,"context_line":"  are unlikely to complete. Progress will not necessarily be monotonic due to"},{"line_number":174,"context_line":"  the need to repeatedly sync data from source to target node. Hypervisors"},{"line_number":175,"context_line":"  which can\u0027t provide a value for the \"progress\" field should omit it."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Stop an in-progress live migration"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_da3987d8","line":175,"updated":"2015-11-11 17:31:56.000000000","message":"honestly, I think we would do better with a list of subtasks, progress numbers never really work for how our system is structured with DB updates.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"26ab9a2fa732f036ea0919b2cc816bcbd92ff9b6","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Stop an in-progress live migration"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  `POST /os-migrations/{id}/cancel`"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"  No request body is necessary"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_0765b8df","line":179,"updated":"2015-11-10 14:47:18.000000000","message":"Small nit: I believe that this can be changed post-merge, but to keep consistency there should be {uuid} instead of {id}","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Stop an in-progress live migration"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  `POST /os-migrations/{id}/cancel`"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"  No request body is necessary"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_7b3393f6","line":179,"in_reply_to":"da85f559_0765b8df","updated":"2015-11-12 12:02:09.000000000","message":"changing this to be an operation on the instance so no longer applicable","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  `POST /os-migrations/{id}/cancel`"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"  No request body is necessary"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"  Normal http response code: `204 No Content`"},{"line_number":184,"context_line":"  No response body is needed"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_9a8bff67","line":181,"updated":"2015-11-11 17:31:56.000000000","message":"I would rather we copied the existing server actions patterns here:\nhttp://developer.openstack.org/api-ref-compute-v2.1.html#migrate\n\nI do wonder if this should just be another server action, rather than an action on a migration object, \"live-migrate-cancel\", for example?\n\nEither way, it should be consistent with what works for live-migrate-pause-vm or whatever that it.","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  `POST /os-migrations/{id}/cancel`"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"  No request body is necessary"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"  Normal http response code: `204 No Content`"},{"line_number":184,"context_line":"  No response body is needed"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_1b2287a3","line":181,"in_reply_to":"da85f559_9a8bff67","updated":"2015-11-12 12:02:09.000000000","message":"yes changing this to be an operation on the instance","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a29ce21c2ed337f7d9ecda6e4f36ffabb6ef6c46","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Notifications impact"},{"line_number":226,"context_line":"--------------------"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Emit notification message indicating successful cancellation of migration"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Other end user impact"},{"line_number":231,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_9a49bfb9","line":228,"updated":"2015-11-11 17:31:56.000000000","message":"We are moving to versioned notifications, so in theory it should include all that detail here. I guess we can\u0027t really block on that, but we should include the names here, ideally. \"live_migration.cancel.start\"/end I guess?","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"},{"author":{"_account_id":6608,"name":"Paul Carlton","email":"paul.carlton2@hpe.com","username":"paul-carlton2"},"change_message_id":"dfb5a2cb3638e270b3ade6023ea28e97a8e85f85","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Notifications impact"},{"line_number":226,"context_line":"--------------------"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Emit notification message indicating successful cancellation of migration"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Other end user impact"},{"line_number":231,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5befaf1d","line":228,"in_reply_to":"da85f559_9a49bfb9","updated":"2015-11-12 12:02:09.000000000","message":"Done","commit_id":"06ae2a684f0cfb9cf31cdfb782ddf61720a4b4b5"}]}
