)]}'
{"nova/network/model.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11d61a2ebcb20f84c8e7830d932d2c0b5fd35382","unresolved":true,"context_lines":[{"line_number":103,"context_line":"VNIC_TYPE_DIRECT_PHYSICAL \u003d \u0027direct-physical\u0027"},{"line_number":104,"context_line":"VNIC_TYPE_BAREMETAL \u003d \u0027baremetal\u0027"},{"line_number":105,"context_line":"VNIC_TYPE_VIRTIO_FORWARDER \u003d \u0027virtio-forwarder\u0027"},{"line_number":106,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT \u003d \u0027accelerator-direct\u0027"},{"line_number":107,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL \u003d \u0027accelerator-direct-physical\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"# Define list of ports which needs pci request."}],"source_content_type":"text/x-python","patch_set":4,"id":"e871cc96_2134047d","line":106,"range":{"start_line":106,"start_character":22,"end_line":106,"end_character":29},"updated":"2021-02-24 11:46:27.000000000","message":"DIRECT","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c3f772cac667b013fe43dc7befe88389ab1bbb32","unresolved":false,"context_lines":[{"line_number":103,"context_line":"VNIC_TYPE_DIRECT_PHYSICAL \u003d \u0027direct-physical\u0027"},{"line_number":104,"context_line":"VNIC_TYPE_BAREMETAL \u003d \u0027baremetal\u0027"},{"line_number":105,"context_line":"VNIC_TYPE_VIRTIO_FORWARDER \u003d \u0027virtio-forwarder\u0027"},{"line_number":106,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT \u003d \u0027accelerator-direct\u0027"},{"line_number":107,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL \u003d \u0027accelerator-direct-physical\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"# Define list of ports which needs pci request."}],"source_content_type":"text/x-python","patch_set":4,"id":"24e58703_19e307dc","line":106,"range":{"start_line":106,"start_character":22,"end_line":106,"end_character":29},"in_reply_to":"e871cc96_2134047d","updated":"2021-02-25 08:46:07.000000000","message":"Done","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11d61a2ebcb20f84c8e7830d932d2c0b5fd35382","unresolved":true,"context_lines":[{"line_number":104,"context_line":"VNIC_TYPE_BAREMETAL \u003d \u0027baremetal\u0027"},{"line_number":105,"context_line":"VNIC_TYPE_VIRTIO_FORWARDER \u003d \u0027virtio-forwarder\u0027"},{"line_number":106,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT \u003d \u0027accelerator-direct\u0027"},{"line_number":107,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL \u003d \u0027accelerator-direct-physical\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"# Define list of ports which needs pci request."},{"line_number":110,"context_line":"# Note: The macvtap port needs a PCI request as it is a tap interface"}],"source_content_type":"text/x-python","patch_set":4,"id":"1e8a9eac_08d2e205","line":107,"range":{"start_line":107,"start_character":22,"end_line":107,"end_character":29},"updated":"2021-02-24 11:46:27.000000000","message":"ditto","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c3f772cac667b013fe43dc7befe88389ab1bbb32","unresolved":false,"context_lines":[{"line_number":104,"context_line":"VNIC_TYPE_BAREMETAL \u003d \u0027baremetal\u0027"},{"line_number":105,"context_line":"VNIC_TYPE_VIRTIO_FORWARDER \u003d \u0027virtio-forwarder\u0027"},{"line_number":106,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT \u003d \u0027accelerator-direct\u0027"},{"line_number":107,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL \u003d \u0027accelerator-direct-physical\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"# Define list of ports which needs pci request."},{"line_number":110,"context_line":"# Note: The macvtap port needs a PCI request as it is a tap interface"}],"source_content_type":"text/x-python","patch_set":4,"id":"0ae5c44d_87d5b087","line":107,"range":{"start_line":107,"start_character":22,"end_line":107,"end_character":29},"in_reply_to":"1e8a9eac_08d2e205","updated":"2021-02-25 08:46:07.000000000","message":"Done","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11d61a2ebcb20f84c8e7830d932d2c0b5fd35382","unresolved":true,"context_lines":[{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d (VNIC_TYPE_ACCELERATOR_DIRECDT,"},{"line_number":126,"context_line":"                                VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL"},{"line_number":127,"context_line":")"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"d9202a66_8ffef7a5","line":125,"range":{"start_line":125,"start_character":25,"end_line":125,"end_character":27},"updated":"2021-02-24 11:46:27.000000000","message":"split the line here","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c3f772cac667b013fe43dc7befe88389ab1bbb32","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d (VNIC_TYPE_ACCELERATOR_DIRECDT,"},{"line_number":126,"context_line":"                                VNIC_TYPE_ACCELERATOR_DIRECDT_PHYSICAL"},{"line_number":127,"context_line":")"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"86cfbec7_b8e95c80","line":125,"range":{"start_line":125,"start_character":25,"end_line":125,"end_character":27},"in_reply_to":"d9202a66_8ffef7a5","updated":"2021-02-25 08:46:07.000000000","message":"Done","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e834721106ad56fe3654d0113bbffa2c13bc593f","unresolved":true,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"882ad2e1_c2972d0c","line":122,"updated":"2021-03-08 15:59:09.000000000","message":"Are these new values used now somewhere? If I remove these two new lines the test still passing for me. So either some test coverage is missing or these will only be used by the next patch.\n\n//later\n\nremoving this does not break any unit or functional test on the next patch either","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c155894a37eb8075dd78d53e228e94cb74a43a1a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"87890540_6022c5d3","line":122,"in_reply_to":"4409f228_0ced9bbc","updated":"2021-03-10 09:22:24.000000000","message":"I don\u0027t think this specific to vdpa. \nI remove this line, then the instance paused after build and forever waiting the port been activated by neutron. \n\nWe need this.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6e8a39b24222117b50ad753a3fdadd81d26f2078","unresolved":false,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"649a1fe3_36d203e9","line":122,"in_reply_to":"44f13786_1450ad4e","updated":"2021-03-10 12:59:44.000000000","message":"so this is used in this patch but we dont have the unit tests need to test it.\ni have noted that as a comment where in libvirt/vif.py so we shoudl add unit test for the config generation function\nwhen using these vnic types.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a59a5f9883292b9ebfd8328836af9229659a341d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"8d4a83f7_be6deb38","line":122,"in_reply_to":"649a1fe3_36d203e9","updated":"2021-03-11 08:46:05.000000000","message":"added.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c49667c7a1eca9ad5d0b7c87f4a5faca9333f03","unresolved":false,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"44f13786_1450ad4e","line":122,"in_reply_to":"87890540_6022c5d3","updated":"2021-03-10 10:14:59.000000000","message":"sorry i did not mean to write vdpa i ment acclerators.\ni was working on a vdpa patch when i typed this.\n\nso at this point in the series you should not be able to boot a vm with vnic type\nNIC_TYPE_ACCELERATOR_DIRECT or VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL\n\nthat should only be allowed with the final patch.\n\nits fine to predefine the constant in an earlier patch but they should not be used directly yet ideally.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"51cbc9f040532ecccc079d4afc55d91d543b4896","unresolved":false,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"dd3794a3_33ce0b65","line":122,"in_reply_to":"882ad2e1_c2972d0c","updated":"2021-03-09 00:11:10.000000000","message":"This needed for insert neutron port backend by passthrough to libvirt config:\nhttps://opendev.org/openstack/nova/src/commit/f5f7c2540150c7ee7640c834d5caec31b3f5a7ab/nova/virt/libvirt/driver.py#L4293","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9527e51b10415066c9470332e15b996fb1bd5a6a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"VNIC_TYPES_DIRECT_PASSTHROUGH \u003d (VNIC_TYPE_DIRECT,"},{"line_number":120,"context_line":"                                 VNIC_TYPE_DIRECT_PHYSICAL,"},{"line_number":121,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT,"},{"line_number":122,"context_line":"                                 VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"# Define list of ports which contains devices managed by cyborg."},{"line_number":125,"context_line":"VNIC_TYPES_ACCELERATOR \u003d ("}],"source_content_type":"text/x-python","patch_set":11,"id":"4409f228_0ced9bbc","line":122,"in_reply_to":"dd3794a3_33ce0b65","updated":"2021-03-09 16:02:37.000000000","message":"i think its been used here\nhttps://review.opendev.org/c/openstack/nova/+/771363/11/nova/virt/libvirt/vif.py#352\nin this patch but without the neutron change to have the sriov nic agent able to bind vdpa it wont ever take that path.\nthat said im not sure hte later change should happen yet since we dont have the logic in this patch to get the pci device form cyborg.\n\nit should not break existing sriov integration however.\n\nVNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL is not used yet.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d028c5fc7efc61a2f07079833597ed6bba0bd66a","unresolved":true,"context_lines":[{"line_number":111,"context_line":"# with VF as the lower physical interface."},{"line_number":112,"context_line":"# Note: Currently, VNIC_TYPE_VIRTIO_FORWARDER assumes a 1:1"},{"line_number":113,"context_line":"# relationship with a VF. This is expected to change in the future."},{"line_number":114,"context_line":"VNIC_TYPES_SRIOV \u003d (VNIC_TYPE_DIRECT, VNIC_TYPE_MACVTAP,"},{"line_number":115,"context_line":"                    VNIC_TYPE_DIRECT_PHYSICAL, VNIC_TYPE_VIRTIO_FORWARDER)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"# Define list of ports which are passthrough to the guest"}],"source_content_type":"text/x-python","patch_set":13,"id":"130077fe_550d75e1","line":114,"updated":"2021-03-11 13:59:59.000000000","message":"Please put a note here that VNIC_TYPE_ACCELERATOR_DIRECT and VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL does not need a PCI request as these devices are not tracked by the pci tracker in nova but tracked by cyborg. The scheduling will use the cyborg provided resource request to find a compute with such devices, and the device claiming will be done via binding the cyborg arqs to the selected compute node.","commit_id":"5b770418a8570e4deac805f952156f69fe7460d8"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ad3c100bf9d5995629b63fa821c085dab180eafe","unresolved":false,"context_lines":[{"line_number":111,"context_line":"# with VF as the lower physical interface."},{"line_number":112,"context_line":"# Note: Currently, VNIC_TYPE_VIRTIO_FORWARDER assumes a 1:1"},{"line_number":113,"context_line":"# relationship with a VF. This is expected to change in the future."},{"line_number":114,"context_line":"VNIC_TYPES_SRIOV \u003d (VNIC_TYPE_DIRECT, VNIC_TYPE_MACVTAP,"},{"line_number":115,"context_line":"                    VNIC_TYPE_DIRECT_PHYSICAL, VNIC_TYPE_VIRTIO_FORWARDER)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"# Define list of ports which are passthrough to the guest"}],"source_content_type":"text/x-python","patch_set":13,"id":"93247a7f_783821d8","line":114,"in_reply_to":"130077fe_550d75e1","updated":"2021-03-31 08:27:10.000000000","message":"Done","commit_id":"5b770418a8570e4deac805f952156f69fe7460d8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d33a70124f67701a753848806dcf05036f9e2c30","unresolved":true,"context_lines":[{"line_number":105,"context_line":"VNIC_TYPE_VIRTIO_FORWARDER \u003d \u0027virtio-forwarder\u0027"},{"line_number":106,"context_line":"VNIC_TYPE_VDPA \u003d \u0027vdpa\u0027"},{"line_number":107,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECT \u003d \u0027accelerator-direct\u0027"},{"line_number":108,"context_line":"VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL \u003d \u0027accelerator-direct-physical\u0027"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# Define list of ports which needs pci request."},{"line_number":111,"context_line":"# Note: The macvtap port needs a PCI request as it is a tap interface"}],"source_content_type":"text/x-python","patch_set":22,"id":"7eebb6a9_7ecd03f2","line":108,"updated":"2021-06-16 07:49:45.000000000","message":"nit, maybe add comment talk about what are those. And \u0027accelerator-direct-physical\u0027 isn\u0027t support today.","commit_id":"f8dd813b35675e6c3e3e7e8843b1c12e69be541c"}],"nova/objects/network_request.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"11d61a2ebcb20f84c8e7830d932d2c0b5fd35382","unresolved":true,"context_lines":[{"line_number":55,"context_line":"    def to_tuple(self):"},{"line_number":56,"context_line":"        address \u003d str(self.address) if self.address is not None else None"},{"line_number":57,"context_line":"        return (self.network_id, address, self.port_id, self.pci_request_id,"},{"line_number":58,"context_line":"                        self.arq_uuid)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def from_tuple(cls, net_tuple):"}],"source_content_type":"text/x-python","patch_set":4,"id":"62e89b4c_6a29fa2b","line":58,"range":{"start_line":58,"start_character":16,"end_line":58,"end_character":23},"updated":"2021-02-24 11:46:27.000000000","message":"drop spaces","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c3f772cac667b013fe43dc7befe88389ab1bbb32","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def to_tuple(self):"},{"line_number":56,"context_line":"        address \u003d str(self.address) if self.address is not None else None"},{"line_number":57,"context_line":"        return (self.network_id, address, self.port_id, self.pci_request_id,"},{"line_number":58,"context_line":"                        self.arq_uuid)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def from_tuple(cls, net_tuple):"}],"source_content_type":"text/x-python","patch_set":4,"id":"a8796e90_2c7b2f93","line":58,"range":{"start_line":58,"start_character":16,"end_line":58,"end_character":23},"in_reply_to":"62e89b4c_6a29fa2b","updated":"2021-02-25 08:46:07.000000000","message":"Done","commit_id":"609899c3cb1ef0af74abd8cb6774a37fca1c960e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9527e51b10415066c9470332e15b996fb1bd5a6a","unresolved":true,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"5160ae04_d7597c5e","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"updated":"2021-03-09 16:02:37.000000000","message":"this is not neesisaly required. you ideally should be able to lookup the arq by the neutron port\nbut i guess it might make some thing cleaner. i have not really given this enough tought but i do think we could avoid the object change if we wanted too.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"b8022a15b8fae0105ec6cafa207eb16e97c80462","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ab8e848_8865448e","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"11008f8d_33cf2f90","updated":"2021-03-11 07:54:08.000000000","message":"Done. with a new patch deal with API reject:\nhttps://review.opendev.org/c/openstack/nova/+/779913","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ae9b694b95128352f6f80a1be23390387cfdf15d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"37cb18f1_6b74f6e2","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"2b58284e_57f5a4a1","updated":"2021-03-10 08:23:11.000000000","message":"We create arq in conductor, but we need the mapping info of arq and port before we fill that info inside neutron port binding profile. \n\nThis info passed to compute at where update neutron port binding info.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c49667c7a1eca9ad5d0b7c87f4a5faca9333f03","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"cbb9a968_29decbb7","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"37cb18f1_6b74f6e2","updated":"2021-03-10 10:14:59.000000000","message":"so there is no way to correlate the neutron port uuid to the arques for that uuid?\n\nthis works ok for booting with a cyborg port but we dont keep the network request up to date if you try to attach a port so i dont think this should be the only place we store that mapping.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"00891c64b12b95c3cac4d68b4768ea67312f1062","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"95b040f5_3d955c7f","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"4ac50cb3_a91a4dc3","updated":"2021-03-10 11:53:08.000000000","message":"@Sean, I feel the bugs you pointed out are different cases. \n\nfor https://bugs.launchpad.net/nova/+bug/1851545, the original issue is the original instance\u0027s pci device allocated to other new instance. But this won\u0027t happen for cyborg, cyborg won\u0027t allocate an allocated device to another arq.  And the nova pci device, the problem is we shouldn\u0027t release pci device when unshelve \u0027without\u0027 offload.\n\nfor https://bugzilla.redhat.com/show_bug.cgi?id\u003d1767797, the issue is about we didn\u0027t reschedule to new host with requested pci device. I think we tune this method make it work https://github.com/openstack/nova/blob/master/nova/conductor/manager.py#L967. But we needn\u0027t the original arq. We need to chose a new host with a free device, and then call the cyborg to create an new arq again. Then I think we need the NetworkRequest.arq_uuid again, to pass the new arq uuid to the nova-compute, then nova-compute will update the port binding profile with new arq uuid, then release the old one. This is what I\u0027m guessing how it works when we implement the unshelve for cyborg.\n\nSo for the move operation, I think we needn\u0027t the original mapping info of port and arq, we need create new arq, and update the arq to the port. So then we needn\u0027t persistent the original port and arq mapping info when we create the instance.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"46f97178fc4f24c6e57527b72a0ddcc4d412ee4a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"2b58284e_57f5a4a1","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"5160ae04_d7597c5e","updated":"2021-03-10 01:28:06.000000000","message":"We could no easily find which ARQ based on port\u0027s device_profile, we muse remember the ARQ. ARQ corresponding to one devices request per device_profile. we need this.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b5efb018cfd252fc5d9f21538e42658a0d483605","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"11008f8d_33cf2f90","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"67228913_de15aa48","updated":"2021-03-11 01:58:26.000000000","message":"One more thing I just thought about is we should reject all the migration operation explicitly like this https://github.com/openstack/nova/blob/master/nova/compute/api.py#L292","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9d095fda4bed1c3af1308df64fa875f17fef7b08","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"67228913_de15aa48","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"95b040f5_3d955c7f","updated":"2021-03-10 13:16:30.000000000","message":"i just spoke about this with alex on irc\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-nova/latest.log.html#t2021-03-10T12:17:32\n\ntl;dr the issue with unshlve is we now supprot it with cyborg but the binding profile will not get updated.\nin the case of sriov nova is correctly claiming the device but not upsdate the device porfile with the correct pci address\nin the case of cyborg we would also need to create new arqs and update the port profile with those\n\nsince cyborg port will share the same code path as sriov port i suspec that we will get one of two behavior.\n\n1 cyborg will delete teh arq form the port profile on shelve and on unshleve we will claim and bind the new arqs but\nnot update the profile so the guest will not get the cyborg device assigned, or enter an error state.\n2 nova will not clear the old arq for the inctnace as part of shelve and we will try to look up the old arq which nolonger exits and fail.\n\nwhat i discussed with alex was to not block this patch on this issue for now.\ninstead when i submit the patch to block shelve for instances ill make sure that include cyborg ports too\nbasically it will return the same 403 forbind error code we return today for shelving with a cycbog instance if the compute service version is less then 54\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L4169\nso for cyborg port ill return ForbiddenWithAccelerators and for sriov ill retrun a similar excptoin that also inherit form forbidin.\n\nafter we have blocked shelve with sriov and cybrog interfaces ill submit 2 more patches one to fix sriov which can be backported to all affected branches and a second to fix cyborg which might need your help since i dont have hardware i can test cyborg with.\n\nthe sriov patch will just ensure the pci_slot is update to the one we claimed before we generate teh xml\nthe cyborg one would have to do the same for the arqs.\nthe reason to ahve thos be two seperate patchs is for backports as the sriov one would have to go back multiple reelase and the cyborg one would only be needed for wallaby.\n\nso for now im ok with you using this filed to store teh arqs \n\nnext cycle i would like to see if we can stop using the port profile in general as part of the xml generaqtion process but that is a larger change that we should do spereatly form the cybrog feature. so i dont think we shoudl block this patch on that but we do need more unit tests as i noted seperatly.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"c70a336518a9f8c05cd135bc2e2ef1024743d2a0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"4ac50cb3_a91a4dc3","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"c4cf360c_4be2c644","updated":"2021-03-10 11:35:06.000000000","message":"That bug is gone too far, that\u0027s out of scope for LM/resize etc. and that info not go into the db, so not affect move even though we are not cover that.\n\nBTW, that bug might not about where to store the message, it\u0027s all about how to keep it uptodate. Changing the store place does not make any better.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e86e6577cb34d63e8e3821ad9f66acf9497a1a4e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \u0027port_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027pci_request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":41,"context_line":"        \u0027tag\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":42,"context_line":"        \u0027arq_uuid\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":43,"context_line":"    }"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":11,"id":"c4cf360c_4be2c644","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":52},"in_reply_to":"cbb9a968_29decbb7","updated":"2021-03-10 10:34:37.000000000","message":"looking at the last patch it looks like you are eventually storing the arq uuid for a give port in the neutro port profile. long term that is not a greate idea as it can some times get out of sync on certin move operations\nwe have that problem for unshelve with sriov devices today.\n\nhttps://bugs.launchpad.net/nova/+bug/1851545\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d1767797\n\ni am hoping to find time to fix that next cycle if artom does not get to it first by ensuring we can corraltion nova pci requiest to neutron ports more cleanly.\n\ni think it would be better for you to sotre this in a differnt location.\nperhaps use the instance system_metadata table to have a port to arq mapping.\nfor example have keys that are port-\u003cneutron port uuid\u003e with values that are a json dumps of a dict e.g. {\"arq_uuid\":  \u003cuuid\u003e}\n\nor do \nport-\u003cneutron port uuid\u003e-arq -\u003e \u003cuuid\u003e without the dict\n\nthe idea of useing a dict was i was thinink of using port-\u003cneutron port uuid\u003e with a dict for a backpotable way to solve the other bug but did not want your usage of it to conflict with how i was thinking of using it in the future.\n\nthat might not be the best solution in your case either but im tyring to think how this will work with move operations, attach/detach and other case out side of simple vm boot. i dont think the network requests will work properly in that case.","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09d280510416ca7aaf23d22675f9f2b92c9a2ddc","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    # Version 1.0: Initial version"},{"line_number":32,"context_line":"    # Version 1.1: Added pci_request_id"},{"line_number":33,"context_line":"    # Version 1.2: Added tag field"},{"line_number":34,"context_line":"    # Version 1.3: Added arq_uuid"},{"line_number":35,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":36,"context_line":"    fields \u003d {"},{"line_number":37,"context_line":"        \u0027network_id\u0027: fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":34,"id":"d7dfa603_15573436","line":34,"range":{"start_line":34,"start_character":19,"end_line":34,"end_character":33},"updated":"2021-07-13 12:38:48.000000000","message":"Added arq_uuid and device_profile","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ee486234d23b276fcb57a668f84d16919a1a9a69","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # Version 1.0: Initial version"},{"line_number":32,"context_line":"    # Version 1.1: Added pci_request_id"},{"line_number":33,"context_line":"    # Version 1.2: Added tag field"},{"line_number":34,"context_line":"    # Version 1.3: Added arq_uuid"},{"line_number":35,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":36,"context_line":"    fields \u003d {"},{"line_number":37,"context_line":"        \u0027network_id\u0027: fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":34,"id":"b8f2326e_27f3f2f4","line":34,"range":{"start_line":34,"start_character":19,"end_line":34,"end_character":33},"in_reply_to":"d7dfa603_15573436","updated":"2021-07-14 08:12:48.000000000","message":"Done","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"}],"nova/tests/unit/network/test_neutron.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d33a70124f67701a753848806dcf05036f9e2c30","unresolved":true,"context_lines":[{"line_number":5147,"context_line":"                                              address\u003d\u0027192.168.0.3\u0027,"},{"line_number":5148,"context_line":"                                              port_id\u003duuids.portid_1,"},{"line_number":5149,"context_line":"                                              pci_request_id\u003duuids.pci_1,"},{"line_number":5150,"context_line":"                                              arq_uuid\u003duuids.arq,"},{"line_number":5151,"context_line":"                                              device_profile\u003dNone)])"},{"line_number":5152,"context_line":"        mock_gppids.return_value \u003d [uuids.portid_3]"},{"line_number":5153,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"eab201ce_01bf4aaa","line":5150,"range":{"start_line":5150,"start_character":55,"end_line":5150,"end_character":64},"updated":"2021-06-16 07:49:45.000000000","message":"nit, looks like there is no any meaning for set a value for arq uuid","commit_id":"f8dd813b35675e6c3e3e7e8843b1c12e69be541c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09d280510416ca7aaf23d22675f9f2b92c9a2ddc","unresolved":true,"context_lines":[{"line_number":1612,"context_line":"            objects\u003d[objects.NetworkRequest(network_id\u003d\u0027fake-net\u0027,"},{"line_number":1613,"context_line":"                                            address\u003d\u00271.2.3.4\u0027,"},{"line_number":1614,"context_line":"                                            port_id\u003duuids.portid_5"},{"line_number":1615,"context_line":"                                            )])"},{"line_number":1616,"context_line":"        # Test to deallocate in one port env."},{"line_number":1617,"context_line":"        self._test_deallocate_for_instance(1, requested_networks\u003drequested)"},{"line_number":1618,"context_line":"        mock_preexisting.assert_called_once_with(self.instance)"}],"source_content_type":"text/x-python","patch_set":34,"id":"a3f5f589_d7b7fd4f","line":1615,"updated":"2021-07-13 12:38:48.000000000","message":"nit: seems like an unnecessary change","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ee486234d23b276fcb57a668f84d16919a1a9a69","unresolved":false,"context_lines":[{"line_number":1612,"context_line":"            objects\u003d[objects.NetworkRequest(network_id\u003d\u0027fake-net\u0027,"},{"line_number":1613,"context_line":"                                            address\u003d\u00271.2.3.4\u0027,"},{"line_number":1614,"context_line":"                                            port_id\u003duuids.portid_5"},{"line_number":1615,"context_line":"                                            )])"},{"line_number":1616,"context_line":"        # Test to deallocate in one port env."},{"line_number":1617,"context_line":"        self._test_deallocate_for_instance(1, requested_networks\u003drequested)"},{"line_number":1618,"context_line":"        mock_preexisting.assert_called_once_with(self.instance)"}],"source_content_type":"text/x-python","patch_set":34,"id":"c7ee1d75_aa50747e","line":1615,"in_reply_to":"a3f5f589_d7b7fd4f","updated":"2021-07-14 08:12:48.000000000","message":"Done","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09d280510416ca7aaf23d22675f9f2b92c9a2ddc","unresolved":true,"context_lines":[{"line_number":1624,"context_line":"            objects\u003d[objects.NetworkRequest(network_id\u003d\u0027fake-net\u0027,"},{"line_number":1625,"context_line":"                                            address\u003d\u00271.2.3.4\u0027,"},{"line_number":1626,"context_line":"                                            port_id\u003duuids.portid_6"},{"line_number":1627,"context_line":"                                            )])"},{"line_number":1628,"context_line":"        # Test to deallocate in one port env."},{"line_number":1629,"context_line":"        self._test_deallocate_for_instance(2, requested_networks\u003drequested)"},{"line_number":1630,"context_line":"        mock_preexisting.assert_called_once_with(self.instance)"}],"source_content_type":"text/x-python","patch_set":34,"id":"0ed2c71d_0bd159ca","line":1627,"updated":"2021-07-13 12:38:48.000000000","message":"nit: seems like an unnecessary change","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ee486234d23b276fcb57a668f84d16919a1a9a69","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"            objects\u003d[objects.NetworkRequest(network_id\u003d\u0027fake-net\u0027,"},{"line_number":1625,"context_line":"                                            address\u003d\u00271.2.3.4\u0027,"},{"line_number":1626,"context_line":"                                            port_id\u003duuids.portid_6"},{"line_number":1627,"context_line":"                                            )])"},{"line_number":1628,"context_line":"        # Test to deallocate in one port env."},{"line_number":1629,"context_line":"        self._test_deallocate_for_instance(2, requested_networks\u003drequested)"},{"line_number":1630,"context_line":"        mock_preexisting.assert_called_once_with(self.instance)"}],"source_content_type":"text/x-python","patch_set":34,"id":"dd2ac303_1968f1ae","line":1627,"in_reply_to":"0ed2c71d_0bd159ca","updated":"2021-07-14 08:12:48.000000000","message":"Done","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"}],"nova/tests/unit/objects/test_network_request.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09d280510416ca7aaf23d22675f9f2b92c9a2ddc","unresolved":true,"context_lines":[{"line_number":134,"context_line":"        primitive \u003d data(net_req.obj_to_primitive(target_version\u003d\u00271.3\u0027))"},{"line_number":135,"context_line":"        self.assertIn(\u0027arq_uuid\u0027, primitive)"},{"line_number":136,"context_line":"        primitive \u003d data(net_req.obj_to_primitive(target_version\u003d\u00271.2\u0027))"},{"line_number":137,"context_line":"        self.assertNotIn(\u0027arq_uuid\u0027, primitive)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"class TestNetworkRequestObject(test_objects._LocalTest,"}],"source_content_type":"text/x-python","patch_set":34,"id":"888d6f7e_b57d564b","line":137,"updated":"2021-07-13 12:38:48.000000000","message":"Please assert the device_profile removal as well","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ee486234d23b276fcb57a668f84d16919a1a9a69","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        primitive \u003d data(net_req.obj_to_primitive(target_version\u003d\u00271.3\u0027))"},{"line_number":135,"context_line":"        self.assertIn(\u0027arq_uuid\u0027, primitive)"},{"line_number":136,"context_line":"        primitive \u003d data(net_req.obj_to_primitive(target_version\u003d\u00271.2\u0027))"},{"line_number":137,"context_line":"        self.assertNotIn(\u0027arq_uuid\u0027, primitive)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"class TestNetworkRequestObject(test_objects._LocalTest,"}],"source_content_type":"text/x-python","patch_set":34,"id":"7b622a60_78f4c9e1","line":137,"in_reply_to":"888d6f7e_b57d564b","updated":"2021-07-14 08:12:48.000000000","message":"Done","commit_id":"d3edbb22b02a0053ad216232830d06fd2fd703c7"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d028c5fc7efc61a2f07079833597ed6bba0bd66a","unresolved":true,"context_lines":[{"line_number":903,"context_line":"    @mock.patch.object(vif.designer, \u0027set_vif_guest_frontend_config\u0027,"},{"line_number":904,"context_line":"                       wraps\u003dvif.designer.set_vif_guest_frontend_config)"},{"line_number":905,"context_line":"    def test_model_accelerator_direct(self, mock_set):"},{"line_number":906,"context_line":"        \"\"\"Direct attach vNICs shouldn\u0027t retrieve info from image_meta.\"\"\""},{"line_number":907,"context_line":"        self.flags(use_virtio_for_bridges\u003dTrue,"},{"line_number":908,"context_line":"                   virt_type\u003d\u0027kvm\u0027,"},{"line_number":909,"context_line":"                   group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fed5755a_b9000889","line":906,"updated":"2021-03-11 13:59:59.000000000","message":"this is a copy paste from above","commit_id":"5b770418a8570e4deac805f952156f69fe7460d8"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ad3c100bf9d5995629b63fa821c085dab180eafe","unresolved":false,"context_lines":[{"line_number":903,"context_line":"    @mock.patch.object(vif.designer, \u0027set_vif_guest_frontend_config\u0027,"},{"line_number":904,"context_line":"                       wraps\u003dvif.designer.set_vif_guest_frontend_config)"},{"line_number":905,"context_line":"    def test_model_accelerator_direct(self, mock_set):"},{"line_number":906,"context_line":"        \"\"\"Direct attach vNICs shouldn\u0027t retrieve info from image_meta.\"\"\""},{"line_number":907,"context_line":"        self.flags(use_virtio_for_bridges\u003dTrue,"},{"line_number":908,"context_line":"                   virt_type\u003d\u0027kvm\u0027,"},{"line_number":909,"context_line":"                   group\u003d\u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5994a011_5e465c13","line":906,"in_reply_to":"fed5755a_b9000889","updated":"2021-03-31 08:27:10.000000000","message":"make a common internal function to share most of testing code.","commit_id":"5b770418a8570e4deac805f952156f69fe7460d8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d028c5fc7efc61a2f07079833597ed6bba0bd66a","unresolved":true,"context_lines":[{"line_number":915,"context_line":"            {\u0027properties\u0027: {\u0027hw_vif_model\u0027: \u0027virtio\u0027}})"},{"line_number":916,"context_line":"        conf \u003d d.get_base_config(None, \u0027ca:fe:de:ad:be:ef\u0027, image_meta,"},{"line_number":917,"context_line":"                                 None, \u0027kvm\u0027,"},{"line_number":918,"context_line":"                                 network_model.VNIC_TYPE_ACCELERATOR_DIRECT)"},{"line_number":919,"context_line":"        mock_set.assert_called_once_with(mock.ANY, \u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":920,"context_line":"                                         None, None, None, None)"},{"line_number":921,"context_line":"        self.assertIsNone(conf.vhost_queues)"}],"source_content_type":"text/x-python","patch_set":13,"id":"c3e99e83_465fed4a","line":918,"range":{"start_line":918,"start_character":47,"end_line":918,"end_character":75},"updated":"2021-03-11 13:59:59.000000000","message":"Feels like this is the only difference between this and the above test. If the goal is to ensure that image meta is not used along with ACCELERATOR_DIRECT then you can simply add this vnic type to the previous test. Maybe use ddt for that.","commit_id":"5b770418a8570e4deac805f952156f69fe7460d8"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"ad3c100bf9d5995629b63fa821c085dab180eafe","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            {\u0027properties\u0027: {\u0027hw_vif_model\u0027: \u0027virtio\u0027}})"},{"line_number":916,"context_line":"        conf \u003d d.get_base_config(None, \u0027ca:fe:de:ad:be:ef\u0027, image_meta,"},{"line_number":917,"context_line":"                                 None, \u0027kvm\u0027,"},{"line_number":918,"context_line":"                                 network_model.VNIC_TYPE_ACCELERATOR_DIRECT)"},{"line_number":919,"context_line":"        mock_set.assert_called_once_with(mock.ANY, \u0027ca:fe:de:ad:be:ef\u0027,"},{"line_number":920,"context_line":"                                         None, None, None, None)"},{"line_number":921,"context_line":"        self.assertIsNone(conf.vhost_queues)"}],"source_content_type":"text/x-python","patch_set":13,"id":"b1fcec76_996e528f","line":918,"range":{"start_line":918,"start_character":47,"end_line":918,"end_character":75},"in_reply_to":"c3e99e83_465fed4a","updated":"2021-03-31 08:27:10.000000000","message":"Done","commit_id":"5b770418a8570e4deac805f952156f69fe7460d8"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6e8a39b24222117b50ad753a3fdadd81d26f2078","unresolved":true,"context_lines":[{"line_number":349,"context_line":"        profile \u003d vif[\"profile\"]"},{"line_number":350,"context_line":"        vif_details \u003d vif[\"details\"]"},{"line_number":351,"context_line":"        net_type \u003d \u0027direct\u0027"},{"line_number":352,"context_line":"        if vif[\u0027vnic_type\u0027] in [network_model.VNIC_TYPE_DIRECT,"},{"line_number":353,"context_line":"            network_model.VNIC_TYPE_ACCELERATOR_DIRECT]:"},{"line_number":354,"context_line":"            net_type \u003d \u0027hostdev\u0027"},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"f9055732_0210dc0c","line":352,"updated":"2021-03-10 12:59:44.000000000","message":"this should have a unit test to ensure that this work correctly when using VNIC_TYPE_ACCELERATOR_DIRECT\n\nwe also need to test get_config_hostdev_physical with VNIC_TYPE_ACCELERATOR_DIRECT_PHYSICAL","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"a59a5f9883292b9ebfd8328836af9229659a341d","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        profile \u003d vif[\"profile\"]"},{"line_number":350,"context_line":"        vif_details \u003d vif[\"details\"]"},{"line_number":351,"context_line":"        net_type \u003d \u0027direct\u0027"},{"line_number":352,"context_line":"        if vif[\u0027vnic_type\u0027] in [network_model.VNIC_TYPE_DIRECT,"},{"line_number":353,"context_line":"            network_model.VNIC_TYPE_ACCELERATOR_DIRECT]:"},{"line_number":354,"context_line":"            net_type \u003d \u0027hostdev\u0027"},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"f6c7006b_41336efa","line":352,"in_reply_to":"f9055732_0210dc0c","updated":"2021-03-11 08:46:05.000000000","message":"Done","commit_id":"0b292503d0c18ad3b1904e2d036f8573d27995a6"}]}
