)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3102cae84d340d0df74b14bf71c52b08c3bbf8f8","unresolved":false,"context_lines":[{"line_number":10,"context_line":"both a PF and its children VFs are configured for nova usage. This patch"},{"line_number":11,"context_line":"adds logic to detect and reject such configuration. To be able to kill"},{"line_number":12,"context_line":"the service if started with such config special exception handling is"},{"line_number":13,"context_line":"added for the update_available_resource code path, similarly how a"},{"line_number":14,"context_line":"failed reshape is handled."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"blueprint: pci-device-tracking-in-placement"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"33c29401_7257860d","line":13,"range":{"start_line":13,"start_character":58,"end_line":13,"end_character":61},"updated":"2022-08-19 12:13:54.000000000","message":"nit: similar to","commit_id":"214021af3b5229b66040e84aefab0124bd23277e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"953925a21fe33ee83a34bb8f49391ab612cb4345","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4df50a07_3083a846","updated":"2022-06-18 02:35:20.000000000","message":"recheck live migration test is fixed now","commit_id":"8d82d9e48f6a78ec2da599c1f2aa07aeb14d140b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"de1589daf27c4cad992122ca2f98826b9566b239","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c3295287_363249bb","updated":"2022-07-11 11:59:33.000000000","message":"ok i have to go afk for  a while so ill stop reviewing there.\ni have not gone true the tests properly but skiming the change the looked ok.\nill review them properly later.","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3102cae84d340d0df74b14bf71c52b08c3bbf8f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"ca2fb268_6f48ace3","updated":"2022-08-19 12:13:54.000000000","message":"I\u0027m so happy we\u0027re taking this approach. It makes our lives so much easier 🎉","commit_id":"214021af3b5229b66040e84aefab0124bd23277e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"28fbe933205c6980b832d3defbc3519cf2d8b4c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"ec8eca59_beb9165e","updated":"2022-08-26 01:13:14.000000000","message":"recheck nova-next test_live_block_migration_paused","commit_id":"0d526d1f4bc24d5d6afbdf1b8bb26e9492434944"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a8a21a2328ee03269dcd01ee009c3cc88924e45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"e8bf7330_b75bdabf","updated":"2022-08-25 19:08:31.000000000","message":"recheck parent landed","commit_id":"0d526d1f4bc24d5d6afbdf1b8bb26e9492434944"}],"doc/source/admin/pci-passthrough.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3102cae84d340d0df74b14bf71c52b08c3bbf8f8","unresolved":true,"context_lines":[{"line_number":365,"context_line":"   passthrough in the past, it only allowed consuming either the parent PF or"},{"line_number":366,"context_line":"   its children VFs. Since 26.0.0. (Zed) the nova-compute service will"},{"line_number":367,"context_line":"   enforce the same rule for the configuration as well and will refuse to"},{"line_number":368,"context_line":"   start if both the parent PF and its VFs are configured."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"For deeper technical details please read the `nova specification. \u003chttps://specs.openstack.org/openstack/nova-specs/specs/zed/approved/pci-device-tracking-in-placement.html\u003e`_"}],"source_content_type":"text/x-rst","patch_set":18,"id":"550876f6_c1f120b0","line":368,"updated":"2022-08-19 12:13:54.000000000","message":"another good \u0027versionchanged\u0027 thing to add to the top of this doc","commit_id":"214021af3b5229b66040e84aefab0124bd23277e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"19aeb78c1cc0d0264ee1abf96a8c1be39b57fb42","unresolved":false,"context_lines":[{"line_number":365,"context_line":"   passthrough in the past, it only allowed consuming either the parent PF or"},{"line_number":366,"context_line":"   its children VFs. Since 26.0.0. (Zed) the nova-compute service will"},{"line_number":367,"context_line":"   enforce the same rule for the configuration as well and will refuse to"},{"line_number":368,"context_line":"   start if both the parent PF and its VFs are configured."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"For deeper technical details please read the `nova specification. \u003chttps://specs.openstack.org/openstack/nova-specs/specs/zed/approved/pci-device-tracking-in-placement.html\u003e`_"}],"source_content_type":"text/x-rst","patch_set":18,"id":"12a73437_19eb1f11","line":368,"in_reply_to":"550876f6_c1f120b0","updated":"2022-08-30 11:20:18.000000000","message":"Done in a FUP","commit_id":"214021af3b5229b66040e84aefab0124bd23277e"}],"nova/compute/pci_placement_translator.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"de1589daf27c4cad992122ca2f98826b9566b239","unresolved":true,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def add_child(self, dev, dev_spec_tags: ty.Dict[str, str]) -\u003e None:"},{"line_number":127,"context_line":"        if self.parent_dev:"},{"line_number":128,"context_line":"            msg1 \u003d _("},{"line_number":129,"context_line":"                \"Configuring both %(dev)s and %(devs)s in [pci]device_spec is \""},{"line_number":130,"context_line":"                \"not supported. Either the parent PF or its children VFs can \""},{"line_number":131,"context_line":"                \"be configured.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"81eca4f3_8c7b7054","line":128,"updated":"2022-07-11 11:59:33.000000000","message":"sicne this is identical to the block below why not subclass the excption\nand embed the message in teh excption instead of duplicating it here.\n\nalso why msg1 and msg?","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ea2be2113011084f05b12cf2602ef0d81f05b78","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def add_child(self, dev, dev_spec_tags: ty.Dict[str, str]) -\u003e None:"},{"line_number":127,"context_line":"        if self.parent_dev:"},{"line_number":128,"context_line":"            msg1 \u003d _("},{"line_number":129,"context_line":"                \"Configuring both %(dev)s and %(devs)s in [pci]device_spec is \""},{"line_number":130,"context_line":"                \"not supported. Either the parent PF or its children VFs can \""},{"line_number":131,"context_line":"                \"be configured.\""}],"source_content_type":"text/x-python","patch_set":9,"id":"a191a5bb_1e566cd5","line":128,"in_reply_to":"81eca4f3_8c7b7054","updated":"2022-07-19 18:46:17.000000000","message":"good point, subclassed the exception","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"}],"nova/tests/functional/libvirt/test_pci_in_placement.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b26f84da7a6ef78a586d65f581022d040f11e56e","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                },"},{"line_number":187,"context_line":"            ]"},{"line_number":188,"context_line":"        )"},{"line_number":189,"context_line":"        self.flags(group\u003d\u0027pci\u0027, device_spec\u003ddevice_spec)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo("},{"line_number":192,"context_line":"            num_pci\u003d0, num_pfs\u003d1, num_vfs\u003d1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"2397c007_2b9e7bb2","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":56},"updated":"2022-07-12 06:21:17.000000000","message":"you probably should also set the placement reporting to true\nthis is currently relying on a mock rather then the conf actually enabling it","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ea2be2113011084f05b12cf2602ef0d81f05b78","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                },"},{"line_number":187,"context_line":"            ]"},{"line_number":188,"context_line":"        )"},{"line_number":189,"context_line":"        self.flags(group\u003d\u0027pci\u0027, device_spec\u003ddevice_spec)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo("},{"line_number":192,"context_line":"            num_pci\u003d0, num_pfs\u003d1, num_vfs\u003d1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"c2c74f9b_c72c5984","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":56},"in_reply_to":"2397c007_2b9e7bb2","updated":"2022-07-19 18:46:17.000000000","message":"Until we merge the patch that introduce the config I need to set that via a mock. The config will be added by a later patch when the logic behind the config is ready.","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b26f84da7a6ef78a586d65f581022d040f11e56e","unresolved":true,"context_lines":[{"line_number":366,"context_line":"            startup\u003dTrue,"},{"line_number":367,"context_line":"        )"},{"line_number":368,"context_line":"        rt.update_available_resource.assert_called_once_with("},{"line_number":369,"context_line":"            self.context, mock.sentinel.node, startup\u003dTrue)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @mock.patch(\u0027nova.compute.manager.LOG\u0027)"},{"line_number":372,"context_line":"    def test_update_available_resource_for_node_pci_placement_failed_later("}],"source_content_type":"text/x-python","patch_set":9,"id":"b9b11eb2_cf2ff824","line":369,"updated":"2022-07-12 06:21:17.000000000","message":"+1","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ea2be2113011084f05b12cf2602ef0d81f05b78","unresolved":false,"context_lines":[{"line_number":366,"context_line":"            startup\u003dTrue,"},{"line_number":367,"context_line":"        )"},{"line_number":368,"context_line":"        rt.update_available_resource.assert_called_once_with("},{"line_number":369,"context_line":"            self.context, mock.sentinel.node, startup\u003dTrue)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @mock.patch(\u0027nova.compute.manager.LOG\u0027)"},{"line_number":372,"context_line":"    def test_update_available_resource_for_node_pci_placement_failed_later("}],"source_content_type":"text/x-python","patch_set":9,"id":"5fad3dca_08f61ec0","line":369,"in_reply_to":"b9b11eb2_cf2ff824","updated":"2022-07-19 18:46:17.000000000","message":"Ack","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b26f84da7a6ef78a586d65f581022d040f11e56e","unresolved":true,"context_lines":[{"line_number":387,"context_line":"            \u0027Error updating PCI resources for node %(node)s.\u0027,"},{"line_number":388,"context_line":"            {\u0027node\u0027: mock.sentinel.node}"},{"line_number":389,"context_line":"        )"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    @mock.patch.object(manager, \u0027LOG\u0027)"},{"line_number":392,"context_line":"    @mock.patch.object(manager.ComputeManager,"},{"line_number":393,"context_line":"                       \u0027_update_available_resource_for_node\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"03f6a835_4499e5b0","line":390,"updated":"2022-07-12 06:21:17.000000000","message":"ack","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ea2be2113011084f05b12cf2602ef0d81f05b78","unresolved":false,"context_lines":[{"line_number":387,"context_line":"            \u0027Error updating PCI resources for node %(node)s.\u0027,"},{"line_number":388,"context_line":"            {\u0027node\u0027: mock.sentinel.node}"},{"line_number":389,"context_line":"        )"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    @mock.patch.object(manager, \u0027LOG\u0027)"},{"line_number":392,"context_line":"    @mock.patch.object(manager.ComputeManager,"},{"line_number":393,"context_line":"                       \u0027_update_available_resource_for_node\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"72695907_5237a554","line":390,"in_reply_to":"03f6a835_4499e5b0","updated":"2022-07-19 18:46:17.000000000","message":"Ack","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"}],"nova/tests/unit/compute/test_pci_placement_translator.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b26f84da7a6ef78a586d65f581022d040f11e56e","unresolved":true,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        pv.add_dev(vf, {\"resource_class\": \"foo\"})"},{"line_number":149,"context_line":"        pv.add_dev(vf2, {\"resource_class\": \"foo\"})"},{"line_number":150,"context_line":"        ex \u003d self.assertRaises("},{"line_number":151,"context_line":"            exception.PlacementPciException,"},{"line_number":152,"context_line":"            pv.add_dev,"},{"line_number":153,"context_line":"            pf,"}],"source_content_type":"text/x-python","patch_set":9,"id":"509d0bed_de59ccb0","line":150,"updated":"2022-07-12 06:21:17.000000000","message":"you are adding 2 here to show that its not just the second call that always fails","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ea2be2113011084f05b12cf2602ef0d81f05b78","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        pv.add_dev(vf, {\"resource_class\": \"foo\"})"},{"line_number":149,"context_line":"        pv.add_dev(vf2, {\"resource_class\": \"foo\"})"},{"line_number":150,"context_line":"        ex \u003d self.assertRaises("},{"line_number":151,"context_line":"            exception.PlacementPciException,"},{"line_number":152,"context_line":"            pv.add_dev,"},{"line_number":153,"context_line":"            pf,"}],"source_content_type":"text/x-python","patch_set":9,"id":"983d1f53_3ed59c65","line":150,"in_reply_to":"509d0bed_de59ccb0","updated":"2022-07-19 18:46:17.000000000","message":"I did not thought about that but more like what you observed below that to cover generating the list of child addresses in the error","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b26f84da7a6ef78a586d65f581022d040f11e56e","unresolved":true,"context_lines":[{"line_number":157,"context_line":"        self.assertEqual("},{"line_number":158,"context_line":"            \"Failed to gather or report PCI resources to Placement: \""},{"line_number":159,"context_line":"            \"Configuring both 0000:81:00.0 and 0000:81:00.1,0000:81:00.2 in \""},{"line_number":160,"context_line":"            \"[pci]device_spec is not supported. Either the parent PF or its \""},{"line_number":161,"context_line":"            \"children VFs can be configured.\","},{"line_number":162,"context_line":"            str(ex),"},{"line_number":163,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"ea520751_3893bd57","line":160,"updated":"2022-07-12 06:21:17.000000000","message":"and to generate a different error with a list of VFs\ncorrect?","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ea2be2113011084f05b12cf2602ef0d81f05b78","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertEqual("},{"line_number":158,"context_line":"            \"Failed to gather or report PCI resources to Placement: \""},{"line_number":159,"context_line":"            \"Configuring both 0000:81:00.0 and 0000:81:00.1,0000:81:00.2 in \""},{"line_number":160,"context_line":"            \"[pci]device_spec is not supported. Either the parent PF or its \""},{"line_number":161,"context_line":"            \"children VFs can be configured.\","},{"line_number":162,"context_line":"            str(ex),"},{"line_number":163,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"46f0e5f5_05be7369","line":160,"in_reply_to":"ea520751_3893bd57","updated":"2022-07-19 18:46:17.000000000","message":"yepp","commit_id":"f6fd39306dd7bd0f4d2714a6ae261434230352bc"}]}
