)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e30bc45c2e24114fa176b457a1b34d3c9f7f9112","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix detach SR-IOV when using LibvirtConfigGuestHostdevPCI"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fix an issue which was introduced by this"},{"line_number":10,"context_line":"change If3edc1965c01a077eb61984a442e0d778d870d75."},{"line_number":11,"context_line":"Usually the vif config is of type LibvirtConfigGuestInterface,"},{"line_number":12,"context_line":"but some vif use LibvirtConfigGuestHostdevPCI config"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_00037143","line":9,"updated":"2016-03-25 21:15:08.000000000","message":"s/fix an/fixes an/","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4b6062005604a711fd49c19e90f5472ffe274c90","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix detach SR-IOV when using LibvirtConfigGuestHostdevPCI"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fix an issue which was introduced by this"},{"line_number":10,"context_line":"change If3edc1965c01a077eb61984a442e0d778d870d75."},{"line_number":11,"context_line":"Usually the vif config is of type LibvirtConfigGuestInterface,"},{"line_number":12,"context_line":"but some vif use LibvirtConfigGuestHostdevPCI config"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_e6b110e3","line":9,"in_reply_to":"da0c15f0_00037143","updated":"2016-03-28 09:53:10.000000000","message":"Done","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e30bc45c2e24114fa176b457a1b34d3c9f7f9112","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Usually the vif config is of type LibvirtConfigGuestInterface,"},{"line_number":12,"context_line":"but some vif use LibvirtConfigGuestHostdevPCI config"},{"line_number":13,"context_line":"(e.g.  the ib_hostdev). The difference is that"},{"line_number":14,"context_line":"LibvirtConfigGuestInterface keep the pci address in source_dev"},{"line_number":15,"context_line":"while LibvirtConfigGuestHostdevPCI has domain, bus, function"},{"line_number":16,"context_line":"Instead of relaying on the vif config type we can take the"},{"line_number":17,"context_line":"pci address for the neutron port."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_e0ff5d32","line":14,"updated":"2016-03-25 21:15:08.000000000","message":"s/keep/keeps/","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4b6062005604a711fd49c19e90f5472ffe274c90","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Usually the vif config is of type LibvirtConfigGuestInterface,"},{"line_number":12,"context_line":"but some vif use LibvirtConfigGuestHostdevPCI config"},{"line_number":13,"context_line":"(e.g.  the ib_hostdev). The difference is that"},{"line_number":14,"context_line":"LibvirtConfigGuestInterface keep the pci address in source_dev"},{"line_number":15,"context_line":"while LibvirtConfigGuestHostdevPCI has domain, bus, function"},{"line_number":16,"context_line":"Instead of relaying on the vif config type we can take the"},{"line_number":17,"context_line":"pci address for the neutron port."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_c6b4ccd2","line":14,"in_reply_to":"da0c15f0_e0ff5d32","updated":"2016-03-28 09:53:10.000000000","message":"Done","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e30bc45c2e24114fa176b457a1b34d3c9f7f9112","unresolved":false,"context_lines":[{"line_number":12,"context_line":"but some vif use LibvirtConfigGuestHostdevPCI config"},{"line_number":13,"context_line":"(e.g.  the ib_hostdev). The difference is that"},{"line_number":14,"context_line":"LibvirtConfigGuestInterface keep the pci address in source_dev"},{"line_number":15,"context_line":"while LibvirtConfigGuestHostdevPCI has domain, bus, function"},{"line_number":16,"context_line":"Instead of relaying on the vif config type we can take the"},{"line_number":17,"context_line":"pci address for the neutron port."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_40fd6939","line":15,"updated":"2016-03-25 21:15:08.000000000","message":"and slot... but OK :)","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4b6062005604a711fd49c19e90f5472ffe274c90","unresolved":false,"context_lines":[{"line_number":12,"context_line":"but some vif use LibvirtConfigGuestHostdevPCI config"},{"line_number":13,"context_line":"(e.g.  the ib_hostdev). The difference is that"},{"line_number":14,"context_line":"LibvirtConfigGuestInterface keep the pci address in source_dev"},{"line_number":15,"context_line":"while LibvirtConfigGuestHostdevPCI has domain, bus, function"},{"line_number":16,"context_line":"Instead of relaying on the vif config type we can take the"},{"line_number":17,"context_line":"pci address for the neutron port."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_26cca869","line":15,"in_reply_to":"da0c15f0_40fd6939","updated":"2016-03-28 09:53:10.000000000","message":"Done","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e30bc45c2e24114fa176b457a1b34d3c9f7f9112","unresolved":false,"context_lines":[{"line_number":13,"context_line":"(e.g.  the ib_hostdev). The difference is that"},{"line_number":14,"context_line":"LibvirtConfigGuestInterface keep the pci address in source_dev"},{"line_number":15,"context_line":"while LibvirtConfigGuestHostdevPCI has domain, bus, function"},{"line_number":16,"context_line":"Instead of relaying on the vif config type we can take the"},{"line_number":17,"context_line":"pci address for the neutron port."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1560860"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_20faf542","line":16,"updated":"2016-03-25 21:15:08.000000000","message":"s/relaying/relying/","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4b6062005604a711fd49c19e90f5472ffe274c90","unresolved":false,"context_lines":[{"line_number":13,"context_line":"(e.g.  the ib_hostdev). The difference is that"},{"line_number":14,"context_line":"LibvirtConfigGuestInterface keep the pci address in source_dev"},{"line_number":15,"context_line":"while LibvirtConfigGuestHostdevPCI has domain, bus, function"},{"line_number":16,"context_line":"Instead of relaying on the vif config type we can take the"},{"line_number":17,"context_line":"pci address for the neutron port."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-Bug: #1560860"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da0c15f0_06c7e445","line":16,"in_reply_to":"da0c15f0_20faf542","updated":"2016-03-28 09:53:10.000000000","message":"Done","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e30bc45c2e24114fa176b457a1b34d3c9f7f9112","unresolved":false,"context_lines":[{"line_number":10389,"context_line":"        guest \u003d libvirt_guest.Guest(domain)"},{"line_number":10390,"context_line":""},{"line_number":10391,"context_line":"        drvr._detach_sriov_ports(self.context, instance, guest)"},{"line_number":10392,"context_line":"        self.assertTrue(mock_detachDeviceFlags.called)"},{"line_number":10393,"context_line":""},{"line_number":10394,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":10395,"context_line":"    @mock.patch.object(FakeVirtDomain, \u0027detachDeviceFlags\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_a0ed658d","line":10392,"updated":"2016-03-25 21:15:08.000000000","message":"Nothing has been put into the unit tests here that actually prevents regression. In other words, there\u0027s no test additions that *would* have failed prior to the code changes in this patch. So, until I see such a unit test addition, I\u0027m afraid I can\u0027t sign off on this, Moshe :(","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4b6062005604a711fd49c19e90f5472ffe274c90","unresolved":false,"context_lines":[{"line_number":10389,"context_line":"        guest \u003d libvirt_guest.Guest(domain)"},{"line_number":10390,"context_line":""},{"line_number":10391,"context_line":"        drvr._detach_sriov_ports(self.context, instance, guest)"},{"line_number":10392,"context_line":"        self.assertTrue(mock_detachDeviceFlags.called)"},{"line_number":10393,"context_line":""},{"line_number":10394,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":10395,"context_line":"    @mock.patch.object(FakeVirtDomain, \u0027detachDeviceFlags\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_667980f6","line":10392,"in_reply_to":"da0c15f0_a0ed658d","updated":"2016-03-28 09:53:10.000000000","message":"np, I created 2 test cases. The first tests\nvif_type hw_veb which its libvirt config is   LibvirtConfigGuestInterface\n\nThe second test is vif_type ib_hostdev  which its libvirt config is LibvirtConfigGuestHostdev\nLibvirtConfigGuestHostdevPCI\n\nThe old code will break the second test","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ba1a8d123866b4e0cecb9f70f309dffae55e2f39","unresolved":false,"context_lines":[{"line_number":10361,"context_line":"                                 mock_has_min_version, vif_type):"},{"line_number":10362,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":10363,"context_line":""},{"line_number":10364,"context_line":"        expeted_pci_slot \u003d \"0000:00:00.0\""},{"line_number":10365,"context_line":"        network_info \u003d _fake_network_info(self, 1)"},{"line_number":10366,"context_line":"        network_info[0][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT"},{"line_number":10367,"context_line":"        # some more adjustments for the fake network_info so that"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba0121b8_55fd3039","line":10364,"updated":"2016-03-29 14:09:58.000000000","message":"nit: expected...","commit_id":"f15d9a9693b19393fcde84cf4bc6f044d39ffdca"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4b4eb747d97b5109920e637b37a0d90c1b284dce","unresolved":false,"context_lines":[{"line_number":3422,"context_line":"                                           image_meta,"},{"line_number":3423,"context_line":"                                           instance.flavor,"},{"line_number":3424,"context_line":"                                           CONF.libvirt.virt_type,"},{"line_number":3425,"context_line":"                                           self._host).source_dev"},{"line_number":3426,"context_line":"                for vif in network_info"},{"line_number":3427,"context_line":"                if vif[\u0027vnic_type\u0027] in network_model.VNIC_TYPES_SRIOV"},{"line_number":3428,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_6059f834","side":"PARENT","line":3425,"range":{"start_line":3425,"start_character":55,"end_line":3425,"end_character":65},"updated":"2016-03-24 10:21:21.000000000","message":"so the bug is here as ib_hostdev vif driver would set it as domain, bus, slot, function","commit_id":"0ed6dc57f61ae1d7181f4852c1a5d3c8a940a4e4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"767d82aefac239262ea1ea79ef891f6e88b905ed","unresolved":false,"context_lines":[{"line_number":3416,"context_line":"                                                      dev\u003dnetwork_info)"},{"line_number":3417,"context_line":""},{"line_number":3418,"context_line":"            sriov_pci_addresses \u003d ["},{"line_number":3419,"context_line":"                vif[\u0027profile\u0027][\u0027pci_slot\u0027]"},{"line_number":3420,"context_line":"                for vif in network_info"},{"line_number":3421,"context_line":"                if vif[\u0027vnic_type\u0027] in network_model.VNIC_TYPES_SRIOV and"},{"line_number":3422,"context_line":"                   vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) is not None"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_9b9e3605","line":3419,"updated":"2016-03-24 13:46:41.000000000","message":"As far as I can tell, we only have pci_slot if there was a pci_request_id when initially booting the instance or attaching an interface (and I didn\u0027t think we supported attach/detach for sriov ports yet).\n\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L713\n\nOr are we required to have a pci request ID when booting with an sriov port?","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d0d61fae3a837888607192ea3e28a692248e4bcd","unresolved":false,"context_lines":[{"line_number":3416,"context_line":"                                                      dev\u003dnetwork_info)"},{"line_number":3417,"context_line":""},{"line_number":3418,"context_line":"            sriov_pci_addresses \u003d ["},{"line_number":3419,"context_line":"                vif[\u0027profile\u0027][\u0027pci_slot\u0027]"},{"line_number":3420,"context_line":"                for vif in network_info"},{"line_number":3421,"context_line":"                if vif[\u0027vnic_type\u0027] in network_model.VNIC_TYPES_SRIOV and"},{"line_number":3422,"context_line":"                   vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) is not None"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_b6f6af8c","line":3419,"in_reply_to":"fa0719c6_9b9e3605","updated":"2016-03-24 13:56:47.000000000","message":"OK, moshele pointed out that we create a pci request for each sriov port:\n\nhttps://github.com/openstack/nova/blob/master/nova/network/neutronv2/api.py#L1052\n\nSo this should be OK. It would be helpful if there was a comment in here explaining that we should trust this value is set because of how things work in the sriov case and what happens in the neutron network API.","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"b7cb07ca44ed54f098ffcbf9a0e8d64c394e4578","unresolved":false,"context_lines":[{"line_number":3416,"context_line":"                                                      dev\u003dnetwork_info)"},{"line_number":3417,"context_line":""},{"line_number":3418,"context_line":"            sriov_pci_addresses \u003d ["},{"line_number":3419,"context_line":"                vif[\u0027profile\u0027][\u0027pci_slot\u0027]"},{"line_number":3420,"context_line":"                for vif in network_info"},{"line_number":3421,"context_line":"                if vif[\u0027vnic_type\u0027] in network_model.VNIC_TYPES_SRIOV and"},{"line_number":3422,"context_line":"                   vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) is not None"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_3631ff5a","line":3419,"in_reply_to":"fa0719c6_9b9e3605","updated":"2016-03-24 13:56:09.000000000","message":"when booting with SR-IOV port we creat pci request","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"4b6062005604a711fd49c19e90f5472ffe274c90","unresolved":false,"context_lines":[{"line_number":3416,"context_line":"                                                      dev\u003dnetwork_info)"},{"line_number":3417,"context_line":""},{"line_number":3418,"context_line":"            sriov_pci_addresses \u003d ["},{"line_number":3419,"context_line":"                vif[\u0027profile\u0027][\u0027pci_slot\u0027]"},{"line_number":3420,"context_line":"                for vif in network_info"},{"line_number":3421,"context_line":"                if vif[\u0027vnic_type\u0027] in network_model.VNIC_TYPES_SRIOV and"},{"line_number":3422,"context_line":"                   vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) is not None"}],"source_content_type":"text/x-python","patch_set":1,"id":"da0c15f0_2656685c","line":3419,"in_reply_to":"fa0719c6_b6f6af8c","updated":"2016-03-28 09:53:10.000000000","message":"I added a comment","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"4b4eb747d97b5109920e637b37a0d90c1b284dce","unresolved":false,"context_lines":[{"line_number":3419,"context_line":"                vif[\u0027profile\u0027][\u0027pci_slot\u0027]"},{"line_number":3420,"context_line":"                for vif in network_info"},{"line_number":3421,"context_line":"                if vif[\u0027vnic_type\u0027] in network_model.VNIC_TYPES_SRIOV and"},{"line_number":3422,"context_line":"                   vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) is not None"},{"line_number":3423,"context_line":"            ]"},{"line_number":3424,"context_line":""},{"line_number":3425,"context_line":"            # use detach_pci_devices to avoid failure in case of"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_e0e1882b","line":3422,"range":{"start_line":3422,"start_character":34,"end_line":3422,"end_character":49},"updated":"2016-03-24 10:21:21.000000000","message":"so we use this data to generate config anyway in the vif drivers. It does introduce some coupling to the vif model this way as ultimately we want to move it out to a library, but it\u0027s minimal as it\u0027s unlikely that we can break vif left and right and nova will still work anyway.\n\n+1 from me until Jay/Dan say they are ok from os-vif perspective","commit_id":"7c55bea7a82330270b893a7e9861a05f17024cd1"}]}
