)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-03-08 21:31:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add vdpa nodedev parsing and interface config gen"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the libvirt host and config modules"},{"line_number":10,"context_line":"to support looking up vdpa nodedevs via parent vf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"640eeeb5_9e47655b","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"updated":"2021-03-10 11:55:31.000000000","message":"A","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-03-08 21:31:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add vdpa nodedev parsing and interface config gen"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the libvirt host and config modules"},{"line_number":10,"context_line":"to support looking up vdpa nodedevs via parent vf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fd1f565_e1f1dc95","line":7,"range":{"start_line":7,"start_character":46,"end_line":7,"end_character":49},"updated":"2021-03-10 11:55:31.000000000","message":"generation","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Sean Mooney \u003cwork@seanmooney.info\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-03-08 21:31:38 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add vdpa nodedev parsing and interface config gen"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the libvirt host and config modules"},{"line_number":10,"context_line":"to support looking up vdpa nodedevs via parent vf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9bc32643_652e7582","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":8},"updated":"2021-03-10 11:55:31.000000000","message":"vDPA","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":7,"context_line":"add vdpa nodedev parsing and interface config gen"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the libvirt host and config modules"},{"line_number":10,"context_line":"to support looking up vdpa nodedevs via parent vf"},{"line_number":11,"context_line":"and marshaling the result into a nodedev object."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This change add the ability to generate the libvirt"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ced5bfc2_c5d34d0a","line":10,"range":{"start_line":10,"start_character":47,"end_line":10,"end_character":49},"updated":"2021-03-10 11:55:31.000000000","message":"VF","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":7,"context_line":"add vdpa nodedev parsing and interface config gen"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change extends the libvirt host and config modules"},{"line_number":10,"context_line":"to support looking up vdpa nodedevs via parent vf"},{"line_number":11,"context_line":"and marshaling the result into a nodedev object."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This change add the ability to generate the libvirt"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"00e8f84a_ff3c5593","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":26},"updated":"2021-03-10 11:55:31.000000000","message":"vDPA","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":10,"context_line":"to support looking up vdpa nodedevs via parent vf"},{"line_number":11,"context_line":"and marshaling the result into a nodedev object."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This change add the ability to generate the libvirt"},{"line_number":14,"context_line":"interface xml for a neutron port of vnic_type vdpa."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"add unittests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fb601f78_5ba6b5be","line":13,"range":{"start_line":13,"start_character":12,"end_line":13,"end_character":15},"updated":"2021-03-10 11:55:31.000000000","message":"adds","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":13,"context_line":"This change add the ability to generate the libvirt"},{"line_number":14,"context_line":"interface xml for a neutron port of vnic_type vdpa."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"add unittests"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I2c7b183fcb01f3cb67cb1c8b8bea7aaf5ce424f3"},{"line_number":19,"context_line":"Partial-Implements: blueprint libvirt-vdpa-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7d1da191_652be380","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":13},"updated":"2021-03-10 11:55:31.000000000","message":"Is that a thing you\u0027ve done or need to do? Maybe drop this","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"}],"nova/tests/unit/virt/libvirt/fakelibvirt.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":181,"context_line":"# virConnectListAllNodeDevices flags"},{"line_number":182,"context_line":"VIR_CONNECT_LIST_NODE_DEVICES_CAP_PCI_DEV \u003d 2"},{"line_number":183,"context_line":"VIR_CONNECT_LIST_NODE_DEVICES_CAP_NET \u003d 16"},{"line_number":184,"context_line":"VIR_CONNECT_LIST_NODE_DEVICES_CAP_VDPA \u003d 131072"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"# secret type"},{"line_number":187,"context_line":"VIR_SECRET_USAGE_TYPE_NONE \u003d 0"}],"source_content_type":"text/x-python","patch_set":7,"id":"011094f1_37c64a73","line":184,"range":{"start_line":184,"start_character":41,"end_line":184,"end_character":47},"updated":"2021-03-10 11:55:31.000000000","message":"nit: Can we do what libvirt does?\n\n  1 \u003c\u003c 17\n\nThis is otherwise a fairly meaningless number","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"}],"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1163,"context_line":"            self.assertEqual([], ret)"},{"line_number":1164,"context_line":"        mock_list_all_devices.assert_called_once_with(42)"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def test__get_vdpa_nodedev_by_address(self):"},{"line_number":1167,"context_line":"        with mock.patch.object("},{"line_number":1168,"context_line":"                self.host.get_connection(),"},{"line_number":1169,"context_line":"                \"listAllDevices\") as mock_list_all_devices:"}],"source_content_type":"text/x-python","patch_set":7,"id":"d2b2e230_e6fbb509","line":1166,"range":{"start_line":1166,"start_character":13,"end_line":1166,"end_character":14},"updated":"2021-03-10 11:55:31.000000000","message":"whoops (the function isn\u0027t preceded by an underscore so this just seems wrong)","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1166,"context_line":"    def test__get_vdpa_nodedev_by_address(self):"},{"line_number":1167,"context_line":"        with mock.patch.object("},{"line_number":1168,"context_line":"                self.host.get_connection(),"},{"line_number":1169,"context_line":"                \"listAllDevices\") as mock_list_all_devices:"},{"line_number":1170,"context_line":"            xml_str \u003d \"\"\""},{"line_number":1171,"context_line":"\u003cdevice\u003e"},{"line_number":1172,"context_line":"  \u003cname\u003evdpa_vdpa0\u003c/name\u003e"}],"source_content_type":"text/x-python","patch_set":7,"id":"63cb332c_82c74de5","line":1169,"updated":"2021-03-10 11:55:31.000000000","message":"style nit:\n\n  with mock.patch.object(\n      self.host.get_connection(), \"listAllDevices\",\n  ) as mock_list_all_devices:","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1178,"context_line":"  \u003ccapability type\u003d\u0027vdpa\u0027\u003e"},{"line_number":1179,"context_line":"    \u003cchardev\u003e/dev/vhost-vdpa-0\u003c/chardev\u003e"},{"line_number":1180,"context_line":"  \u003c/capability\u003e"},{"line_number":1181,"context_line":"\u003c/device\u003e\"\"\""},{"line_number":1182,"context_line":"            vdpa_dev \u003d fakelibvirt.NodeDevice(None, xml\u003dxml_str)"},{"line_number":1183,"context_line":"            xml_str \u003d \"\"\""},{"line_number":1184,"context_line":"\u003cdevice\u003e"}],"source_content_type":"text/x-python","patch_set":7,"id":"3003d6a7_9dbb91d2","line":1181,"updated":"2021-03-10 11:55:31.000000000","message":"Could you indent this to help preserve readability? If it ends up being too long, just add \n\n  # noqa: E501\n\nat the end","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1242,"context_line":"            #     \"0000:06:00.2\", get_pci_info_mock)"},{"line_number":1243,"context_line":"            # self.assertEqual(node_devs[1], ret)"},{"line_number":1244,"context_line":""},{"line_number":1245,"context_line":"    def test_get_vdpa_nodedev_by_address(self):"},{"line_number":1246,"context_line":"        with mock.patch.object("},{"line_number":1247,"context_line":"                self.host,"},{"line_number":1248,"context_line":"                \"get_vdpa_nodedev_by_address\") as mock_vdpa:"}],"source_content_type":"text/x-python","patch_set":7,"id":"d5dc3928_b836241b","line":1245,"range":{"start_line":1245,"start_character":22,"end_line":1245,"end_character":40},"updated":"2021-03-10 11:55:31.000000000","message":"device_path","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1245,"context_line":"    def test_get_vdpa_nodedev_by_address(self):"},{"line_number":1246,"context_line":"        with mock.patch.object("},{"line_number":1247,"context_line":"                self.host,"},{"line_number":1248,"context_line":"                \"get_vdpa_nodedev_by_address\") as mock_vdpa:"},{"line_number":1249,"context_line":"            xml_str \u003d \"\"\""},{"line_number":1250,"context_line":"            \u003cdevice\u003e"},{"line_number":1251,"context_line":"              \u003cname\u003evdpa_vdpa0\u003c/name\u003e"}],"source_content_type":"text/x-python","patch_set":7,"id":"611ab0c0_d5644973","line":1248,"updated":"2021-03-10 11:55:31.000000000","message":"ditto","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1836,"context_line":"            if self.mtu is not None:"},{"line_number":1837,"context_line":"                dev.append(etree.Element(\"mtu\", size\u003dstr(self.mtu)))"},{"line_number":1838,"context_line":"        elif self.net_type \u003d\u003d \"vdpa\":"},{"line_number":1839,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev))"},{"line_number":1840,"context_line":"        else:"},{"line_number":1841,"context_line":"            dev.append(etree.Element(\"source\", bridge\u003dself.source_dev))"},{"line_number":1842,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"8d84cdbd_3adf58ea","line":1839,"updated":"2021-03-10 11:55:31.000000000","message":"Could you nest this under the \u0027direct\u0027 element, since those two seem closest to each other","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":3095,"context_line":"        self.disks.append(disk)"},{"line_number":3096,"context_line":""},{"line_number":3097,"context_line":""},{"line_number":3098,"context_line":"class LibvirtConfigNodeDevice(LibvirtConfigObject):"},{"line_number":3099,"context_line":"    \"\"\"Libvirt Node Devices parser.\"\"\""},{"line_number":3100,"context_line":""},{"line_number":3101,"context_line":"    def __init__(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f231ef4_a2b3b353","line":3098,"updated":"2021-03-10 11:55:31.000000000","message":"I think we\u0027re getting to the point where we need to split this into three types of device and rely on \u0027isinstance\u0027 checks to determine what type we have. I assume that\u0027s possible. Could a device have multiple types of capability?","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":3104,"context_line":"        self.name \u003d None"},{"line_number":3105,"context_line":"        self.parent \u003d None"},{"line_number":3106,"context_line":"        self.pci_capability \u003d None"},{"line_number":3107,"context_line":"        self.mdev_information \u003d None"},{"line_number":3108,"context_line":"        self.vdpa_capability \u003d None"},{"line_number":3109,"context_line":""},{"line_number":3110,"context_line":"    def parse_dom(self, xmldoc):"}],"source_content_type":"text/x-python","patch_set":7,"id":"44069a12_d15fc8a4","line":3107,"updated":"2021-03-10 11:55:31.000000000","message":"related: we should rename this to mdev_capability at some point","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f240e6d0da4a21abfcf0032b8a643d6d57d51577","unresolved":true,"context_lines":[{"line_number":1815,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev,"},{"line_number":1816,"context_line":"                                     mode\u003dself.source_mode))"},{"line_number":1817,"context_line":"        elif self.net_type \u003d\u003d \"vdpa\":"},{"line_number":1818,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev))"},{"line_number":1819,"context_line":"        elif self.net_type \u003d\u003d \"hostdev\":"},{"line_number":1820,"context_line":"            source_elem \u003d etree.Element(\"source\")"},{"line_number":1821,"context_line":"            domain, bus, slot, func \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"111a29ea_69af0d92","line":1818,"updated":"2021-03-11 15:59:39.000000000","message":"Could do with a test for this","commit_id":"380bf098d595e6cac713945c82be197c1077c95a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4668c8c4b445de78ae14b744acb21bc9aeb96ea4","unresolved":true,"context_lines":[{"line_number":1815,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev,"},{"line_number":1816,"context_line":"                                     mode\u003dself.source_mode))"},{"line_number":1817,"context_line":"        elif self.net_type \u003d\u003d \"vdpa\":"},{"line_number":1818,"context_line":"            dev.append(etree.Element(\"source\", dev\u003dself.source_dev))"},{"line_number":1819,"context_line":"        elif self.net_type \u003d\u003d \"hostdev\":"},{"line_number":1820,"context_line":"            source_elem \u003d etree.Element(\"source\")"},{"line_number":1821,"context_line":"            domain, bus, slot, func \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"8cd998cf_107c7aef","line":1818,"in_reply_to":"111a29ea_69af0d92","updated":"2021-03-11 16:15:06.000000000","message":"oh to assert the xml generation i have tested the object side here i.e. seting it and retirving it\nhttps://review.opendev.org/c/openstack/nova/+/770532/10/nova/tests/unit/virt/libvirt/test_designer.py#182\n\nbut yes i could test the xml generation more explictly in a follow up","commit_id":"380bf098d595e6cac713945c82be197c1077c95a"}],"nova/virt/libvirt/designer.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        conf.driver_name \u003d driver"},{"line_number":38,"context_line":"    if queues is not None:"},{"line_number":39,"context_line":"        conf.vhost_queues \u003d queues"},{"line_number":40,"context_line":"    set_vif_queue_size(conf, rx_queue_size\u003drx_queue_size)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def set_vif_host_backend_ethernet_config(conf, tapname):"}],"source_content_type":"text/x-python","patch_set":7,"id":"2a1ecd33_9ab6b08e","line":40,"updated":"2021-03-10 11:55:31.000000000","message":"nit: Meh. This saves us all of two lines and makes things less clear. Personally I wouldn\u0027t bother","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a0943fb4534f65b6f3c2e83b5837b7a1790fd567","unresolved":true,"context_lines":[{"line_number":1364,"context_line":"        LOG.debug(\"No AMD SEV support detected for any (arch, machine_type)\")"},{"line_number":1365,"context_line":""},{"line_number":1366,"context_line":"    # TODO(sean-k-mooney): move this to driver.py or move _get_pcidev_info to"},{"line_number":1367,"context_line":"    # host.py."},{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"}],"source_content_type":"text/x-python","patch_set":5,"id":"8f6f463a_2158c105","line":1367,"updated":"2021-03-08 19:51:05.000000000","message":"in the follow up i move the other function to here.","commit_id":"f3c3ebaa75dd46431315548bbf057298b514430f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a0943fb4534f65b6f3c2e83b5837b7a1790fd567","unresolved":true,"context_lines":[{"line_number":1367,"context_line":"    # host.py."},{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."}],"source_content_type":"text/x-python","patch_set":5,"id":"2c505123_c820d3fc","line":1370,"range":{"start_line":1370,"start_character":29,"end_line":1370,"end_character":37},"updated":"2021-03-08 19:51:05.000000000","message":"this is never actully used passing a callable.\nin a follow up patch i move all the related function to host.py which means this can be removed.\nit also means that we can make the driver.py a little smaller which is good in the long run.","commit_id":"f3c3ebaa75dd46431315548bbf057298b514430f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1364,"context_line":"        LOG.debug(\"No AMD SEV support detected for any (arch, machine_type)\")"},{"line_number":1365,"context_line":""},{"line_number":1366,"context_line":"    # TODO(sean-k-mooney): move this to driver.py or move _get_pcidev_info to"},{"line_number":1367,"context_line":"    # host.py."},{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"}],"source_content_type":"text/x-python","patch_set":7,"id":"6086c635_9c230449","line":1367,"updated":"2021-03-10 11:55:31.000000000","message":"The latter is much preferable IMO and could be done as a precursor patch. If you don\u0027t want to do that now though, please opt for the former and with a TODO. As this is, we have the worst of both worlds. Passing the function as an argument is just plain weird, heh.\n\nLater: I\u0027d also be okay with _copying_ \u0027_get_pcidev_info\u0027 and de-duping in a follow-up, but the follow-up has to be done","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1366,"context_line":"    # TODO(sean-k-mooney): move this to driver.py or move _get_pcidev_info to"},{"line_number":1367,"context_line":"    # host.py."},{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."}],"source_content_type":"text/x-python","patch_set":7,"id":"1c76b90c_b80fb454","line":1369,"range":{"start_line":1369,"start_character":30,"end_line":1369,"end_character":38},"updated":"2021-03-10 11:55:31.000000000","message":"str\n\nand after you insisting we use \u0027dict\u0027 rather than \u0027ty.Dict[str, ty.Any]\u0027 everywhere. Tut tut 😉","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."}],"source_content_type":"text/x-python","patch_set":7,"id":"41d835fd_0f2de6b5","line":1371,"range":{"start_line":1371,"start_character":11,"end_line":1371,"end_character":12},"updated":"2021-03-10 11:55:31.000000000","message":"F","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."}],"source_content_type":"text/x-python","patch_set":7,"id":"f11dc44d_88ae78e2","line":1371,"range":{"start_line":1371,"start_character":48,"end_line":1371,"end_character":51},"updated":"2021-03-10 11:55:31.000000000","message":"PCI","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."}],"source_content_type":"text/x-python","patch_set":7,"id":"b5c3e430_6ff6970f","line":1371,"updated":"2021-03-10 11:55:31.000000000","message":"You need a newline under this.","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."}],"source_content_type":"text/x-python","patch_set":7,"id":"4581fd50_2aa6e64c","line":1371,"range":{"start_line":1371,"start_character":38,"end_line":1371,"end_character":58},"updated":"2021-03-10 11:55:31.000000000","message":"the parent VF? Isn\u0027t that an oxymoron? Did you meant \"the parent of the VF\" or the \"parent PF\"?\n\nLater - oh wait, each vDPA device is allocated its own VF. Perhaps we could add a little ASCII illustration describing what we\u0027re fetching here? Something like:\n\n  PF\n  |- VF\n  |  \\ vDPA device\n  \\- VF\n     \\ vDPA device","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1368,"context_line":"    def get_vdpa_nodedev_by_address("},{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."}],"source_content_type":"text/x-python","patch_set":7,"id":"10992bc8_571f8a00","line":1371,"range":{"start_line":1371,"start_character":19,"end_line":1371,"end_character":23},"updated":"2021-03-10 11:55:31.000000000","message":"vDPA","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1369,"context_line":"            self, pci_address: ty.Text,"},{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."},{"line_number":1375,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"18cc8cf6_4bd4270d","line":1372,"updated":"2021-03-10 11:55:31.000000000","message":"what about \u0027get_pci_info\u0027?\n\n(tbc, I expect this won\u0027t need to be done since I\u0027d rather you did one of the two things in the TODO above)","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1370,"context_line":"            get_pci_info: ty.Callable) -\u003e vconfig.LibvirtConfigNodeDevice:"},{"line_number":1371,"context_line":"        \"\"\"finds a vdpa device by the parent VF pci device."},{"line_number":1372,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1373,"context_line":"        :raises: StopIteration if not found."},{"line_number":1374,"context_line":"        :returns: a libvirt nodedev representing the vdpa device."},{"line_number":1375,"context_line":"        \"\"\""},{"line_number":1376,"context_line":"        dev_flags \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"c736992c_54cf707f","line":1373,"updated":"2021-03-10 11:55:31.000000000","message":"A more explicit exception would be preferred","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1387,"context_line":"        parent_device \u003d next("},{"line_number":1388,"context_line":"            dev for dev in pci_info if dev.address() \u003d\u003d pci_address)"},{"line_number":1389,"context_line":"        vdpa_device \u003d next("},{"line_number":1390,"context_line":"            dev for dev in pci_info if dev.parent() \u003d\u003d parent_device.name())"},{"line_number":1391,"context_line":"        xmlstr \u003d vdpa_device.XMLDesc(0)"},{"line_number":1392,"context_line":"        cfgdev \u003d vconfig.LibvirtConfigNodeDevice()"},{"line_number":1393,"context_line":"        cfgdev.parse_str(xmlstr)"}],"source_content_type":"text/x-python","patch_set":7,"id":"99f98dc5_73778ab1","line":1390,"updated":"2021-03-10 11:55:31.000000000","message":"You\u0027ve gone a bit mad on the iterators, lad 😛 I\u0027m still not entirely sure what\u0027s happening here. Why can\u0027t we do something like:\n\n  for device in self.list_all_devices(flags\u003ddev_flags):\n      cfgdev \u003d vconfig.LibvirtConfigNodeDevice(device.XMLDesc(0))\n      if cfgdev.parent_addr \u003d\u003d pci_address:\n          return cfgdev\n  else:\n      raise SomeKindOfException(\u0027...\u0027)\n\nI mean, you\u0027re messing with the \u0027nova.virt.libvirt.config\u0027 module anyway. What\u0027s another attribute to save this info?","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1394,"context_line":"        return cfgdev"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."}],"source_content_type":"text/x-python","patch_set":7,"id":"ee50b8a2_cfa0e2d4","line":1397,"range":{"start_line":1397,"start_character":38,"end_line":1397,"end_character":65},"updated":"2021-03-10 11:55:31.000000000","message":"As before, eew 😞 Either move or duplicate that here, or put this into the driver.py module for now","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1394,"context_line":"        return cfgdev"},{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."}],"source_content_type":"text/x-python","patch_set":7,"id":"409a52cd_2b43056e","line":1397,"range":{"start_line":1397,"start_character":31,"end_line":1397,"end_character":38},"updated":"2021-03-10 11:55:31.000000000","message":"str","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."},{"line_number":1401,"context_line":"        :returns: device path as string."}],"source_content_type":"text/x-python","patch_set":7,"id":"70ef0d37_144b3dcc","line":1398,"range":{"start_line":1398,"start_character":11,"end_line":1398,"end_character":12},"updated":"2021-03-10 11:55:31.000000000","message":"F","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1395,"context_line":""},{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."},{"line_number":1401,"context_line":"        :returns: device path as string."}],"source_content_type":"text/x-python","patch_set":7,"id":"e986d15c_f4856aeb","line":1398,"range":{"start_line":1398,"start_character":19,"end_line":1398,"end_character":23},"updated":"2021-03-10 11:55:31.000000000","message":"vDPA","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."},{"line_number":1401,"context_line":"        :returns: device path as string."},{"line_number":1402,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"f3e57db2_d8599794","line":1399,"updated":"2021-03-10 11:55:31.000000000","message":"Need a newline before this","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."},{"line_number":1401,"context_line":"        :returns: device path as string."},{"line_number":1402,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"a04c2abd_47435fe5","line":1399,"range":{"start_line":1399,"start_character":28,"end_line":1399,"end_character":31},"updated":"2021-03-10 11:55:31.000000000","message":"PCI","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1396,"context_line":"    def get_vdpa_device_path("},{"line_number":1397,"context_line":"            self, pci_address: ty.Text, get_pci_info: ty.Callable) -\u003e ty.Text:"},{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."},{"line_number":1401,"context_line":"        :returns: device path as string."},{"line_number":1402,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3275c192_2d908502","line":1399,"range":{"start_line":1399,"start_character":32,"end_line":1399,"end_character":38},"updated":"2021-03-10 11:55:31.000000000","message":"device address","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":1398,"context_line":"        \"\"\"finds a vdpa device path by the parent VF pci device."},{"line_number":1399,"context_line":"        :param pci_address: pci device as a string."},{"line_number":1400,"context_line":"        :raises: StopIteration if not found."},{"line_number":1401,"context_line":"        :returns: device path as string."},{"line_number":1402,"context_line":"        \"\"\""},{"line_number":1403,"context_line":"        nodedev \u003d self.get_vdpa_nodedev_by_address(pci_address, get_pci_info)"},{"line_number":1404,"context_line":"        return nodedev.vdpa_capability.dev_path"}],"source_content_type":"text/x-python","patch_set":7,"id":"9e40fe21_bf94f8e1","line":1401,"updated":"2021-03-10 11:55:31.000000000","message":"It\u0027s possible this can raise an exception also, right?","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ad028108eb66d73e23fc166502d2fc0b299b963","unresolved":true,"context_lines":[{"line_number":1267,"context_line":"                    cfgdev.parse_str(xmlstr)"},{"line_number":1268,"context_line":"                    caps[\u0027capabilities\u0027] \u003d {"},{"line_number":1269,"context_line":"                        \u0027vdpa\u0027: {\u0027dev_path\u0027: cfgdev.vdpa_capability.dev_path},"},{"line_number":1270,"context_line":"                    }"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"            return caps"},{"line_number":1273,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"725c4200_c82fecf2","side":"PARENT","line":1270,"updated":"2021-03-12 08:34:58.000000000","message":"this removal belongs to the previous patch where it was added","commit_id":"a7adeec1f21912a679a204ca0aaec1890f4200d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a0157b621c6919ac1b4f242a2c3ea63bba2e6ed7","unresolved":true,"context_lines":[{"line_number":1267,"context_line":"                    cfgdev.parse_str(xmlstr)"},{"line_number":1268,"context_line":"                    caps[\u0027capabilities\u0027] \u003d {"},{"line_number":1269,"context_line":"                        \u0027vdpa\u0027: {\u0027dev_path\u0027: cfgdev.vdpa_capability.dev_path},"},{"line_number":1270,"context_line":"                    }"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"            return caps"},{"line_number":1273,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"acfce482_9444db5b","side":"PARENT","line":1270,"in_reply_to":"725c4200_c82fecf2","updated":"2021-03-12 10:59:38.000000000","message":"+1","commit_id":"a7adeec1f21912a679a204ca0aaec1890f4200d7"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c5cf2ac0ef10ad8186b0301337eaa034cd346fc8","unresolved":true,"context_lines":[{"line_number":535,"context_line":"            if vnic_type !\u003d network_model.VNIC_TYPE_VDPA:"},{"line_number":536,"context_line":"                self._set_config_VIFHostDevice(instance, vif, conf)"},{"line_number":537,"context_line":"            else:"},{"line_number":538,"context_line":"                dev_path \u003d self._get_vdpa_dev_path(vif.dev_address)"},{"line_number":539,"context_line":"                designer.set_vif_host_backend_vdpa_config("},{"line_number":540,"context_line":"                    conf, dev_path, CONF.libvirt.rx_queue_size,"},{"line_number":541,"context_line":"                    CONF.libvirt.tx_queue_size)"}],"source_content_type":"text/x-python","patch_set":7,"id":"aac10a47_d048ec8b","line":538,"updated":"2021-03-10 11:55:31.000000000","message":"Can you pass this device path as part of \u0027vif\u0027 object or as a separate parameter, please. We should avoid spreading the tentacles of the host module everywhere like this. Things are already too interconnected here\n\nAs an aside, why does neutron provide PCI slot information for SR-IOV devices yet we don\u0027t have the device path (which is apparently important) for vDPA devices. Are we missing a step in the binding dance?","commit_id":"f5963201ea04b6335258963b3f5b4be9f1783409"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3ad028108eb66d73e23fc166502d2fc0b299b963","unresolved":true,"context_lines":[{"line_number":150,"context_line":"class LibvirtGenericVIFDriver(object):"},{"line_number":151,"context_line":"    \"\"\"Generic VIF driver for libvirt networking.\"\"\""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def __init__(self, host: libvirt_host.Host \u003d None):"},{"line_number":154,"context_line":"        super().__init__()"},{"line_number":155,"context_line":"        self.host \u003d host"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"718fb310_8ee5cfd7","line":153,"range":{"start_line":153,"start_character":23,"end_line":153,"end_character":53},"updated":"2021-03-12 08:34:58.000000000","message":"why does this need to be optional? The driver passes the host","commit_id":"380bf098d595e6cac713945c82be197c1077c95a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f240e6d0da4a21abfcf0032b8a643d6d57d51577","unresolved":true,"context_lines":[{"line_number":534,"context_line":"            if vnic_type !\u003d network_model.VNIC_TYPE_VDPA:"},{"line_number":535,"context_line":"                self._set_config_VIFHostDevice(instance, vif, conf)"},{"line_number":536,"context_line":"            else:"},{"line_number":537,"context_line":"                dev_path \u003d self._get_vdpa_dev_path(vif.dev_address)"},{"line_number":538,"context_line":"                designer.set_vif_host_backend_vdpa_config("},{"line_number":539,"context_line":"                    conf, dev_path, CONF.libvirt.rx_queue_size,"},{"line_number":540,"context_line":"                    CONF.libvirt.tx_queue_size)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3dd35d23_2add78ee","line":537,"updated":"2021-03-11 15:59:39.000000000","message":"It seems we\u0027re doing this as an alternative to passing the vDPA device path through as part of the binding profile, which is what we do for VFs at present. Makes sense. That was always a bit of hack. It is disappointing that we need to invoke libvirt here to do that though 😞","commit_id":"380bf098d595e6cac713945c82be197c1077c95a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4668c8c4b445de78ae14b744acb21bc9aeb96ea4","unresolved":true,"context_lines":[{"line_number":534,"context_line":"            if vnic_type !\u003d network_model.VNIC_TYPE_VDPA:"},{"line_number":535,"context_line":"                self._set_config_VIFHostDevice(instance, vif, conf)"},{"line_number":536,"context_line":"            else:"},{"line_number":537,"context_line":"                dev_path \u003d self._get_vdpa_dev_path(vif.dev_address)"},{"line_number":538,"context_line":"                designer.set_vif_host_backend_vdpa_config("},{"line_number":539,"context_line":"                    conf, dev_path, CONF.libvirt.rx_queue_size,"},{"line_number":540,"context_line":"                    CONF.libvirt.tx_queue_size)"}],"source_content_type":"text/x-python","patch_set":10,"id":"f3ad0236_17137d56","line":537,"in_reply_to":"3dd35d23_2add78ee","updated":"2021-03-11 16:15:06.000000000","message":"yes i tried to stash it in the vif object then realise that this is an os-vif object at this point and that would require a new release of os-vif.\n\ni will hopefully be able to eventually remove this call to libvirt here but there is no non invasive way to do it currently.\nthis is definetly something i want to look at again in the future.","commit_id":"380bf098d595e6cac713945c82be197c1077c95a"}]}
