)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":13,"context_line":"bug."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In all cases where an operation is blocked a 403 is returned."},{"line_number":16,"context_line":"This will allow lifecyle operations to be enabled as they are tested"},{"line_number":17,"context_line":"or bugs are addressed."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"This change is the final functional change in the vdpa series."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"c1555d37_832c1902","line":16,"range":{"start_line":16,"start_character":16,"end_line":16,"end_character":24},"updated":"2021-03-15 09:25:09.000000000","message":"nit: lifecycle","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"81945de9a815d86d6a5f6936da77c986858d1ba9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"bug."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"In all cases where an operation is blocked a 403 is returned."},{"line_number":16,"context_line":"This will allow lifecyle operations to be enabled as they are tested"},{"line_number":17,"context_line":"or bugs are addressed."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"This change is the final functional change in the vdpa series."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"c579aa5e_9c87e4a5","line":16,"range":{"start_line":16,"start_character":16,"end_line":16,"end_character":24},"in_reply_to":"c1555d37_832c1902","updated":"2021-03-15 13:24:38.000000000","message":"Ack","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"a62956a5eac19667a1675984e97ca2953410ae55","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a 403 is"},{"line_number":12,"context_line":"returned.  This will allow lifecycle operations to be enabled as they"},{"line_number":13,"context_line":"are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"937703f2_b8cb259e","line":11,"range":{"start_line":11,"start_character":61,"end_line":11,"end_character":64},"updated":"2021-03-16 15:03:22.000000000","message":"409?","commit_id":"725e4e3e7c5abbb9ca25b0818315b6ebee3755fb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5b64139f9515f30e3f9eb86f380b45720ca8b7cc","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a 403 is"},{"line_number":12,"context_line":"returned.  This will allow lifecycle operations to be enabled as they"},{"line_number":13,"context_line":"are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fc2df321_f624a838","line":11,"range":{"start_line":11,"start_character":61,"end_line":11,"end_character":64},"in_reply_to":"937703f2_b8cb259e","updated":"2021-03-16 15:04:46.000000000","message":"Damn, forgot to update this.","commit_id":"725e4e3e7c5abbb9ca25b0818315b6ebee3755fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d9d94bb67bd39cf31036809e84cce41f14df33bc","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a HTTP 409"},{"line_number":12,"context_line":"(Conflict) is returned. This will allow lifecycle operations to be"},{"line_number":13,"context_line":"enabled as they are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"090d2b22_95ea2263","line":11,"updated":"2021-03-17 02:55:33.000000000","message":"i assume someone asked for 409 to be used instead.\nit was intetnioally using a 403 before becasue that is what we used for cyborg\nhttps://review.opendev.org/c/openstack/nova/+/780333/5/nova/api/openstack/compute/evacuate.py#131\nwhich is what we said we would emulate.\n\na 409 can also work but it will then be different then cyborg.\n409 generally implies you can rety the operation with the same data and it might\neventually succed where as 403 imples you are not allowed to take the operation\nwhich i think is more corect in this case.\n\ncan you leave a comment as to why we are deviating form the spec  as i noted here:\nhttps://review.opendev.org/c/openstack/nova/+/780866/2/releasenotes/notes/vdpa-cc2300d2c46c150b.yaml#15","commit_id":"45798adf5af90232a8dbc64f3c43e7f5bee33711"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2f64548ddc165ae0115af102b6966f724e141874","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a HTTP 409"},{"line_number":12,"context_line":"(Conflict) is returned. This will allow lifecycle operations to be"},{"line_number":13,"context_line":"enabled as they are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"37ebab00_d4c9e081","line":11,"in_reply_to":"090d2b22_95ea2263","updated":"2021-03-17 07:56:37.000000000","message":"Stepehen changed this to 409, I have no hard opinion. When I did similar block for qos ops then it was 400. At that time mriedem wondered about 409[1] but was OK with 400 as MultiattachNotSupportedOldMicroversion was also 400. The common guide does not have this case handled in [2]. \n\n[1] https://review.opendev.org/c/openstack/nova/+/630725/4/nova/api/openstack/compute/shelve.py#22\n[2] https://specs.openstack.org/openstack/api-wg/guidelines/http/response-codes.html","commit_id":"45798adf5af90232a8dbc64f3c43e7f5bee33711"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"aca1d59c1a94bdd3473f943084a2748c79f4ff54","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a HTTP 409"},{"line_number":12,"context_line":"(Conflict) is returned. This will allow lifecycle operations to be"},{"line_number":13,"context_line":"enabled as they are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"991757f7_6fecfed1","line":11,"in_reply_to":"251365d8_4e48a32e","updated":"2021-03-18 10:31:32.000000000","message":"I went with 409 because it aligned with what we were doing for unsupported operations with SEV or vTPM [1]. I get the confusion. In theory, you _could_ get this working by changing the request and using an instance without SEV/vTPM/vDPA, but that of course isn\u0027t really practical if you want to e.g. live migrate *this* VM.\n\nIf we change this again to HTTP 400, can we also change the vTPM, SEV and cyborg cases to return HTTP 400?\n\n[1] https://github.com/openstack/nova/blob/b7334b508955ce99d6ae3765bf78e68572b83f56/nova/exception.py#L528-L537","commit_id":"45798adf5af90232a8dbc64f3c43e7f5bee33711"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"be82af4474839190dca1c94b518885f4325401b7","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a HTTP 409"},{"line_number":12,"context_line":"(Conflict) is returned. This will allow lifecycle operations to be"},{"line_number":13,"context_line":"enabled as they are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"251365d8_4e48a32e","line":11,"in_reply_to":"37ebab00_d4c9e081","updated":"2021-03-17 19:33:51.000000000","message":"I think this section in api-wg cover this most closely- https://specs.openstack.org/openstack/api-wg/guidelines/http/response-codes.html#use-of-501-not-implemented\n\n400 is something what api-wg guidelines suggest and IMO too most closely appropriate return code. this request can be considered as invalid request until this operation is tested or fixed. If we see other Non Supported features, we do 400 for most of them - https://github.com/openstack/nova/blob/master/nova/exception.py#L285-L325\n\n409 convey that you can get this operation working if you resolve the conflict either by some request data or changing the resource state or so, that is why I feel 409 is little confusing here.\n\n403 is also fine but I prefer 400 for not supported operation as 403 can be interpreted as \"ask your admin to allow this operation for you\".\n\nAs summary, 400 is most close correct and then 403. 409 is surly not so correct here.","commit_id":"45798adf5af90232a8dbc64f3c43e7f5bee33711"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e8b029717e17ee283afe428623df069b0fe1f147","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a HTTP 409"},{"line_number":12,"context_line":"(Conflict) is returned. This will allow lifecycle operations to be"},{"line_number":13,"context_line":"enabled as they are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ea04f552_e9822a19","line":11,"in_reply_to":"991757f7_6fecfed1","updated":"2021-03-18 14:23:57.000000000","message":"Yes we can do 400 for all such cases and have consistency. 400 is always a valid return code for all API[1] so does not require microversion bump.\n\n[1] https://docs.openstack.org/nova/latest/contributor/microversions.html#id3","commit_id":"45798adf5af90232a8dbc64f3c43e7f5bee33711"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8b35db3b586d779cf2540d21ad06dbc0e3f34cbb","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are a number of operations that are known not to work with vDPA"},{"line_number":10,"context_line":"interfaces and another few that may work but haven\u0027t been tested. Start"},{"line_number":11,"context_line":"blocking these. In all cases where an operation is blocked a HTTP 409"},{"line_number":12,"context_line":"(Conflict) is returned. This will allow lifecycle operations to be"},{"line_number":13,"context_line":"enabled as they are tested or bugs are addressed."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"6aee0ef3_cda99bdf","line":11,"in_reply_to":"ea04f552_e9822a19","updated":"2021-03-18 16:17:59.000000000","message":"added a topic to discuss on consistent return code for such cases in PTG L267 https://etherpad.opendev.org/p/nova-xena-ptg","commit_id":"45798adf5af90232a8dbc64f3c43e7f5bee33711"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d601ef8d29542c079abe96b4e0fb8515c18093b8","unresolved":true,"context_lines":[{"line_number":3967,"context_line":"        # proably work but they have not been tested so block them for now."},{"line_number":3968,"context_line":"        # resize to same host works but we cant force a same host resize."},{"line_number":3969,"context_line":"        # as such block it until we have tested resize/migrate between hosts."},{"line_number":3970,"context_line":"        search_opts \u003d {"},{"line_number":3971,"context_line":"            \u0027device_id\u0027: instance.uuid,"},{"line_number":3972,"context_line":"            \u0027tenant_id\u0027: instance.project_id,"},{"line_number":3973,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"ecc1e23c_89987bcc","line":3970,"updated":"2021-03-14 19:03:03.000000000","message":"just an fyi this should be rewritten to use the network info cache.\nin all cases except for attach we can use the network info cache instead of calling neutron directly.\n\nthis can be factord into a property/funciton on th instance object \ne.g. \nif instance.has_vdpa_ports():\n    raise exception.ForbiddenWithVDPAInterfaces()","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":5067,"context_line":"                if svc.version \u003c 55:"},{"line_number":5068,"context_line":"                    raise exception.AttachInterfaceWithQoSPolicyNotSupported("},{"line_number":5069,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":5070,"context_line":"            elif port.get(\u0027binding:vnic_type\u0027, \"normal\") \u003d\u003d \"vdpa\":"},{"line_number":5071,"context_line":"                # NOTE(sean-k-mooney): attach actully works but blocking to"},{"line_number":5072,"context_line":"                # have parity with detach which reqults in a qemu error."},{"line_number":5073,"context_line":"                # should we allow this?"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c45f57b_80e8873c","line":5070,"range":{"start_line":5070,"start_character":12,"end_line":5070,"end_character":16},"updated":"2021-03-15 09:25:09.000000000","message":"elif means that we allow attaching vdpa port with resource request if service version is \u003e\u003d 55\n\njust change it to if","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"81945de9a815d86d6a5f6936da77c986858d1ba9","unresolved":true,"context_lines":[{"line_number":5067,"context_line":"                if svc.version \u003c 55:"},{"line_number":5068,"context_line":"                    raise exception.AttachInterfaceWithQoSPolicyNotSupported("},{"line_number":5069,"context_line":"                        instance_uuid\u003dinstance.uuid)"},{"line_number":5070,"context_line":"            elif port.get(\u0027binding:vnic_type\u0027, \"normal\") \u003d\u003d \"vdpa\":"},{"line_number":5071,"context_line":"                # NOTE(sean-k-mooney): attach actully works but blocking to"},{"line_number":5072,"context_line":"                # have parity with detach which reqults in a qemu error."},{"line_number":5073,"context_line":"                # should we allow this?"}],"source_content_type":"text/x-python","patch_set":1,"id":"a73b6f05_55ca7f60","line":5070,"range":{"start_line":5070,"start_character":12,"end_line":5070,"end_character":16},"in_reply_to":"6c45f57b_80e8873c","updated":"2021-03-15 13:24:38.000000000","message":"ah yes your right these are indepent tests so should use if good catch.","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":5290,"context_line":""},{"line_number":5291,"context_line":"        \"\"\""},{"line_number":5292,"context_line":"        # TODO(sean-k-mooney): rebuild works but i have not tested evacuate"},{"line_number":5293,"context_line":"        # so this proably works but block evac with vdpa until tested."},{"line_number":5294,"context_line":"        search_opts \u003d {"},{"line_number":5295,"context_line":"            \u0027device_id\u0027: instance.uuid,"},{"line_number":5296,"context_line":"            \u0027tenant_id\u0027: instance.project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf8e4551_c7cd1b41","line":5293,"range":{"start_line":5293,"start_character":18,"end_line":5293,"end_character":25},"updated":"2021-03-15 09:25:09.000000000","message":"nit:probably","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2262f857832e011e0b3b6baa5abd4dd452d20936","unresolved":true,"context_lines":[{"line_number":269,"context_line":"    \"\"\"Reject requests to decorated function if instance has vDPA interfaces."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    Raise OperationNotSupportedForVDPAInterfaces if operations involves one or"},{"line_number":272,"context_line":"        more vDPA interfaces."},{"line_number":273,"context_line":"    \"\"\""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def outer(f):"}],"source_content_type":"text/x-python","patch_set":4,"id":"71d39519_2a24d93b","line":272,"range":{"start_line":272,"start_character":4,"end_line":272,"end_character":8},"updated":"2021-03-16 16:40:20.000000000","message":"nit: do we need this hanging indent?","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1c541c51b76bd6d0162fb0aeeaaa06f07de776d5","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    \"\"\"Reject requests to decorated function if instance has vDPA interfaces."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    Raise OperationNotSupportedForVDPAInterfaces if operations involves one or"},{"line_number":272,"context_line":"        more vDPA interfaces."},{"line_number":273,"context_line":"    \"\"\""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def outer(f):"}],"source_content_type":"text/x-python","patch_set":4,"id":"d5c395ec_b45f80c6","line":272,"range":{"start_line":272,"start_character":4,"end_line":272,"end_character":8},"in_reply_to":"71d39519_2a24d93b","updated":"2021-03-16 20:38:59.000000000","message":"Nope. Dropped","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2f64548ddc165ae0115af102b6966f724e141874","unresolved":true,"context_lines":[{"line_number":269,"context_line":"    \"\"\"Reject requests to decorated function if instance has vDPA interfaces."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    Raise OperationNotSupportedForVDPAInterfaces if operations involves one or"},{"line_number":272,"context_line":"        more vDPA interfaces."},{"line_number":273,"context_line":"    \"\"\""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def outer(f):"}],"source_content_type":"text/x-python","patch_set":4,"id":"f607da85_b47e9307","line":272,"range":{"start_line":272,"start_character":4,"end_line":272,"end_character":8},"in_reply_to":"d5c395ec_b45f80c6","updated":"2021-03-17 07:56:37.000000000","message":"no you forget to drop it :) but this is just a nit","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2262f857832e011e0b3b6baa5abd4dd452d20936","unresolved":true,"context_lines":[{"line_number":5088,"context_line":"                        operation\u003dinstance_actions.DETACH_INTERFACE)"},{"line_number":5089,"context_line":"                break"},{"line_number":5090,"context_line":"        else:"},{"line_number":5091,"context_line":"            # NOTE(sean-k-mooney) This should never happen but just in case the"},{"line_number":5092,"context_line":"            # info cache does not have the port we are detaching we can fall"},{"line_number":5093,"context_line":"            # back to neutron."},{"line_number":5094,"context_line":"            port \u003d self.network_api.show_port(context, port_id)[\u0027port\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"385c57fd_87de6af0","line":5091,"updated":"2021-03-16 16:40:20.000000000","message":"good catch I always consider that the info cache is optional","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"}],"nova/objects/instance.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2262f857832e011e0b3b6baa5abd4dd452d20936","unresolved":true,"context_lines":[{"line_number":1213,"context_line":"            return network_model.NetworkInfo.hydrate([])"},{"line_number":1214,"context_line":"        return self.info_cache.network_info"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"    def has_vdpa_ports(self):"},{"line_number":1217,"context_line":"        info_cache \u003d self.get_network_info()"},{"line_number":1218,"context_line":"        return any(vif[\u0027vnic_type\u0027] \u003d\u003d \u0027vdpa\u0027 for vif in info_cache)"},{"line_number":1219,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"acc1f1f0_127c2bbf","line":1216,"updated":"2021-03-16 16:40:20.000000000","message":"a small unit test would be nice for this","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2f64548ddc165ae0115af102b6966f724e141874","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            return network_model.NetworkInfo.hydrate([])"},{"line_number":1214,"context_line":"        return self.info_cache.network_info"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"    def has_vdpa_ports(self):"},{"line_number":1217,"context_line":"        info_cache \u003d self.get_network_info()"},{"line_number":1218,"context_line":"        return any(vif[\u0027vnic_type\u0027] \u003d\u003d \u0027vdpa\u0027 for vif in info_cache)"},{"line_number":1219,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"97ddd36c_c1b2066d","line":1216,"in_reply_to":"91cb5900_a939a95c","updated":"2021-03-17 07:56:37.000000000","message":"fine by me","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1c541c51b76bd6d0162fb0aeeaaa06f07de776d5","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"            return network_model.NetworkInfo.hydrate([])"},{"line_number":1214,"context_line":"        return self.info_cache.network_info"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"    def has_vdpa_ports(self):"},{"line_number":1217,"context_line":"        info_cache \u003d self.get_network_info()"},{"line_number":1218,"context_line":"        return any(vif[\u0027vnic_type\u0027] \u003d\u003d \u0027vdpa\u0027 for vif in info_cache)"},{"line_number":1219,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"91cb5900_a939a95c","line":1216,"in_reply_to":"acc1f1f0_127c2bbf","updated":"2021-03-16 20:38:59.000000000","message":"I ended up dropping this entirely in favour of moving it into the decorator","commit_id":"f1f82fcecede169bf3423af9237e3a2182313504"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":422,"context_line":"        }"},{"line_number":423,"context_line":"        attachment \u003d self.api.attach_interface(server[\u0027id\u0027], body)"},{"line_number":424,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":425,"context_line":"            \u0027instance.interface_attach.end\u0027)"},{"line_number":426,"context_line":"        return attachment"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _detach_interface(self, server, port_uuid):"}],"source_content_type":"text/x-python","patch_set":1,"id":"d935767b_00eac310","line":425,"updated":"2021-03-15 09:25:09.000000000","message":"attach is an rpc call but it does not hurt if we wait for the notification","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"81945de9a815d86d6a5f6936da77c986858d1ba9","unresolved":true,"context_lines":[{"line_number":422,"context_line":"        }"},{"line_number":423,"context_line":"        attachment \u003d self.api.attach_interface(server[\u0027id\u0027], body)"},{"line_number":424,"context_line":"        fake_notifier.wait_for_versioned_notifications("},{"line_number":425,"context_line":"            \u0027instance.interface_attach.end\u0027)"},{"line_number":426,"context_line":"        return attachment"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _detach_interface(self, server, port_uuid):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f7e35215_9247fc8d","line":425,"in_reply_to":"d935767b_00eac310","updated":"2021-03-15 13:24:38.000000000","message":"yes i think in the integrated helpers we always want to wait for the notificaiton na dif you really want to not wait you can use the api module directly.\nthat is more or less the main delta between the functional.api version and the integrated helper ones.\nthe integrated helper method dont return until the operation is completed so you can use them as synconisation points in your code.","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"}],"releasenotes/notes/vdpa-cc2300d2c46c150b.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":14,"context_line":"    shelve, resize, cold/live migrate, evacuate,"},{"line_number":15,"context_line":"    suspend or interface attach/detach."},{"line_number":16,"context_line":"    Attempting to use one of the above operations will result in a 403"},{"line_number":17,"context_line":"    permission denied error. while some operations like \"resize to same host\","},{"line_number":18,"context_line":"    shelve or attach interface technically work, they have been blocked since"},{"line_number":19,"context_line":"    unshleve and detach interface currently do not. resize to a different"},{"line_number":20,"context_line":"    host has been blocked since its untested, evacuate has also been blocked"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"30ec3309_21916164","line":17,"range":{"start_line":17,"start_character":4,"end_line":17,"end_character":21},"updated":"2021-03-15 09:25:09.000000000","message":"forbidden","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":16,"context_line":"    Attempting to use one of the above operations will result in a 403"},{"line_number":17,"context_line":"    permission denied error. while some operations like \"resize to same host\","},{"line_number":18,"context_line":"    shelve or attach interface technically work, they have been blocked since"},{"line_number":19,"context_line":"    unshleve and detach interface currently do not. resize to a different"},{"line_number":20,"context_line":"    host has been blocked since its untested, evacuate has also been blocked"},{"line_number":21,"context_line":"    for the same reason. This limitation may be removed in the future as we"},{"line_number":22,"context_line":"    belive they should work, or can be supported with minor changes."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"a6bf8991_1261ce52","line":19,"range":{"start_line":19,"start_character":52,"end_line":19,"end_character":58},"updated":"2021-03-15 09:25:09.000000000","message":"nit: Resize","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":16,"context_line":"    Attempting to use one of the above operations will result in a 403"},{"line_number":17,"context_line":"    permission denied error. while some operations like \"resize to same host\","},{"line_number":18,"context_line":"    shelve or attach interface technically work, they have been blocked since"},{"line_number":19,"context_line":"    unshleve and detach interface currently do not. resize to a different"},{"line_number":20,"context_line":"    host has been blocked since its untested, evacuate has also been blocked"},{"line_number":21,"context_line":"    for the same reason. This limitation may be removed in the future as we"},{"line_number":22,"context_line":"    belive they should work, or can be supported with minor changes."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"734ae879_83d12388","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":12},"updated":"2021-03-15 09:25:09.000000000","message":"nit:unshelve","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b40e8a9efa566825114d31ef2e090dfd1997abc2","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    for the same reason. This limitation may be removed in the future as we"},{"line_number":22,"context_line":"    belive they should work, or can be supported with minor changes."},{"line_number":23,"context_line":"    Live migration is currently not supported with vdpa interfaces by qemu"},{"line_number":24,"context_line":"    and therefore cannot be enabled in openstack at this time."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"907beebb_80b72d68","line":24,"updated":"2021-03-14 19:16:19.000000000","message":"i need to mention the requirement to use real-time here too and add the doc for this\nbut i guess that could be a separate patch however i need to respin this anyway \nso ill probably just add it here.","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72bc43f181bda1263374b8bdaf8196f8287cbda6","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    for the same reason. This limitation may be removed in the future as we"},{"line_number":22,"context_line":"    belive they should work, or can be supported with minor changes."},{"line_number":23,"context_line":"    Live migration is currently not supported with vdpa interfaces by qemu"},{"line_number":24,"context_line":"    and therefore cannot be enabled in openstack at this time."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"22dcf5d8_e7c61ea3","line":24,"in_reply_to":"907beebb_80b72d68","updated":"2021-03-15 09:25:09.000000000","message":"yes, the realtime requirement is important.","commit_id":"8f4bfee9d4b3140d1ccdef5e8c01a4fa72b38f88"}]}
