)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb3ac384eedfdd4d26ae04d38fd7c081c3183321","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     datlq \u003cdatlq3@viettel.com.vn\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-09-14 11:52:59 +0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix unplugging VIF when migrate/resize/rebuild VM"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When migrating/resizing/rebuilding VM to destination"},{"line_number":10,"context_line":"host that has VIF type difference from source VIF"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f560f44_c684acb5","line":7,"range":{"start_line":7,"start_character":39,"end_line":7,"end_character":49},"updated":"2020-09-14 11:18:21.000000000","message":"vifs will never change for rebuild its not a move operation\nso there is no souce or destioan vif its the same one.","commit_id":"196f81c0db99d27545535e28bf22bb81e25a6acf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb3ac384eedfdd4d26ae04d38fd7c081c3183321","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix unplugging VIF when migrate/resize/rebuild VM"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When migrating/resizing/rebuilding VM to destination"},{"line_number":10,"context_line":"host that has VIF type difference from source VIF"},{"line_number":11,"context_line":"type, it goes fail due to exception in unplugging"},{"line_number":12,"context_line":"VIF on source host after user perform a confirmation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f560f44_86b47484","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":34},"updated":"2020-09-14 11:18:21.000000000","message":"maybe you mean evaucating because rebuild does not change host","commit_id":"196f81c0db99d27545535e28bf22bb81e25a6acf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb3ac384eedfdd4d26ae04d38fd7c081c3183321","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix unplugging VIF when migrate/resize/rebuild VM"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When migrating/resizing/rebuilding VM to destination"},{"line_number":10,"context_line":"host that has VIF type difference from source VIF"},{"line_number":11,"context_line":"type, it goes fail due to exception in unplugging"},{"line_number":12,"context_line":"VIF on source host after user perform a confirmation"},{"line_number":13,"context_line":"action."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2c195df5fcf844c0587933b5b5995bdca1a3ebed"},{"line_number":16,"context_line":"Closes-Bug: #1895220"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f560f44_6647a079","line":13,"range":{"start_line":9,"start_character":52,"end_line":13,"end_character":7},"updated":"2020-09-14 11:18:21.000000000","message":"in the single port binding workflow when we revert we have not updated the port bindigns yet so for revert they are still pointing a the souce vif details.\n\nfor confirm we should be unpluging the source biding before we update the port binding so we shoudl not need to store the source port biding since that is what neutron will have at that point.\n\ni guess the assertion is that we are doing the port update to change the binding host before we enter resize_verify and that when we get to confirm they are already changed?\n\ni am less familiar with the single port binding workflow for move operation since we have been intending to remove it since rocky.","commit_id":"196f81c0db99d27545535e28bf22bb81e25a6acf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3da4afadc449111c81dc3d59033c250bfe51921b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"action."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This change unplugs the vifs in resize_instance and"},{"line_number":16,"context_line":"waps the call to unplug in confirm with an try except"},{"line_number":17,"context_line":"block. the call to unplug_vifs in confirm is not removed"},{"line_number":18,"context_line":"to support rolling upgrades but a todo is added to remove"},{"line_number":19,"context_line":"it after the Wallaby release."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f560f44_455dbb46","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":4},"updated":"2020-09-21 13:27:49.000000000","message":"nit: wraps","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb3ac384eedfdd4d26ae04d38fd7c081c3183321","unresolved":false,"context_lines":[{"line_number":4376,"context_line":"                if vif[\u0027id\u0027] in old_vif_dict:"},{"line_number":4377,"context_line":"                    vif[\u0027type\u0027] \u003d old_vif_dict.get(vif[\u0027id\u0027])"},{"line_number":4378,"context_line":""},{"line_number":4379,"context_line":"        self.driver.confirm_migration(context, migration, instance,"},{"line_number":4380,"context_line":"                                      network_info)"},{"line_number":4381,"context_line":""},{"line_number":4382,"context_line":"        # Free up the old_flavor usage from the resource tracker for this host."},{"line_number":4383,"context_line":"        self.rt.drop_move_claim_at_source(context, instance, migration)"},{"line_number":4384,"context_line":""},{"line_number":4385,"context_line":"        # NOTE(mriedem): The old_vm_state could be STOPPED but the user"},{"line_number":4386,"context_line":"        # might have manually powered up the instance to confirm the"},{"line_number":4387,"context_line":"        # resize/migrate, so we need to check the current power state"},{"line_number":4388,"context_line":"        # on the instance and set the vm_state appropriately. We default"},{"line_number":4389,"context_line":"        # to ACTIVE because if the power state is not SHUTDOWN, we"},{"line_number":4390,"context_line":"        # assume _sync_instance_power_state will clean it up."},{"line_number":4391,"context_line":"        p_state \u003d instance.power_state"},{"line_number":4392,"context_line":"        vm_state \u003d None"},{"line_number":4393,"context_line":"        if p_state \u003d\u003d power_state.SHUTDOWN:"},{"line_number":4394,"context_line":"            vm_state \u003d vm_states.STOPPED"},{"line_number":4395,"context_line":"            LOG.debug(\"Resized/migrated instance is powered off. \""},{"line_number":4396,"context_line":"                      \"Setting vm_state to \u0027%s\u0027.\", vm_state,"},{"line_number":4397,"context_line":"                      instance\u003dinstance)"},{"line_number":4398,"context_line":"        else:"},{"line_number":4399,"context_line":"            vm_state \u003d vm_states.ACTIVE"},{"line_number":4400,"context_line":""},{"line_number":4401,"context_line":"        instance.vm_state \u003d vm_state"},{"line_number":4402,"context_line":"        instance.task_state \u003d None"},{"line_number":4403,"context_line":"        instance.save(expected_task_state\u003d[None, task_states.DELETING,"},{"line_number":4404,"context_line":"                                           task_states.SOFT_DELETING])"},{"line_number":4405,"context_line":""},{"line_number":4406,"context_line":"        self._notify_about_instance_usage("},{"line_number":4407,"context_line":"            context, instance, \"resize.confirm.end\","}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3138409e","line":4404,"range":{"start_line":4379,"start_character":6,"end_line":4404,"end_character":70},"updated":"2020-09-14 11:18:21.000000000","message":"if we raise an exception before we get to this save we will never clear the old_vif_type","commit_id":"196f81c0db99d27545535e28bf22bb81e25a6acf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"22399c077e8a080ea9b6628d48102f8db84e4714","unresolved":false,"context_lines":[{"line_number":5566,"context_line":"        # a STOPPED server and we don\u0027t want to set it back to ACTIVE"},{"line_number":5567,"context_line":"        # in case migrate_disk_and_power_off raises InstanceFaultRollback."},{"line_number":5568,"context_line":"        instance_state \u003d instance.vm_state"},{"line_number":5569,"context_line":"        vifs \u003d {}"},{"line_number":5570,"context_line":"        with self._error_out_instance_on_exception("},{"line_number":5571,"context_line":"                context, instance, instance_state\u003dinstance_state), \\"},{"line_number":5572,"context_line":"             errors_out_migration_ctxt(migration):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_a6c89875","line":5569,"updated":"2020-09-14 10:36:40.000000000","message":"you can move this to L5579","commit_id":"196f81c0db99d27545535e28bf22bb81e25a6acf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fb3ac384eedfdd4d26ae04d38fd7c081c3183321","unresolved":false,"context_lines":[{"line_number":5576,"context_line":"            migration.status \u003d \u0027migrating\u0027"},{"line_number":5577,"context_line":"            migration.save()"},{"line_number":5578,"context_line":""},{"line_number":5579,"context_line":"            # Store old vif type for unpluging"},{"line_number":5580,"context_line":"            for vif in network_info:"},{"line_number":5581,"context_line":"                vifs[vif[\u0027id\u0027]] \u003d vif[\u0027type\u0027]"},{"line_number":5582,"context_line":"            if vifs:"},{"line_number":5583,"context_line":"                instance.system_metadata[\u0027old_vif_type\u0027] \u003d \\"},{"line_number":5584,"context_line":"                    jsonutils.dumps(vifs)"},{"line_number":5585,"context_line":""},{"line_number":5586,"context_line":"            instance.task_state \u003d task_states.RESIZE_MIGRATING"},{"line_number":5587,"context_line":"            instance.save(expected_task_state\u003dtask_states.RESIZE_PREP)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_a606d820","line":5584,"range":{"start_line":5579,"start_character":12,"end_line":5584,"end_character":41},"updated":"2020-09-14 11:18:21.000000000","message":"i am not in favor of storing the vif type in the system metadata table.\n\nthat also is not enough info to unplug the vifs.\nyou would also need to store the binding profile and bindign details to be able to reconstruct the vif.\n\nbasically you need to sotre the full vif object really like we do with \n\nhttps://github.com/openstack/nova/blob/3b416332222d2e9804a43f619b8bc9399c7302df/nova/objects/migrate_data.py#L29-L59\n\nbut the minim set of fields would be \n\nport_id\u0027: fields.StringField(),\n        \u0027vnic_type\u0027: fields.StringField(),  # TODO(sean-k-mooney): make enum?\n        \u0027vif_type\u0027: fields.StringField(),\n        # vif_details is a dict whose contents are dependent on the vif_type\n        # and can be any number of types for the values, so we just store it\n        # as a serialized dict\n        \u0027vif_details_json\u0027: fields.StringField(),\n        # profile is in the same random dict of terrible boat as vif_details\n        # so it\u0027s stored as a serialized json string\n        \u0027profile_json\u0027: fields.StringField(),\n        \u0027host\u0027: fields.StringField(),\n\nif we did not use the migrate_data object the next most correct place to store this would be the migration_context.","commit_id":"196f81c0db99d27545535e28bf22bb81e25a6acf"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3da4afadc449111c81dc3d59033c250bfe51921b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f560f44_00a9f18e","updated":"2020-09-21 13:27:49.000000000","message":"We need proper test coverage. The change below does not assert the new behavior you added to the driver. E.g. I can remove your change and the tests still pass","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dcc94828a45b7a9f3bc63b6066e0d6a46daa71f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f560f44_80c34138","in_reply_to":"9f560f44_00a9f18e","updated":"2020-09-21 13:35:44.000000000","message":"ah i can add a specifc test to assert that unplug_vifs is called in migrate_disk_and_power_off\n\ntaht should adress that case. i think the other test dont need to also assert that provided we have a specific test that asserts it.\n\ni can also reference the bug in a doc comment in the bug so we know why its added.","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a0e4ba38e8b295b8675207886ea87444ea6b5ec3","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"        if instance.host !\u003d CONF.host:"},{"line_number":1602,"context_line":"            self._undefine_domain(instance)"},{"line_number":1603,"context_line":"            # TODO(sean-k-mooney): remove this call to unplug_vifs after"},{"line_number":1604,"context_line":"            # Wallaby is released. VIFs are now unplugged in resize_instance."},{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_ccb8d8e9","line":1604,"updated":"2020-10-06 18:26:41.000000000","message":"Just want to state that things like this are why we can\u0027t support or enforce that N-\u003eN+m upgrades can work (where m\u003e1). We do it all over the place, so I\u0027m not faulting you for it necessarily, but behaviors like this are \"spooky action at a distance\" that the RPC layer can\u0027t control for.","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17c3496e1338ee7cb21ce6dc2b83452480657aee","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"        if instance.host !\u003d CONF.host:"},{"line_number":1602,"context_line":"            self._undefine_domain(instance)"},{"line_number":1603,"context_line":"            # TODO(sean-k-mooney): remove this call to unplug_vifs after"},{"line_number":1604,"context_line":"            # Wallaby is released. VIFs are now unplugged in resize_instance."},{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_8c738016","line":1604,"in_reply_to":"9f560f44_ac05a47b","updated":"2020-10-06 18:37:40.000000000","message":"Nope, no better way really, which is my point. Just documenting it for the next \"when can we span more versions\" discussion :)","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c7a14736c00f72a515ba22c1f5fcca6cab0918a","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"        if instance.host !\u003d CONF.host:"},{"line_number":1602,"context_line":"            self._undefine_domain(instance)"},{"line_number":1603,"context_line":"            # TODO(sean-k-mooney): remove this call to unplug_vifs after"},{"line_number":1604,"context_line":"            # Wallaby is released. VIFs are now unplugged in resize_instance."},{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_ac05a47b","line":1604,"in_reply_to":"9f560f44_ccb8d8e9","updated":"2020-10-06 18:34:57.000000000","message":"right so i have done it this way so we can backport it.\nif i bump the rpc version then we cant is there a better way to track this? \n\nthe bug the patch was orginial filed for was reported against rocky and the next patch which depens on this effect queens and older release.","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a0e4ba38e8b295b8675207886ea87444ea6b5ec3","unresolved":false,"context_lines":[{"line_number":1604,"context_line":"            # Wallaby is released. VIFs are now unplugged in resize_instance."},{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"},{"line_number":1608,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    def _get_volume_driver(self, connection_info):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_4c916853","line":1607,"updated":"2020-10-06 18:26:41.000000000","message":"You\u0027re not covering the fact that we ignore this exception in the tests are you?","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c7a14736c00f72a515ba22c1f5fcca6cab0918a","unresolved":false,"context_lines":[{"line_number":1604,"context_line":"            # Wallaby is released. VIFs are now unplugged in resize_instance."},{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"},{"line_number":1608,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    def _get_volume_driver(self, connection_info):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_6cbd4cb0","line":1607,"in_reply_to":"9f560f44_4c916853","updated":"2020-10-06 18:34:57.000000000","message":"no you are right i am not i can add that.","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a0e4ba38e8b295b8675207886ea87444ea6b5ec3","unresolved":false,"context_lines":[{"line_number":10302,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":10303,"context_line":""},{"line_number":10304,"context_line":"        self.power_off(instance, timeout, retry_interval)"},{"line_number":10305,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":10306,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":10307,"context_line":"            block_device_info)"},{"line_number":10308,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_6cc1cc4e","line":10305,"updated":"2020-10-06 18:26:41.000000000","message":"Does this not need the same \"if not same host\" conditional?","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9c7a14736c00f72a515ba22c1f5fcca6cab0918a","unresolved":false,"context_lines":[{"line_number":10302,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":10303,"context_line":""},{"line_number":10304,"context_line":"        self.power_off(instance, timeout, retry_interval)"},{"line_number":10305,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":10306,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":10307,"context_line":"            block_device_info)"},{"line_number":10308,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_acb764d7","line":10305,"in_reply_to":"9f560f44_6cc1cc4e","updated":"2020-10-06 18:34:57.000000000","message":"at this point we are on the source node and we have not update the instance.host or networking info so it will always be the source node.","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17c3496e1338ee7cb21ce6dc2b83452480657aee","unresolved":false,"context_lines":[{"line_number":10302,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":10303,"context_line":""},{"line_number":10304,"context_line":"        self.power_off(instance, timeout, retry_interval)"},{"line_number":10305,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":10306,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":10307,"context_line":"            block_device_info)"},{"line_number":10308,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_cc5e1878","line":10305,"in_reply_to":"9f560f44_acb764d7","updated":"2020-10-06 18:37:40.000000000","message":"Okay, I thought that check was to make sure we don\u0027t unplug/undefine if we\u0027re doing same-host resize. If it\u0027s because that method gets called in both places all the time, then okay...","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f88e3ee77d043684d8ede1e2952d5ef04a113b4","unresolved":false,"context_lines":[{"line_number":10302,"context_line":"                    exception.ResizeError(reason\u003dreason))"},{"line_number":10303,"context_line":""},{"line_number":10304,"context_line":"        self.power_off(instance, timeout, retry_interval)"},{"line_number":10305,"context_line":"        self.unplug_vifs(instance, network_info)"},{"line_number":10306,"context_line":"        block_device_mapping \u003d driver.block_device_info_get_mapping("},{"line_number":10307,"context_line":"            block_device_info)"},{"line_number":10308,"context_line":"        for vol in block_device_mapping:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_20f3bfa0","line":10305,"in_reply_to":"9f560f44_cc5e1878","updated":"2020-10-21 18:39:12.000000000","message":"in the finish resize case we call plug_vifs trasitivly via\n_create_guest_with_network\n\nhttps://github.com/openstack/nova/blob/719dfbb98eb89f66391d57a8abe7a5394164107d/nova/virt/libvirt/driver.py#L10492\nhttps://github.com/openstack/nova/blob/719dfbb98eb89f66391d57a8abe7a5394164107d/nova/virt/libvirt/driver.py#L6623\n\nfor revert we do it here \n\nhttps://github.com/openstack/nova/blob/719dfbb98eb89f66391d57a8abe7a5394164107d/nova/virt/libvirt/driver.py#L10598-L10600\n\nso regardless of same host migrate or different host migrate we will plug the vifs in both finsih and revert","commit_id":"035290789784bd9b4db56a1320ab2af885a72278"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a7d9f33cb3656555b2bdf8ec88d8a0e0a5666b7a","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"},{"line_number":1608,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":1611,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_adc78a12","line":1608,"updated":"2020-10-27 16:07:58.000000000","message":"Surely we can determine whether this has happened or not, rather than brute forcing attempting things?","commit_id":"9e2ae429df34fcb5148d8605b55aa22be17270ff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"414b8aaa2ee78fe0987c3fdd7ec3facc6556a240","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"            try:"},{"line_number":1606,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1607,"context_line":"            except exception.InternalError as e:"},{"line_number":1608,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":1611,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f65232a_28db68ed","line":1608,"in_reply_to":"3f65232a_adc78a12","updated":"2020-10-27 16:53:20.000000000","message":"not in a back portably way.\nwe would need to need some kind of rpc call to check on the source node.\n\nthis need to go back to train since live migration for any backend that does not support multiple prot bidnign is broken since then.\n\nthe call to unplug_vifs will be removed after wallaby but we need to keep it for at least one cycle for upgrades.","commit_id":"9e2ae429df34fcb5148d8605b55aa22be17270ff"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dd0d86bb4afa54825d981dfbc1381744b39bf63f","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"            try:"},{"line_number":1586,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1587,"context_line":"            except exception.InternalError as e:"},{"line_number":1588,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1589,"context_line":""},{"line_number":1590,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":1591,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f621f24_cc8573d1","line":1588,"range":{"start_line":1588,"start_character":16,"end_line":1588,"end_character":47},"updated":"2020-11-06 16:46:45.000000000","message":"I was going to say that this shouldn\u0027t happen because \u0027network_info\u0027 should be fresh before we get here since it\u0027s refreshed by the compute manager prior to making the call to this driver function. However, I assume it\u0027s not possible to detect whether these are attached as-is because \u0027network_info\u0027 doesn\u0027t indicate the attached state of VIFs? If it does, surely we could filter on attached VIFs only?\n\nIf we do keep this, we should probably _not_ log the entire stacktrace. This is a lot of noise for something we expect to be part of the \"normal\" flow on a Wallaby-based deployment.\n\n[1] https://github.com/openstack/nova/blob/c0fe95fcc5aec99a83dd57093dc230ef67b36b39/nova/compute/manager.py#L4355-L4356","commit_id":"8fac30c458b864c46e084be455b3e6b1241f1c9a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"82f729b6675eceea7e5b44c4dc2118d8163fcb61","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"            try:"},{"line_number":1586,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1587,"context_line":"            except exception.InternalError as e:"},{"line_number":1588,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1589,"context_line":""},{"line_number":1590,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":1591,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f621f24_d7b4dcd3","line":1588,"range":{"start_line":1588,"start_character":16,"end_line":1588,"end_character":47},"in_reply_to":"1f621f24_b7904045","updated":"2020-11-06 17:00:51.000000000","message":"right you are, no exception will be logged unless we pass \u0027exc_info\u0027, which we\u0027re clearly not doing\n\n[1] https://docs.python.org/3/library/logging.html#logging.Logger.debug","commit_id":"8fac30c458b864c46e084be455b3e6b1241f1c9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"afc7db863e4c0be46dfa7c4747792b23c7b929b9","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"            try:"},{"line_number":1586,"context_line":"                self.unplug_vifs(instance, network_info)"},{"line_number":1587,"context_line":"            except exception.InternalError as e:"},{"line_number":1588,"context_line":"                LOG.debug(e, instance\u003dinstance)"},{"line_number":1589,"context_line":""},{"line_number":1590,"context_line":"    def _get_volume_driver(self, connection_info):"},{"line_number":1591,"context_line":"        driver_type \u003d connection_info.get(\u0027driver_volume_type\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f621f24_b7904045","line":1588,"range":{"start_line":1588,"start_character":16,"end_line":1588,"end_character":47},"in_reply_to":"1f621f24_cc8573d1","updated":"2020-11-06 16:59:06.000000000","message":"this will only be part of the normal flow if you are resizing between hosts with different network backend which was never really supported\n\nthe excption that will be raised here is only raised if the source node does not have the os-vif plugin for the dest host or one of the cli that is used so its really an edgecases.\n\nlog.debug(Exception) shoudl only log the excption message not the trace back unlike log.exception so i think this fine.\n\nmost of the time the unplug_vifs will work and not raise too so its generally not going to show up in the logs.","commit_id":"8fac30c458b864c46e084be455b3e6b1241f1c9a"}],"releasenotes/notes/unplug-vifs-in-resize_instance-fcd98ea44e4b8725.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3da4afadc449111c81dc3d59033c250bfe51921b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    cold migration an resize between hosts with different network backend was"},{"line_number":5,"context_line":"    previously incomplete. if the os-vif plugin for all network backends available"},{"line_number":6,"context_line":"    in the cloud are not installed on all nodes unplugging will fail in"},{"line_number":7,"context_line":"    confirm_resize as the vif-type for the destination will be used when unplugging"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f560f44_c09899cd","line":4,"updated":"2020-09-21 13:27:49.000000000","message":"Support for cold migration ...","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3da4afadc449111c81dc3d59033c250bfe51921b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    cold migration an resize between hosts with different network backend was"},{"line_number":5,"context_line":"    previously incomplete. if the os-vif plugin for all network backends available"},{"line_number":6,"context_line":"    in the cloud are not installed on all nodes unplugging will fail in"},{"line_number":7,"context_line":"    confirm_resize as the vif-type for the destination will be used when unplugging"},{"line_number":8,"context_line":"    on the source hosts. To prevent this unplugging of VIFs is now done in"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f560f44_00a3b101","line":5,"range":{"start_line":5,"start_character":27,"end_line":5,"end_character":28},"updated":"2020-09-21 13:27:49.000000000","message":"I","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3da4afadc449111c81dc3d59033c250bfe51921b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    cold migration an resize between hosts with different network backend was"},{"line_number":5,"context_line":"    previously incomplete. if the os-vif plugin for all network backends available"},{"line_number":6,"context_line":"    in the cloud are not installed on all nodes unplugging will fail in"},{"line_number":7,"context_line":"    confirm_resize as the vif-type for the destination will be used when unplugging"},{"line_number":8,"context_line":"    on the source hosts. To prevent this unplugging of VIFs is now done in"},{"line_number":9,"context_line":"    resize_instance. To support rolling upgrades and backport of this change"},{"line_number":10,"context_line":"    the call to unplug_vifs in confim_resize is maintained but the InternalError"},{"line_number":11,"context_line":"    that was raised is caught and logged at debug level. This redundant call"},{"line_number":12,"context_line":"    Will be removed in a future release."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9f560f44_6066edbd","line":12,"range":{"start_line":6,"start_character":69,"end_line":12,"end_character":40},"updated":"2020-09-21 13:27:49.000000000","message":"This is too implementation specific. Release notes are for the deployers who might not familiar with what confirm_resize and resize_instance means. I would rephrase this to something like:\n\n... will fail during confirming the resize. The issue is caused by the VIF unplug that happened during the resize confirm action on the source host when the original backend information of the VIF was not available. The fix moved the unplug to happen during the resize action when such information is still available.","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3da4afadc449111c81dc3d59033c250bfe51921b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9f560f44_000d71e7","line":13,"updated":"2020-09-21 13:27:49.000000000","message":"Please refer to the bug report in the release notes.","commit_id":"089cc217daddc5f87cd342370c06e11f49d40e67"}]}
