)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61d4c8a0568ab8b6ab2842024cc9e69cfadc4f05","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Pass migration to finish_revert_migration()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In order to obtain plug-time events, the libvirt driver needs to pass"},{"line_number":10,"context_line":"a Migration object to the network model. Previously, this object was"},{"line_number":11,"context_line":"obtained with a database lookup. This was done to avoid modifying the"},{"line_number":12,"context_line":"virt driver interface, thus making the fix backportable. This patch"},{"line_number":13,"context_line":"makes the compute manager pass the migration object to the virt driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_dabd2703","line":10,"range":{"start_line":10,"start_character":41,"end_line":10,"end_character":51},"updated":"2019-07-22 20:23:30.000000000","message":"Previously [1], ...\n\n...\n\n[1] https://review.opendev.org/#/c/667177/","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f99c3d1dd1311ed35bae0b90aa240be0eeee519c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Pass migration to finish_revert_migration()"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In order to obtain plug-time events, the libvirt driver needs to pass"},{"line_number":10,"context_line":"a Migration object to the network model. Previously, this object was"},{"line_number":11,"context_line":"obtained with a database lookup. This was done to avoid modifying the"},{"line_number":12,"context_line":"virt driver interface, thus making the fix backportable. This patch"},{"line_number":13,"context_line":"makes the compute manager pass the migration object to the virt driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_7d0c2d3b","line":10,"range":{"start_line":10,"start_character":41,"end_line":10,"end_character":51},"in_reply_to":"7faddb67_dabd2703","updated":"2019-07-22 20:52:57.000000000","message":"Previously, on General Hospital.\n\nDone :D","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61d4c8a0568ab8b6ab2842024cc9e69cfadc4f05","unresolved":false,"context_lines":[{"line_number":13,"context_line":"makes the compute manager pass the migration object to the virt driver"},{"line_number":14,"context_line":"in order to avoid a needless database query."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-on: https://review.opendev.org/670725"},{"line_number":17,"context_line":"Change-Id: I9095c1be65b127d40f5bbe7af5d63fefedb73d33"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_9a356fab","line":16,"updated":"2019-07-22 20:23:30.000000000","message":"I\u0027m assuming you want to drop this right? That is some DNM tempest patch which is going to hold this up from landing.","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f99c3d1dd1311ed35bae0b90aa240be0eeee519c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"makes the compute manager pass the migration object to the virt driver"},{"line_number":14,"context_line":"in order to avoid a needless database query."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Depends-on: https://review.opendev.org/670725"},{"line_number":17,"context_line":"Change-Id: I9095c1be65b127d40f5bbe7af5d63fefedb73d33"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7faddb67_da2c47ae","line":16,"in_reply_to":"7faddb67_9a356fab","updated":"2019-07-22 20:52:57.000000000","message":"Done","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c9c5892fa308e750dd991c91536974abb4666b83","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                block_dev_info \u003d self._get_instance_block_device_info(context,"},{"line_number":999,"context_line":"                                                                      instance)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"                self.driver.finish_revert_migration(context,"},{"line_number":1002,"context_line":"                    instance, net_info, block_dev_info, power_on)"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_715c434b","line":1001,"updated":"2019-07-05 21:17:12.000000000","message":"Oh hello...","commit_id":"799f664f7347fc7bf9193dfaf514052a492e7505"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fefbecac7185edb2aad936166dcc4f78db2e7919","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                block_dev_info \u003d self._get_instance_block_device_info(context,"},{"line_number":999,"context_line":"                                                                      instance)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"                self.driver.finish_revert_migration(context,"},{"line_number":1002,"context_line":"                    instance, net_info, block_dev_info, power_on)"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_f13593f8","line":1001,"in_reply_to":"7faddb67_715c434b","updated":"2019-07-05 21:19:09.000000000","message":"As detailed in https://review.opendev.org/#/c/667177/8/nova/compute/manager.py@1001 - the instance.migration_context should still be set when we get into this case, so I think you could look up the migration record that way (like you were in the driver before this).","commit_id":"799f664f7347fc7bf9193dfaf514052a492e7505"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d4850c1c88b343b7ea0902c82bdbc2873a5d3d42","unresolved":false,"context_lines":[{"line_number":998,"context_line":"                block_dev_info \u003d self._get_instance_block_device_info(context,"},{"line_number":999,"context_line":"                                                                      instance)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"                self.driver.finish_revert_migration(context,"},{"line_number":1002,"context_line":"                    instance, net_info, block_dev_info, power_on)"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0c15774a","line":1001,"in_reply_to":"7faddb67_f13593f8","updated":"2019-07-10 16:59:40.000000000","message":"Done","commit_id":"799f664f7347fc7bf9193dfaf514052a492e7505"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a9c92d186a00a2566ff2a6f3a509e64b4b06b447","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"                block_dev_info \u003d self._get_instance_block_device_info(context,"},{"line_number":1041,"context_line":"                                                                      instance)"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"                migration \u003d objects.Migration.get_by_id_and_instance("},{"line_number":1044,"context_line":"                    instance.migration_context.migration_id,"},{"line_number":1045,"context_line":"                    instance.uuid)"},{"line_number":1046,"context_line":"                self.driver.finish_revert_migration(context, instance,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_f6de850f","line":1043,"range":{"start_line":1043,"start_character":46,"end_line":1043,"end_character":68},"updated":"2019-07-12 13:12:47.000000000","message":"Surely this is broken because you\u0027re not even passing a context to this method. If you have a unit test for this, it\u0027s probably just asserting the broken call. This is where a spec on the mock would help find this problem in unit tests. Better yet you could rebase on top of my functional test and that would also catch it.","commit_id":"f90d38266c784603f0b0cfc49255751da53aef91"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"2773a99ed7e4bdf7d2b3afdb0d0222feffff245d","unresolved":false,"context_lines":[{"line_number":1040,"context_line":"                block_dev_info \u003d self._get_instance_block_device_info(context,"},{"line_number":1041,"context_line":"                                                                      instance)"},{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"                migration \u003d objects.Migration.get_by_id_and_instance("},{"line_number":1044,"context_line":"                    instance.migration_context.migration_id,"},{"line_number":1045,"context_line":"                    instance.uuid)"},{"line_number":1046,"context_line":"                self.driver.finish_revert_migration(context, instance,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_642c18ac","line":1043,"range":{"start_line":1043,"start_character":46,"end_line":1043,"end_character":68},"in_reply_to":"7faddb67_f6de850f","updated":"2019-07-12 17:43:22.000000000","message":"Done","commit_id":"f90d38266c784603f0b0cfc49255751da53aef91"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cf715ab25f0789888a0062499f0adaacabb3cf5","unresolved":false,"context_lines":[{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"            self.compute._init_instance(self.context, instance)"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"            mock_get_mig.assert_called_with(42, instance.uuid)"},{"line_number":1169,"context_line":"            mock_retry.assert_called_once_with(self.context, instance,"},{"line_number":1170,"context_line":"                power_state.SHUTDOWN)"},{"line_number":1171,"context_line":"            mock_get_nw.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_76fb7578","line":1168,"updated":"2019-07-12 13:13:46.000000000","message":"This is broken. If you used a spec on the mock (or rebased on my functional test patch) you\u0027d see that.","commit_id":"f90d38266c784603f0b0cfc49255751da53aef91"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"2773a99ed7e4bdf7d2b3afdb0d0222feffff245d","unresolved":false,"context_lines":[{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"            self.compute._init_instance(self.context, instance)"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"            mock_get_mig.assert_called_with(42, instance.uuid)"},{"line_number":1169,"context_line":"            mock_retry.assert_called_once_with(self.context, instance,"},{"line_number":1170,"context_line":"                power_state.SHUTDOWN)"},{"line_number":1171,"context_line":"            mock_get_nw.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_8429149c","line":1168,"in_reply_to":"7faddb67_76fb7578","updated":"2019-07-12 17:43:22.000000000","message":"Done","commit_id":"f90d38266c784603f0b0cfc49255751da53aef91"}],"nova/virt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61d4c8a0568ab8b6ab2842024cc9e69cfadc4f05","unresolved":false,"context_lines":[{"line_number":747,"context_line":"        :param block_device_info: instance volume block device info"},{"line_number":748,"context_line":"        :param power_on: True if the instance should be powered on, False"},{"line_number":749,"context_line":"                         otherwise"},{"line_number":750,"context_line":"        :param migration: nova.objects.Migration for the migration"},{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        raise NotImplementedError()"},{"line_number":753,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_da6be782","line":750,"updated":"2019-07-22 20:23:30.000000000","message":"This param is in the wrong position in the docstring.","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f99c3d1dd1311ed35bae0b90aa240be0eeee519c","unresolved":false,"context_lines":[{"line_number":747,"context_line":"        :param block_device_info: instance volume block device info"},{"line_number":748,"context_line":"        :param power_on: True if the instance should be powered on, False"},{"line_number":749,"context_line":"                         otherwise"},{"line_number":750,"context_line":"        :param migration: nova.objects.Migration for the migration"},{"line_number":751,"context_line":"        \"\"\""},{"line_number":752,"context_line":"        raise NotImplementedError()"},{"line_number":753,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_bd2b8580","line":750,"in_reply_to":"7faddb67_da6be782","updated":"2019-07-22 20:52:57.000000000","message":"Done","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fefbecac7185edb2aad936166dcc4f78db2e7919","unresolved":false,"context_lines":[{"line_number":9139,"context_line":""},{"line_number":9140,"context_line":"    def finish_revert_migration(self, context, instance, network_info,"},{"line_number":9141,"context_line":"                                block_device_info\u003dNone, power_on\u003dTrue,"},{"line_number":9142,"context_line":"                                migration\u003dNone):"},{"line_number":9143,"context_line":"        LOG.debug(\"Starting finish_revert_migration\","},{"line_number":9144,"context_line":"                  instance\u003dinstance)"},{"line_number":9145,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_b13f1bd5","line":9142,"range":{"start_line":9142,"start_character":42,"end_line":9142,"end_character":46},"updated":"2019-07-05 21:19:09.000000000","message":"Why is this optional? Just to make your life easier for unit tests? If we don\u0027t pass a migration, we could screw up when we wait for events couldn\u0027t we?","commit_id":"799f664f7347fc7bf9193dfaf514052a492e7505"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"d4850c1c88b343b7ea0902c82bdbc2873a5d3d42","unresolved":false,"context_lines":[{"line_number":9139,"context_line":""},{"line_number":9140,"context_line":"    def finish_revert_migration(self, context, instance, network_info,"},{"line_number":9141,"context_line":"                                block_device_info\u003dNone, power_on\u003dTrue,"},{"line_number":9142,"context_line":"                                migration\u003dNone):"},{"line_number":9143,"context_line":"        LOG.debug(\"Starting finish_revert_migration\","},{"line_number":9144,"context_line":"                  instance\u003dinstance)"},{"line_number":9145,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_0101c06b","line":9142,"range":{"start_line":9142,"start_character":42,"end_line":9142,"end_character":46},"in_reply_to":"7faddb67_b13f1bd5","updated":"2019-07-10 16:59:40.000000000","message":"I was thinking that in the _init_instance() case we don\u0027t have a migration, but based on the discussion in the previous patch about always having a migration context, we should make this non-optional. This also means the network model methods shouldn\u0027t have migration as an optional kwarg.","commit_id":"799f664f7347fc7bf9193dfaf514052a492e7505"}],"releasenotes/notes/finish-revert-migration-method-signature-c7ebf4a878757238.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61d4c8a0568ab8b6ab2842024cc9e69cfadc4f05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Virt drivers\u0027s \u0027finish_revert_migration\u0027 method signature now accepts a new"},{"line_number":5,"context_line":"    positional argument, \u0027migration\u0027. This is a \u0027Migration\u0027 object that the"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_7a2bd32f","line":2,"updated":"2019-07-22 20:23:30.000000000","message":"I\u0027m not sure we even necessarily need a release note for this - a heads up to the mailing list is probably sufficient given we don\u0027t technically support out of tree drivers. It\u0027s on vendors that support them to make sure they are testing their stuff and paying attention to what\u0027s going on upstream which they can do in the mailing list and/or frequent rebases and CI/CD of their code branch.","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f99c3d1dd1311ed35bae0b90aa240be0eeee519c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Virt drivers\u0027s \u0027finish_revert_migration\u0027 method signature now accepts a new"},{"line_number":5,"context_line":"    positional argument, \u0027migration\u0027. This is a \u0027Migration\u0027 object that the"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_dd33e1f5","line":2,"in_reply_to":"7faddb67_7a2bd32f","updated":"2019-07-22 20:52:57.000000000","message":"Sure, gone and done.","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61d4c8a0568ab8b6ab2842024cc9e69cfadc4f05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Virt drivers\u0027s \u0027finish_revert_migration\u0027 method signature now accepts a new"},{"line_number":5,"context_line":"    positional argument, \u0027migration\u0027. This is a \u0027Migration\u0027 object that the"},{"line_number":6,"context_line":"    libvirt driver uses as part of its decision on what external events it"},{"line_number":7,"context_line":"    needs to wait for. If you have out of tree virt drivers, please update"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_5a0db7e6","line":4,"range":{"start_line":4,"start_character":15,"end_line":4,"end_character":18},"updated":"2019-07-22 20:23:30.000000000","message":"oy","commit_id":"c6bb76f12bbfd5ae7fcd8576d22c8a19cf848411"}]}
