)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Resource Provider since Ussuri, we don\u0027t need to support reshapes"},{"line_number":15,"context_line":"for allocations that are \"generic mdevs\" in the root RP, hence the"},{"line_number":16,"context_line":"reshape methods not being modified."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0bb93ab0952204e06a50829c4a66b03bddb5be45"},{"line_number":19,"context_line":"Partially-Implemented: blueprint generic-mdevs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"92ec6d28_e2942620","line":17,"updated":"2021-08-03 14:13:26.000000000","message":"do we have a way to detect and prevent config changes where the admin changes the mdev_class of an existing group? What will happen?","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7bba9f160c4a76a814116e505c4e17ad745cdafc","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Resource Provider since Ussuri, we don\u0027t need to support reshapes"},{"line_number":15,"context_line":"for allocations that are \"generic mdevs\" in the root RP, hence the"},{"line_number":16,"context_line":"reshape methods not being modified."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0bb93ab0952204e06a50829c4a66b03bddb5be45"},{"line_number":19,"context_line":"Partially-Implemented: blueprint generic-mdevs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"22256488_1e9b61c7","line":17,"in_reply_to":"130e9586_68e0f44d","updated":"2021-08-05 07:33:24.000000000","message":"OK, lets do that separately.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4060c2704b64ba6698f3c1283e51f400c9f9fdb4","unresolved":true,"context_lines":[{"line_number":14,"context_line":"Resource Provider since Ussuri, we don\u0027t need to support reshapes"},{"line_number":15,"context_line":"for allocations that are \"generic mdevs\" in the root RP, hence the"},{"line_number":16,"context_line":"reshape methods not being modified."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I0bb93ab0952204e06a50829c4a66b03bddb5be45"},{"line_number":19,"context_line":"Partially-Implemented: blueprint generic-mdevs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"130e9586_68e0f44d","line":17,"in_reply_to":"92ec6d28_e2942620","updated":"2021-08-04 09:41:19.000000000","message":"Good call, we said in the spec we could hardstop the compute service if allocations were already created. I can try to work on it but I\u0027d prefer to have a specific change for this.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"872edd76_e1c8effa","updated":"2021-08-03 14:13:26.000000000","message":"It feels like you only made the existing unit tests passing but forgot to add test to the new logic.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7817,"context_line":"                    allocated_mdevs[device.uuid] \u003d guest.uuid"},{"line_number":7818,"context_line":"        return allocated_mdevs"},{"line_number":7819,"context_line":""},{"line_number":7820,"context_line":"    def _vgpu_allocations(self, allocations):"},{"line_number":7821,"context_line":"        \"\"\"Filtering only the VGPU allocations from a list of allocations."},{"line_number":7822,"context_line":""},{"line_number":7823,"context_line":"        :param allocations: Information about resources allocated to the"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a5c6bde_9f431a8b","line":7820,"range":{"start_line":7820,"start_character":9,"end_line":7820,"end_character":13},"updated":"2021-08-03 14:13:26.000000000","message":"a rename would be helpful for the reader","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7817,"context_line":"                    allocated_mdevs[device.uuid] \u003d guest.uuid"},{"line_number":7818,"context_line":"        return allocated_mdevs"},{"line_number":7819,"context_line":""},{"line_number":7820,"context_line":"    def _vgpu_allocations(self, allocations):"},{"line_number":7821,"context_line":"        \"\"\"Filtering only the VGPU allocations from a list of allocations."},{"line_number":7822,"context_line":""},{"line_number":7823,"context_line":"        :param allocations: Information about resources allocated to the"}],"source_content_type":"text/x-python","patch_set":3,"id":"8941877d_c8aa6f96","line":7820,"range":{"start_line":7820,"start_character":9,"end_line":7820,"end_character":13},"in_reply_to":"3a5c6bde_9f431a8b","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7818,"context_line":"        return allocated_mdevs"},{"line_number":7819,"context_line":""},{"line_number":7820,"context_line":"    def _vgpu_allocations(self, allocations):"},{"line_number":7821,"context_line":"        \"\"\"Filtering only the VGPU allocations from a list of allocations."},{"line_number":7822,"context_line":""},{"line_number":7823,"context_line":"        :param allocations: Information about resources allocated to the"},{"line_number":7824,"context_line":"                            instance via placement, of the form returned by"}],"source_content_type":"text/x-python","patch_set":3,"id":"23c3395b_198257e1","line":7821,"range":{"start_line":7821,"start_character":11,"end_line":7821,"end_character":74},"updated":"2021-08-03 14:13:26.000000000","message":"please update, this is now doing generic MDEV support not just VGPUs","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7818,"context_line":"        return allocated_mdevs"},{"line_number":7819,"context_line":""},{"line_number":7820,"context_line":"    def _vgpu_allocations(self, allocations):"},{"line_number":7821,"context_line":"        \"\"\"Filtering only the VGPU allocations from a list of allocations."},{"line_number":7822,"context_line":""},{"line_number":7823,"context_line":"        :param allocations: Information about resources allocated to the"},{"line_number":7824,"context_line":"                            instance via placement, of the form returned by"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8410b0_2a5dc2aa","line":7821,"range":{"start_line":7821,"start_character":11,"end_line":7821,"end_character":74},"in_reply_to":"23c3395b_198257e1","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7825,"context_line":"                            SchedulerReportClient.get_allocations_for_consumer."},{"line_number":7826,"context_line":"        \"\"\""},{"line_number":7827,"context_line":"        if not allocations:"},{"line_number":7828,"context_line":"            # If no allocations, there is no vGPU request."},{"line_number":7829,"context_line":"            return {}"},{"line_number":7830,"context_line":"        mdev_RCs \u003d self._get_supported_mdev_resource_classes()"},{"line_number":7831,"context_line":"        vgpu_allocations \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"64b1539c_981313d6","line":7828,"range":{"start_line":7828,"start_character":45,"end_line":7828,"end_character":49},"updated":"2021-08-03 14:13:26.000000000","message":"MDEV","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7825,"context_line":"                            SchedulerReportClient.get_allocations_for_consumer."},{"line_number":7826,"context_line":"        \"\"\""},{"line_number":7827,"context_line":"        if not allocations:"},{"line_number":7828,"context_line":"            # If no allocations, there is no vGPU request."},{"line_number":7829,"context_line":"            return {}"},{"line_number":7830,"context_line":"        mdev_RCs \u003d self._get_supported_mdev_resource_classes()"},{"line_number":7831,"context_line":"        vgpu_allocations \u003d {}"}],"source_content_type":"text/x-python","patch_set":3,"id":"523f192d_b94a8ce1","line":7828,"range":{"start_line":7828,"start_character":45,"end_line":7828,"end_character":49},"in_reply_to":"64b1539c_981313d6","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7828,"context_line":"            # If no allocations, there is no vGPU request."},{"line_number":7829,"context_line":"            return {}"},{"line_number":7830,"context_line":"        mdev_RCs \u003d self._get_supported_mdev_resource_classes()"},{"line_number":7831,"context_line":"        vgpu_allocations \u003d {}"},{"line_number":7832,"context_line":"        for rp in allocations:"},{"line_number":7833,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7834,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"}],"source_content_type":"text/x-python","patch_set":3,"id":"fe50689a_0b567861","line":7831,"range":{"start_line":7831,"start_character":8,"end_line":7831,"end_character":24},"updated":"2021-08-03 14:13:26.000000000","message":"I would rename this to avoid confusion","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7828,"context_line":"            # If no allocations, there is no vGPU request."},{"line_number":7829,"context_line":"            return {}"},{"line_number":7830,"context_line":"        mdev_RCs \u003d self._get_supported_mdev_resource_classes()"},{"line_number":7831,"context_line":"        vgpu_allocations \u003d {}"},{"line_number":7832,"context_line":"        for rp in allocations:"},{"line_number":7833,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7834,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"}],"source_content_type":"text/x-python","patch_set":3,"id":"5406f29f_fc63ac29","line":7831,"range":{"start_line":7831,"start_character":8,"end_line":7831,"end_character":24},"in_reply_to":"fe50689a_0b567861","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7832,"context_line":"        for rp in allocations:"},{"line_number":7833,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7834,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"},{"line_number":7835,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7836,"context_line":"            if mdev_resources:"},{"line_number":7837,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7838,"context_line":"                    \u0027resources\u0027: mdev_resources}"}],"source_content_type":"text/x-python","patch_set":3,"id":"350e8d3f_27192d89","line":7835,"range":{"start_line":7835,"start_character":52,"end_line":7835,"end_character":68},"updated":"2021-08-03 14:13:26.000000000","message":"not a problem per se but I think this is unnecessary. placement does not return an RC if there is no allocation against it.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7832,"context_line":"        for rp in allocations:"},{"line_number":7833,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7834,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"},{"line_number":7835,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7836,"context_line":"            if mdev_resources:"},{"line_number":7837,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7838,"context_line":"                    \u0027resources\u0027: mdev_resources}"}],"source_content_type":"text/x-python","patch_set":3,"id":"ef927429_1e1cdc3e","line":7835,"range":{"start_line":7835,"start_character":52,"end_line":7835,"end_character":68},"in_reply_to":"350e8d3f_27192d89","updated":"2021-08-04 09:34:38.000000000","message":"Ack, but I preferred to keep the existing logic.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7909,"context_line":"                            SchedulerReportClient.get_allocations_for_consumer."},{"line_number":7910,"context_line":"                            That code is supporting Placement API version 1.12"},{"line_number":7911,"context_line":"        \"\"\""},{"line_number":7912,"context_line":"        vgpu_allocations \u003d self._vgpu_allocations(allocations)"},{"line_number":7913,"context_line":"        if not vgpu_allocations:"},{"line_number":7914,"context_line":"            return"},{"line_number":7915,"context_line":"        # TODO(sbauza): For the moment, we only support allocations for only"}],"source_content_type":"text/x-python","patch_set":3,"id":"06f53ebb_1f164fcc","line":7912,"range":{"start_line":7912,"start_character":8,"end_line":7912,"end_character":24},"updated":"2021-08-03 14:13:26.000000000","message":"renaming :/","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7909,"context_line":"                            SchedulerReportClient.get_allocations_for_consumer."},{"line_number":7910,"context_line":"                            That code is supporting Placement API version 1.12"},{"line_number":7911,"context_line":"        \"\"\""},{"line_number":7912,"context_line":"        vgpu_allocations \u003d self._vgpu_allocations(allocations)"},{"line_number":7913,"context_line":"        if not vgpu_allocations:"},{"line_number":7914,"context_line":"            return"},{"line_number":7915,"context_line":"        # TODO(sbauza): For the moment, we only support allocations for only"}],"source_content_type":"text/x-python","patch_set":3,"id":"2c0034b0_1a6633fc","line":7912,"range":{"start_line":7912,"start_character":8,"end_line":7912,"end_character":24},"in_reply_to":"06f53ebb_1f164fcc","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":7922,"context_line":"        for mdev_rc in self._get_supported_mdev_resource_classes():"},{"line_number":7923,"context_line":"            if mdev_rc in alloc[\u0027resources\u0027]:"},{"line_number":7924,"context_line":"                vgpus_asked \u003d alloc[\u0027resources\u0027][mdev_rc]"},{"line_number":7925,"context_line":"                break"},{"line_number":7926,"context_line":""},{"line_number":7927,"context_line":"        # Find if we allocated against a specific pGPU (and then the allocation"},{"line_number":7928,"context_line":"        # is made against a child RP) or any pGPU (in case the VGPU inventory"}],"source_content_type":"text/x-python","patch_set":3,"id":"f81a2776_7956a528","line":7925,"updated":"2021-08-03 14:13:26.000000000","message":"as far as I understand this is trying to find the number of mdev devices asked. We know that the vgpu_alloc is a dict with a single allocation (due to L7917 guard). Also we know that _vgpu_allocations already filtered the allocation down to RCs that we support (L7834). So this can be heavily simplified:\n\n  mdev_asked \u003d list(alloc[\u0027resources\u0027].values())[0]","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"244d9c39a35a0988e09f0f04d0536c3a9a0b3068","unresolved":false,"context_lines":[{"line_number":7922,"context_line":"        for mdev_rc in self._get_supported_mdev_resource_classes():"},{"line_number":7923,"context_line":"            if mdev_rc in alloc[\u0027resources\u0027]:"},{"line_number":7924,"context_line":"                vgpus_asked \u003d alloc[\u0027resources\u0027][mdev_rc]"},{"line_number":7925,"context_line":"                break"},{"line_number":7926,"context_line":""},{"line_number":7927,"context_line":"        # Find if we allocated against a specific pGPU (and then the allocation"},{"line_number":7928,"context_line":"        # is made against a child RP) or any pGPU (in case the VGPU inventory"}],"source_content_type":"text/x-python","patch_set":3,"id":"c5be051a_7cb5e9c0","line":7925,"in_reply_to":"f81a2776_7956a528","updated":"2021-08-04 09:23:59.000000000","message":"Done","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":7922,"context_line":"        for mdev_rc in self._get_supported_mdev_resource_classes():"},{"line_number":7923,"context_line":"            if mdev_rc in alloc[\u0027resources\u0027]:"},{"line_number":7924,"context_line":"                vgpus_asked \u003d alloc[\u0027resources\u0027][mdev_rc]"},{"line_number":7925,"context_line":"                break"},{"line_number":7926,"context_line":""},{"line_number":7927,"context_line":"        # Find if we allocated against a specific pGPU (and then the allocation"},{"line_number":7928,"context_line":"        # is made against a child RP) or any pGPU (in case the VGPU inventory"}],"source_content_type":"text/x-python","patch_set":3,"id":"a39778a4_d4fc97b0","line":7925,"in_reply_to":"f81a2776_7956a528","updated":"2021-08-04 09:34:38.000000000","message":"Good call.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":8466,"context_line":""},{"line_number":8467,"context_line":"    def _ensure_pgpu_providers(self, inventories_dict, provider_tree,"},{"line_number":8468,"context_line":"                               nodename):"},{"line_number":8469,"context_line":"        \"\"\"Ensures GPU inventory providers exist in the tree for $nodename."},{"line_number":8470,"context_line":""},{"line_number":8471,"context_line":"        GPU providers are named $nodename_$gpu-device-id, e.g."},{"line_number":8472,"context_line":"        ``somehost.foo.bar.com_pci_0000_84_00_0``."}],"source_content_type":"text/x-python","patch_set":3,"id":"f4998b90_284c7215","line":8469,"range":{"start_line":8469,"start_character":19,"end_line":8469,"end_character":22},"updated":"2021-08-03 14:13:26.000000000","message":"renaming","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":8466,"context_line":""},{"line_number":8467,"context_line":"    def _ensure_pgpu_providers(self, inventories_dict, provider_tree,"},{"line_number":8468,"context_line":"                               nodename):"},{"line_number":8469,"context_line":"        \"\"\"Ensures GPU inventory providers exist in the tree for $nodename."},{"line_number":8470,"context_line":""},{"line_number":8471,"context_line":"        GPU providers are named $nodename_$gpu-device-id, e.g."},{"line_number":8472,"context_line":"        ``somehost.foo.bar.com_pci_0000_84_00_0``."}],"source_content_type":"text/x-python","patch_set":3,"id":"f2400643_65237112","line":8469,"range":{"start_line":8469,"start_character":19,"end_line":8469,"end_character":22},"in_reply_to":"f4998b90_284c7215","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":8471,"context_line":"        GPU providers are named $nodename_$gpu-device-id, e.g."},{"line_number":8472,"context_line":"        ``somehost.foo.bar.com_pci_0000_84_00_0``."},{"line_number":8473,"context_line":""},{"line_number":8474,"context_line":"        :param inventories_dict: Dictionary of inventories for VGPU class"},{"line_number":8475,"context_line":"            directly provided by _get_gpu_inventories() and which looks like:"},{"line_number":8476,"context_line":"                {\u0027pci_0000_84_00_0\u0027:"},{"line_number":8477,"context_line":"                    {\u0027total\u0027: $TOTAL,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3d605160_17e5f4ff","line":8474,"range":{"start_line":8474,"start_character":33,"end_line":8474,"end_character":73},"updated":"2021-08-03 14:13:26.000000000","message":"this is not true any more","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":8471,"context_line":"        GPU providers are named $nodename_$gpu-device-id, e.g."},{"line_number":8472,"context_line":"        ``somehost.foo.bar.com_pci_0000_84_00_0``."},{"line_number":8473,"context_line":""},{"line_number":8474,"context_line":"        :param inventories_dict: Dictionary of inventories for VGPU class"},{"line_number":8475,"context_line":"            directly provided by _get_gpu_inventories() and which looks like:"},{"line_number":8476,"context_line":"                {\u0027pci_0000_84_00_0\u0027:"},{"line_number":8477,"context_line":"                    {\u0027total\u0027: $TOTAL,"}],"source_content_type":"text/x-python","patch_set":3,"id":"cfdf911e_3833e1c9","line":8474,"range":{"start_line":8474,"start_character":33,"end_line":8474,"end_character":73},"in_reply_to":"3d605160_17e5f4ff","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":8485,"context_line":"        :param provider_tree: The ProviderTree to update."},{"line_number":8486,"context_line":"        :param nodename: The ComputeNode.hypervisor_hostname, also known as"},{"line_number":8487,"context_line":"            the name of the root node provider in the tree for this host."},{"line_number":8488,"context_line":"        :returns: dict, keyed by GPU device ID, to ProviderData object"},{"line_number":8489,"context_line":"            representing that resource provider in the tree"},{"line_number":8490,"context_line":"        \"\"\""},{"line_number":8491,"context_line":"        # Create the VGPU child providers if they do not already exist."}],"source_content_type":"text/x-python","patch_set":3,"id":"d21813de_b45909c0","line":8488,"range":{"start_line":8488,"start_character":33,"end_line":8488,"end_character":36},"updated":"2021-08-03 14:13:26.000000000","message":"MDEV","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":8485,"context_line":"        :param provider_tree: The ProviderTree to update."},{"line_number":8486,"context_line":"        :param nodename: The ComputeNode.hypervisor_hostname, also known as"},{"line_number":8487,"context_line":"            the name of the root node provider in the tree for this host."},{"line_number":8488,"context_line":"        :returns: dict, keyed by GPU device ID, to ProviderData object"},{"line_number":8489,"context_line":"            representing that resource provider in the tree"},{"line_number":8490,"context_line":"        \"\"\""},{"line_number":8491,"context_line":"        # Create the VGPU child providers if they do not already exist."}],"source_content_type":"text/x-python","patch_set":3,"id":"b2a6a796_e3da43d5","line":8488,"range":{"start_line":8488,"start_character":33,"end_line":8488,"end_character":36},"in_reply_to":"d21813de_b45909c0","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":8488,"context_line":"        :returns: dict, keyed by GPU device ID, to ProviderData object"},{"line_number":8489,"context_line":"            representing that resource provider in the tree"},{"line_number":8490,"context_line":"        \"\"\""},{"line_number":8491,"context_line":"        # Create the VGPU child providers if they do not already exist."},{"line_number":8492,"context_line":"        # Dict of PGPU RPs keyed by their libvirt PCI name"},{"line_number":8493,"context_line":"        pgpu_rps \u003d {}"},{"line_number":8494,"context_line":"        for pgpu_dev_id, inventory in inventories_dict.items():"}],"source_content_type":"text/x-python","patch_set":3,"id":"7c42f364_c5759200","line":8491,"range":{"start_line":8491,"start_character":21,"end_line":8491,"end_character":25},"updated":"2021-08-03 14:13:26.000000000","message":"MDEV","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":8488,"context_line":"        :returns: dict, keyed by GPU device ID, to ProviderData object"},{"line_number":8489,"context_line":"            representing that resource provider in the tree"},{"line_number":8490,"context_line":"        \"\"\""},{"line_number":8491,"context_line":"        # Create the VGPU child providers if they do not already exist."},{"line_number":8492,"context_line":"        # Dict of PGPU RPs keyed by their libvirt PCI name"},{"line_number":8493,"context_line":"        pgpu_rps \u003d {}"},{"line_number":8494,"context_line":"        for pgpu_dev_id, inventory in inventories_dict.items():"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfa4f451_dccb4f53","line":8491,"range":{"start_line":8491,"start_character":21,"end_line":8491,"end_character":25},"in_reply_to":"7c42f364_c5759200","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ab9aa22c1bee590599d50ea42e5be896e326199","unresolved":true,"context_lines":[{"line_number":8508,"context_line":""},{"line_number":8509,"context_line":"            # The VGPU inventory goes on a child provider of the given root"},{"line_number":8510,"context_line":"            # node, identified by $nodename."},{"line_number":8511,"context_line":"            mdev_rc \u003d (self._get_resource_class_per_device(pgpu_dev_id) or"},{"line_number":8512,"context_line":"                       orc.VGPU)"},{"line_number":8513,"context_line":"            pgpu_inventory \u003d {mdev_rc: inventory}"},{"line_number":8514,"context_line":"            provider_tree.update_inventory(pgpu_rp_name, pgpu_inventory)"},{"line_number":8515,"context_line":"        return pgpu_rps"}],"source_content_type":"text/x-python","patch_set":3,"id":"60a590d1_77e25364","line":8512,"range":{"start_line":8511,"start_character":72,"end_line":8512,"end_character":31},"updated":"2021-08-03 14:13:26.000000000","message":"When do we hit this branch really? I think at this point both the device id needs to be parseable and the self.mdev_class_mapping should have an RC mapped to the device.","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fa24321a41558a1e951435d17fb32313f86f2613","unresolved":false,"context_lines":[{"line_number":8508,"context_line":""},{"line_number":8509,"context_line":"            # The VGPU inventory goes on a child provider of the given root"},{"line_number":8510,"context_line":"            # node, identified by $nodename."},{"line_number":8511,"context_line":"            mdev_rc \u003d (self._get_resource_class_per_device(pgpu_dev_id) or"},{"line_number":8512,"context_line":"                       orc.VGPU)"},{"line_number":8513,"context_line":"            pgpu_inventory \u003d {mdev_rc: inventory}"},{"line_number":8514,"context_line":"            provider_tree.update_inventory(pgpu_rp_name, pgpu_inventory)"},{"line_number":8515,"context_line":"        return pgpu_rps"}],"source_content_type":"text/x-python","patch_set":3,"id":"34cde8c9_09ca2186","line":8512,"range":{"start_line":8511,"start_character":72,"end_line":8512,"end_character":31},"in_reply_to":"60a590d1_77e25364","updated":"2021-08-04 09:34:38.000000000","message":"Ack","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"244d9c39a35a0988e09f0f04d0536c3a9a0b3068","unresolved":false,"context_lines":[{"line_number":8508,"context_line":""},{"line_number":8509,"context_line":"            # The VGPU inventory goes on a child provider of the given root"},{"line_number":8510,"context_line":"            # node, identified by $nodename."},{"line_number":8511,"context_line":"            mdev_rc \u003d (self._get_resource_class_per_device(pgpu_dev_id) or"},{"line_number":8512,"context_line":"                       orc.VGPU)"},{"line_number":8513,"context_line":"            pgpu_inventory \u003d {mdev_rc: inventory}"},{"line_number":8514,"context_line":"            provider_tree.update_inventory(pgpu_rp_name, pgpu_inventory)"},{"line_number":8515,"context_line":"        return pgpu_rps"}],"source_content_type":"text/x-python","patch_set":3,"id":"d2f4a2fd_e3f8dbe4","line":8512,"range":{"start_line":8511,"start_character":72,"end_line":8512,"end_character":31},"in_reply_to":"60a590d1_77e25364","updated":"2021-08-04 09:23:59.000000000","message":"Done","commit_id":"5d9a014de2e061c2036ddc8f25cf6000c909263a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9b394a4306c58977563338ea6417264f3b1720c","unresolved":true,"context_lines":[{"line_number":7816,"context_line":"                    allocated_mdevs[device.uuid] \u003d guest.uuid"},{"line_number":7817,"context_line":"        return allocated_mdevs"},{"line_number":7818,"context_line":""},{"line_number":7819,"context_line":"    def _vgpu_allocations(self, allocations):"},{"line_number":7820,"context_line":"        \"\"\"Filtering only the VGPU allocations from a list of allocations."},{"line_number":7821,"context_line":""},{"line_number":7822,"context_line":"        :param allocations: Information about resources allocated to the"}],"source_content_type":"text/x-python","patch_set":6,"id":"a0afd01d_49d99508","line":7819,"updated":"2021-08-06 14:27:29.000000000","message":"This should really have been renamed before we started muddying the waters here. This is rather confusing as-is","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"79c145ec1e0000807adfab676b263bf1e6b3161d","unresolved":true,"context_lines":[{"line_number":7816,"context_line":"                    allocated_mdevs[device.uuid] \u003d guest.uuid"},{"line_number":7817,"context_line":"        return allocated_mdevs"},{"line_number":7818,"context_line":""},{"line_number":7819,"context_line":"    def _vgpu_allocations(self, allocations):"},{"line_number":7820,"context_line":"        \"\"\"Filtering only the VGPU allocations from a list of allocations."},{"line_number":7821,"context_line":""},{"line_number":7822,"context_line":"        :param allocations: Information about resources allocated to the"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ac05c58_538f02db","line":7819,"in_reply_to":"a0afd01d_49d99508","updated":"2021-08-06 15:07:32.000000000","message":"Will be fixed in a FUP (for the moment it\u0027s a WIP)","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9b394a4306c58977563338ea6417264f3b1720c","unresolved":true,"context_lines":[{"line_number":7826,"context_line":"        if not allocations:"},{"line_number":7827,"context_line":"            # If no allocations, there is no vGPU request."},{"line_number":7828,"context_line":"            return {}"},{"line_number":7829,"context_line":"        mdev_RCs \u003d self._get_supported_mdev_resource_classes()"},{"line_number":7830,"context_line":"        vgpu_allocations \u003d {}"},{"line_number":7831,"context_line":"        for rp in allocations:"},{"line_number":7832,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"8bfcfbcb_7ac7a32f","line":7829,"range":{"start_line":7829,"start_character":13,"end_line":7829,"end_character":16},"updated":"2021-08-06 14:27:29.000000000","message":"nit: mdev_rcs\n\nthis isn\u0027t a constant","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"79c145ec1e0000807adfab676b263bf1e6b3161d","unresolved":false,"context_lines":[{"line_number":7826,"context_line":"        if not allocations:"},{"line_number":7827,"context_line":"            # If no allocations, there is no vGPU request."},{"line_number":7828,"context_line":"            return {}"},{"line_number":7829,"context_line":"        mdev_RCs \u003d self._get_supported_mdev_resource_classes()"},{"line_number":7830,"context_line":"        vgpu_allocations \u003d {}"},{"line_number":7831,"context_line":"        for rp in allocations:"},{"line_number":7832,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5afc2796_2641d4b4","line":7829,"range":{"start_line":7829,"start_character":13,"end_line":7829,"end_character":16},"in_reply_to":"8bfcfbcb_7ac7a32f","updated":"2021-08-06 15:07:32.000000000","message":"Ack","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9b394a4306c58977563338ea6417264f3b1720c","unresolved":true,"context_lines":[{"line_number":7831,"context_line":"        for rp in allocations:"},{"line_number":7832,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7833,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"},{"line_number":7834,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7835,"context_line":"            if mdev_resources:"},{"line_number":7836,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7837,"context_line":"                    \u0027resources\u0027: mdev_resources}"}],"source_content_type":"text/x-python","patch_set":6,"id":"98975469_3fb33a34","line":7834,"updated":"2021-08-06 14:27:29.000000000","message":"This is rather confusing. Could we get some comments? The top level comment explains things somewhat but this needs more context. Something as simple as the following would do\n\n  # We support both standard GPU-type mdev devices and custom generic\n  # mdevs - filter allocations for both","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"79c145ec1e0000807adfab676b263bf1e6b3161d","unresolved":false,"context_lines":[{"line_number":7831,"context_line":"        for rp in allocations:"},{"line_number":7832,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7833,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"},{"line_number":7834,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7835,"context_line":"            if mdev_resources:"},{"line_number":7836,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7837,"context_line":"                    \u0027resources\u0027: mdev_resources}"}],"source_content_type":"text/x-python","patch_set":6,"id":"ea5e4e32_cc0b2f9b","line":7834,"in_reply_to":"98975469_3fb33a34","updated":"2021-08-06 15:07:32.000000000","message":"Ack","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"910ec450869ace2dacc09b7d927d997d0a7b6026","unresolved":true,"context_lines":[{"line_number":7831,"context_line":"        for rp in allocations:"},{"line_number":7832,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":7833,"context_line":"            mdev_resources \u003d {mdev_RC: res[mdev_RC] for mdev_RC in mdev_RCs"},{"line_number":7834,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7835,"context_line":"            if mdev_resources:"},{"line_number":7836,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7837,"context_line":"                    \u0027resources\u0027: mdev_resources}"}],"source_content_type":"text/x-python","patch_set":6,"id":"24b36024_15854150","line":7834,"in_reply_to":"ea5e4e32_cc0b2f9b","updated":"2021-08-06 16:10:36.000000000","message":"Still no comment 😞 Could you add a small one in a follow-up?","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9b394a4306c58977563338ea6417264f3b1720c","unresolved":true,"context_lines":[{"line_number":7834,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7835,"context_line":"            if mdev_resources:"},{"line_number":7836,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7837,"context_line":"                    \u0027resources\u0027: mdev_resources}"},{"line_number":7838,"context_line":"        return vgpu_allocations"},{"line_number":7839,"context_line":""},{"line_number":7840,"context_line":"    def _get_existing_mdevs_not_assigned(self, parent, requested_types\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"34078050_a3f6ff99","line":7837,"updated":"2021-08-06 14:27:29.000000000","message":"nit: this would still fit on one line as before","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"79c145ec1e0000807adfab676b263bf1e6b3161d","unresolved":false,"context_lines":[{"line_number":7834,"context_line":"                              if mdev_RC in res and res[mdev_RC] \u003e 0}"},{"line_number":7835,"context_line":"            if mdev_resources:"},{"line_number":7836,"context_line":"                vgpu_allocations[rp] \u003d {"},{"line_number":7837,"context_line":"                    \u0027resources\u0027: mdev_resources}"},{"line_number":7838,"context_line":"        return vgpu_allocations"},{"line_number":7839,"context_line":""},{"line_number":7840,"context_line":"    def _get_existing_mdevs_not_assigned(self, parent, requested_types\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9d7595dc_e6d08381","line":7837,"in_reply_to":"34078050_a3f6ff99","updated":"2021-08-06 15:07:32.000000000","message":"Ack","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9b394a4306c58977563338ea6417264f3b1720c","unresolved":true,"context_lines":[{"line_number":7916,"context_line":"        if len(vgpu_allocations) \u003e 1:"},{"line_number":7917,"context_line":"            LOG.warning(\u0027More than one allocation was passed over to libvirt \u0027"},{"line_number":7918,"context_line":"                        \u0027while at the moment libvirt only supports one. Only \u0027"},{"line_number":7919,"context_line":"                        \u0027the first allocation will be looked up.\u0027)"},{"line_number":7920,"context_line":"        rp_uuid, alloc \u003d next(iter(vgpu_allocations.items()))"},{"line_number":7921,"context_line":"        # We only have one allocation with a supported resource class"},{"line_number":7922,"context_line":"        vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"b5fa0f08_3ed69909","line":7919,"updated":"2021-08-06 14:27:29.000000000","message":"I assume this limitation still applies with generic mdevs? i.e. you\u0027re only able to attach one generic mdev? What are our plans to address this? I don\u0027t recall it being discussed in the spec","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"79c145ec1e0000807adfab676b263bf1e6b3161d","unresolved":true,"context_lines":[{"line_number":7916,"context_line":"        if len(vgpu_allocations) \u003e 1:"},{"line_number":7917,"context_line":"            LOG.warning(\u0027More than one allocation was passed over to libvirt \u0027"},{"line_number":7918,"context_line":"                        \u0027while at the moment libvirt only supports one. Only \u0027"},{"line_number":7919,"context_line":"                        \u0027the first allocation will be looked up.\u0027)"},{"line_number":7920,"context_line":"        rp_uuid, alloc \u003d next(iter(vgpu_allocations.items()))"},{"line_number":7921,"context_line":"        # We only have one allocation with a supported resource class"},{"line_number":7922,"context_line":"        vgpus_asked \u003d list(alloc[\u0027resources\u0027].values())[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"e5ac429b_bb85b711","line":7919,"in_reply_to":"b5fa0f08_3ed69909","updated":"2021-08-06 15:07:32.000000000","message":"Good concern, for the moment, we won\u0027t support this but we have an open LP bug to track this : https://bugs.launchpad.net/nova/+bug/1758086","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b9b394a4306c58977563338ea6417264f3b1720c","unresolved":true,"context_lines":[{"line_number":8505,"context_line":""},{"line_number":8506,"context_line":"            # The VGPU inventory goes on a child provider of the given root"},{"line_number":8507,"context_line":"            # node, identified by $nodename."},{"line_number":8508,"context_line":"            mdev_rc \u003d self._get_resource_class_per_device(pgpu_dev_id)"},{"line_number":8509,"context_line":"            pgpu_inventory \u003d {mdev_rc: inventory}"},{"line_number":8510,"context_line":"            provider_tree.update_inventory(pgpu_rp_name, pgpu_inventory)"},{"line_number":8511,"context_line":"        return pgpu_rps"}],"source_content_type":"text/x-python","patch_set":6,"id":"58e049cd_9beb6287","line":8508,"range":{"start_line":8508,"start_character":47,"end_line":8508,"end_character":50},"updated":"2021-08-06 14:27:29.000000000","message":"for","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"79c145ec1e0000807adfab676b263bf1e6b3161d","unresolved":false,"context_lines":[{"line_number":8505,"context_line":""},{"line_number":8506,"context_line":"            # The VGPU inventory goes on a child provider of the given root"},{"line_number":8507,"context_line":"            # node, identified by $nodename."},{"line_number":8508,"context_line":"            mdev_rc \u003d self._get_resource_class_per_device(pgpu_dev_id)"},{"line_number":8509,"context_line":"            pgpu_inventory \u003d {mdev_rc: inventory}"},{"line_number":8510,"context_line":"            provider_tree.update_inventory(pgpu_rp_name, pgpu_inventory)"},{"line_number":8511,"context_line":"        return pgpu_rps"}],"source_content_type":"text/x-python","patch_set":6,"id":"fc582cbd_1f52b94b","line":8508,"range":{"start_line":8508,"start_character":47,"end_line":8508,"end_character":50},"in_reply_to":"58e049cd_9beb6287","updated":"2021-08-06 15:07:32.000000000","message":"Ack","commit_id":"cefb65ca538d94180e4f6da463a129c511d6ac47"}]}
