)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bbf91e7b1d26e7d7557dd59e129bf636b10072cd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Better handle live migration abort"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some drivers do not support abort, avoid going into an ERROR"},{"line_number":10,"context_line":"state. We will instead raise UnableToAbortMigration"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-bug: #1815466"},{"line_number":13,"context_line":"Change-Id: I9b66765045568033c18b1a5780601e56c4c70e66"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fdfeff1_cc3aa332","line":10,"range":{"start_line":10,"start_character":29,"end_line":10,"end_character":51},"updated":"2019-02-27 20:49:04.000000000","message":"AbortMigrationNotSupported","commit_id":"468ebd2a0c926cfa27dd4ee7a4643a364ab71ce1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"22e7ba55413d53646d0ec60afe3f167ffdb7d70e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Better handle live migration abort"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some drivers do not support abort, avoid going into an ERROR"},{"line_number":10,"context_line":"state. We will instead raise UnableToAbortMigration"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-bug: #1815466"},{"line_number":13,"context_line":"Change-Id: I9b66765045568033c18b1a5780601e56c4c70e66"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fdfeff1_92e26800","line":10,"range":{"start_line":10,"start_character":29,"end_line":10,"end_character":51},"in_reply_to":"9fdfeff1_cc3aa332","updated":"2019-02-28 10:19:37.000000000","message":"Done","commit_id":"468ebd2a0c926cfa27dd4ee7a4643a364ab71ce1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fb875e47b62de85840f2d8982d169ae9b04a6fa9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Better handle live migration abort"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some drivers do not support abort, avoid going into an ERROR"},{"line_number":10,"context_line":"state. We will instead raise AbortMigrationNotSupported."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-bug: #1815466"},{"line_number":13,"context_line":"Change-Id: I9b66765045568033c18b1a5780601e56c4c70e66"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9fdfeff1_59c5bc3c","line":10,"range":{"start_line":9,"start_character":35,"end_line":10,"end_character":6},"updated":"2019-03-04 15:21:19.000000000","message":"I don\u0027t see what actually puts the instance into an ERROR state. Can you call that out?","commit_id":"31dbb626eea279209dc2f02a8d59798a066bf814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9e7fd4d2efb26bb76bd016af2ae6e22e4ceb6ff6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Better handle live migration abort"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some drivers do not support abort, avoid going into an ERROR"},{"line_number":10,"context_line":"state. We will instead raise AbortMigrationNotSupported."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-bug: #1815466"},{"line_number":13,"context_line":"Change-Id: I9b66765045568033c18b1a5780601e56c4c70e66"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5fc1f717_c9f43dd2","line":10,"range":{"start_line":9,"start_character":35,"end_line":10,"end_character":6},"in_reply_to":"9fdfeff1_59c5bc3c","updated":"2019-03-10 08:17:47.000000000","message":"Sure will do","commit_id":"31dbb626eea279209dc2f02a8d59798a066bf814"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1678e14b6ecf73e0bcb6a43615af2c361f448a2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Better handle live migration abort"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some drivers do not support abort. The base driver raises"},{"line_number":10,"context_line":"NotImplementedError for the live_migration_abort. This may"},{"line_number":11,"context_line":"result in the instance state being changed to ERROR which"},{"line_number":12,"context_line":"renders additional operations on the instance as"},{"line_number":13,"context_line":"problematic (until the admin resets the bad state)"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9fb8cfa7_8b7b3f79","line":11,"range":{"start_line":10,"start_character":50,"end_line":11,"end_character":51},"updated":"2019-06-11 21:52:13.000000000","message":"I don\u0027t see where this happens.","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eea3001918556ed704f42b5bbca3a7a57e3d915f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"   False by default. If the compute driver does not support"},{"line_number":20,"context_line":"   the opertaion the compute manager will raise the exception:"},{"line_number":21,"context_line":"   AbortMigrationNotSupported"},{"line_number":22,"context_line":"2. On the API side if the exception AbortMigrationNotSupported is"},{"line_number":23,"context_line":"   raised by the manager then the API server will return"},{"line_number":24,"context_line":"   BadRequest. Prior to this it was getting a random 500."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1815466"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5fc1f717_977723d5","line":23,"range":{"start_line":22,"start_character":3,"end_line":23,"end_character":24},"updated":"2019-03-11 14:40:31.000000000","message":"This makes no sense to me - the compute RPC API is a cast operation, so once the API casts to the compute service it\u0027s not going to get that AbortMigrationNotSupported error. This commit message still does not explain how the instance goes to ERROR status when the compute manager method raises NotImplementedError.","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ffd923023d1232983b30f029d2891180bdc90445","unresolved":false,"context_lines":[{"line_number":19,"context_line":"   False by default. If the compute driver does not support"},{"line_number":20,"context_line":"   the opertaion the compute manager will raise the exception:"},{"line_number":21,"context_line":"   AbortMigrationNotSupported"},{"line_number":22,"context_line":"2. On the API side if the exception AbortMigrationNotSupported is"},{"line_number":23,"context_line":"   raised by the manager then the API server will return"},{"line_number":24,"context_line":"   BadRequest. Prior to this it was getting a random 500."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1815466"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5fc1f717_ac543bff","line":23,"range":{"start_line":22,"start_character":3,"end_line":23,"end_character":24},"in_reply_to":"5fc1f717_174d7399","updated":"2019-03-12 12:10:27.000000000","message":"No, this is with the code in trunk.","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1678e14b6ecf73e0bcb6a43615af2c361f448a2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"   False by default. If the compute driver does not support"},{"line_number":20,"context_line":"   the opertaion the compute manager will raise the exception:"},{"line_number":21,"context_line":"   AbortMigrationNotSupported"},{"line_number":22,"context_line":"2. On the API side if the exception AbortMigrationNotSupported is"},{"line_number":23,"context_line":"   raised by the manager then the API server will return"},{"line_number":24,"context_line":"   BadRequest. Prior to this it was getting a random 500."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1815466"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9fb8cfa7_4bc78797","line":23,"range":{"start_line":22,"start_character":3,"end_line":23,"end_character":24},"in_reply_to":"5fc1f717_5730c4e8","updated":"2019-06-11 21:52:13.000000000","message":"What you\u0027re changing is the live_migration_abort method in the compute manager, and trying to handle the exception in the API, but if we get to the compute manager we\u0027ve already RPC cast off from the API so that exception isn\u0027t going to come back up to the API:\n\nhttps://github.com/openstack/nova/blob/25262103dafd4b4025c2f3616ff7ce11665601ec/nova/compute/rpcapi.py#L725\n\nI don\u0027t know what the CLI is doing.","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3011a8da72c65eac1ce1ae25c8950badae412984","unresolved":false,"context_lines":[{"line_number":19,"context_line":"   False by default. If the compute driver does not support"},{"line_number":20,"context_line":"   the opertaion the compute manager will raise the exception:"},{"line_number":21,"context_line":"   AbortMigrationNotSupported"},{"line_number":22,"context_line":"2. On the API side if the exception AbortMigrationNotSupported is"},{"line_number":23,"context_line":"   raised by the manager then the API server will return"},{"line_number":24,"context_line":"   BadRequest. Prior to this it was getting a random 500."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1815466"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5fc1f717_174d7399","line":23,"range":{"start_line":22,"start_character":3,"end_line":23,"end_character":24},"in_reply_to":"5fc1f717_977723d5","updated":"2019-03-11 14:40:50.000000000","message":"Does VIO have out of tree changes that make this happen?","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ffd923023d1232983b30f029d2891180bdc90445","unresolved":false,"context_lines":[{"line_number":19,"context_line":"   False by default. If the compute driver does not support"},{"line_number":20,"context_line":"   the opertaion the compute manager will raise the exception:"},{"line_number":21,"context_line":"   AbortMigrationNotSupported"},{"line_number":22,"context_line":"2. On the API side if the exception AbortMigrationNotSupported is"},{"line_number":23,"context_line":"   raised by the manager then the API server will return"},{"line_number":24,"context_line":"   BadRequest. Prior to this it was getting a random 500."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1815466"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5fc1f717_0c546ffe","line":23,"range":{"start_line":22,"start_character":3,"end_line":23,"end_character":24},"in_reply_to":"5fc1f717_977723d5","updated":"2019-03-12 12:10:27.000000000","message":"Matt, have you tried the live migrate abort when the instance is still queued? (unrelated to this) you will see that the CLI does the same behavior.","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8cc79d0a6d3a9463208233933494e7a2acd9e224","unresolved":false,"context_lines":[{"line_number":19,"context_line":"   False by default. If the compute driver does not support"},{"line_number":20,"context_line":"   the opertaion the compute manager will raise the exception:"},{"line_number":21,"context_line":"   AbortMigrationNotSupported"},{"line_number":22,"context_line":"2. On the API side if the exception AbortMigrationNotSupported is"},{"line_number":23,"context_line":"   raised by the manager then the API server will return"},{"line_number":24,"context_line":"   BadRequest. Prior to this it was getting a random 500."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Closes-bug: #1815466"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5fc1f717_5730c4e8","line":23,"range":{"start_line":22,"start_character":3,"end_line":23,"end_character":24},"in_reply_to":"5fc1f717_ac543bff","updated":"2019-03-12 13:03:12.000000000","message":"@Matt, please see this - https://review.openstack.org/#/c/568542/22/nova/compute/manager.py - Line 6404.","commit_id":"836b4b169af465e8a5425bc6c7f07cf9a5fa4345"}],"nova/compute/manager.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5f128d0e5c2cbc4bdb5f88f02511e00038c2f8ee","unresolved":false,"context_lines":[{"line_number":6429,"context_line":"            context, instance, self.host,"},{"line_number":6430,"context_line":"            action\u003dfields.NotificationAction.LIVE_MIGRATION_ABORT,"},{"line_number":6431,"context_line":"            phase\u003dfields.NotificationPhase.START)"},{"line_number":6432,"context_line":""},{"line_number":6433,"context_line":"        if not self.driver.capabilities.get(\u0027supports_live_migration_abort\u0027,"},{"line_number":6434,"context_line":"                                            False):"},{"line_number":6435,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_dc62d1d8","line":6432,"updated":"2019-02-07 15:09:13.000000000","message":"Should this block go before the notification?","commit_id":"5d9b1a267cc6c4dd00cc129d14c7986fff19fe0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b3c0bf0ec8ef7a58e95db9c54a25f532599d0396","unresolved":false,"context_lines":[{"line_number":6429,"context_line":"            context, instance, self.host,"},{"line_number":6430,"context_line":"            action\u003dfields.NotificationAction.LIVE_MIGRATION_ABORT,"},{"line_number":6431,"context_line":"            phase\u003dfields.NotificationPhase.START)"},{"line_number":6432,"context_line":""},{"line_number":6433,"context_line":"        if not self.driver.capabilities.get(\u0027supports_live_migration_abort\u0027,"},{"line_number":6434,"context_line":"                                            False):"},{"line_number":6435,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_62299f99","line":6432,"in_reply_to":"9fdfeff1_dc62d1d8","updated":"2019-02-10 08:07:32.000000000","message":"Done","commit_id":"5d9b1a267cc6c4dd00cc129d14c7986fff19fe0c"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"12ee026b5e753084cba841fda73d0e3ef25e7496","unresolved":false,"context_lines":[{"line_number":6465,"context_line":"            (migration,"},{"line_number":6466,"context_line":"             future) \u003d self._waiting_live_migrations.get(instance.uuid,"},{"line_number":6467,"context_line":"                                                         (None, None))"},{"line_number":6468,"context_line":"            if migration:"},{"line_number":6469,"context_line":"                raise exception.InvalidMigrationState("},{"line_number":6470,"context_line":"                    migration_id\u003dmigration_id, instance_uuid\u003dinstance.uuid,"},{"line_number":6471,"context_line":"                    state\u003dmigration.status, method\u003d\u0027abort live migration\u0027)"},{"line_number":6472,"context_line":"            return"},{"line_number":6473,"context_line":""},{"line_number":6474,"context_line":"        self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_96272113","line":6471,"range":{"start_line":6468,"start_character":12,"end_line":6471,"end_character":74},"updated":"2019-02-11 03:35:43.000000000","message":"Hmm, don\u0027t think this is the best exception to raise, because the migration state is actually good, it is because the driver type, but we may not want leak this to user ...","commit_id":"76aadf51e116180a5437b4b2e26b5fcfbf28947e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"65c6032ac685f38a7eb8c133e6b8f7861c38e42f","unresolved":false,"context_lines":[{"line_number":6465,"context_line":"            (migration,"},{"line_number":6466,"context_line":"             future) \u003d self._waiting_live_migrations.get(instance.uuid,"},{"line_number":6467,"context_line":"                                                         (None, None))"},{"line_number":6468,"context_line":"            if migration:"},{"line_number":6469,"context_line":"                raise exception.InvalidMigrationState("},{"line_number":6470,"context_line":"                    migration_id\u003dmigration_id, instance_uuid\u003dinstance.uuid,"},{"line_number":6471,"context_line":"                    state\u003dmigration.status, method\u003d\u0027abort live migration\u0027)"},{"line_number":6472,"context_line":"            return"},{"line_number":6473,"context_line":""},{"line_number":6474,"context_line":"        self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d1e93380","line":6471,"range":{"start_line":6468,"start_character":12,"end_line":6471,"end_character":74},"in_reply_to":"9fdfeff1_11625b3f","updated":"2019-02-11 07:17:25.000000000","message":"I mean, what the ``InvalidMigrationState`` shows to the user, it will say we are not able to abort the migration becuase of the current migration state is not valid for abort action, but in fact, the migration status is valid, it is the virt driver that cannot implement it, so we might be sending out wrong information about why it cannot operate if we through this error. And I might not be clear enough, my second point is that we should find a better exception to raise that is acurrate enough but didn\u0027t leak the underlaying driver information to normal users.","commit_id":"76aadf51e116180a5437b4b2e26b5fcfbf28947e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"0aa94edfb63ca9069083af2027eeeb4f6f1b4f24","unresolved":false,"context_lines":[{"line_number":6465,"context_line":"            (migration,"},{"line_number":6466,"context_line":"             future) \u003d self._waiting_live_migrations.get(instance.uuid,"},{"line_number":6467,"context_line":"                                                         (None, None))"},{"line_number":6468,"context_line":"            if migration:"},{"line_number":6469,"context_line":"                raise exception.InvalidMigrationState("},{"line_number":6470,"context_line":"                    migration_id\u003dmigration_id, instance_uuid\u003dinstance.uuid,"},{"line_number":6471,"context_line":"                    state\u003dmigration.status, method\u003d\u0027abort live migration\u0027)"},{"line_number":6472,"context_line":"            return"},{"line_number":6473,"context_line":""},{"line_number":6474,"context_line":"        self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_11625b3f","line":6471,"range":{"start_line":6468,"start_character":12,"end_line":6471,"end_character":74},"in_reply_to":"9fdfeff1_96272113","updated":"2019-02-11 07:08:19.000000000","message":"Can you please explain what is wrong with the exception? This is the same exception that is raised below when the actual migration has been popped from the dictionary.\nWhat do you suggest and how does this expose the underlying driver capabilities?","commit_id":"76aadf51e116180a5437b4b2e26b5fcfbf28947e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d3f5c8bcf27147ebee7f4c524bfaacbead521333","unresolved":false,"context_lines":[{"line_number":6465,"context_line":"            (migration,"},{"line_number":6466,"context_line":"             future) \u003d self._waiting_live_migrations.get(instance.uuid,"},{"line_number":6467,"context_line":"                                                         (None, None))"},{"line_number":6468,"context_line":"            if migration:"},{"line_number":6469,"context_line":"                raise exception.InvalidMigrationState("},{"line_number":6470,"context_line":"                    migration_id\u003dmigration_id, instance_uuid\u003dinstance.uuid,"},{"line_number":6471,"context_line":"                    state\u003dmigration.status, method\u003d\u0027abort live migration\u0027)"},{"line_number":6472,"context_line":"            return"},{"line_number":6473,"context_line":""},{"line_number":6474,"context_line":"        self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_1e17c3a5","line":6471,"range":{"start_line":6468,"start_character":12,"end_line":6471,"end_character":74},"in_reply_to":"9fdfeff1_d1e93380","updated":"2019-02-11 12:35:35.000000000","message":"I am not sure that I fully agree. InvalidState is actually indicating that the driver at the moment cannot do this, which is really legit. \nI will try and change this to have a message that will be more clear - \u0027At the moment the migration abortion cannot be completed\u0027 or something along those lines","commit_id":"76aadf51e116180a5437b4b2e26b5fcfbf28947e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c2c75108d2db4478b2559412f07ff1068571ca31","unresolved":false,"context_lines":[{"line_number":6458,"context_line":"        :param migration_id: ID of in-progress live migration"},{"line_number":6459,"context_line":""},{"line_number":6460,"context_line":"        \"\"\""},{"line_number":6461,"context_line":"        if not self.driver.capabilities.get(\u0027supports_live_migration_abort\u0027,"},{"line_number":6462,"context_line":"                                            False):"},{"line_number":6463,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6464,"context_line":"                        instance\u003dinstance)"},{"line_number":6465,"context_line":"            (migration,"},{"line_number":6466,"context_line":"             future) \u003d self._waiting_live_migrations.get(instance.uuid,"},{"line_number":6467,"context_line":"                                                         (None, None))"},{"line_number":6468,"context_line":"            if migration:"},{"line_number":6469,"context_line":"                raise exception.InvalidMigrationState("},{"line_number":6470,"context_line":"                    migration_id\u003dmigration_id, instance_uuid\u003dinstance.uuid,"},{"line_number":6471,"context_line":"                    state\u003dmigration.status, method\u003d\u0027abort live migration\u0027)"},{"line_number":6472,"context_line":"            return"},{"line_number":6473,"context_line":""},{"line_number":6474,"context_line":"        self._notify_about_instance_usage("},{"line_number":6475,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_11bedb64","line":6472,"range":{"start_line":6461,"start_character":8,"end_line":6472,"end_character":18},"updated":"2019-02-11 07:21:26.000000000","message":"Later..., checking again, maybe here is not the correct place to do this, self._waiting_live_migrations saves the migrations in ``queued`` status, and when aborting, they are handled by line 6500, it seems have no dependence on virt driver capabilities. Your new logic seems should only have effects on the ``running`` migrations.","commit_id":"76aadf51e116180a5437b4b2e26b5fcfbf28947e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d3f5c8bcf27147ebee7f4c524bfaacbead521333","unresolved":false,"context_lines":[{"line_number":6458,"context_line":"        :param migration_id: ID of in-progress live migration"},{"line_number":6459,"context_line":""},{"line_number":6460,"context_line":"        \"\"\""},{"line_number":6461,"context_line":"        if not self.driver.capabilities.get(\u0027supports_live_migration_abort\u0027,"},{"line_number":6462,"context_line":"                                            False):"},{"line_number":6463,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6464,"context_line":"                        instance\u003dinstance)"},{"line_number":6465,"context_line":"            (migration,"},{"line_number":6466,"context_line":"             future) \u003d self._waiting_live_migrations.get(instance.uuid,"},{"line_number":6467,"context_line":"                                                         (None, None))"},{"line_number":6468,"context_line":"            if migration:"},{"line_number":6469,"context_line":"                raise exception.InvalidMigrationState("},{"line_number":6470,"context_line":"                    migration_id\u003dmigration_id, instance_uuid\u003dinstance.uuid,"},{"line_number":6471,"context_line":"                    state\u003dmigration.status, method\u003d\u0027abort live migration\u0027)"},{"line_number":6472,"context_line":"            return"},{"line_number":6473,"context_line":""},{"line_number":6474,"context_line":"        self._notify_about_instance_usage("},{"line_number":6475,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_9e397340","line":6472,"range":{"start_line":6461,"start_character":8,"end_line":6472,"end_character":18},"in_reply_to":"9fdfeff1_11bedb64","updated":"2019-02-11 12:35:35.000000000","message":"the current logic with the queue is clearly problematic and in some cases broken. if one tries to cancel and it fails in the driver level then the entry is no longer in the queue and that leads to the instance being in error status when it clearly is not.\n\nthis is what this patch addresses and maybe it was originally build for a libvirt use case when everything works perfectly, but one it state to fail there are many issues.\n\ni will open a bug as eric has mentioned","commit_id":"76aadf51e116180a5437b4b2e26b5fcfbf28947e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"16449e6bfb86155286d9cc408953123085f1298d","unresolved":false,"context_lines":[{"line_number":6547,"context_line":"                                            False):"},{"line_number":6548,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6549,"context_line":"                        instance\u003dinstance)"},{"line_number":6550,"context_line":"            raise exception.AbortMigrationNotSupported()"},{"line_number":6551,"context_line":""},{"line_number":6552,"context_line":"        self._notify_about_instance_usage("},{"line_number":6553,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_8cdedb67","line":6550,"updated":"2019-02-27 20:36:08.000000000","message":"Is this new exception not going to end up in the API as a 500?","commit_id":"468ebd2a0c926cfa27dd4ee7a4643a364ab71ce1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bbf91e7b1d26e7d7557dd59e129bf636b10072cd","unresolved":false,"context_lines":[{"line_number":6547,"context_line":"                                            False):"},{"line_number":6548,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6549,"context_line":"                        instance\u003dinstance)"},{"line_number":6550,"context_line":"            raise exception.AbortMigrationNotSupported()"},{"line_number":6551,"context_line":""},{"line_number":6552,"context_line":"        self._notify_about_instance_usage("},{"line_number":6553,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_2c2c8f00","line":6550,"in_reply_to":"9fdfeff1_8cdedb67","updated":"2019-02-27 20:49:04.000000000","message":"I think so, because not being caught/converted; but previously it would raise NotImplementedError, which would also be a 500 (right?)\n\nSo the only thing we\u0027re doing is to provide a more useful error.\n\nOh. Which isn\u0027t what the commit message says. Yeah.","commit_id":"468ebd2a0c926cfa27dd4ee7a4643a364ab71ce1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"21b4ff8284a4b1206409b7d323d3982dffeee70e","unresolved":false,"context_lines":[{"line_number":6545,"context_line":"        \"\"\""},{"line_number":6546,"context_line":"        if not self.driver.capabilities.get(\u0027supports_live_migration_abort\u0027,"},{"line_number":6547,"context_line":"                                            False):"},{"line_number":6548,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6549,"context_line":"                        instance\u003dinstance)"},{"line_number":6550,"context_line":"            raise exception.AbortMigrationNotSupported()"},{"line_number":6551,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_b92aa82c","line":6548,"updated":"2019-03-04 15:15:44.000000000","message":"Given that we\u0027re raising just below the LOG seems redundant, but it\u0027s harmless","commit_id":"31dbb626eea279209dc2f02a8d59798a066bf814"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fb875e47b62de85840f2d8982d169ae9b04a6fa9","unresolved":false,"context_lines":[{"line_number":6547,"context_line":"                                            False):"},{"line_number":6548,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6549,"context_line":"                        instance\u003dinstance)"},{"line_number":6550,"context_line":"            raise exception.AbortMigrationNotSupported()"},{"line_number":6551,"context_line":""},{"line_number":6552,"context_line":"        self._notify_about_instance_usage("},{"line_number":6553,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_b9b4e8d5","line":6550,"updated":"2019-03-04 15:21:19.000000000","message":"This is still going to generate a fault for the instance, is that what you want?","commit_id":"31dbb626eea279209dc2f02a8d59798a066bf814"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a07ced6663b9d95e3763de86ab0f75f83170fde","unresolved":false,"context_lines":[{"line_number":6547,"context_line":"                                            False):"},{"line_number":6548,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6549,"context_line":"                        instance\u003dinstance)"},{"line_number":6550,"context_line":"            raise exception.AbortMigrationNotSupported()"},{"line_number":6551,"context_line":""},{"line_number":6552,"context_line":"        self._notify_about_instance_usage("},{"line_number":6553,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_57fe9b37","line":6550,"in_reply_to":"5fc1f717_6903c9b9","updated":"2019-03-11 14:38:46.000000000","message":"\u003e In the original patch I raised exception.InvalidMigrationState and this was treated correctly at the API layer.\n\nI\u0027m not sure what you mean by \"at the API layer\" since if we got this far we are in an RPC cast and there is no response back to the API service.","commit_id":"31dbb626eea279209dc2f02a8d59798a066bf814"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9e7fd4d2efb26bb76bd016af2ae6e22e4ceb6ff6","unresolved":false,"context_lines":[{"line_number":6547,"context_line":"                                            False):"},{"line_number":6548,"context_line":"            LOG.warning(\u0027Virt driver does not support live migration abort\u0027,"},{"line_number":6549,"context_line":"                        instance\u003dinstance)"},{"line_number":6550,"context_line":"            raise exception.AbortMigrationNotSupported()"},{"line_number":6551,"context_line":""},{"line_number":6552,"context_line":"        self._notify_about_instance_usage("},{"line_number":6553,"context_line":"            context, instance, \u0027live.migration.abort.start\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5fc1f717_6903c9b9","line":6550,"in_reply_to":"9fdfeff1_b9b4e8d5","updated":"2019-03-10 08:17:47.000000000","message":"Yes, you are correct. In the original patch I raised exception.InvalidMigrationState and this was treated correctly at the API layer.\nI need to add support for AbortMigrationNotSupported there. Thanks!","commit_id":"31dbb626eea279209dc2f02a8d59798a066bf814"}],"nova/exception.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f7c0db76d9626e0c7404545789cd9198e2cb0f04","unresolved":false,"context_lines":[{"line_number":1198,"context_line":"                \"migration is in this state.\")"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"class UnableToAbortMigration(Invalid):"},{"line_number":1202,"context_line":"    msg_fmt \u003d _(\"Currently unable to abort migration for instance \""},{"line_number":1203,"context_line":"                \"%(instance_uuid)s.\")"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"class AbortQueuedLiveMigrationNotYetSupported(NovaException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_3a1d2a73","line":1203,"range":{"start_line":1201,"start_character":0,"end_line":1203,"end_character":37},"updated":"2019-02-20 22:19:26.000000000","message":"How about\n\n class AbortMigrationNotSupported(Invalid):\n     msg_fmt \u003d _(\"Abort migration is not supported by the hypervisor.\")\n\nlike the other unsupported feature exceptions?","commit_id":"9e45a0962653902ba74971b96684c8d9e99b8df5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c2a3dd9f492e98f763a8c8b60489e8379d9dfa7c","unresolved":false,"context_lines":[{"line_number":1198,"context_line":"                \"migration is in this state.\")"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"class UnableToAbortMigration(Invalid):"},{"line_number":1202,"context_line":"    msg_fmt \u003d _(\"Currently unable to abort migration for instance \""},{"line_number":1203,"context_line":"                \"%(instance_uuid)s.\")"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"class AbortQueuedLiveMigrationNotYetSupported(NovaException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_10d694f3","line":1203,"range":{"start_line":1201,"start_character":0,"end_line":1203,"end_character":37},"in_reply_to":"9fdfeff1_3a1d2a73","updated":"2019-02-27 06:03:07.000000000","message":"Done","commit_id":"9e45a0962653902ba74971b96684c8d9e99b8df5"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"bbf91e7b1d26e7d7557dd59e129bf636b10072cd","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"class LibvirtDriver(driver.ComputeDriver):"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def __init__(self, virtapi, read_only\u003dFalse):"},{"line_number":291,"context_line":"        # NOTE(aspiers) Some of these are dynamic, so putting"},{"line_number":292,"context_line":"        # capabilities on the instance rather than on the class."}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_ec0a0777","line":289,"updated":"2019-02-27 20:49:04.000000000","message":"this wound up being an unrelated whitespace change after the rebase","commit_id":"468ebd2a0c926cfa27dd4ee7a4643a364ab71ce1"}],"nova/virt/powervm/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5f128d0e5c2cbc4bdb5f88f02511e00038c2f8ee","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027supports_extend_volume\u0027: True,"},{"line_number":78,"context_line":"            \u0027supports_multiattach\u0027: False,"},{"line_number":79,"context_line":"            \u0027supports_trusted_certs\u0027: False,"},{"line_number":80,"context_line":"            \u0027supports_live_migration_abort\u0027: False,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        super(PowerVMDriver, self).__init__(virtapi)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_5c6fc1c4","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":51},"updated":"2019-02-07 15:09:13.000000000","message":"I think this might be what Chris was talking about. Why does PowerVM need to set this explicitly to False?\n\n(PowerVM is the only driver that has the capabilities dict as an instance attribute rather than a class attribute; but I wouldn\u0027t expect that to matter?)","commit_id":"5d9b1a267cc6c4dd00cc129d14c7986fff19fe0c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cd19291cbb7f437fb534585e13d24cf5be068d60","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027supports_extend_volume\u0027: True,"},{"line_number":78,"context_line":"            \u0027supports_multiattach\u0027: False,"},{"line_number":79,"context_line":"            \u0027supports_trusted_certs\u0027: False,"},{"line_number":80,"context_line":"            \u0027supports_live_migration_abort\u0027: False,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        super(PowerVMDriver, self).__init__(virtapi)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_c56c150a","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":51},"in_reply_to":"9fdfeff1_021a137c","updated":"2019-02-10 12:43:07.000000000","message":"Okay, but you\u0027re not setting it explicitly to False for other drivers, e.g. ironic, and your check is using .get() to default it to False if it\u0027s absent from the dict, so I still don\u0027t get why it needs to be set explicitly to False in just this one driver (and the base class for that matter). Seems like it should be all or none (I think my preference would be the former).","commit_id":"5d9b1a267cc6c4dd00cc129d14c7986fff19fe0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b3c0bf0ec8ef7a58e95db9c54a25f532599d0396","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027supports_extend_volume\u0027: True,"},{"line_number":78,"context_line":"            \u0027supports_multiattach\u0027: False,"},{"line_number":79,"context_line":"            \u0027supports_trusted_certs\u0027: False,"},{"line_number":80,"context_line":"            \u0027supports_live_migration_abort\u0027: False,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        super(PowerVMDriver, self).__init__(virtapi)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_021a137c","line":80,"range":{"start_line":80,"start_character":12,"end_line":80,"end_character":51},"in_reply_to":"9fdfeff1_5c6fc1c4","updated":"2019-02-10 08:07:32.000000000","message":"The reason this is set as False here is that the only driver that actually supports this is libvirt. All other drivers raise NotImplemented.\nI can change this to True and it will have the same behavior as before","commit_id":"5d9b1a267cc6c4dd00cc129d14c7986fff19fe0c"}]}
