)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"204d4096a2a9f6bea76203dfa9f9d0c0e4135f92","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Abort Cold Migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Provide a way to cancel a cold migration"},{"line_number":10,"context_line":"in the state copying ephemeral disks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Change-Id: I40c48ebec4dc6b15ca472bee4bf1c661c76bdb09"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":44,"id":"dfeb2761_14e1ea2a","line":10,"updated":"2017-04-04 12:16:19.000000000","message":"\"state of\" ?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Abort Cold Migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Provide a way to cancel a cold migration"},{"line_number":10,"context_line":"in the state copying ephemeral disks."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Change-Id: I40c48ebec4dc6b15ca472bee4bf1c661c76bdb09"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":44,"id":"dfeb2761_13144043","line":10,"in_reply_to":"dfeb2761_14e1ea2a","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"}],"specs/ocata/approved/abort-cold-migration.rst":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"6c0d6372b96f2e218f25509dbdad28c1d034ca67","unresolved":false,"context_lines":[{"line_number":37,"context_line":"add the aborting cold migration function."},{"line_number":38,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":39,"context_line":"If executing the API, cancel copying ephemeral disks."},{"line_number":40,"context_line":"Then the VM instance is reterned to the source host."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Alternatives"},{"line_number":43,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_f79b7564","line":40,"range":{"start_line":40,"start_character":24,"end_line":40,"end_character":32},"updated":"2016-07-25 13:41:24.000000000","message":"s/reterned/returned","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6bb7c05a2393a77675b219ab5a4c3a0620884f34","unresolved":false,"context_lines":[{"line_number":37,"context_line":"add the aborting cold migration function."},{"line_number":38,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":39,"context_line":"If executing the API, cancel copying ephemeral disks."},{"line_number":40,"context_line":"Then the VM instance is reterned to the source host."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Alternatives"},{"line_number":43,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_50ab3475","line":40,"range":{"start_line":40,"start_character":24,"end_line":40,"end_character":32},"in_reply_to":"dada55a8_f79b7564","updated":"2016-07-26 10:40:41.000000000","message":"Done","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"6c0d6372b96f2e218f25509dbdad28c1d034ca67","unresolved":false,"context_lines":[{"line_number":52,"context_line":"REST API impact"},{"line_number":53,"context_line":"---------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"None."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The following existing API is reused."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_77c30558","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":5},"updated":"2016-07-25 13:41:24.000000000","message":"this should be removed","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6bb7c05a2393a77675b219ab5a4c3a0620884f34","unresolved":false,"context_lines":[{"line_number":52,"context_line":"REST API impact"},{"line_number":53,"context_line":"---------------"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"None."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The following existing API is reused."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_90b76cd7","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":5},"in_reply_to":"dada55a8_77c30558","updated":"2016-07-26 10:40:41.000000000","message":"Done","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"6c0d6372b96f2e218f25509dbdad28c1d034ca67","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The following existing API is reused."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Security impact"},{"line_number":62,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_176d6904","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":55},"updated":"2016-07-25 13:41:24.000000000","message":"So, we add new functionality on this method, right? I\u0027d prefer not bumping rest API version for this change, but still, think it\u0027s worth to describe this option in alternatives section","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6bb7c05a2393a77675b219ab5a4c3a0620884f34","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"The following existing API is reused."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Security impact"},{"line_number":62,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_30d680f1","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":55},"in_reply_to":"dada55a8_176d6904","updated":"2016-07-26 10:40:41.000000000","message":"IMO, it should be bumped because it enables users to know whether they can use this function or not.","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"6c0d6372b96f2e218f25509dbdad28c1d034ca67","unresolved":false,"context_lines":[{"line_number":108,"context_line":"* Cancel cold migration API operation"},{"line_number":109,"context_line":"* Cancelling a cold migration per hypervisor"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  - libvirt"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"  - hyper-v"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  - vmware"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"  - xen"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_17e8c97b","line":117,"range":{"start_line":111,"start_character":2,"end_line":117,"end_character":7},"updated":"2016-07-25 13:41:24.000000000","message":"could you also elaborate details of this abort operations implementation on driver\u0027s layer?","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6bb7c05a2393a77675b219ab5a4c3a0620884f34","unresolved":false,"context_lines":[{"line_number":108,"context_line":"* Cancel cold migration API operation"},{"line_number":109,"context_line":"* Cancelling a cold migration per hypervisor"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  - libvirt"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"  - hyper-v"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  - vmware"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"  - xen"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dada55a8_30720012","line":117,"range":{"start_line":111,"start_character":2,"end_line":117,"end_character":7},"in_reply_to":"dada55a8_17e8c97b","updated":"2016-07-26 10:40:41.000000000","message":"In PS4, the implementation on driver\u0027s layer for libvirt was added.","commit_id":"41818117fbf8cc4d1fb0dec637f43cb276784f37"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"00a93a59a8dd5b4b401ceb44e1241899197b3054","unresolved":false,"context_lines":[{"line_number":42,"context_line":"The API microversion is bumped because it enables users to know"},{"line_number":43,"context_line":"whether they can use this function or not."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"For libvirt, the terminate_jobs method of InstanceJobTracker class"},{"line_number":46,"context_line":"is used in order to abort copying ephemeral disks."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Alternatives"},{"line_number":49,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_e957da57","line":46,"range":{"start_line":45,"start_character":0,"end_line":46,"end_character":50},"updated":"2016-07-26 12:44:14.000000000","message":"@Takashi, as long as you are going to add this not only for libvirt, please add the description for other drivers. Also, it looks like you will introduce a new method to the driver interface, that will actually abort jobs. Could you please cover this in a spec too?","commit_id":"de23046dad0ae9a31dc4300e850ac8d3c1953e8a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ede1b4e225ce7a42d30b73e156e32164ad88aad4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"The API microversion is bumped because it enables users to know"},{"line_number":43,"context_line":"whether they can use this function or not."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"For libvirt, the terminate_jobs method of InstanceJobTracker class"},{"line_number":46,"context_line":"is used in order to abort copying ephemeral disks."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Alternatives"},{"line_number":49,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bacf61ea_40dc5d12","line":46,"range":{"start_line":45,"start_character":0,"end_line":46,"end_character":50},"in_reply_to":"dada55a8_e957da57","updated":"2016-07-28 12:36:34.000000000","message":"\u003e  please add the description for other drivers.\n\nIMO, it is not needed to describe detail implementation for other drivers.\nBecause there is not detail descriptions for driver implementations in the \u0027abort-live-migration\u0027 spec.\nIt is not needed in this spec as well as \u0027abort-live-migration\u0027 spec.\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/abort-live-migration.html\n\n\u003e Also, it looks like you will introduce a new method to the driver interface, that will actually abort jobs.\n\nYes.\n\u0027migration_abort\u0027 or \u0027cold_migration_abort\u0027 method will be added.","commit_id":"de23046dad0ae9a31dc4300e850ac8d3c1953e8a"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c604776667fe1c88b235533e635d6ee5fa99e8fd","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Administrators migrate users\u0027 stopped VM instances."},{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of administrator\u0027s"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1ac06dbe_eadc11e6","line":27,"range":{"start_line":27,"start_character":30,"end_line":27,"end_character":37},"updated":"2016-08-22 15:06:03.000000000","message":"seems we allow ACTIVE status instance to be migrated\nthus, when might admin cancel the migrate?","commit_id":"efcf39110fcad14a93135539936f5b6c7fcd4236"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e73ed8be2dea758fe30397d28cfaa60c09e496e5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Administrators migrate users\u0027 stopped VM instances."},{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of administrator\u0027s"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa7ab95a_8db54d7f","line":27,"range":{"start_line":27,"start_character":30,"end_line":27,"end_character":37},"in_reply_to":"1ac06dbe_eadc11e6","updated":"2016-08-30 07:12:44.000000000","message":"We can cold migrate running VM instances.\nBut it is a use case.","commit_id":"efcf39110fcad14a93135539936f5b6c7fcd4236"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d1e761dbcf7196c482b695f09f48639101b53665","unresolved":false,"context_lines":[{"line_number":19,"context_line":"In cold migrations, copying ephemeral disks is performed,"},{"line_number":20,"context_line":"it takes a long time if the size of the disks are large."},{"line_number":21,"context_line":"If starting the VM instance during copying ephemeral disks,"},{"line_number":22,"context_line":"it is necessary to wait the cold migration completion."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_35d1a0fc","line":22,"range":{"start_line":22,"start_character":24,"end_line":22,"end_character":27},"updated":"2016-10-04 15:31:35.000000000","message":"s/the/for/","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1457b8b500a77f0481949cba176df026a097cb19","unresolved":false,"context_lines":[{"line_number":19,"context_line":"In cold migrations, copying ephemeral disks is performed,"},{"line_number":20,"context_line":"it takes a long time if the size of the disks are large."},{"line_number":21,"context_line":"If starting the VM instance during copying ephemeral disks,"},{"line_number":22,"context_line":"it is necessary to wait the cold migration completion."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_994cb8c9","line":22,"range":{"start_line":22,"start_character":24,"end_line":22,"end_character":27},"in_reply_to":"1a95cdbc_35d1a0fc","updated":"2016-10-08 02:52:55.000000000","message":"Done","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d1e761dbcf7196c482b695f09f48639101b53665","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of administrator\u0027s"},{"line_number":31,"context_line":"operations."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"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":"1a95cdbc_b51130b2","line":31,"updated":"2016-10-04 15:31:35.000000000","message":"Presumably you\u0027re suggesting a use case of:\n\n Administrators need to be able to abort a cold migration at user\u0027s request","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1457b8b500a77f0481949cba176df026a097cb19","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of administrator\u0027s"},{"line_number":31,"context_line":"operations."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Proposed change"},{"line_number":34,"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":"1a95cdbc_b94974b9","line":31,"in_reply_to":"1a95cdbc_b51130b2","updated":"2016-10-08 02:52:55.000000000","message":"Done","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b1b2badf0bd7e8db502adc2edc7d8898a27469","unresolved":false,"context_lines":[{"line_number":85,"context_line":"REST API impact"},{"line_number":86,"context_line":"---------------"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The following existing API is reused."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_6d543754","line":88,"range":{"start_line":88,"start_character":30,"end_line":88,"end_character":36},"updated":"2016-10-04 18:31:28.000000000","message":"As the following comment, this \"reuse\" is too short to explain what here is meaning.","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1457b8b500a77f0481949cba176df026a097cb19","unresolved":false,"context_lines":[{"line_number":85,"context_line":"REST API impact"},{"line_number":86,"context_line":"---------------"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The following existing API is reused."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_d9c80025","line":88,"range":{"start_line":88,"start_character":30,"end_line":88,"end_character":36},"in_reply_to":"1a95cdbc_6d543754","updated":"2016-10-08 02:52:55.000000000","message":"Done.\nAdded an explanation.","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d1e761dbcf7196c482b695f09f48639101b53665","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The following existing API is reused."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The API microversion is bumped."},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_754ec8c2","line":90,"updated":"2016-10-04 15:31:35.000000000","message":"I don\u0027t think this is the right mechanism for this. Right now, the migrations in the api are a log of where the instance has moved. Perhaps a PUT with a different state?","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"72b1b2badf0bd7e8db502adc2edc7d8898a27469","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The following existing API is reused."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The API microversion is bumped."},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_ad771f01","line":90,"in_reply_to":"1a95cdbc_754ec8c2","updated":"2016-10-04 18:31:28.000000000","message":"Now Nova supports aborting of \"live migration\" since v2.24 with https://review.openstack.org/#/c/277971\n\nThat is the same as the above REST API design:\n\n DELETE /servers/{server_id}/migrations/{migration_id}\n\nI think here should describe the design is the same as \"live migration\" clearly.","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1457b8b500a77f0481949cba176df026a097cb19","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The following existing API is reused."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The API microversion is bumped."},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_59ddd0de","line":90,"in_reply_to":"1a95cdbc_ad771f01","updated":"2016-10-08 02:52:55.000000000","message":"I added the explanation about a consistency with a live migration case.","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d1e761dbcf7196c482b695f09f48639101b53665","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"The follwoing tests is added."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Nova functional tests"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_f59e5806","line":164,"updated":"2016-10-04 15:31:35.000000000","message":"These will cover the nova plumbing. How do you plan to actually make this testable by the driver CI systems? It seems like it\u0027s likely to be fairly racy, and depend on the speed of the storage and the size of the disks :/","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1457b8b500a77f0481949cba176df026a097cb19","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"The follwoing tests is added."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Nova functional tests"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a95cdbc_b9e09497","line":164,"in_reply_to":"1a95cdbc_f59e5806","updated":"2016-10-08 02:52:55.000000000","message":"Like live migration, add the CI job. And it uses a large disk.\nDone.","commit_id":"1bacefbe59cfda8f0727317d47d05c3c26da1b67"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17c32097b6700ff88174108e0e4ad64d398e2517","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The API microversion is bumped."},{"line_number":95,"context_line":"The reason for using \u0027DELETE\u0027 is for a consistency with a live migration case."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Security impact"},{"line_number":98,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5da102_92ab3389","line":95,"updated":"2016-10-28 12:16:54.000000000","message":"You can remove this line, I just didn\u0027t know we had done this thing and that\u0027s my fault.","commit_id":"14bd7b9f3659c09ae2f34581eefa1da91a2c125a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"44e0342ffc57b2a42596016f4e1011d7a14423e7","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The API microversion is bumped."},{"line_number":95,"context_line":"The reason for using \u0027DELETE\u0027 is for a consistency with a live migration case."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Security impact"},{"line_number":98,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5da102_34b170e2","line":95,"in_reply_to":"ba5da102_92ab3389","updated":"2016-10-28 15:21:37.000000000","message":"Done","commit_id":"14bd7b9f3659c09ae2f34581eefa1da91a2c125a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17c32097b6700ff88174108e0e4ad64d398e2517","unresolved":false,"context_lines":[{"line_number":162,"context_line":"Testing"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"The follwoing tests is added."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"* Nova functional tests"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5da102_f2cb8f70","line":165,"range":{"start_line":165,"start_character":4,"end_line":165,"end_character":13},"updated":"2016-10-28 12:16:54.000000000","message":"\"following\"","commit_id":"14bd7b9f3659c09ae2f34581eefa1da91a2c125a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"44e0342ffc57b2a42596016f4e1011d7a14423e7","unresolved":false,"context_lines":[{"line_number":162,"context_line":"Testing"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"The follwoing tests is added."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"* Nova functional tests"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5da102_54eb44b0","line":165,"range":{"start_line":165,"start_character":4,"end_line":165,"end_character":13},"in_reply_to":"ba5da102_f2cb8f70","updated":"2016-10-28 15:21:37.000000000","message":"Done","commit_id":"14bd7b9f3659c09ae2f34581eefa1da91a2c125a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17c32097b6700ff88174108e0e4ad64d398e2517","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"The following document is updated."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* API Refenence"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"References"},{"line_number":181,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5da102_f2e46f0e","line":178,"range":{"start_line":178,"start_character":6,"end_line":178,"end_character":15},"updated":"2016-10-28 12:16:54.000000000","message":"\"reference\"","commit_id":"14bd7b9f3659c09ae2f34581eefa1da91a2c125a"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"44e0342ffc57b2a42596016f4e1011d7a14423e7","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"The following document is updated."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* API Refenence"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"References"},{"line_number":181,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":16,"id":"ba5da102_74d20802","line":178,"range":{"start_line":178,"start_character":6,"end_line":178,"end_character":15},"in_reply_to":"ba5da102_f2e46f0e","updated":"2016-10-28 15:21:37.000000000","message":"Done","commit_id":"14bd7b9f3659c09ae2f34581eefa1da91a2c125a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":40,"context_line":"If executing the API, cancel copying ephemeral disks."},{"line_number":41,"context_line":"Then the VM instance is returned to the source host."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The API microversion is bumped because it enables users to know"},{"line_number":44,"context_line":"whether they can use this function or not."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"An implementation in each driver is as follows:"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_5f4ba759","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":42},"updated":"2016-11-14 19:44:32.000000000","message":"Sort of...it let\u0027s them know there might be a chance of doing it. With the live migration abort support in 2.24 it only works with libvirt compute nodes, and only newton libvirt compute nodes. If you have an ocata API but mixed level computes, and try to abort a migration on a newton compute node it\u0027s going to fail.\n\nLong-term we\u0027d handle this with capabilities discovery:\n\nhttps://review.openstack.org/#/c/386555\n\nFor now we don\u0027t have anything like that. I mean, we could restrict using this API until all of the computes are up to ocata (or whatever nova-compute service version adds handling of this operation in ComputeManager), but then you wouldn\u0027t be able to use it while you have mixed-level computes.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"If executing the API, cancel copying ephemeral disks."},{"line_number":41,"context_line":"Then the VM instance is returned to the source host."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"The API microversion is bumped because it enables users to know"},{"line_number":44,"context_line":"whether they can use this function or not."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"An implementation in each driver is as follows:"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_e4882625","line":44,"range":{"start_line":43,"start_character":0,"end_line":44,"end_character":42},"in_reply_to":"7a77a97e_5f4ba759","updated":"2016-11-16 00:52:05.000000000","message":"I remove this sentence.\nDone.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* Hyper-V"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  - The \u0027move_folder_files\u0027 method of \u0027PathUtils\u0027 class"},{"line_number":56,"context_line":"    (os_win/utils/pathutils.py) is used to perform a cold migration."},{"line_number":57,"context_line":"    In the method, there is a \u0027for\u0027 statement and \u0027os.rename\u0027 is"},{"line_number":58,"context_line":"    called in it. So a way to cancel the loop (\u0027for\u0027 statement)"},{"line_number":59,"context_line":"    will be implemented in \u0027os-win\u0027 library. And it will be used"},{"line_number":60,"context_line":"    by nova to cancel a copying disks."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* VMware"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_1f204f49","line":60,"range":{"start_line":55,"start_character":4,"end_line":60,"end_character":38},"updated":"2016-11-14 19:44:32.000000000","message":"Since this for/rename isn\u0027t happening in a job I\u0027m not really sure how you\u0027re going to cancel it asynchronously, seems this is glossing over quite a few details - it\u0027d be good to get claudiub to sign off on this. Also, if this is moving files via rename we\u0027d have to handle rolling back what got moved on an abort call.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* Hyper-V"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"  - The \u0027move_folder_files\u0027 method of \u0027PathUtils\u0027 class"},{"line_number":56,"context_line":"    (os_win/utils/pathutils.py) is used to perform a cold migration."},{"line_number":57,"context_line":"    In the method, there is a \u0027for\u0027 statement and \u0027os.rename\u0027 is"},{"line_number":58,"context_line":"    called in it. So a way to cancel the loop (\u0027for\u0027 statement)"},{"line_number":59,"context_line":"    will be implemented in \u0027os-win\u0027 library. And it will be used"},{"line_number":60,"context_line":"    by nova to cancel a copying disks."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* VMware"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_c4e16a9c","line":60,"range":{"start_line":55,"start_character":4,"end_line":60,"end_character":38},"in_reply_to":"7a77a97e_1f204f49","updated":"2016-11-16 00:52:05.000000000","message":"Implement cancel function in os.win library.\nAnd rollback will also be implemented.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  - In the cold migration case (not resize case),"},{"line_number":65,"context_line":"    copying disks is not performed."},{"line_number":66,"context_line":"    So it is not necessary to implement suggested function."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* Xen"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_ffe1d3ff","line":66,"range":{"start_line":66,"start_character":4,"end_line":66,"end_character":59},"updated":"2016-11-14 19:44:32.000000000","message":"So will the vcenter driver just have a noop for the driver call so it doesn\u0027t fail with NotImplementedError?","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"  - In the cold migration case (not resize case),"},{"line_number":65,"context_line":"    copying disks is not performed."},{"line_number":66,"context_line":"    So it is not necessary to implement suggested function."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* Xen"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_1463b0dd","line":66,"range":{"start_line":66,"start_character":4,"end_line":66,"end_character":59},"in_reply_to":"7a77a97e_ffe1d3ff","updated":"2016-11-16 00:52:05.000000000","message":"Yes.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":89,"context_line":"The following existing API is reused. That is, the same API for canceling"},{"line_number":90,"context_line":"a live migration is used for canceling a cold migration."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The API microversion is bumped."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_bfa59bb6","line":92,"updated":"2016-11-14 19:44:32.000000000","message":"Except this calls live_migrate_abort, how are you going to differentiate which compute API method to call for a live vs cold migration abort? I guess you\u0027d have to get the Migration object and check the migration_type attribute.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"The following existing API is reused. That is, the same API for canceling"},{"line_number":90,"context_line":"a live migration is used for canceling a cold migration."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The API microversion is bumped."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_29c21534","line":92,"in_reply_to":"7a77a97e_bfa59bb6","updated":"2016-11-16 00:52:05.000000000","message":"Yes.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Other end user impact"},{"line_number":107,"context_line":"---------------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"A new python-novaclient command is added."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_1fdbefee","line":109,"updated":"2016-11-14 19:44:32.000000000","message":"I see we added \u0027live-migration-abort\u0027 in nova CLI already so this is probably fine. I hesitate to keep adding new CLIs to novaclient when we should be working openstackclient, but I don\u0027t think OSC has microversion support yet...","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Other end user impact"},{"line_number":107,"context_line":"---------------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"A new python-novaclient command is added."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_a73550db","line":109,"in_reply_to":"7a77a97e_1fdbefee","updated":"2016-11-16 00:52:05.000000000","message":"I changed it to as follows:\n\nExisting \u0027live-migration-abort\u0027 command will be deprecated,\nand it is integrated into \u0027migration-abort\u0027 command.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_7fa7834f","line":113,"updated":"2016-11-14 19:44:32.000000000","message":"Hmm, I see that the \u0027nova server-migration-list\u0027 command doesn\u0027t list the type of migration, so an operation can\u0027t easily tell if it\u0027s a cold or live migration, seems we should be adding something to the output of that command to make a distinction so you know if you\u0027re calling \u0027nova live-migration-abort\u0027 or \u0027nova migration-abort\u0027. That would require passing the \u0027migration_type\u0027 back in the servers/migrations API though...which could be done as part of this change and same migration but you\u0027d need to call that out.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_c7732c14","line":113,"in_reply_to":"7a77a97e_312350bf","updated":"2016-11-16 00:52:05.000000000","message":"I will change the following existing APIs to list or show cold migrations.\n\n* GET /servers/{server_id}/migrations\n* GET /servers/{server_id}/migrations/{migration_id}","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d963f11f1b57edca1ea232dfbec06619634d9409","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_858dec7d","line":113,"in_reply_to":"7a77a97e_6a933ffb","updated":"2016-11-14 20:11:26.000000000","message":"Ah, I see the point here. We only need migration-abort I think, and let that run on whatever is running.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4dd76d8ac66059cec251963fdd3fe396012fd0de","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_aa5f1774","line":113,"in_reply_to":"7a77a97e_7fa7834f","updated":"2016-11-14 19:53:14.000000000","message":"We know which to abort based on status, as you can only have 0 or 1 running migrations on a given server. Nova figures out the type.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"24b46dd5dc2c49d80215552c814daafb479bdcaf","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_b02a28e6","line":113,"in_reply_to":"7a77a97e_858dec7d","updated":"2016-11-14 21:00:05.000000000","message":"Furthermore, listing server migrations filters in the REST API so that it only shows live migrations:\n\nhttps://github.com/openstack/nova/blob/4058471132f06ae8b137f6a4a917e1b2b7382158/nova/api/openstack/compute/server_migrations.py#L100\n\nSo we can\u0027t even list cold server migrations...I\u0027d think that would also need to be a change for this microversion.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a37c3b789c0b2100fdb49188e2dad0e1fd36bed","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_6a933ffb","line":113,"in_reply_to":"7a77a97e_aa5f1774","updated":"2016-11-14 19:56:43.000000000","message":"However, when listing migrations in the CLI how do I know if I call \u0027nova migration-abort\u0027 or \u0027nova live-migration-abort\u0027? Ultimately they are the same handler in the REST API so it doesn\u0027t matter too much from the nova point of view, but it probably matters for the microversion checking in novaclient.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b478297af25c3bf9e7572a466509f2bd42714f5","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"For example:"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Performance Impact"},{"line_number":116,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":20,"id":"7a77a97e_312350bf","line":113,"in_reply_to":"7a77a97e_b02a28e6","updated":"2016-11-15 17:06:02.000000000","message":"BTW, I\u0027ve gone through and started documenting the server-migrations API reference, the final result of that is here:\n\nhttp://docs-draft.openstack.org/07/397407/3/check/gate-nova-api-ref/004dadb//api-ref/build/html/#server-migrations-servers-migrations\n\nAs noted, that API only works with in-progress live migrations. We\u0027d need an API microversion to change that API to list/show other types of migrations, like evacuate and cold migrations. I think that\u0027s probably a dependency for this work because otherwise the usability is bad.\n\nYou can probably get some of this information using the old os-migrations API, but it\u0027s very clunky based on which microversion you\u0027re using:\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/migrations.py#L59\n\nIf it\u0027s \u003e\u003d2.23 you don\u0027t get the migration type in the response unless it\u0027s an in-progress live migration.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba6efb5b60a980dc58d5caea1008574a94f94455","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"The following tests is added."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Nova functional tests"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"  The functional testing will utilize the new cold migration CI job."},{"line_number":169,"context_line":"  An instance with a large disk will be used so we can test aborting"},{"line_number":170,"context_line":"  the cold migration."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Documentation Impact"},{"line_number":173,"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":20,"id":"7a77a97e_aa81d74f","line":170,"range":{"start_line":166,"start_character":2,"end_line":170,"end_character":21},"updated":"2016-11-14 19:44:32.000000000","message":"The in-tree functional tests don\u0027t actually run with real services besides the nova services and the db/wsgi stack, they don\u0027t have cinder/glance/neutron/keystone - or libvirt for that matter, so I\u0027m not really sure how you\u0027re going to test this.\n\nI mean, obviously unit tests can hit each changed module to make sure we\u0027re calling this appropriately, but for functional tests everything would need to be stubbed out.\n\nWe could test this with tempest, but it seems racy. Looks like we don\u0027t have a tempest test for aborting a live migration either, probably for the same reason.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"6658a6d9390e1dbe541e956328fcf1cffe1d421d","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"The following tests is added."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Nova functional tests"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"  The functional testing will utilize the new cold migration CI job."},{"line_number":169,"context_line":"  An instance with a large disk will be used so we can test aborting"},{"line_number":170,"context_line":"  the cold migration."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Documentation Impact"},{"line_number":173,"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":20,"id":"7a77a97e_6426d6cf","line":170,"range":{"start_line":166,"start_character":2,"end_line":170,"end_character":21},"in_reply_to":"7a77a97e_aa81d74f","updated":"2016-11-16 00:52:05.000000000","message":"Add tempest tests if race condition could be solved.","commit_id":"64cd2294fb9e597b1c72d3d3162d5200e3bfeb2d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"d5dce72b9808d39025015a68335f5cc2bf27dead","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Reuse existing API for live-migration aborting,"},{"line_number":38,"context_line":"add the aborting cold migration function."},{"line_number":39,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":40,"context_line":"If executing the API, cancel copying ephemeral disks."},{"line_number":41,"context_line":"Then the VM instance is returned to the source host."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"An implementation in each driver is as follows:"}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a77a97e_eef7d188","line":40,"updated":"2016-11-17 11:56:03.000000000","message":"what about the root disk?","commit_id":"645d8c795bd9dd80d01bfec194ab2c34a2381a31"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"249883047b1f1fe51712cc5383c5c86645811437","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Reuse existing API for live-migration aborting,"},{"line_number":38,"context_line":"add the aborting cold migration function."},{"line_number":39,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":40,"context_line":"If executing the API, cancel copying ephemeral disks."},{"line_number":41,"context_line":"Then the VM instance is returned to the source host."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"An implementation in each driver is as follows:"}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a77a97e_e08b55c1","line":40,"in_reply_to":"7a77a97e_eef7d188","updated":"2016-11-17 14:53:47.000000000","message":"It\u0027s including a root ephemeral disk.","commit_id":"645d8c795bd9dd80d01bfec194ab2c34a2381a31"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"d5dce72b9808d39025015a68335f5cc2bf27dead","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    In the method, there is a \u0027for\u0027 statement and \u0027os.rename\u0027 is"},{"line_number":55,"context_line":"    called in it. So a way to cancel the loop (\u0027for\u0027 statement)"},{"line_number":56,"context_line":"    will be implemented in \u0027os-win\u0027 library. And it will be used"},{"line_number":57,"context_line":"    by nova to cancel a copying disks."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* VMware"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a77a97e_4e91a546","line":57,"updated":"2016-11-17 11:56:03.000000000","message":"Soo, this is a bit incorrect. os.rename is an atomic operation, or at least, very close to it, there isn\u0027t really a reason to cancel an os.rename.\n\nSecondly, os.rename is performed if the source and destination nodes have the same shared storage. Otherwise, os.copy is performed, which is what you will want to cancel.","commit_id":"645d8c795bd9dd80d01bfec194ab2c34a2381a31"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"249883047b1f1fe51712cc5383c5c86645811437","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    In the method, there is a \u0027for\u0027 statement and \u0027os.rename\u0027 is"},{"line_number":55,"context_line":"    called in it. So a way to cancel the loop (\u0027for\u0027 statement)"},{"line_number":56,"context_line":"    will be implemented in \u0027os-win\u0027 library. And it will be used"},{"line_number":57,"context_line":"    by nova to cancel a copying disks."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* VMware"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a77a97e_c0b9f97a","line":57,"in_reply_to":"7a77a97e_4e91a546","updated":"2016-11-17 14:53:47.000000000","message":"Done","commit_id":"645d8c795bd9dd80d01bfec194ab2c34a2381a31"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"d5dce72b9808d39025015a68335f5cc2bf27dead","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  - Xen"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a77a97e_ae5dd97a","line":172,"updated":"2016-11-17 11:56:03.000000000","message":"hm, i might be wrong, but AFAIK, new commands, such as this, should be added to the openstack-client directly.","commit_id":"645d8c795bd9dd80d01bfec194ab2c34a2381a31"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"249883047b1f1fe51712cc5383c5c86645811437","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"  - Xen"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":21,"id":"7a77a97e_c0473975","line":172,"in_reply_to":"7a77a97e_ae5dd97a","updated":"2016-11-17 14:53:47.000000000","message":"Added python-openstackclient.","commit_id":"645d8c795bd9dd80d01bfec194ab2c34a2381a31"}],"specs/pike/approved/abort-cold-migration.rst":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"eb929fd8dc3736f6e9ca974ac3e580f93c6ff654","unresolved":false,"context_lines":[{"line_number":77,"context_line":"The 400 error is returned in the following cases."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":80,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Security impact"},{"line_number":83,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"da36d5c6_4a4b86b0","line":80,"range":{"start_line":80,"start_character":1,"end_line":80,"end_character":79},"updated":"2017-02-22 09:55:59.000000000","message":"I think we should return 409 if state conflict?\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/common.py#L348","commit_id":"6cb4a521e65fc41f00ad2d0d658a83a911d426cc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"9d345908c7ab63497d1fe2c846970c898744b60a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"The 400 error is returned in the following cases."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":80,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Security impact"},{"line_number":83,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"da36d5c6_5810b201","line":80,"range":{"start_line":80,"start_character":1,"end_line":80,"end_character":79},"in_reply_to":"da36d5c6_4a4b86b0","updated":"2017-02-22 16:45:07.000000000","message":"It should be 404 error because of consistency with live migration case. I will fix it.\n\nhttps://github.com/openstack/nova/blob/486b90b24e9515678166d0b370e4daefe4e9e341/nova/api/openstack/compute/server_migrations.py#L124-L134","commit_id":"6cb4a521e65fc41f00ad2d0d658a83a911d426cc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"83c3f21c78053e85d0dcfa559a5a357012f2006e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"The 400 error is returned in the following cases."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":80,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Security impact"},{"line_number":83,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":35,"id":"da36d5c6_6d420d6a","line":80,"range":{"start_line":80,"start_character":1,"end_line":80,"end_character":79},"in_reply_to":"da36d5c6_5810b201","updated":"2017-02-22 19:48:33.000000000","message":"Sorry. My comment is not correct.\nThe 400 error in that case is correct.\n\nThe 409 error should be returned in wrong task state.","commit_id":"6cb4a521e65fc41f00ad2d0d658a83a911d426cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7bacaedcbfd162c35fb1baa801ea0a12228fcdeb","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"},{"line_number":8,"context_line":"Abort Cold Migration (libvirt)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"}],"source_content_type":"text/x-rst","patch_set":37,"id":"da36d5c6_bd740536","line":8,"range":{"start_line":8,"start_character":22,"end_line":8,"end_character":29},"updated":"2017-02-23 21:44:25.000000000","message":"Why is this just libvirt now? It used to be proposed for multiple virt drivers, and then we hit some complexity with hyper-v and now all of a sudden this is just libvirt.\n\nIn general we don\u0027t want REST APIs which only work with a single virt driver because that poses an interoperability issue (my client side code that can abort a cold migration on one cloud that uses libvirt will fail on another cloud that uses hyperv).","commit_id":"e5edf1df7f1ce3a937b222822071b1a4881c6d78"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"a6b3dde4e00fb5cee24c98043224b04c6fc0b667","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"},{"line_number":8,"context_line":"Abort Cold Migration (libvirt)"},{"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"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"}],"source_content_type":"text/x-rst","patch_set":37,"id":"da36d5c6_f653f714","line":8,"range":{"start_line":8,"start_character":22,"end_line":8,"end_character":29},"in_reply_to":"da36d5c6_bd740536","updated":"2017-02-24 03:02:57.000000000","message":"I don\u0027t know what the \"complexity\" on Hyper-V was. On cold migration, only the disk copy operations have to be cancelled, as those are the only long-lasting operations. We\u0027d only have to implement a way to cancel a copy operation in os-win.\n\nSo, I\u0027d be happy to help on this part, and we shouldn\u0027t block on this.","commit_id":"e5edf1df7f1ce3a937b222822071b1a4881c6d78"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9c146b84d498a8ea7c7d84500255ccbe82e6f5a4","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"For example:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Existing \u0027live-migration-abort\u0027 command will be deprecated,"},{"line_number":106,"context_line":"and it is integrated into \u0027migration-abort\u0027 command."}],"source_content_type":"text/x-rst","patch_set":37,"id":"da36d5c6_bdefa5e7","line":103,"updated":"2017-02-23 21:42:06.000000000","message":"Can\u0027t we make use of the migrate \"revert\" case, rather than have \"abort\" and revert?\n\nShould this not work for resize and migrate, since thats the same code path?","commit_id":"e5edf1df7f1ce3a937b222822071b1a4881c6d78"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d2f8992adf1108783f5b03c4d9f6cf2c6b8c933f","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"For example:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Existing \u0027live-migration-abort\u0027 command will be deprecated,"},{"line_number":106,"context_line":"and it is integrated into \u0027migration-abort\u0027 command."}],"source_content_type":"text/x-rst","patch_set":37,"id":"da36d5c6_20e61715","line":103,"in_reply_to":"da36d5c6_8df1bc6d","updated":"2017-02-24 14:34:07.000000000","message":"From the PTG, it makes more sense to keep the same REST API as the live-migration case.","commit_id":"e5edf1df7f1ce3a937b222822071b1a4881c6d78"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"73332466180bcf1855d72681c3758d189d966fe3","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"For example:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"nova migration-abort \u003cserver\u003e \u003cmigration\u003e"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Existing \u0027live-migration-abort\u0027 command will be deprecated,"},{"line_number":106,"context_line":"and it is integrated into \u0027migration-abort\u0027 command."}],"source_content_type":"text/x-rst","patch_set":37,"id":"da36d5c6_8df1bc6d","line":103,"in_reply_to":"da36d5c6_bdefa5e7","updated":"2017-02-24 14:16:05.000000000","message":"You\u0027re thinking to allow a \"revert\" of an in-progress migration?  If so, that makes sense to me.","commit_id":"e5edf1df7f1ce3a937b222822071b1a4881c6d78"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"84d270b68348b5c8df882ca22f7a4f6e4e1d9075","unresolved":false,"context_lines":[{"line_number":135,"context_line":"----------"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Cancel cold migration API operation"},{"line_number":138,"context_line":"* Cancelling a cold migration in libvirt"},{"line_number":139,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":140,"context_line":"* python-openstackclient"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":37,"id":"da36d5c6_9dcd8187","line":138,"range":{"start_line":138,"start_character":33,"end_line":138,"end_character":40},"updated":"2017-02-23 21:42:53.000000000","message":"Why is this just libvirt? That seems a shame here.","commit_id":"e5edf1df7f1ce3a937b222822071b1a4881c6d78"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"da132a1611550b8bdcf8c60f1c2b06d1cc4f36ce","unresolved":false,"context_lines":[{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 400 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba2be162_086d91cb","line":46,"updated":"2017-03-06 12:38:20.000000000","message":"This might be a good case for a 409. If the \"state\" of the migration is in \"conflict\" with the desired state, 409 is a reasonable response.\n\nIf, however, parity with other style of migration abort is desired, then do whatever they do.","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"049d3770a6f10117c673f27b172373de721b25c7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 400 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"7a25e98e_7c9316fb","line":46,"in_reply_to":"9a30ddce_1bcbb954","updated":"2017-03-14 00:05:38.000000000","message":"Done","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b9b35e7fc98c8f810fdb09b097e4773fd8d9007d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 400 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"9a30ddce_1bcbb954","line":46,"in_reply_to":"ba2be162_086d91cb","updated":"2017-03-08 12:49:53.000000000","message":"yea 409 make more sense here. Live migrate abort raise 400 in same case but +1 for making 409 in new API","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b9b35e7fc98c8f810fdb09b097e4773fd8d9007d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 400 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."}],"source_content_type":"text/x-rst","patch_set":38,"id":"9a30ddce_3bf4fd85","line":48,"range":{"start_line":47,"start_character":0,"end_line":48,"end_character":46},"updated":"2017-03-08 12:49:53.000000000","message":"at this time, what is task state ? if not migrating then its 409/400 right. Ignore request can create confusion on abort is successful.","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"049d3770a6f10117c673f27b172373de721b25c7","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 400 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."}],"source_content_type":"text/x-rst","patch_set":38,"id":"7a25e98e_fc9e2606","line":48,"range":{"start_line":47,"start_character":0,"end_line":48,"end_character":46},"in_reply_to":"9a30ddce_3bf4fd85","updated":"2017-03-14 00:05:38.000000000","message":"Just for the following case:\n\nWhen the API request reaches nova-api, the task state is \u0027resize_migrating\u0027 and the migration status is \u0027migrating\u0027.\nBut the request reaches nova-compute, copying ephemeral disks is finished.","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"da132a1611550b8bdcf8c60f1c2b06d1cc4f36ce","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The 409 error is returned in the following cases."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Security impact"},{"line_number":82,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba2be162_c8eb7911","line":79,"updated":"2017-03-06 12:38:20.000000000","message":"Why are the above 400 and this one 409? What\u0027s the difference?","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"049d3770a6f10117c673f27b172373de721b25c7","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The 409 error is returned in the following cases."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Security impact"},{"line_number":82,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":38,"id":"7a25e98e_9c90d2ee","line":79,"in_reply_to":"9a30ddce_5bc5313a","updated":"2017-03-14 00:05:38.000000000","message":"Done","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b9b35e7fc98c8f810fdb09b097e4773fd8d9007d","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The 409 error is returned in the following cases."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Security impact"},{"line_number":82,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":38,"id":"9a30ddce_5bc5313a","line":79,"in_reply_to":"ba2be162_c8eb7911","updated":"2017-03-08 12:49:53.000000000","message":"+1 for 409","commit_id":"cb39c6b8e34571305bbb7b47e72ff455918a8757"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5efccdf0565dcdab949941d7e7be69b8179a3058","unresolved":false,"context_lines":[{"line_number":67,"context_line":"That is, the same API for canceling a live migration is used"},{"line_number":68,"context_line":"for canceling a cold migration."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"3a1ff146_479f705f","line":70,"updated":"2017-03-14 14:19:32.000000000","message":"I don\u0027t think we currently list cold migrations at /servers/{server_id}/migrations ?\n\nThe API-ref says not:\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003did316-detail#id316\n\nI think if we want this approach, we need to first ensure cold and live-migrations are listed under /servers/{server_id}/migrations, then add this delete that matches the live-migrations. We probably need to include a \"type\" in that API.\n\nI think this should also include migrations due to resize, as they need to get cancelled for similar reasons.","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3728018d58805e4b50187f3abbadf41b7ef5167a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"That is, the same API for canceling a live migration is used"},{"line_number":68,"context_line":"for canceling a cold migration."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"1a1ced50_99d487ec","line":70,"in_reply_to":"3a1ff146_479f705f","updated":"2017-03-23 05:10:30.000000000","message":"\u003e I don\u0027t think we currently list cold migrations at /servers/{server_id}/migrations ?\n\nYou are right.\n\n\u003e we need to first ensure cold and live-migrations are listed under /servers/{server_id}/migrations\n\nI submitted the following spec.\n\nhttps://review.openstack.org/#/c/407237/\n\n\u003e I think this should also include migrations due to resize\n\nResize can be performed by users. So it is not include in the use case.","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5efccdf0565dcdab949941d7e7be69b8179a3058","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"3a1ff146_077c981f","line":74,"updated":"2017-03-14 14:19:32.000000000","message":"So we fail for resize? Why, thats doing exactly the same thing?\n\nI guess this works for live-migration too, based on the existing API?","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3728018d58805e4b50187f3abbadf41b7ef5167a","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"1a1ced50_390ab38a","line":74,"in_reply_to":"3a1ff146_077c981f","updated":"2017-03-23 05:10:30.000000000","message":"\u003e I guess this works for live-migration too, based on the existing API?\n\nYes.","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5efccdf0565dcdab949941d7e7be69b8179a3058","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"3a1ff146_c7fd2070","line":76,"updated":"2017-03-14 14:19:32.000000000","message":"We don\u0027t talk about what happens when we need to call resize confirm or revert? I assume DELETE only works when the migration is in progress. It would be good to cover that in more detail here.","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3728018d58805e4b50187f3abbadf41b7ef5167a","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not \u0027migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"1a1ced50_5934cf48","line":76,"in_reply_to":"3a1ff146_c7fd2070","updated":"2017-03-23 05:10:30.000000000","message":"\u003e resize confirm or revert\n\nWhen the state is resize confirm or revert, the request is not accepted.\nSo 409 is error returned.","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5efccdf0565dcdab949941d7e7be69b8179a3058","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Notifications impact"},{"line_number":84,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"3a1ff146_472050f8","line":81,"updated":"2017-03-14 14:19:32.000000000","message":"We don\u0027t talk about the policy here. I assume we default this to an admin only API?","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3728018d58805e4b50187f3abbadf41b7ef5167a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Notifications impact"},{"line_number":84,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":40,"id":"1a1ced50_f9701b42","line":81,"in_reply_to":"3a1ff146_472050f8","updated":"2017-03-23 05:10:30.000000000","message":"Yes.","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4796e3bb788f1c0f72daf1a5fa6009d5c0b7fc31","unresolved":false,"context_lines":[{"line_number":135,"context_line":"Dependencies"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"None"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":40,"id":"3a1ff146_7fe5c8a6","line":138,"updated":"2017-03-14 18:02:13.000000000","message":"Ah, so I think we should depend on this one:\nhttps://review.openstack.org/#/c/407237/","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3728018d58805e4b50187f3abbadf41b7ef5167a","unresolved":false,"context_lines":[{"line_number":135,"context_line":"Dependencies"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"None"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":40,"id":"1a1ced50_799b4b66","line":138,"in_reply_to":"3a1ff146_7fe5c8a6","updated":"2017-03-23 05:10:30.000000000","message":"Done","commit_id":"7f0a4980280fee0b9718bd81c48095c451ed3291"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4444a75ca2993b9a6ae1386f0585f66143af1d56","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"None"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Notifications impact"},{"line_number":84,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":43,"id":"dfeb2761_6fb570ee","line":81,"range":{"start_line":80,"start_character":0,"end_line":81,"end_character":4},"updated":"2017-03-31 02:06:36.000000000","message":"as John mentioned, we can explicitly mention default policy but that is already there for this API and no change so for me ot is fine to leave it as None","commit_id":"cb53adc694ae07e71ad68d5789c2a40aa5abc551"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"204d4096a2a9f6bea76203dfa9f9d0c0e4135f92","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_d43dc28f","line":13,"updated":"2017-04-04 12:16:19.000000000","message":"\"state of\" ?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_e46a47eb","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":23},"updated":"2017-04-04 17:48:34.000000000","message":"abort","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"fbde5b44583501c00b30eeedc7eb0115ba2fb91d","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_2206de1e","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":23},"in_reply_to":"dfeb2761_e46a47eb","updated":"2017-04-04 20:30:22.000000000","message":"+1","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_f3dafc75","line":13,"range":{"start_line":13,"start_character":17,"end_line":13,"end_character":23},"in_reply_to":"dfeb2761_e46a47eb","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"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":44,"id":"dfeb2761_df6dcecc","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":24},"updated":"2017-04-04 17:48:34.000000000","message":"Shouldn\u0027t it be general case to abort cold migration, rather than just incase of copying disks?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"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":44,"id":"dfeb2761_b3e0f427","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":24},"in_reply_to":"dfeb2761_82eecaea","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"fbde5b44583501c00b30eeedc7eb0115ba2fb91d","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/abort-cold-migration"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Provide a way to cancel a cold migration in the state"},{"line_number":14,"context_line":"copying ephemeral disks."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem description"},{"line_number":17,"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":44,"id":"dfeb2761_82eecaea","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":24},"in_reply_to":"dfeb2761_df6dcecc","updated":"2017-04-04 20:30:22.000000000","message":"+1. As we already have this information in problem description, it better to have a broader use case here.","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In cold migrations, copying ephemeral disks is performed,"},{"line_number":20,"context_line":"it takes a long time if the size of the disks are large."},{"line_number":21,"context_line":"If starting the VM instance during copying ephemeral disks,"},{"line_number":22,"context_line":"it is necessary to wait for cold migration completion."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_1f01f605","line":20,"range":{"start_line":20,"start_character":21,"end_line":20,"end_character":55},"updated":"2017-04-04 17:48:34.000000000","message":"for larger drives","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In cold migrations, copying ephemeral disks is performed,"},{"line_number":20,"context_line":"it takes a long time if the size of the disks are large."},{"line_number":21,"context_line":"If starting the VM instance during copying ephemeral disks,"},{"line_number":22,"context_line":"it is necessary to wait for cold migration completion."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_4429f398","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":8},"updated":"2017-04-04 17:48:34.000000000","message":"nit: which could take","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In cold migrations, copying ephemeral disks is performed,"},{"line_number":20,"context_line":"it takes a long time if the size of the disks are large."},{"line_number":21,"context_line":"If starting the VM instance during copying ephemeral disks,"},{"line_number":22,"context_line":"it is necessary to wait for cold migration completion."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_c11b9ec7","line":20,"range":{"start_line":20,"start_character":21,"end_line":20,"end_character":55},"in_reply_to":"dfeb2761_1f01f605","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In cold migrations, copying ephemeral disks is performed,"},{"line_number":20,"context_line":"it takes a long time if the size of the disks are large."},{"line_number":21,"context_line":"If starting the VM instance during copying ephemeral disks,"},{"line_number":22,"context_line":"it is necessary to wait for cold migration completion."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_817fd6de","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":8},"in_reply_to":"dfeb2761_4429f398","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Administrators migrate users\u0027 stopped VM instances."},{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of administrator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":44,"id":"dfeb2761_bf2a0a29","line":32,"range":{"start_line":27,"start_character":0,"end_line":32,"end_character":18},"updated":"2017-04-04 17:48:34.000000000","message":"Operators need a choice to abort any long running migration operation?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Administrators migrate users\u0027 stopped VM instances."},{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of administrator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":44,"id":"dfeb2761_6159728c","line":32,"range":{"start_line":27,"start_character":0,"end_line":32,"end_character":18},"in_reply_to":"dfeb2761_bf2a0a29","updated":"2017-04-05 09:22:06.000000000","message":"Yes.Done.","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"85eaed4ff2b362d9510254eaa8f35536364670e2","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_a4b0bf44","line":48,"range":{"start_line":47,"start_character":0,"end_line":48,"end_character":46},"updated":"2017-04-04 17:09:11.000000000","message":"Could there be any other reason to abort a cold migration? Or is the only reason that the copying is taking too long?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_e17d82b2","line":48,"range":{"start_line":47,"start_character":0,"end_line":48,"end_character":46},"in_reply_to":"dfeb2761_a4b0bf44","updated":"2017-04-05 09:22:06.000000000","message":"\u003e is the only reason that the copying is taking too long?\n\nYes.","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"204d4096a2a9f6bea76203dfa9f9d0c0e4135f92","unresolved":false,"context_lines":[{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_54e53208","line":51,"updated":"2017-04-04 12:16:19.000000000","message":"Does it make sense to make the inter-dependencies more clear:\n\nThe required functionality to list...\n\n?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_9f23c656","line":51,"range":{"start_line":51,"start_character":10,"end_line":51,"end_character":13},"updated":"2017-04-04 17:48:34.000000000","message":"[1]_","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_5c1f755a","line":51,"in_reply_to":"dfeb2761_54e53208","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_1c3d6dc3","line":51,"range":{"start_line":51,"start_character":10,"end_line":51,"end_character":13},"in_reply_to":"dfeb2761_9f23c656","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":19590,"name":"Sarafraj Singh","email":"Sarafraj.Singh@intel.com","username":"sarafrajsingh"},"change_message_id":"e83d6871a337f122e210f70cfe6cd1bafb28a292","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_3f995a78","line":52,"updated":"2017-04-04 17:48:34.000000000","message":"So how are you going to take care of upgrades?","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations will be added by the other"},{"line_number":51,"context_line":"blueprint [1]."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Alternatives"},{"line_number":54,"context_line":"------------"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_5c965540","line":52,"in_reply_to":"dfeb2761_3f995a78","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"fbde5b44583501c00b30eeedc7eb0115ba2fb91d","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_5343f6af","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":43},"updated":"2017-04-04 20:30:22.000000000","message":"I have a suggestion over here, not sure if it makes sense\n\n1) It would be great if you could explain what was being checked in live-migration-abort and what error codes codes were returned like 400, 404 and 409 before your change and what changes you would like to have and how does it affect the error codes being returned.\n\n2) \"The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027\" , shouldn\u0027t this return error code 404 than 409 as it can used in following situations where the user might be able to resolve the conflict and resubmit the request. In above scenario migration state is not controlled by client, so I think would be suitable one.","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"02b507b7965a9e8e363d203c8b3b0927583a618e","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_f3ce8a2b","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":43},"in_reply_to":"dfeb2761_5343f6af","updated":"2017-04-04 20:34:15.000000000","message":"Typo in last line, I was about to convey that 404 looks more apt than 409 for invalid migration state","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The 409 error is returned in the following cases."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027."},{"line_number":75,"context_line":"* The migration type is \u0027migration\u0027 and the migration state is not \u0027migrating\u0027."},{"line_number":76,"context_line":"* The task state is not \u0027resize_migrating\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Security impact"},{"line_number":79,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_229928c3","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":43},"in_reply_to":"dfeb2761_f3ce8a2b","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"fbde5b44583501c00b30eeedc7eb0115ba2fb91d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Work Items"},{"line_number":127,"context_line":"----------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* Cancel cold migration API operation"},{"line_number":130,"context_line":"* Cancelling a cold migration for each backend"},{"line_number":131,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":132,"context_line":"* python-openstackclient"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_42868268","line":129,"range":{"start_line":129,"start_character":2,"end_line":129,"end_character":9},"updated":"2017-04-04 20:30:22.000000000","message":"nit: usage of abort looks better for me in place of cancel.","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bbce291b4762e88cf3a36c5d9e65d842d50b3faf","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Work Items"},{"line_number":127,"context_line":"----------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* Cancel cold migration API operation"},{"line_number":130,"context_line":"* Cancelling a cold migration for each backend"},{"line_number":131,"context_line":"* python-novaclient \u0027nova migration-abort\u0027"},{"line_number":132,"context_line":"* python-openstackclient"}],"source_content_type":"text/x-rst","patch_set":44,"id":"dfeb2761_5ca2d5fd","line":129,"range":{"start_line":129,"start_character":2,"end_line":129,"end_character":9},"in_reply_to":"dfeb2761_42868268","updated":"2017-04-05 09:22:06.000000000","message":"Done","commit_id":"30ed2f8d76e97fd466f8113a440b1aa6e6ebfbba"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ab770ca0d4270d2008c383795941eb58952e9ec6","unresolved":false,"context_lines":[{"line_number":102,"context_line":"     - 404"},{"line_number":103,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":104,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":105,"context_line":"     - 409"},{"line_number":106,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":45,"id":"dfeb2761_628050c0","line":105,"range":{"start_line":105,"start_character":7,"end_line":105,"end_character":10},"updated":"2017-04-05 09:25:57.000000000","message":"See the following comments in PS38.\n\nhttps://review.openstack.org/#/c/334732/38/specs/pike/approved/abort-cold-migration.rst@46","commit_id":"de0795ba7c3fb65683900272d5d999829e3f66e7"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"d70d49daa4f6de41e0aca0425a5b7b64e6226632","unresolved":false,"context_lines":[{"line_number":102,"context_line":"     - 404"},{"line_number":103,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":104,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":105,"context_line":"     - 409"},{"line_number":106,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":45,"id":"bff0334d_c3644bbc","line":105,"range":{"start_line":105,"start_character":7,"end_line":105,"end_character":10},"in_reply_to":"dfeb2761_628050c0","updated":"2017-04-06 02:02:50.000000000","message":"Thanks for the update Takashi! Saw the comments in patchset38. As per RFC guidelines(https://tools.ietf.org/html/rfc7231.html#section-6.5.8), 409 can be used in situations where the user might be\nable to resolve the conflict and resubmit the request. In above scenario, user is not controlling the state of migration and \u0027invalid migration state\u0027 implicitly says that migration has been completed(guess so correct me if I am wrong). Considering this I would like to have error code as 404 if state of target is temporary or permanent. It can be 410 as well if its gonna be permanent. Like to have others thoughts on this.","commit_id":"de0795ba7c3fb65683900272d5d999829e3f66e7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"ab770ca0d4270d2008c383795941eb58952e9ec6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     - 409"},{"line_number":106,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 409"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":45,"id":"dfeb2761_42854cce","line":108,"range":{"start_line":108,"start_character":7,"end_line":108,"end_character":10},"updated":"2017-04-05 09:25:57.000000000","message":"ditto","commit_id":"de0795ba7c3fb65683900272d5d999829e3f66e7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e3d6ace6d6091da65c8d2b058afa99f789723bda","unresolved":false,"context_lines":[{"line_number":104,"context_line":"     - 404"},{"line_number":105,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":106,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":107,"context_line":"     - 409"},{"line_number":108,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":109,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":110,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":46,"id":"dfeb2761_f698a5c0","line":107,"range":{"start_line":107,"start_character":7,"end_line":107,"end_character":10},"updated":"2017-04-05 09:35:35.000000000","message":"See the following comments in PS38.\n\nhttps://review.openstack.org/#/c/334732/38/specs/pike/approved/abort-cold-migration.rst@46","commit_id":"c0dc72c914c13769582ec3ea3bb76d5eca03f59e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e3d6ace6d6091da65c8d2b058afa99f789723bda","unresolved":false,"context_lines":[{"line_number":107,"context_line":"     - 409"},{"line_number":108,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":109,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":110,"context_line":"     - 409"},{"line_number":111,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":112,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":113,"context_line":"     - 400"}],"source_content_type":"text/x-rst","patch_set":46,"id":"dfeb2761_b68e9d76","line":110,"range":{"start_line":110,"start_character":7,"end_line":110,"end_character":10},"updated":"2017-04-05 09:35:35.000000000","message":"ditto","commit_id":"c0dc72c914c13769582ec3ea3bb76d5eca03f59e"}],"specs/queens/approved/abort-cold-migration.rst":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"02a1383f9870ebecf0a61eac17d398e0d5cd276b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations is required."},{"line_number":51,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":56,"id":"9f436f4f_4288571e","line":48,"range":{"start_line":48,"start_character":18,"end_line":48,"end_character":46},"updated":"2017-08-08 12:11:36.000000000","message":"This is never good in an API. If I request something be aborted, and it doesn\u0027t happen, I would expect to be notified that the abortion failed because the process had already completed.","commit_id":"9e7be2af7633a622a223ef2ad17e8375cd03e236"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"db2edb85859ba0291225a698d787a07b72dab5ed","unresolved":false,"context_lines":[{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, the request is just ignored."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"The function to list cold migrations is required."},{"line_number":51,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":56,"id":"9f436f4f_bde2f89e","line":48,"range":{"start_line":48,"start_character":18,"end_line":48,"end_character":46},"in_reply_to":"9f436f4f_4288571e","updated":"2017-08-14 05:42:53.000000000","message":"Done","commit_id":"9e7be2af7633a622a223ef2ad17e8375cd03e236"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"02a1383f9870ebecf0a61eac17d398e0d5cd276b","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"When upgrading, if old compute nodes recieve the request"},{"line_number":54,"context_line":"to abort cold migration, the exception"},{"line_number":55,"context_line":"(AbortColdMigrationWithOldNovaNotSupported) is raised."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":56,"id":"9f436f4f_22a2f39b","line":55,"updated":"2017-08-08 12:11:36.000000000","message":"Your other sections mention API responses. You also should include that this will return a 400 Bad Request in the case of an older compute node.","commit_id":"9e7be2af7633a622a223ef2ad17e8375cd03e236"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"db2edb85859ba0291225a698d787a07b72dab5ed","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"When upgrading, if old compute nodes recieve the request"},{"line_number":54,"context_line":"to abort cold migration, the exception"},{"line_number":55,"context_line":"(AbortColdMigrationWithOldNovaNotSupported) is raised."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":56,"id":"9f436f4f_9de1742d","line":55,"in_reply_to":"9f436f4f_22a2f39b","updated":"2017-08-14 05:42:53.000000000","message":"It is mentioned in line 111 - 113.\nDone.","commit_id":"9e7be2af7633a622a223ef2ad17e8375cd03e236"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"02a1383f9870ebecf0a61eac17d398e0d5cd276b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":98,"context_line":"       (InvalidMigrationType)"},{"line_number":99,"context_line":"     - 400"},{"line_number":100,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrationg"},{"line_number":101,"context_line":"       (InstanceInvalidState)"},{"line_number":102,"context_line":"     - 409"},{"line_number":103,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"}],"source_content_type":"text/x-rst","patch_set":56,"id":"9f436f4f_42b617dc","line":100,"range":{"start_line":100,"start_character":52,"end_line":100,"end_character":62},"updated":"2017-08-08 12:11:36.000000000","message":"migrating","commit_id":"9e7be2af7633a622a223ef2ad17e8375cd03e236"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"db2edb85859ba0291225a698d787a07b72dab5ed","unresolved":false,"context_lines":[{"line_number":97,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":98,"context_line":"       (InvalidMigrationType)"},{"line_number":99,"context_line":"     - 400"},{"line_number":100,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrationg"},{"line_number":101,"context_line":"       (InstanceInvalidState)"},{"line_number":102,"context_line":"     - 409"},{"line_number":103,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"}],"source_content_type":"text/x-rst","patch_set":56,"id":"9f436f4f_9db3b44d","line":100,"range":{"start_line":100,"start_character":52,"end_line":100,"end_character":62},"in_reply_to":"9f436f4f_42b617dc","updated":"2017-08-14 05:42:53.000000000","message":"Done","commit_id":"9e7be2af7633a622a223ef2ad17e8375cd03e236"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"548f66fab604ec4a7450e021910658cc12ea6e4d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"When upgrading, if old compute nodes recieve the request"},{"line_number":55,"context_line":"to abort cold migration, the exception"},{"line_number":56,"context_line":"(AbortColdMigrationWithOldNovaNotSupported) is raised."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_c76802f6","line":54,"updated":"2017-08-16 15:04:18.000000000","message":"receive","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d84871f1a6dc8fc7e99bdf786562183cf3994629","unresolved":false,"context_lines":[{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"When upgrading, if old compute nodes recieve the request"},{"line_number":55,"context_line":"to abort cold migration, the exception"},{"line_number":56,"context_line":"(AbortColdMigrationWithOldNovaNotSupported) is raised."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_24b7b5f7","line":54,"in_reply_to":"9f436f4f_c76802f6","updated":"2017-08-17 09:07:20.000000000","message":"Done","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"548f66fab604ec4a7450e021910658cc12ea6e4d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_8210a801","line":100,"updated":"2017-08-16 15:04:18.000000000","message":"This may have already been discussed in earlier revisions, but why is this a 400 instead of a 409. As far as I can tell, the type of migration is a \"server side state\" and our request to abort must fail because the state of the server is not one where abort can happen.\n\nIs something else going on?","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2b47ee5fab95c55f5b4a238ea0cd5959e66391c0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_265b0288","line":100,"in_reply_to":"9f436f4f_27c1e081","updated":"2017-08-18 21:24:00.000000000","message":"ChrisD, I think Takashi is suggesting that 400 is appropriate if the user inputs the wrong migration ID.  On the other hand, I think you are suggesting that 409 is correct for the server_id/migration_id tuple that was specified.  I think both of you are correct, but I\u0027d lean towards keeping it 409 if no other reason that it would match the similar cases where the task state or migration state is incorrect.","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e3e9287d18942774d837a0a8e28cb4424415d6e6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_e20f5d2b","line":100,"in_reply_to":"9f436f4f_67681ff4","updated":"2017-08-17 09:13:29.000000000","message":"Oh, you mean that \u0027migration\u0027 or \u0027live-migration\u0027 has not been expressed in the request? I think that could be made more clear, if that\u0027s what it is.","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d84871f1a6dc8fc7e99bdf786562183cf3994629","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_67681ff4","line":100,"in_reply_to":"9f436f4f_8210a801","updated":"2017-08-17 09:07:20.000000000","message":"This case is the case that wrong migration (ID) is specified.\nThe \u0027migration\u0027 or \u0027live-migration\u0027 should be specified, but not.\n\nSo 400 error is appropriate.","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"3ef478fa352bdd645dbe877bc46a4d4398f95187","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_27c1e081","line":100,"in_reply_to":"9f436f4f_e20f5d2b","updated":"2017-08-18 01:24:39.000000000","message":"\u003e Oh, you mean that \u0027migration\u0027 or \u0027live-migration\u0027 has not been expressed in the request?\n\nYes.\nUsers can specify \u0027server_id\u0027 and \u0027migration_id\u0027 only.\n\n* DELETE /servers/{server_id}/migrations/{migration_id}","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"548f66fab604ec4a7450e021910658cc12ea6e4d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     - 409"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_c2c11056","line":114,"updated":"2017-08-16 15:04:18.000000000","message":"this too, why not 409?\n\n400 is usually associated with something that could be changed in the request in order to make the request successful.","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e3e9287d18942774d837a0a8e28cb4424415d6e6","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     - 409"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_824f7169","line":114,"in_reply_to":"9f436f4f_a7c28751","updated":"2017-08-17 09:13:29.000000000","message":"That still sounds like state on the server side being in conflict with the request. But if the idea here is to preserve existing behavior, perhaps that makes sense.","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d84871f1a6dc8fc7e99bdf786562183cf3994629","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     - 409"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":57,"id":"9f436f4f_a7c28751","line":114,"in_reply_to":"9f436f4f_c2c11056","updated":"2017-08-17 09:07:20.000000000","message":"There is an example. It is LiveMigrationWithOldNovaNotSupported case.\n\nhttps://github.com/openstack/nova/blob/f28da08a1b26b789f3520672facff9e7e25aa60b/nova/api/openstack/compute/migrate_server.py#L112","commit_id":"3534bb2f2ed36f773d8d0e54829bd96d90d84d99"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"516024274af0c0bfa4a7c7e27776f2dae1001e46","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_565dd276","line":100,"updated":"2017-10-02 20:08:22.000000000","message":"nit: better to put BadRequest like 400 (BadRequest) for easy-understanding. The following ones also are commented as the same.","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bb0e843d5217abc95b188ea553f6e3722a278f08","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_0dfce06d","line":100,"in_reply_to":"7f515b1d_565dd276","updated":"2017-10-03 07:46:58.000000000","message":"Done","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"516024274af0c0bfa4a7c7e27776f2dae1001e46","unresolved":false,"context_lines":[{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_16251a09","line":103,"updated":"2017-10-02 20:08:22.000000000","message":"I am guessing this case would be 400 (BadRequest) because this is not a conflict situation and api-wg guidelines says similar thing like\n\n If a request is made which attempts to perform an action on\n a resource which is already performing that action and\n therefore the request cannot be fulfilled (for example,\n snapshotting an instance which is already in the process of\n snapshotting), the return code should be 409 Conflict.\n\nas https://github.com/openstack/api-wg/blob/master/guidelines/http.rst","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bb0e843d5217abc95b188ea553f6e3722a278f08","unresolved":false,"context_lines":[{"line_number":100,"context_line":"     - 400"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_506eefc8","line":103,"in_reply_to":"7f515b1d_16251a09","updated":"2017-10-03 07:46:58.000000000","message":"Done","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"516024274af0c0bfa4a7c7e27776f2dae1001e46","unresolved":false,"context_lines":[{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 409"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_36ddb6df","line":105,"updated":"2017-10-02 20:08:22.000000000","message":"Yeah, this is valid code.","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"516024274af0c0bfa4a7c7e27776f2dae1001e46","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 409"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_d6dd42dd","line":108,"updated":"2017-10-02 20:08:22.000000000","message":"ditto: this can be 400 I think.","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bb0e843d5217abc95b188ea553f6e3722a278f08","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 409"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 409"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_b05c0319","line":108,"in_reply_to":"7f515b1d_d6dd42dd","updated":"2017-10-03 07:46:58.000000000","message":"Done","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"516024274af0c0bfa4a7c7e27776f2dae1001e46","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     - 409"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 409"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_b6f2c66e","line":111,"updated":"2017-10-02 20:08:22.000000000","message":"ditto","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bb0e843d5217abc95b188ea553f6e3722a278f08","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     - 409"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 409"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_f066fbec","line":111,"in_reply_to":"7f515b1d_b6f2c66e","updated":"2017-10-03 07:46:58.000000000","message":"Done","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"516024274af0c0bfa4a7c7e27776f2dae1001e46","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     - 409"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":60,"id":"7f515b1d_96f58a59","line":114,"updated":"2017-10-02 20:08:22.000000000","message":"OK, 400 is good for me in this case.","commit_id":"3e8423d8063925ddb25b415096b659fcc9953afc"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f4833889ff8b9de6037ce916940e2b385a7db572","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400(BadRequest)"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_9c524034","line":100,"updated":"2017-10-03 12:10:40.000000000","message":"I know this was talked about before, but I\u0027m still unclear why this isn\u0027t 409. Your request to delete is in conflict with the state of the server.\n\nIf it must be 400, can there be more explanation of why here?","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"643e64b642fd8c9e7036fd6679be823d5746b570","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400(BadRequest)"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_a40c8142","line":100,"in_reply_to":"7f515b1d_9c524034","updated":"2017-10-05 10:29:22.000000000","message":"This is like request to abort a migration which is not \u0027cold migration\u0027 or \u0027live migration\u0027.\n\nHere migration_id is not of correct migration so if user provide the correct migration_id then it will be successful.\n\nI think 400 is more better here as user requested the wrong migration to abort which is not supported.","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d447c9c793da31413c0c21fa5adb978efa1b44cb","unresolved":false,"context_lines":[{"line_number":97,"context_line":"     - Return code"},{"line_number":98,"context_line":"   * - The migration type is not in \u0027migration\u0027, \u0027live-migration\u0027"},{"line_number":99,"context_line":"       (InvalidMigrationType)"},{"line_number":100,"context_line":"     - 400(BadRequest)"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_b28f042d","line":100,"in_reply_to":"7f515b1d_a40c8142","updated":"2017-10-06 06:41:38.000000000","message":"I added the reason in PS62.","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f4833889ff8b9de6037ce916940e2b385a7db572","unresolved":false,"context_lines":[{"line_number":100,"context_line":"     - 400(BadRequest)"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_7c330415","line":103,"updated":"2017-10-03 12:10:40.000000000","message":"same","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"643e64b642fd8c9e7036fd6679be823d5746b570","unresolved":false,"context_lines":[{"line_number":100,"context_line":"     - 400(BadRequest)"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_ee76d73e","line":103,"in_reply_to":"7f515b1d_7c330415","updated":"2017-10-05 10:29:22.000000000","message":"when this case can occur? i mean during \u0027pre-migrating\u0027 or \u0027post-migrating\u0027 state? if so then 409 is right one.\n\nif you can tell the exact scenario for this case, then it will be easy to analyze the 400 vs 409","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d447c9c793da31413c0c21fa5adb978efa1b44cb","unresolved":false,"context_lines":[{"line_number":100,"context_line":"     - 400(BadRequest)"},{"line_number":101,"context_line":"   * - The task state is not \u0027migrating\u0027 or \u0027resize-migrating\u0027"},{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_929e4861","line":103,"in_reply_to":"7f515b1d_ee76d73e","updated":"2017-10-06 06:41:38.000000000","message":"I changed it to 409 in PS62.","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f4833889ff8b9de6037ce916940e2b385a7db572","unresolved":false,"context_lines":[{"line_number":102,"context_line":"       (InstanceInvalidState)"},{"line_number":103,"context_line":"     - 400(BadRequest)"},{"line_number":104,"context_line":"   * - The migration record is not found (MigrationNotFoundForInstance)"},{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_5c360805","line":105,"updated":"2017-10-03 12:10:40.000000000","message":"good","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f4833889ff8b9de6037ce916940e2b385a7db572","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 400(BadRequest)"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_fc26d4cd","line":108,"updated":"2017-10-03 12:10:40.000000000","message":"why not 409? (see above)","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d447c9c793da31413c0c21fa5adb978efa1b44cb","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 400(BadRequest)"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_528a101b","line":108,"in_reply_to":"7f515b1d_ee1a5715","updated":"2017-10-06 06:41:38.000000000","message":"I changed it to 409.","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"643e64b642fd8c9e7036fd6679be823d5746b570","unresolved":false,"context_lines":[{"line_number":105,"context_line":"     - 404"},{"line_number":106,"context_line":"   * - The migration type is \u0027migration\u0027 and the migration state is not"},{"line_number":107,"context_line":"       \u0027migrating\u0027 (InvalidMigrationState)"},{"line_number":108,"context_line":"     - 400(BadRequest)"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 400(BadRequest)"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_ee1a5715","line":108,"in_reply_to":"7f515b1d_fc26d4cd","updated":"2017-10-05 10:29:22.000000000","message":"+1 for 409. Scenario here is if migration is in \u0027pre-migrating\u0027 or \u0027post-migrating\u0027 state. it is clear case of state conflict and 409 is right choice to return.","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f4833889ff8b9de6037ce916940e2b385a7db572","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     - 400(BadRequest)"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 400(BadRequest)"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_dc21d8b5","line":111,"updated":"2017-10-03 12:10:40.000000000","message":"same","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d447c9c793da31413c0c21fa5adb978efa1b44cb","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     - 400(BadRequest)"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 400(BadRequest)"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_f2869c13","line":111,"in_reply_to":"7f515b1d_ceeafbd6","updated":"2017-10-06 06:41:38.000000000","message":"ditto","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"643e64b642fd8c9e7036fd6679be823d5746b570","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     - 400(BadRequest)"},{"line_number":109,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":110,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":111,"context_line":"     - 400(BadRequest)"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_ceeafbd6","line":111,"in_reply_to":"7f515b1d_dc21d8b5","updated":"2017-10-05 10:29:22.000000000","message":"+1. This is case when migration is in \u0027queued\u0027, \u0027preparing\u0027, or \u0027post-migrating\u0027 state","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"f4833889ff8b9de6037ce916940e2b385a7db572","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     - 400(BadRequest)"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_7c1c2477","line":114,"updated":"2017-10-03 12:10:40.000000000","message":"this could also be a 409, depending on how you look","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d447c9c793da31413c0c21fa5adb978efa1b44cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"     - 400(BadRequest)"},{"line_number":112,"context_line":"   * - The old compute node does not support aborting cold migration"},{"line_number":113,"context_line":"       (AbortColdMigrationWithOldNovaNotSupported)"},{"line_number":114,"context_line":"     - 400"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":61,"id":"7f515b1d_9277683b","line":114,"in_reply_to":"7f515b1d_7c1c2477","updated":"2017-10-06 06:41:38.000000000","message":"Keep 400. I added the reason in PS62","commit_id":"da87b4da86b86ad19f87cc200e728ae62853b880"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"102e2def6018dd2c522826726499880a054aab68","unresolved":false,"context_lines":[{"line_number":72,"context_line":"That is, the same API for aborting a live migration is used"},{"line_number":73,"context_line":"for aborting a cold migration."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Currently HTTP response code are as follows:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":62,"id":"5f4e5783_ee742f38","line":75,"range":{"start_line":75,"start_character":30,"end_line":75,"end_character":40},"updated":"2017-10-16 05:50:15.000000000","message":"After the abort of migration is done, what is the status of the migration record?","commit_id":"62e2803282b7b8f0af93984adf9d8f74b5ecc2ee"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cc6325a53cd3e18f50895444d5ffa0962e653da2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"That is, the same API for aborting a live migration is used"},{"line_number":73,"context_line":"for aborting a cold migration."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* DELETE /servers/{server_id}/migrations/{migration_id}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Currently HTTP response code are as follows:"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":62,"id":"5f4e5783_e27443d1","line":75,"range":{"start_line":75,"start_character":30,"end_line":75,"end_character":40},"in_reply_to":"5f4e5783_ee742f38","updated":"2017-10-16 07:17:42.000000000","message":"\u0027cancelled\u0027.\nI added it in line 58-59, PS64.","commit_id":"62e2803282b7b8f0af93984adf9d8f74b5ecc2ee"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1fc64ad845be1556cdc95b449fc579459308529c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"     - 409(Conflict)"},{"line_number":114,"context_line":"     - If the migration state will be changed,"},{"line_number":115,"context_line":"       the request may be successful later."},{"line_number":116,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":117,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":118,"context_line":"     - 409(Conflict)"},{"line_number":119,"context_line":"     - If the migration state will be changed,"},{"line_number":120,"context_line":"       the request may be successful later."},{"line_number":121,"context_line":"   * - The old compute node does not support aborting cold migration"}],"source_content_type":"text/x-rst","patch_set":62,"id":"7f515b1d_0bbaec6c","line":118,"range":{"start_line":116,"start_character":0,"end_line":118,"end_character":20},"updated":"2017-10-09 10:18:16.000000000","message":"This is changing the existing return code(L88) for live migration right?","commit_id":"62e2803282b7b8f0af93984adf9d8f74b5ecc2ee"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"160cb2dc629908bb44838341a61399eddcc057e9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"     - 409(Conflict)"},{"line_number":114,"context_line":"     - If the migration state will be changed,"},{"line_number":115,"context_line":"       the request may be successful later."},{"line_number":116,"context_line":"   * - The migration type is \u0027live-migration\u0027 and the migration state is not"},{"line_number":117,"context_line":"       \u0027running\u0027 (InvalidMigrationState)"},{"line_number":118,"context_line":"     - 409(Conflict)"},{"line_number":119,"context_line":"     - If the migration state will be changed,"},{"line_number":120,"context_line":"       the request may be successful later."},{"line_number":121,"context_line":"   * - The old compute node does not support aborting cold migration"}],"source_content_type":"text/x-rst","patch_set":62,"id":"5f4e5783_dfc1c382","line":118,"range":{"start_line":116,"start_character":0,"end_line":118,"end_character":20},"in_reply_to":"7f515b1d_0bbaec6c","updated":"2017-10-10 05:50:49.000000000","message":"Yes.","commit_id":"62e2803282b7b8f0af93984adf9d8f74b5ecc2ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"102e2def6018dd2c522826726499880a054aab68","unresolved":false,"context_lines":[{"line_number":133,"context_line":"Notifications impact"},{"line_number":134,"context_line":"--------------------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Other end user impact"},{"line_number":139,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":62,"id":"5f4e5783_ce985376","line":136,"updated":"2017-10-16 05:50:15.000000000","message":"We will send the notification, just like https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L5810 ?","commit_id":"62e2803282b7b8f0af93984adf9d8f74b5ecc2ee"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cc6325a53cd3e18f50895444d5ffa0962e653da2","unresolved":false,"context_lines":[{"line_number":133,"context_line":"Notifications impact"},{"line_number":134,"context_line":"--------------------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"None"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Other end user impact"},{"line_number":139,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":62,"id":"5f4e5783_42e437e0","line":136,"in_reply_to":"5f4e5783_ce985376","updated":"2017-10-16 07:17:42.000000000","message":"Done","commit_id":"62e2803282b7b8f0af93984adf9d8f74b5ecc2ee"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d62532c8f68bfafd067261a0c60daa132f8da5a2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of operator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":65,"id":"3f4b6375_fe89fa25","line":32,"range":{"start_line":31,"start_character":12,"end_line":32,"end_character":18},"updated":"2017-10-19 13:25:59.000000000","message":"should that be done automatically. e.g.\nif user trys to start vm that is being migrated by the operator it auto aborts and the operator can the live migrate the instance if they still want too.\n\ni dont think its feasable for an admin to monitor all incomeing start request and corralate them to a migration they are doing by themselves.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"41760d613f11a1256f7a2902beeb8cbac516b9d8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of operator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":65,"id":"3f4b6375_7da98d79","line":32,"range":{"start_line":31,"start_character":12,"end_line":32,"end_character":18},"in_reply_to":"3f4b6375_995b402d","updated":"2018-01-12 22:09:36.000000000","message":"\u003e Honestly I\u0027ve never been big on the use case or problem description\n \u003e here - how long does cold migrating an instance actually take? What\n \u003e size disks are we talking about and how long does it take to move\n \u003e them? And what underlying storage are people using? Ceph? Local\n \u003e disk?\n\nThe largest Amazon EC2 instances can have 48 TB of localdisk.  Even over a 10Gbps link that\u0027s many hours of transfer time.  More realistically a 1TB disk being transferred at 1Gbps would take a couple hours.\n\nA potentially useful (though hopefully rare) case is where the destination compute node simply disappears in the middle of the disk transfer.  In this case we could hang until the socket gets closed, which could take a long time depending on how the host/network is configured.  Currently in this case the operator would need to manually log on to the compute node and kill the \u0027scp\u0027 process.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of operator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":65,"id":"3f4b6375_d42f3df4","line":32,"range":{"start_line":31,"start_character":12,"end_line":32,"end_character":18},"in_reply_to":"3f4b6375_995b402d","updated":"2017-10-19 15:21:21.000000000","message":"Depending on the environment, it takes several minutes.\nThe estimation of Storage is local disk, NFS case.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3926e74eb63ac46f76bf53d022f5bdd0327231d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of operator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":65,"id":"3f4b6375_c421c54f","line":32,"range":{"start_line":31,"start_character":12,"end_line":32,"end_character":18},"in_reply_to":"3f4b6375_d42f3df4","updated":"2017-10-19 21:10:32.000000000","message":"\u003e Depending on the environment, it takes several minutes.\n \u003e The estimation of Storage is local disk, NFS case.\n\nA user can\u0027t wait a few minutes for a cold migration to complete? I\u0027m assuming the admin is cold migrating the server for a good reason, so if it\u0027s not something that takes hours, I don\u0027t see why we care so much about needing to abort this.\n\nI think the reasons for needing the ability to abort a live migration are different, because those could stall out and the admin needed a way to kill it in-progress, plus I believe abort live migration predated forcing the post-copy.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1e09c399917c05401fb592b97ede5742c61b8658","unresolved":false,"context_lines":[{"line_number":28,"context_line":"If users want to start the VM instances during copying ephemeral disks,"},{"line_number":29,"context_line":"they have to wait the cold migration completion."},{"line_number":30,"context_line":"It is a problem because users have to wait completion of operator\u0027s"},{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"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":65,"id":"3f4b6375_995b402d","line":32,"range":{"start_line":31,"start_character":12,"end_line":32,"end_character":18},"in_reply_to":"3f4b6375_fe89fa25","updated":"2017-10-19 13:53:47.000000000","message":"No, you can\u0027t start an instance that is undergoing a task_state transition:\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L2181\n\nThat\u0027s intentional. I think the problem description is that the admin is cold migrating the instance and because of the large disk, it\u0027s taking awhile and the user wants to start the instance to use it. The user can\u0027t, so they submit a support ticket and the admin has to cancel the cold migration.\n\nGranted, given that workflow, by the time the admin gets the ticket and responds to it, the cold migration might already be done. Honestly I\u0027ve never been big on the use case or problem description here - how long does cold migrating an instance actually take? What size disks are we talking about and how long does it take to move them? And what underlying storage are people using? Ceph? Local disk?","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2024ffcc2facb31dbeaff51e6cfb78d8218eacc0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Reuse existing API for live-migration aborting,"}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_c727a3b6","line":34,"updated":"2017-10-19 02:22:31.000000000","message":"Are there any considerations that should be noted in here for each virt driver and how they would plan on implementing this?","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Reuse existing API for live-migration aborting,"}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_7a199377","line":34,"in_reply_to":"3f4b6375_7e7d0a1b","updated":"2017-10-19 15:21:21.000000000","message":"\u003e Well, maybe just describing that we would have a new virt API\n \u003e method and saying that we would modify https://docs.openstack.org/nova/latest/user/feature-classification.html\n \u003e and the support matrix nope ?\n\nDone.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2940550803082628f0a82dd554e24f8ecb02c07f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"operations. Administrators need to be able to abort a cold migration"},{"line_number":32,"context_line":"at user\u0027s request."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Reuse existing API for live-migration aborting,"}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_7e7d0a1b","line":34,"in_reply_to":"3f4b6375_c727a3b6","updated":"2017-10-19 13:27:33.000000000","message":"Well, maybe just describing that we would have a new virt API method and saying that we would modify https://docs.openstack.org/nova/latest/user/feature-classification.html and the support matrix nope ?","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2024ffcc2facb31dbeaff51e6cfb78d8218eacc0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":40,"context_line":"If executing the API, abort copying ephemeral disks"},{"line_number":41,"context_line":"(including root ephemeral disk)."},{"line_number":42,"context_line":"Then the VM instance is returned to the source host."},{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_2c0ade25","line":42,"updated":"2017-10-19 02:22:31.000000000","message":"Have you considered what needs to happen with cleaning up resource allocations in Placement when a cold migration is aborted? With the changes Dan Smith is working on for making source host migration allocations live on the migration resource, and the dest host resource allocations live on the instance resource, you\u0027d have to consider what happens during an abort such that you have to delete the dest host allocations and move the migration consumer allocations on the source host back to the instance record. The ResourceTracker in the compute doesn\u0027t handle this anymore automatically.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":40,"context_line":"If executing the API, abort copying ephemeral disks"},{"line_number":41,"context_line":"(including root ephemeral disk)."},{"line_number":42,"context_line":"Then the VM instance is returned to the source host."},{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_9a4a0f53","line":42,"in_reply_to":"3f4b6375_2c0ade25","updated":"2017-10-19 15:21:21.000000000","message":"Done","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2578a460ebf1baf45bc9b3c34016de5ac6fa549f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":40,"context_line":"If executing the API, abort copying ephemeral disks"},{"line_number":41,"context_line":"(including root ephemeral disk)."},{"line_number":42,"context_line":"Then the VM instance is returned to the source host."},{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_43acb98b","line":42,"in_reply_to":"3f4b6375_2c0ade25","updated":"2017-10-19 13:21:31.000000000","message":"Isn\u0027t this similar to the case when the cold migration reverted instead of confirmed? We already have code to handle the resource allocation during revert.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2940550803082628f0a82dd554e24f8ecb02c07f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"(See \u0027REST API impact\u0027 section.)"},{"line_number":40,"context_line":"If executing the API, abort copying ephemeral disks"},{"line_number":41,"context_line":"(including root ephemeral disk)."},{"line_number":42,"context_line":"Then the VM instance is returned to the source host."},{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_1e74d634","line":42,"in_reply_to":"3f4b6375_2c0ade25","updated":"2017-10-19 13:27:33.000000000","message":"That\u0027s surely a good point, but I think it\u0027s an implementation detail that we need to remember.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2024ffcc2facb31dbeaff51e6cfb78d8218eacc0","unresolved":false,"context_lines":[{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, a notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_ec2a868e","line":48,"range":{"start_line":48,"start_character":20,"end_line":48,"end_character":32},"updated":"2017-10-19 02:22:31.000000000","message":"I\u0027m not sure how useful this is. It\u0027s OK, but it\u0027s not something you can find in the REST API.  Seems we\u0027d want something like an instance action which is a way you could track whether or not the abort was successful.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2177ec1baf1f350061833d4cd6956747ff53faa3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, a notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_b9083c28","line":48,"range":{"start_line":48,"start_character":20,"end_line":48,"end_character":32},"in_reply_to":"3f4b6375_836cf136","updated":"2017-10-19 13:50:42.000000000","message":"fyi, we have notification for live migration abort https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L5855\n\n+1 for instance action event.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, a notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_1a417f0c","line":48,"range":{"start_line":48,"start_character":20,"end_line":48,"end_character":32},"in_reply_to":"3f4b6375_ec2a868e","updated":"2017-10-19 15:21:21.000000000","message":"\u003e  Seems we\u0027d want something like an\n \u003e instance action which is a way you could track whether or not the\n \u003e abort was successful.\n\nDone.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2578a460ebf1baf45bc9b3c34016de5ac6fa549f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, a notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_836cf136","line":48,"range":{"start_line":48,"start_character":20,"end_line":48,"end_character":32},"in_reply_to":"3f4b6375_ec2a868e","updated":"2017-10-19 13:21:31.000000000","message":"I would send a notification about the abort instead of sending notification when an abort is requested but not executed.\n\nToday nova emits notifications for cold migration with the name \u0027resize\u0027 as the resize and migration code paths are shared.  We already have instance.resize_revert notification. If you feel the need you can add an instance.resize_abort or even an instance.migrate_abort notification.\n\nAlso I agree with Matt to add an instance action event would be more useful for the REST API user.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2578a460ebf1baf45bc9b3c34016de5ac6fa549f","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The following new versioned notifications are added."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* instance.migration_abort.start"},{"line_number":142,"context_line":"* instance.migration_abort.end"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Other end user impact"},{"line_number":145,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_e399651f","line":142,"range":{"start_line":141,"start_character":0,"end_line":142,"end_character":30},"updated":"2017-10-19 13:21:31.000000000","message":"As I noted above nova emits the other cold migration notifications in the name of resize due to the shared code path. So it will look strange that all after a instance.resize.start notification nova will emit an instance.migration_abort.start notification. As abort will not be supported to resize to other host (is it true?) I don\u0027t want to force to name the notification to use the current pattern as that would be equally confusing.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The following new versioned notifications are added."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* instance.migration_abort.start"},{"line_number":142,"context_line":"* instance.migration_abort.end"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Other end user impact"},{"line_number":145,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_549fcd4f","line":142,"range":{"start_line":141,"start_character":0,"end_line":142,"end_character":30},"in_reply_to":"3f4b6375_e399651f","updated":"2017-10-19 15:21:21.000000000","message":"\u003e  As abort will not be supported to resize to other host (is it true?) \n\nIt is true.\nSo aborting cold migration function will NOT share code with resize.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2024ffcc2facb31dbeaff51e6cfb78d8218eacc0","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The following tests is added."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_a703870d","line":205,"updated":"2017-10-19 02:22:31.000000000","message":"I don\u0027t think you can use a Tempest test for this, functional testing should be fine, that\u0027s how we test aborting live migrations and it\u0027s how we make sure the allocations are cleaned up properly in Placement.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2940550803082628f0a82dd554e24f8ecb02c07f","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The following tests is added."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_be98226a","line":205,"in_reply_to":"3f4b6375_a703870d","updated":"2017-10-19 13:27:33.000000000","message":"++","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"The following tests is added."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_341b311c","line":205,"in_reply_to":"3f4b6375_a703870d","updated":"2017-10-19 15:21:21.000000000","message":"Done","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2024ffcc2facb31dbeaff51e6cfb78d8218eacc0","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Documentation Impact"},{"line_number":210,"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":65,"id":"3f4b6375_87088b28","line":207,"updated":"2017-10-19 02:22:31.000000000","message":"This isn\u0027t really something we control in Tempest.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Documentation Impact"},{"line_number":210,"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":65,"id":"3f4b6375_f4bb59e2","line":207,"in_reply_to":"3f4b6375_87088b28","updated":"2017-10-19 15:21:21.000000000","message":"Okay.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2578a460ebf1baf45bc9b3c34016de5ac6fa549f","unresolved":false,"context_lines":[{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Documentation Impact"},{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_fe045ac8","line":208,"updated":"2017-10-19 13:21:31.000000000","message":"If notification change is planned the please add notification sample test.","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bec0cd58109160362ecf729fe91bca38af199e8d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"* Tempest tests (If race condition could be solved.)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  An instance with a large disk will be used."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Documentation Impact"},{"line_number":210,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":65,"id":"3f4b6375_b4b5e1f0","line":208,"in_reply_to":"3f4b6375_fe045ac8","updated":"2017-10-19 15:21:21.000000000","message":"Done","commit_id":"11ae77d58e4f27e02fe5fa1c01572c5f60fb9358"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"311dfb1510d97e7c992dbcfb9744f56063ac654d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, an notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":67,"id":"3f4b6375_7af07391","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":26},"updated":"2017-10-19 15:26:33.000000000","message":"I still think that we should not notify about what doesn\u0027t happened (an abort that was not done) but notify about what happened ( a successful migration)","commit_id":"27e03cc2d7fc77c3d8d649429e88cd24552f364f"},{"author":{"_account_id":3189,"name":"Chet Burgess","email":"cfb@metacloud.com","username":"cfb-n"},"change_message_id":"91cec535d3c7ab51b1361fcab71be906887a4c8a","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, an notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":67,"id":"3f4b6375_f70d9190","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":26},"in_reply_to":"3f4b6375_00e23004","updated":"2017-10-19 22:20:57.000000000","message":"It would probably be better to add a new state to migrating that indicates that the disks are copied and its not valid to issue an abort once we are in that state.\n\nThat doesn\u0027t handle the race condition that will occur if you issue the abort and the state changes while the abort is in-flight to the compute node.\n\nBoth conditions are really the same thing though and it represents an illegal action given the state. So it should probably return an error at the API if its in this state, and simply log an error in the local compute node if it happens locally.","commit_id":"27e03cc2d7fc77c3d8d649429e88cd24552f364f"},{"author":{"_account_id":3189,"name":"Chet Burgess","email":"cfb@metacloud.com","username":"cfb-n"},"change_message_id":"91cec535d3c7ab51b1361fcab71be906887a4c8a","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, an notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":67,"id":"3f4b6375_17670d50","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":26},"in_reply_to":"3f4b6375_7af07391","updated":"2017-10-19 22:20:57.000000000","message":"Depends on if we want the notifications to be an audit log of what commands were issued or ifs intended to show what actually happened. I can see a case both ways.","commit_id":"27e03cc2d7fc77c3d8d649429e88cd24552f364f"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"5ee55dd9ee02dbdfe0eaa6a57b75b4ea1c4d7430","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, an notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":67,"id":"3f4b6375_00e23004","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":26},"in_reply_to":"3f4b6375_7af07391","updated":"2017-10-19 16:37:38.000000000","message":"How about an error notification?","commit_id":"27e03cc2d7fc77c3d8d649429e88cd24552f364f"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"1a96001a0f519fbc2838cbe5ebde8f7785cd7fb1","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The request is only accepted when the migration status is \u0027migrating\u0027."},{"line_number":46,"context_line":"If not, it returns 409 error."},{"line_number":47,"context_line":"If copying ephemeral disks is finished when the request reaches"},{"line_number":48,"context_line":"the compute host, an notification is emitted to notify that"},{"line_number":49,"context_line":"aborting is not performed."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The function to list cold migrations is required."},{"line_number":52,"context_line":"It will be added by the other blueprint [1]_."}],"source_content_type":"text/x-rst","patch_set":67,"id":"bf8cb3f7_0d232f07","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":26},"in_reply_to":"3f4b6375_f70d9190","updated":"2017-12-26 06:20:32.000000000","message":"Done","commit_id":"27e03cc2d7fc77c3d8d649429e88cd24552f364f"},{"author":{"_account_id":3189,"name":"Chet Burgess","email":"cfb@metacloud.com","username":"cfb-n"},"change_message_id":"91cec535d3c7ab51b1361fcab71be906887a4c8a","unresolved":false,"context_lines":[{"line_number":135,"context_line":"     - 400(BadRequest)"},{"line_number":136,"context_line":"     - The request should not be repeated until the old compute node is"},{"line_number":137,"context_line":"       upgraded."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Security impact"},{"line_number":141,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":67,"id":"3f4b6375_57734516","line":138,"updated":"2017-10-19 22:20:57.000000000","message":"Again I would recommend a new migration status that allows us to differentiate between disk copying and post disk copy. We could then have an InvalidMigrationState error at the API level if its already in the post-copy state.","commit_id":"27e03cc2d7fc77c3d8d649429e88cd24552f364f"}],"specs/rocky/approved/abort-cold-migration.rst":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"41760d613f11a1256f7a2902beeb8cbac516b9d8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Then the VM instance is returned to the source host."},{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"A new migration status \u0027coping\u0027 is added."},{"line_number":46,"context_line":"The request is only accepted when the migration status is \u0027copying\u0027."},{"line_number":47,"context_line":"If not, it returns 409 error."},{"line_number":48,"context_line":"If copying ephemeral disks is finished when the request reaches"}],"source_content_type":"text/x-rst","patch_set":69,"id":"7f96bb07_333f7726","line":45,"updated":"2018-01-12 22:09:36.000000000","message":"/s/coping/copying ?","commit_id":"c4b8e7346a8eb16a6fc54e68049dab4b1d1ff479"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"25f8103f05bda705f7765a2021791551f55bc579","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Then the VM instance is returned to the source host."},{"line_number":43,"context_line":"It is an asynchronous processing in the same way as a live migration case."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"A new migration status \u0027coping\u0027 is added."},{"line_number":46,"context_line":"The request is only accepted when the migration status is \u0027copying\u0027."},{"line_number":47,"context_line":"If not, it returns 409 error."},{"line_number":48,"context_line":"If copying ephemeral disks is finished when the request reaches"}],"source_content_type":"text/x-rst","patch_set":69,"id":"7f96bb07_7ea538a1","line":45,"in_reply_to":"7f96bb07_333f7726","updated":"2018-01-18 07:12:26.000000000","message":"Done","commit_id":"c4b8e7346a8eb16a6fc54e68049dab4b1d1ff479"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"41760d613f11a1256f7a2902beeb8cbac516b9d8","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The following new versioned notifications are added."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* instance.migration_abort.start"},{"line_number":151,"context_line":"* instance.migration_abort.end"},{"line_number":152,"context_line":"* instance.migration_abort.error"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other end user impact"},{"line_number":155,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":69,"id":"7f96bb07_b32b87e9","line":152,"range":{"start_line":150,"start_character":1,"end_line":152,"end_character":32},"updated":"2018-01-12 22:09:36.000000000","message":"does it make sense for these to be migration when the rest are \"instance.resize\"?","commit_id":"c4b8e7346a8eb16a6fc54e68049dab4b1d1ff479"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"25f8103f05bda705f7765a2021791551f55bc579","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"The following new versioned notifications are added."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* instance.migration_abort.start"},{"line_number":151,"context_line":"* instance.migration_abort.end"},{"line_number":152,"context_line":"* instance.migration_abort.error"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Other end user impact"},{"line_number":155,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":69,"id":"7f96bb07_9ea04492","line":152,"range":{"start_line":150,"start_character":1,"end_line":152,"end_character":32},"in_reply_to":"7f96bb07_b32b87e9","updated":"2018-01-18 07:12:26.000000000","message":"Done","commit_id":"c4b8e7346a8eb16a6fc54e68049dab4b1d1ff479"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c7c25d21881e4541d0fda34e50da86de2ced0d4","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Alternatives"},{"line_number":72,"context_line":"------------"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"None"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Data model impact"},{"line_number":77,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":76,"id":"3f79a3b5_589e9d55","line":74,"updated":"2018-10-23 18:01:08.000000000","message":"There have been several alternatives mentioned when discussing this at prior PTGs and in the mailing list, including using volumes, using shared storage (ceph), using live migration, etc.\n\nMy main takeaway from the operators thread with NTT operations is their business applications write service logs to local disk rather than data volumes and migrating those logs can take a long time. Re-writing the application to use data volumes was considered expensive so they aren\u0027t doing it, at least not right now. I don\u0027t think that is reasonable justification for adding this complicated feature to nova when there are not more general use cases/requirements for the need to have this given the alternative solutions to this problem.","commit_id":"409ed2662022b2c8eb2233ca3ef8585e963a7782"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c7c25d21881e4541d0fda34e50da86de2ced0d4","unresolved":false,"context_lines":[{"line_number":239,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":".. [1] https://blueprints.launchpad.net/nova/+spec/list-show-all-server-migration-types"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"History"},{"line_number":244,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-rst","patch_set":76,"id":"3f79a3b5_3893a15b","line":242,"updated":"2018-10-23 18:01:08.000000000","message":"There was a discussion about this in the operators mailing list where alternatives were discussed:\n\nhttp://lists.openstack.org/pipermail/openstack-operators/2018-May/thread.html#15199","commit_id":"409ed2662022b2c8eb2233ca3ef8585e963a7782"}]}
