)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca2334b76afd186999a597966aaf7539966abf38","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In the prep_resize case we also re-raise the new exception types but it"},{"line_number":25,"context_line":"does not matter much as that function is called with an rpc cast so the"},{"line_number":26,"context_line":"exception is only logged."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"[1] https://github.com/openstack/nova/blob/ed503ce3e1a8598c6e8ee9d8b345c1d92df01539/nova/compute/manager.py#L3448"},{"line_number":29,"context_line":"[2] https://github.com/openstack/nova/blob/66ffed4586f40221925aeca17197e4f90551c980/nova/compute/rpcapi.py#L923"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_1572da4a","line":26,"range":{"start_line":26,"start_character":24,"end_line":26,"end_character":25},"updated":"2019-12-12 14:47:20.000000000","message":"[2] is missing here","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fca742c2eed73404c107bcb7f3826b44acad27db","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In the _do_rebuild_instance_with_claim code path the exception type is"},{"line_number":20,"context_line":"not translated back to BuildAbortException as the old and the new"},{"line_number":21,"context_line":"exceptions are both handled by the except Exception branch in"},{"line_number":22,"context_line":"rebuild_instance [1]."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[1] https://github.com/openstack/nova/blob/ed503ce3e1a8598c6e8ee9d8b345c1d92df01539/nova/compute/manager.py#L3448"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3fa7e38b_a42ce293","line":22,"range":{"start_line":21,"start_character":20,"end_line":22,"end_character":21},"updated":"2019-12-13 19:54:10.000000000","message":"But that branch reraises (L3455) which means that your new exception, and not BuildAbortException, is what goes back across the RPC wire, right?","commit_id":"deada11da1954efd443b66905765aa77f343bc23"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3e55090ed5fa909a24de6980ad2b76ac1209398","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In the _do_rebuild_instance_with_claim code path the exception type is"},{"line_number":20,"context_line":"not translated back to BuildAbortException as the old and the new"},{"line_number":21,"context_line":"exceptions are both handled by the except Exception branch in"},{"line_number":22,"context_line":"rebuild_instance [1]."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[1] https://github.com/openstack/nova/blob/ed503ce3e1a8598c6e8ee9d8b345c1d92df01539/nova/compute/manager.py#L3448"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3fa7e38b_040936db","line":22,"range":{"start_line":21,"start_character":20,"end_line":22,"end_character":21},"in_reply_to":"3fa7e38b_a42ce293","updated":"2019-12-13 20:17:11.000000000","message":"Nothing is synchronously RPC calling rebuild_instance so the exception that gets re-raised does not go \"over the wire\" though it will be used in any error-handler decorators on the method like wrap_instance_fault, wrap_instance_event, wrap_exception, etc. But I\u0027m not sure that matters.\n\nhttps://github.com/openstack/nova/blob/9428a1e53b0947dec259e52a2afe08fb8bbef7b5/nova/compute/rpcapi.py#L1035","commit_id":"deada11da1954efd443b66905765aa77f343bc23"}],"nova/compute/manager.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"220af60104ec41bc8b65b055e02be5b13e782420","unresolved":false,"context_lines":[{"line_number":3418,"context_line":"        if evacuate:"},{"line_number":3419,"context_line":"            provider_mapping \u003d self._get_request_group_mapping(request_spec)"},{"line_number":3420,"context_line":"            if provider_mapping:"},{"line_number":3421,"context_line":"                instance.update_pci_request_spec_with_allocated_interface_name("},{"line_number":3422,"context_line":"                    context, self.reportclient, provider_mapping)"},{"line_number":3423,"context_line":""},{"line_number":3424,"context_line":"        claim_context \u003d rebuild_claim("}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c3da5e48","line":3421,"updated":"2019-12-11 16:38:04.000000000","message":"afaict this delta will result in rebuild_instance raising one of your new exceptions instead of BuildAbortException.\n\nTrying to chase that call up the stack and across the RPC wire, I can\u0027t tell whether/how that would actually affect the operation at the conductor. Can you convince me it\u0027s okay?","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7f3f447a380edaccc38642fe8570f41e31a543e8","unresolved":false,"context_lines":[{"line_number":3418,"context_line":"        if evacuate:"},{"line_number":3419,"context_line":"            provider_mapping \u003d self._get_request_group_mapping(request_spec)"},{"line_number":3420,"context_line":"            if provider_mapping:"},{"line_number":3421,"context_line":"                instance.update_pci_request_spec_with_allocated_interface_name("},{"line_number":3422,"context_line":"                    context, self.reportclient, provider_mapping)"},{"line_number":3423,"context_line":""},{"line_number":3424,"context_line":"        claim_context \u003d rebuild_claim("}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_cf4a7581","line":3421,"in_reply_to":"3fa7e38b_c3da5e48","updated":"2019-12-12 14:46:38.000000000","message":"Explained away in the commit message","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"220af60104ec41bc8b65b055e02be5b13e782420","unresolved":false,"context_lines":[{"line_number":4916,"context_line":"                # _update_pci_request_spec_with_allocated_interface_name so"},{"line_number":4917,"context_line":"                # there is no reason to re-schedule. Just revert the allocation"},{"line_number":4918,"context_line":"                # and fail the migration."},{"line_number":4919,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":4920,"context_line":"                    self._revert_allocation(context, instance, migration)"},{"line_number":4921,"context_line":"            except Exception:"},{"line_number":4922,"context_line":"                # Since we hit a failure, we\u0027re either rescheduling or dead"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_43942e41","line":4919,"range":{"start_line":4919,"start_character":30,"end_line":4919,"end_character":56},"updated":"2019-12-11 16:38:04.000000000","message":"likewise here","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7f3f447a380edaccc38642fe8570f41e31a543e8","unresolved":false,"context_lines":[{"line_number":4916,"context_line":"                # _update_pci_request_spec_with_allocated_interface_name so"},{"line_number":4917,"context_line":"                # there is no reason to re-schedule. Just revert the allocation"},{"line_number":4918,"context_line":"                # and fail the migration."},{"line_number":4919,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":4920,"context_line":"                    self._revert_allocation(context, instance, migration)"},{"line_number":4921,"context_line":"            except Exception:"},{"line_number":4922,"context_line":"                # Since we hit a failure, we\u0027re either rescheduling or dead"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_ba06551a","line":4919,"range":{"start_line":4919,"start_character":30,"end_line":4919,"end_character":56},"in_reply_to":"3fa7e38b_43942e41","updated":"2019-12-12 14:46:38.000000000","message":"explained away in the commit message","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":3346,"context_line":"        with self._error_out_instance_on_exception("},{"line_number":3347,"context_line":"                context, instance, instance_state\u003dinstance_state):"},{"line_number":3348,"context_line":"            try:"},{"line_number":3349,"context_line":"                self._do_rebuild_instance_with_claim("},{"line_number":3350,"context_line":"                    context, instance, orig_image_ref,"},{"line_number":3351,"context_line":"                    image_meta, injected_files, new_pass, orig_sys_metadata,"},{"line_number":3352,"context_line":"                    bdms, evacuate, on_shared_storage, preserve_ephemeral,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_40216ffb","line":3349,"updated":"2019-12-12 18:32:33.000000000","message":"ok called here...","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":3391,"context_line":"                          instance\u003dinstance)"},{"line_number":3392,"context_line":"                self._set_migration_status(migration, \u0027failed\u0027)"},{"line_number":3393,"context_line":"                self._notify_instance_rebuild_error(context, instance, e, bdms)"},{"line_number":3394,"context_line":"            except Exception as e:"},{"line_number":3395,"context_line":"                self._set_migration_status(migration, \u0027failed\u0027)"},{"line_number":3396,"context_line":"                if evacuate or scheduled_node is not None:"},{"line_number":3397,"context_line":"                    self.rt.delete_allocation_for_evacuated_instance("}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_a0770308","line":3394,"updated":"2019-12-12 18:32:33.000000000","message":"...and handled here","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":4841,"context_line":"            self._get_request_group_mapping(request_spec)"},{"line_number":4842,"context_line":""},{"line_number":4843,"context_line":"        if request_group_resource_providers_mapping:"},{"line_number":4844,"context_line":"            instance.update_pci_request_spec_with_allocated_interface_name("},{"line_number":4845,"context_line":"                context, self.reportclient,"},{"line_number":4846,"context_line":"                request_group_resource_providers_mapping)"},{"line_number":4847,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_8032075c","line":4844,"updated":"2019-12-12 18:32:33.000000000","message":"I would have probably done what you did with rebuild which is put this in the try/except and raise BuildAbortException so prep_resize wouldn\u0027t need to change.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":4841,"context_line":"            self._get_request_group_mapping(request_spec)"},{"line_number":4842,"context_line":""},{"line_number":4843,"context_line":"        if request_group_resource_providers_mapping:"},{"line_number":4844,"context_line":"            instance.update_pci_request_spec_with_allocated_interface_name("},{"line_number":4845,"context_line":"                context, self.reportclient,"},{"line_number":4846,"context_line":"                request_group_resource_providers_mapping)"},{"line_number":4847,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_1970c6d9","line":4844,"in_reply_to":"3fa7e38b_8032075c","updated":"2019-12-13 18:25:19.000000000","message":"Done","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":4924,"context_line":"                                  instance_type, filter_properties,"},{"line_number":4925,"context_line":"                                  node, migration, request_spec,"},{"line_number":4926,"context_line":"                                  clean_shutdown)"},{"line_number":4927,"context_line":"            except (exception.AmbiguousResourceProviderForPCIRequest,"},{"line_number":4928,"context_line":"                    exception.UnexpectedResourceProviderNameForPCIRequest):"},{"line_number":4929,"context_line":"                # NOTE(gibi): We failed"},{"line_number":4930,"context_line":"                # _update_pci_request_spec_with_allocated_interface_name so"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_00e937a9","line":4927,"updated":"2019-12-12 18:32:33.000000000","message":"The commit message says, \"In the prep_resize case we also re-raise the new exception types but it\ndoes not matter much as that function is called with an rpc cast so the\nexception is only logged.\"\n\nIt does matter that we handle these here specifically because if we don\u0027t we\u0027d hit the Exception block below and potentially reschedule which is pointless for these types of errors.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":4924,"context_line":"                                  instance_type, filter_properties,"},{"line_number":4925,"context_line":"                                  node, migration, request_spec,"},{"line_number":4926,"context_line":"                                  clean_shutdown)"},{"line_number":4927,"context_line":"            except (exception.AmbiguousResourceProviderForPCIRequest,"},{"line_number":4928,"context_line":"                    exception.UnexpectedResourceProviderNameForPCIRequest):"},{"line_number":4929,"context_line":"                # NOTE(gibi): We failed"},{"line_number":4930,"context_line":"                # _update_pci_request_spec_with_allocated_interface_name so"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_b97ad2b7","line":4927,"in_reply_to":"3fa7e38b_00e937a9","updated":"2019-12-13 18:25:19.000000000","message":"Done, we moved back to BuildAbort","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":4927,"context_line":"            except (exception.AmbiguousResourceProviderForPCIRequest,"},{"line_number":4928,"context_line":"                    exception.UnexpectedResourceProviderNameForPCIRequest):"},{"line_number":4929,"context_line":"                # NOTE(gibi): We failed"},{"line_number":4930,"context_line":"                # _update_pci_request_spec_with_allocated_interface_name so"},{"line_number":4931,"context_line":"                # there is no reason to re-schedule. Just revert the allocation"},{"line_number":4932,"context_line":"                # and fail the migration."},{"line_number":4933,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_c0155f9c","line":4930,"range":{"start_line":4930,"start_character":18,"end_line":4930,"end_character":72},"updated":"2019-12-12 18:32:33.000000000","message":"This no longer exists. Again, I\u0027d probably leave this as handling BuildAbortException and have _prep_resize translate those errors to BuildAbortException.\n\nEither way this comment needs updating which if that\u0027s the only thing \"wrong\" with this change could be done in a follow up.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":4927,"context_line":"            except (exception.AmbiguousResourceProviderForPCIRequest,"},{"line_number":4928,"context_line":"                    exception.UnexpectedResourceProviderNameForPCIRequest):"},{"line_number":4929,"context_line":"                # NOTE(gibi): We failed"},{"line_number":4930,"context_line":"                # _update_pci_request_spec_with_allocated_interface_name so"},{"line_number":4931,"context_line":"                # there is no reason to re-schedule. Just revert the allocation"},{"line_number":4932,"context_line":"                # and fail the migration."},{"line_number":4933,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_f9228ab9","line":4930,"range":{"start_line":4930,"start_character":18,"end_line":4930,"end_character":72},"in_reply_to":"3fa7e38b_c0155f9c","updated":"2019-12-13 18:25:19.000000000","message":"Done","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3e55090ed5fa909a24de6980ad2b76ac1209398","unresolved":false,"context_lines":[{"line_number":3248,"context_line":"            phase\u003dfields.NotificationPhase.ERROR, exception\u003derror, bdms\u003dbdms,"},{"line_number":3249,"context_line":"            tb\u003dtb)"},{"line_number":3250,"context_line":""},{"line_number":3251,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3252,"context_line":"    @wrap_exception()"},{"line_number":3253,"context_line":"    @reverts_task_state"},{"line_number":3254,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_e4ef3af8","line":3251,"updated":"2019-12-13 20:17:11.000000000","message":"I\u0027m not sure why this is here since nothing RPC calls this method - it\u0027s always a cast.","commit_id":"deada11da1954efd443b66905765aa77f343bc23"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3e55090ed5fa909a24de6980ad2b76ac1209398","unresolved":false,"context_lines":[{"line_number":3249,"context_line":"            tb\u003dtb)"},{"line_number":3250,"context_line":""},{"line_number":3251,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3252,"context_line":"    @wrap_exception()"},{"line_number":3253,"context_line":"    @reverts_task_state"},{"line_number":3254,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"},{"line_number":3255,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_a4f942c6","line":3252,"updated":"2019-12-13 20:17:11.000000000","message":"this...","commit_id":"deada11da1954efd443b66905765aa77f343bc23"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3e55090ed5fa909a24de6980ad2b76ac1209398","unresolved":false,"context_lines":[{"line_number":3251,"context_line":"    @messaging.expected_exceptions(exception.PreserveEphemeralNotSupported)"},{"line_number":3252,"context_line":"    @wrap_exception()"},{"line_number":3253,"context_line":"    @reverts_task_state"},{"line_number":3254,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"},{"line_number":3255,"context_line":"    @wrap_instance_fault"},{"line_number":3256,"context_line":"    def rebuild_instance(self, context, instance, orig_image_ref, image_ref,"},{"line_number":3257,"context_line":"                         injected_files, new_pass, orig_sys_metadata,"},{"line_number":3258,"context_line":"                         bdms, recreate, on_shared_storage,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_04229655","line":3255,"range":{"start_line":3254,"start_character":3,"end_line":3255,"end_character":24},"updated":"2019-12-13 20:17:11.000000000","message":"...and these will get the new exception types rather than BuildAbortException but I think that\u0027s OK and probably preferable to use the more granular exception.","commit_id":"deada11da1954efd443b66905765aa77f343bc23"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3e55090ed5fa909a24de6980ad2b76ac1209398","unresolved":false,"context_lines":[{"line_number":3399,"context_line":"                        context, instance, scheduled_node,"},{"line_number":3400,"context_line":"                        node_type\u003d\u0027destination\u0027)"},{"line_number":3401,"context_line":"                self._notify_instance_rebuild_error(context, instance, e, bdms)"},{"line_number":3402,"context_line":"                raise"},{"line_number":3403,"context_line":"            else:"},{"line_number":3404,"context_line":"                instance.apply_migration_context()"},{"line_number":3405,"context_line":"                # NOTE (ndipanov): This save will now update the host and node"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_24279266","line":3402,"updated":"2019-12-13 20:17:11.000000000","message":"yeah here","commit_id":"deada11da1954efd443b66905765aa77f343bc23"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5d1519b601e377cf668107006984bfe49564160e","unresolved":false,"context_lines":[{"line_number":3399,"context_line":"                        context, instance, scheduled_node,"},{"line_number":3400,"context_line":"                        node_type\u003d\u0027destination\u0027)"},{"line_number":3401,"context_line":"                self._notify_instance_rebuild_error(context, instance, e, bdms)"},{"line_number":3402,"context_line":"                raise"},{"line_number":3403,"context_line":"            else:"},{"line_number":3404,"context_line":"                instance.apply_migration_context()"},{"line_number":3405,"context_line":"                # NOTE (ndipanov): This save will now update the host and node"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_449bae78","line":3402,"in_reply_to":"3fa7e38b_24279266","updated":"2019-12-13 20:19:14.000000000","message":"Which should really be a save_and_reraise, but that\u0027s unrelated.","commit_id":"deada11da1954efd443b66905765aa77f343bc23"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6e667680eb9feac5b3c5c89ad7c09d92a7e4a0ba","unresolved":false,"context_lines":[{"line_number":3399,"context_line":"                        context, instance, scheduled_node,"},{"line_number":3400,"context_line":"                        node_type\u003d\u0027destination\u0027)"},{"line_number":3401,"context_line":"                self._notify_instance_rebuild_error(context, instance, e, bdms)"},{"line_number":3402,"context_line":"                raise"},{"line_number":3403,"context_line":"            else:"},{"line_number":3404,"context_line":"                instance.apply_migration_context()"},{"line_number":3405,"context_line":"                # NOTE (ndipanov): This save will now update the host and node"}],"source_content_type":"text/x-python","patch_set":11,"id":"3fa7e38b_0408567e","line":3402,"in_reply_to":"3fa7e38b_449bae78","updated":"2019-12-13 20:36:03.000000000","message":"Agree, FUP it!","commit_id":"deada11da1954efd443b66905765aa77f343bc23"}],"nova/exception.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"89d6c93791392f5545ee83ee40ecff5c0b39e45d","unresolved":false,"context_lines":[{"line_number":2496,"context_line":"                \"%(error)s\")"},{"line_number":2497,"context_line":""},{"line_number":2498,"context_line":""},{"line_number":2499,"context_line":"class AmbiguousResourceProviderForPciRequest(NovaException):"},{"line_number":2500,"context_line":"    msg_fmt \u003d _(\"Allocating resources from more than one resource providers \""},{"line_number":2501,"context_line":"                \"%(providers)s for a single pci request %(requester)s is not \""},{"line_number":2502,"context_line":"                \"supported.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_d06a5f19","line":2499,"range":{"start_line":2499,"start_character":34,"end_line":2499,"end_character":37},"updated":"2019-12-06 17:10:34.000000000","message":"PCI","commit_id":"8b446c411d26b51563f2caeb3345953533e63727"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a77ea6f36c461e7e7aa71ac8a15a1bdf9f3bfd0","unresolved":false,"context_lines":[{"line_number":2496,"context_line":"                \"%(error)s\")"},{"line_number":2497,"context_line":""},{"line_number":2498,"context_line":""},{"line_number":2499,"context_line":"class AmbiguousResourceProviderForPciRequest(NovaException):"},{"line_number":2500,"context_line":"    msg_fmt \u003d _(\"Allocating resources from more than one resource providers \""},{"line_number":2501,"context_line":"                \"%(providers)s for a single pci request %(requester)s is not \""},{"line_number":2502,"context_line":"                \"supported.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_23f28f06","line":2499,"range":{"start_line":2499,"start_character":34,"end_line":2499,"end_character":37},"in_reply_to":"3fa7e38b_d06a5f19","updated":"2019-12-06 17:35:21.000000000","message":"While not agree in general, there is precedence for full capitalization in camelcase so I follow it.","commit_id":"8b446c411d26b51563f2caeb3345953533e63727"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"89d6c93791392f5545ee83ee40ecff5c0b39e45d","unresolved":false,"context_lines":[{"line_number":2502,"context_line":"                \"supported.\")"},{"line_number":2503,"context_line":""},{"line_number":2504,"context_line":""},{"line_number":2505,"context_line":"class UnexpectResourceProviderNameForPciRequest(NovaException):"},{"line_number":2506,"context_line":"    msg_fmt \u003d _(\"Resource provider %(provider)s used to allocate resources \""},{"line_number":2507,"context_line":"                \"for the pci request %(requester)s does not have properly \""},{"line_number":2508,"context_line":"                \"formatted name. Expected name format is \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_9070670b","line":2505,"range":{"start_line":2505,"start_character":6,"end_line":2505,"end_character":14},"updated":"2019-12-06 17:10:34.000000000","message":"Unexpected","commit_id":"8b446c411d26b51563f2caeb3345953533e63727"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a77ea6f36c461e7e7aa71ac8a15a1bdf9f3bfd0","unresolved":false,"context_lines":[{"line_number":2502,"context_line":"                \"supported.\")"},{"line_number":2503,"context_line":""},{"line_number":2504,"context_line":""},{"line_number":2505,"context_line":"class UnexpectResourceProviderNameForPciRequest(NovaException):"},{"line_number":2506,"context_line":"    msg_fmt \u003d _(\"Resource provider %(provider)s used to allocate resources \""},{"line_number":2507,"context_line":"                \"for the pci request %(requester)s does not have properly \""},{"line_number":2508,"context_line":"                \"formatted name. Expected name format is \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_43e78b47","line":2505,"range":{"start_line":2505,"start_character":6,"end_line":2505,"end_character":14},"in_reply_to":"3fa7e38b_9070670b","updated":"2019-12-06 17:35:21.000000000","message":"Done","commit_id":"8b446c411d26b51563f2caeb3345953533e63727"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"220af60104ec41bc8b65b055e02be5b13e782420","unresolved":false,"context_lines":[{"line_number":2485,"context_line":""},{"line_number":2486,"context_line":""},{"line_number":2487,"context_line":"class AmbiguousResourceProviderForPCIRequest(NovaException):"},{"line_number":2488,"context_line":"    msg_fmt \u003d _(\"Allocating resources from more than one resource providers \""},{"line_number":2489,"context_line":"                \"%(providers)s for a single pci request %(requester)s is not \""},{"line_number":2490,"context_line":"                \"supported.\")"},{"line_number":2491,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_033956a1","line":2488,"range":{"start_line":2488,"start_character":43,"end_line":2488,"end_character":75},"updated":"2019-12-11 16:38:04.000000000","message":"s/more than one/multiple/\n\nor\n\ns/providers/provider/\n\n(The plurality of \u0027provider\u0027 needs to agree with \u0027one\u0027 (singular), not \u0027more than one\u0027 (plural). English is weird.)","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7f3f447a380edaccc38642fe8570f41e31a543e8","unresolved":false,"context_lines":[{"line_number":2485,"context_line":""},{"line_number":2486,"context_line":""},{"line_number":2487,"context_line":"class AmbiguousResourceProviderForPCIRequest(NovaException):"},{"line_number":2488,"context_line":"    msg_fmt \u003d _(\"Allocating resources from more than one resource providers \""},{"line_number":2489,"context_line":"                \"%(providers)s for a single pci request %(requester)s is not \""},{"line_number":2490,"context_line":"                \"supported.\")"},{"line_number":2491,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_ba6df5cb","line":2488,"range":{"start_line":2488,"start_character":43,"end_line":2488,"end_character":75},"in_reply_to":"3fa7e38b_033956a1","updated":"2019-12-12 14:46:38.000000000","message":"Done. I need more English...","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"220af60104ec41bc8b65b055e02be5b13e782420","unresolved":false,"context_lines":[{"line_number":2492,"context_line":""},{"line_number":2493,"context_line":"class UnexpectedResourceProviderNameForPCIRequest(NovaException):"},{"line_number":2494,"context_line":"    msg_fmt \u003d _(\"Resource provider %(provider)s used to allocate resources \""},{"line_number":2495,"context_line":"                \"for the pci request %(requester)s does not have properly \""},{"line_number":2496,"context_line":"                \"formatted name. Expected name format is \""},{"line_number":2497,"context_line":"                \"\u003chostname\u003e:\u003cagentname\u003e:\u003cinterfacename\u003e, but got \""},{"line_number":2498,"context_line":"                \"%(provider_name)s\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c33ede88","line":2495,"range":{"start_line":2495,"start_character":60,"end_line":2495,"end_character":64},"updated":"2019-12-11 16:38:04.000000000","message":"have a","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7f3f447a380edaccc38642fe8570f41e31a543e8","unresolved":false,"context_lines":[{"line_number":2492,"context_line":""},{"line_number":2493,"context_line":"class UnexpectedResourceProviderNameForPCIRequest(NovaException):"},{"line_number":2494,"context_line":"    msg_fmt \u003d _(\"Resource provider %(provider)s used to allocate resources \""},{"line_number":2495,"context_line":"                \"for the pci request %(requester)s does not have properly \""},{"line_number":2496,"context_line":"                \"formatted name. Expected name format is \""},{"line_number":2497,"context_line":"                \"\u003chostname\u003e:\u003cagentname\u003e:\u003cinterfacename\u003e, but got \""},{"line_number":2498,"context_line":"                \"%(provider_name)s\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_7a63fddd","line":2495,"range":{"start_line":2495,"start_character":60,"end_line":2495,"end_character":64},"in_reply_to":"3fa7e38b_c33ede88","updated":"2019-12-12 14:46:38.000000000","message":"Done","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"220af60104ec41bc8b65b055e02be5b13e782420","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3fa7e38b_234fb235","line":2499,"updated":"2019-12-11 16:38:04.000000000","message":"[Later] I see these typos are latent, but might as well fix \u0027em since you\u0027re here.","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7f3f447a380edaccc38642fe8570f41e31a543e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3fa7e38b_3a590528","line":2499,"in_reply_to":"3fa7e38b_234fb235","updated":"2019-12-12 14:46:38.000000000","message":"Done","commit_id":"8463dc9475cc1785e77771bf45d69eb6646da64c"}],"nova/objects/instance.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ac288f79539548d563c9c8eb21a747b47be02ff4","unresolved":false,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def update_pci_request_spec_with_allocated_interface_name("},{"line_number":1206,"context_line":"            self, context, report_client, provider_mapping):"},{"line_number":1207,"context_line":"        \"\"\"Update the instance PCI request based on the request group -"},{"line_number":1208,"context_line":"        resource provider mapping and the device RP name from placement."},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        :param context: the request context"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4614a79f","line":1207,"range":{"start_line":1207,"start_character":22,"end_line":1207,"end_character":30},"updated":"2019-12-04 16:49:14.000000000","message":"instance\u0027s","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4342611a4035599e5b9aaf8293b23688b791726","unresolved":false,"context_lines":[{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def update_pci_request_spec_with_allocated_interface_name("},{"line_number":1206,"context_line":"            self, context, report_client, provider_mapping):"},{"line_number":1207,"context_line":"        \"\"\"Update the instance PCI request based on the request group -"},{"line_number":1208,"context_line":"        resource provider mapping and the device RP name from placement."},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        :param context: the request context"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_adc0b04b","line":1207,"range":{"start_line":1207,"start_character":22,"end_line":1207,"end_character":30},"in_reply_to":"3fa7e38b_4614a79f","updated":"2019-12-06 16:17:16.000000000","message":"Done","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ac288f79539548d563c9c8eb21a747b47be02ff4","unresolved":false,"context_lines":[{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        :param context: the request context"},{"line_number":1211,"context_line":"        :param report_client: a SchedulerReportClient instance"},{"line_number":1212,"context_line":"        :param instance: the instance object to be updated"},{"line_number":1213,"context_line":"        :param provider_mapping: the request group - resource provider mapping"},{"line_number":1214,"context_line":"            in the form returned by the RequestSpec.get_request_group_mapping()"},{"line_number":1215,"context_line":"            call."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_e60a7377","line":1212,"range":{"start_line":1212,"start_character":0,"end_line":1212,"end_character":58},"updated":"2019-12-04 16:49:14.000000000","message":"drop","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4342611a4035599e5b9aaf8293b23688b791726","unresolved":false,"context_lines":[{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        :param context: the request context"},{"line_number":1211,"context_line":"        :param report_client: a SchedulerReportClient instance"},{"line_number":1212,"context_line":"        :param instance: the instance object to be updated"},{"line_number":1213,"context_line":"        :param provider_mapping: the request group - resource provider mapping"},{"line_number":1214,"context_line":"            in the form returned by the RequestSpec.get_request_group_mapping()"},{"line_number":1215,"context_line":"            call."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4d9fbc64","line":1212,"range":{"start_line":1212,"start_character":0,"end_line":1212,"end_character":58},"in_reply_to":"3fa7e38b_e60a7377","updated":"2019-12-06 16:17:16.000000000","message":"Done","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ac288f79539548d563c9c8eb21a747b47be02ff4","unresolved":false,"context_lines":[{"line_number":1223,"context_line":""},{"line_number":1224,"context_line":"        modified \u003d False"},{"line_number":1225,"context_line":"        for pci_request in self.pci_requests.requests:"},{"line_number":1226,"context_line":"            if needs_update("},{"line_number":1227,"context_line":"                    pci_request, provider_mapping):"},{"line_number":1228,"context_line":""},{"line_number":1229,"context_line":"                provider_uuids \u003d provider_mapping[pci_request.requester_id]"},{"line_number":1230,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_6673e317","line":1227,"range":{"start_line":1226,"start_character":0,"end_line":1227,"end_character":51},"updated":"2019-12-04 16:49:14.000000000","message":"nit: weird wrapping","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4342611a4035599e5b9aaf8293b23688b791726","unresolved":false,"context_lines":[{"line_number":1223,"context_line":""},{"line_number":1224,"context_line":"        modified \u003d False"},{"line_number":1225,"context_line":"        for pci_request in self.pci_requests.requests:"},{"line_number":1226,"context_line":"            if needs_update("},{"line_number":1227,"context_line":"                    pci_request, provider_mapping):"},{"line_number":1228,"context_line":""},{"line_number":1229,"context_line":"                provider_uuids \u003d provider_mapping[pci_request.requester_id]"},{"line_number":1230,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_8dc37458","line":1227,"range":{"start_line":1226,"start_character":0,"end_line":1227,"end_character":51},"in_reply_to":"3fa7e38b_6673e317","updated":"2019-12-06 16:17:16.000000000","message":"Done","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ac288f79539548d563c9c8eb21a747b47be02ff4","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                        \u0027%(requester)s is not supported.\u0027 %"},{"line_number":1236,"context_line":"                        {\u0027providers\u0027: provider_uuids,"},{"line_number":1237,"context_line":"                         \u0027requester\u0027: pci_request.requester_id})"},{"line_number":1238,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1239,"context_line":"                        instance_uuid\u003dself.uuid,"},{"line_number":1240,"context_line":"                        reason\u003dreason)"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1243,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_364c32c7","line":1240,"range":{"start_line":1238,"start_character":0,"end_line":1240,"end_character":38},"updated":"2019-12-04 16:49:14.000000000","message":"This feels a bit wrong inside an instance method. It\u0027s probably unnecessary work but could you use another instance type here - something more generic, ideally - and catch-reraise in the caller?","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4342611a4035599e5b9aaf8293b23688b791726","unresolved":false,"context_lines":[{"line_number":1235,"context_line":"                        \u0027%(requester)s is not supported.\u0027 %"},{"line_number":1236,"context_line":"                        {\u0027providers\u0027: provider_uuids,"},{"line_number":1237,"context_line":"                         \u0027requester\u0027: pci_request.requester_id})"},{"line_number":1238,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1239,"context_line":"                        instance_uuid\u003dself.uuid,"},{"line_number":1240,"context_line":"                        reason\u003dreason)"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1243,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_cdcdec86","line":1240,"range":{"start_line":1238,"start_character":0,"end_line":1240,"end_character":38},"in_reply_to":"3fa7e38b_364c32c7","updated":"2019-12-06 16:17:16.000000000","message":"Done","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ac288f79539548d563c9c8eb21a747b47be02ff4","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"                        {\u0027provider\u0027: provider_uuids[0],"},{"line_number":1257,"context_line":"                         \u0027requester\u0027: pci_request.requester_id,"},{"line_number":1258,"context_line":"                         \u0027provider_name\u0027: dev_rp_name})"},{"line_number":1259,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1260,"context_line":"                        instance_uuid\u003dself.uuid,"},{"line_number":1261,"context_line":"                        reason\u003dreason)"},{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"                for spec in pci_request.spec:"},{"line_number":1264,"context_line":"                    spec[\u0027parent_ifname\u0027] \u003d rp_name_pieces[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_26764b0e","line":1261,"range":{"start_line":1259,"start_character":0,"end_line":1261,"end_character":38},"updated":"2019-12-04 16:49:14.000000000","message":"Ditto","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4342611a4035599e5b9aaf8293b23688b791726","unresolved":false,"context_lines":[{"line_number":1256,"context_line":"                        {\u0027provider\u0027: provider_uuids[0],"},{"line_number":1257,"context_line":"                         \u0027requester\u0027: pci_request.requester_id,"},{"line_number":1258,"context_line":"                         \u0027provider_name\u0027: dev_rp_name})"},{"line_number":1259,"context_line":"                    raise exception.BuildAbortException("},{"line_number":1260,"context_line":"                        instance_uuid\u003dself.uuid,"},{"line_number":1261,"context_line":"                        reason\u003dreason)"},{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"                for spec in pci_request.spec:"},{"line_number":1264,"context_line":"                    spec[\u0027parent_ifname\u0027] \u003d rp_name_pieces[2]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_edca286c","line":1261,"range":{"start_line":1259,"start_character":0,"end_line":1261,"end_character":38},"in_reply_to":"3fa7e38b_26764b0e","updated":"2019-12-06 16:17:16.000000000","message":"Done","commit_id":"8849001bc643e525c2258fc3d2ce4d882ac5edc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"            self._context, self.uuid)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def update_pci_request_spec_with_allocated_interface_name("},{"line_number":1206,"context_line":"            self, context, report_client, provider_mapping):"},{"line_number":1207,"context_line":"        \"\"\"Update the instance\u0027s PCI request based on the request group -"},{"line_number":1208,"context_line":"        resource provider mapping and the device RP name from placement."},{"line_number":1209,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_20547353","line":1206,"range":{"start_line":1206,"start_character":18,"end_line":1206,"end_character":25},"updated":"2019-12-12 18:32:33.000000000","message":"Technically I\u0027m not sure you need this, you could just use self._context.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"726ce6b9240fc9581f21e662a7eb9eb54b47ab59","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"            self._context, self.uuid)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def update_pci_request_spec_with_allocated_interface_name("},{"line_number":1206,"context_line":"            self, context, report_client, provider_mapping):"},{"line_number":1207,"context_line":"        \"\"\"Update the instance\u0027s PCI request based on the request group -"},{"line_number":1208,"context_line":"        resource provider mapping and the device RP name from placement."},{"line_number":1209,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_e0a5fb48","line":1206,"range":{"start_line":1206,"start_character":18,"end_line":1206,"end_character":25},"in_reply_to":"3fa7e38b_20547353","updated":"2019-12-12 18:39:50.000000000","message":"Yes, it\u0027s weird to have an instance method (that isn\u0027t a classmethod) to take a context.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"            self._context, self.uuid)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    def update_pci_request_spec_with_allocated_interface_name("},{"line_number":1206,"context_line":"            self, context, report_client, provider_mapping):"},{"line_number":1207,"context_line":"        \"\"\"Update the instance\u0027s PCI request based on the request group -"},{"line_number":1208,"context_line":"        resource provider mapping and the device RP name from placement."},{"line_number":1209,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_b9edf2b8","line":1206,"range":{"start_line":1206,"start_character":18,"end_line":1206,"end_character":25},"in_reply_to":"3fa7e38b_e0a5fb48","updated":"2019-12-13 18:25:19.000000000","message":"This function is moved to nova.compute.utils. There I think is OK to use a separate context param.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"        :param provider_mapping: the request group - resource provider mapping"},{"line_number":1213,"context_line":"            in the form returned by the RequestSpec.get_request_group_mapping()"},{"line_number":1214,"context_line":"            call."},{"line_number":1215,"context_line":"        :raises AmbigousResourceProviderForPciRequest: if more than one"},{"line_number":1216,"context_line":"            resource provider provides resource for the given PCI request."},{"line_number":1217,"context_line":"        :raises UnexpectResourceProviderNameForPciRequest: if the resource"},{"line_number":1218,"context_line":"            provider, which provides resource for the pci request, does not"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_404f2fbd","line":1215,"range":{"start_line":1215,"start_character":43,"end_line":1215,"end_character":46},"updated":"2019-12-12 18:32:33.000000000","message":"AmbiguousResourceProviderForPCIRequest","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"        :param provider_mapping: the request group - resource provider mapping"},{"line_number":1213,"context_line":"            in the form returned by the RequestSpec.get_request_group_mapping()"},{"line_number":1214,"context_line":"            call."},{"line_number":1215,"context_line":"        :raises AmbigousResourceProviderForPciRequest: if more than one"},{"line_number":1216,"context_line":"            resource provider provides resource for the given PCI request."},{"line_number":1217,"context_line":"        :raises UnexpectResourceProviderNameForPciRequest: if the resource"},{"line_number":1218,"context_line":"            provider, which provides resource for the pci request, does not"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_d9e8eea7","line":1215,"range":{"start_line":1215,"start_character":43,"end_line":1215,"end_character":46},"in_reply_to":"3fa7e38b_404f2fbd","updated":"2019-12-13 18:25:19.000000000","message":"Done","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":1214,"context_line":"            call."},{"line_number":1215,"context_line":"        :raises AmbigousResourceProviderForPciRequest: if more than one"},{"line_number":1216,"context_line":"            resource provider provides resource for the given PCI request."},{"line_number":1217,"context_line":"        :raises UnexpectResourceProviderNameForPciRequest: if the resource"},{"line_number":1218,"context_line":"            provider, which provides resource for the pci request, does not"},{"line_number":1219,"context_line":"            have a well formatted name so we cannot parse the parent interface"},{"line_number":1220,"context_line":"            name out of it."}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_0045b79a","line":1217,"range":{"start_line":1217,"start_character":47,"end_line":1217,"end_character":50},"updated":"2019-12-12 18:32:33.000000000","message":"UnexpectedResourceProviderNameForPCIRequest","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":1214,"context_line":"            call."},{"line_number":1215,"context_line":"        :raises AmbigousResourceProviderForPciRequest: if more than one"},{"line_number":1216,"context_line":"            resource provider provides resource for the given PCI request."},{"line_number":1217,"context_line":"        :raises UnexpectResourceProviderNameForPciRequest: if the resource"},{"line_number":1218,"context_line":"            provider, which provides resource for the pci request, does not"},{"line_number":1219,"context_line":"            have a well formatted name so we cannot parse the parent interface"},{"line_number":1220,"context_line":"            name out of it."}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_7929baef","line":1217,"range":{"start_line":1217,"start_character":47,"end_line":1217,"end_character":50},"in_reply_to":"3fa7e38b_0045b79a","updated":"2019-12-13 18:25:19.000000000","message":"Done","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"726ce6b9240fc9581f21e662a7eb9eb54b47ab59","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"            name out of it."},{"line_number":1221,"context_line":"        \"\"\""},{"line_number":1222,"context_line":"        if not self.pci_requests:"},{"line_number":1223,"context_line":"            return"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":"        def needs_update(pci_request, mapping):"},{"line_number":1226,"context_line":"            return (pci_request.requester_id and"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_a0614313","line":1223,"updated":"2019-12-12 18:39:50.000000000","message":"I would prefer this be outside this method, because it\u0027s not obvious from someone looking at the interface that this may silently do nothing.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":1220,"context_line":"            name out of it."},{"line_number":1221,"context_line":"        \"\"\""},{"line_number":1222,"context_line":"        if not self.pci_requests:"},{"line_number":1223,"context_line":"            return"},{"line_number":1224,"context_line":""},{"line_number":1225,"context_line":"        def needs_update(pci_request, mapping):"},{"line_number":1226,"context_line":"            return (pci_request.requester_id and"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_d9878eb2","line":1223,"in_reply_to":"3fa7e38b_a0614313","updated":"2019-12-13 18:25:19.000000000","message":"This means nothing to be updated. So practically this means that function updated every pci_request of this instance.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"715f85fc97ef6ce3d2a3219b7faf7a7f9be0f179","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"                        providers\u003dprovider_uuids,"},{"line_number":1237,"context_line":"                        requester\u003dpci_request.requester_id)"},{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1240,"context_line":"                    context,"},{"line_number":1241,"context_line":"                    provider_uuids[0])"},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_a0ee2388","line":1239,"range":{"start_line":1239,"start_character":44,"end_line":1239,"end_character":70},"updated":"2019-12-12 18:32:33.000000000","message":"Making a call to an external service from within an Instance object method seems wrong to me. One alternative to putting this method on the Instance object would be moving it to something like nova.compute.utils. I don\u0027t know how others, like Dan, feel about this (or the alternative).","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1c86675b48322436ac3128e4098f0d527721e5c7","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"                        providers\u003dprovider_uuids,"},{"line_number":1237,"context_line":"                        requester\u003dpci_request.requester_id)"},{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1240,"context_line":"                    context,"},{"line_number":1241,"context_line":"                    provider_uuids[0])"},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_e78746b2","line":1239,"range":{"start_line":1239,"start_character":44,"end_line":1239,"end_character":70},"in_reply_to":"3fa7e38b_2738fe38","updated":"2019-12-13 12:12:50.000000000","message":"12:58 \u003c gibi\u003e stephenfin: hi! what do you think about \n              https://review.opendev.org/#/c/696574/10/nova/objects/instance.py@1239 ? \n              shall I move this whole thing back to utils?\n12:59 \u003c stephenfin\u003e gibi: I guess if there\u0027s nowhere better, you\u0027ve no choice :)\n12:59 \u003c stephenfin\u003e nova/compute/utils.py though, rather than nova/utils.py\n\nSo I will move it again now.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fc8f8d6af5797580807657f648d3dedba511ac44","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"                        providers\u003dprovider_uuids,"},{"line_number":1237,"context_line":"                        requester\u003dpci_request.requester_id)"},{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1240,"context_line":"                    context,"},{"line_number":1241,"context_line":"                    provider_uuids[0])"},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_2738fe38","line":1239,"range":{"start_line":1239,"start_character":44,"end_line":1239,"end_character":70},"in_reply_to":"3fa7e38b_806a07e9","updated":"2019-12-13 11:56:39.000000000","message":"It was first moved to utils. But Stephen had a point that utils tend to gather junk https://review.opendev.org/#/c/696574/2/nova/utils.py","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"726ce6b9240fc9581f21e662a7eb9eb54b47ab59","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"                        providers\u003dprovider_uuids,"},{"line_number":1237,"context_line":"                        requester\u003dpci_request.requester_id)"},{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1240,"context_line":"                    context,"},{"line_number":1241,"context_line":"                    provider_uuids[0])"},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_806a07e9","line":1239,"range":{"start_line":1239,"start_character":44,"end_line":1239,"end_character":70},"in_reply_to":"3fa7e38b_a0ee2388","updated":"2019-12-12 18:39:50.000000000","message":"Yeah, this just seems like an all-around strange place to put this to me. Either pass in the information that this is going to need, or put it somewhere like compute.utils.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"                        providers\u003dprovider_uuids,"},{"line_number":1237,"context_line":"                        requester\u003dpci_request.requester_id)"},{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"                dev_rp_name \u003d report_client.get_resource_provider_name("},{"line_number":1240,"context_line":"                    context,"},{"line_number":1241,"context_line":"                    provider_uuids[0])"},{"line_number":1242,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_390ee23c","line":1239,"range":{"start_line":1239,"start_character":44,"end_line":1239,"end_character":70},"in_reply_to":"3fa7e38b_e78746b2","updated":"2019-12-13 18:25:19.000000000","message":"Done","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"726ce6b9240fc9581f21e662a7eb9eb54b47ab59","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"                    spec[\u0027parent_ifname\u0027] \u003d rp_name_pieces[2]"},{"line_number":1255,"context_line":"                    modified \u003d True"},{"line_number":1256,"context_line":"        if modified:"},{"line_number":1257,"context_line":"            self.save()"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"def _make_instance_list(context, inst_list, db_inst_list, expected_attrs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_8043e76a","line":1257,"updated":"2019-12-12 18:39:50.000000000","message":"This is a little strange as well. This looks like you\u0027re just saving the instance if you made changes on L1254, but instance could have any other number of modified fields before this method was called, which will trigger a save. I think it\u0027d be better to rely on the caller to save the instance, if desired. It\u0027s easy enough to check to see if the instance has dirty fields and save() it there if needed.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"13611ea6171444d673ec7f6596e86ce365ce3589","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"                    spec[\u0027parent_ifname\u0027] \u003d rp_name_pieces[2]"},{"line_number":1255,"context_line":"                    modified \u003d True"},{"line_number":1256,"context_line":"        if modified:"},{"line_number":1257,"context_line":"            self.save()"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"def _make_instance_list(context, inst_list, db_inst_list, expected_attrs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_9cb904cc","line":1257,"in_reply_to":"3fa7e38b_8043e76a","updated":"2019-12-13 18:25:19.000000000","message":"This was part of the original code which is moved here. If you think that this save needs to be moved out from this function even if the function itself is moved to the compute.utils then I\u0027d like to make that change separately.","commit_id":"562e71ba48534b2fb7bec53a088ec159febe3ef1"}],"nova/utils.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b1903fea7601f0671010dfc1bb1a05dc2869e244","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa7e38b_41636742","updated":"2019-11-29 15:48:04.000000000","message":"Instead of doing this here, could we add this as a method on the \u0027InstancePCIRequest\u0027 class or at least somewhere in the \u0027nova.pci\u0027 namespace? This really doesn\u0027t feel like something that should live in \u0027nova.utils\u0027","commit_id":"425d7aebac6264d1446fa0ce131e4ab0f3a6f1ac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fa25c48e9162bb791367f9ac479389083639fe8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa7e38b_fbaa1ed1","in_reply_to":"3fa7e38b_41636742","updated":"2019-12-03 13:05:55.000000000","message":"Good point. Moving...","commit_id":"425d7aebac6264d1446fa0ce131e4ab0f3a6f1ac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c77eaa9ee1560ca3028027977c305727ac6676bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa7e38b_9e5f58e3","in_reply_to":"3fa7e38b_fbaa1ed1","updated":"2019-12-03 13:56:20.000000000","message":"As a second thought I moved it to be a member of the Instance object as it fits better there as it could only be a classmethod on IntancePci request","commit_id":"425d7aebac6264d1446fa0ce131e4ab0f3a6f1ac"}]}
