)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a81ba872f0dd95e113c29db2c4076e92627c62ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3e2f17e9_8bf1793e","updated":"2022-02-04 12:17:05.000000000","message":"This change feels a bit dangerous as Whitelist is used in multiple places","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"941c67af90997f5f5ca8aaf47b690b48cc04dfb7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a2e18ade_835e137b","updated":"2022-02-07 18:32:54.000000000","message":"i havent don a fully review but i have seen enough that i wanted to leave a -1 for extending the whitelist class with a allow_remote_managed_ports paramater.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"064a480178acb3f79a82c59d0cfeaceca7c22943","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7258b92f_d3a648c4","updated":"2022-02-07 11:32:37.000000000","message":"looks good. thank you","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"8d4712ebccb1f8dac3c6be359b6cbd29af03a7ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"28ef1589_04d44e06","updated":"2022-02-04 18:06:49.000000000","message":"recheck","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"892015ceebfedc59df3ffedbde2c83fd37ad2bf5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a6e9ae5a_39c47e22","updated":"2022-02-09 15:51:49.000000000","message":"I\u0027m OK to lift the restriction of configuring remote_managed devices in the whitelist even if the compute does not support it due to libvirt version. The scheduling will not select those host due to compute capabilities. ","commit_id":"d1e9ecb443dd6bd5dc6456a3f9e33c1551436364"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"941c67af90997f5f5ca8aaf47b690b48cc04dfb7","unresolved":true,"context_lines":[{"line_number":1423,"context_line":"                CONF.pci.passthrough_whitelist,"},{"line_number":1424,"context_line":"                allow_remote_managed_ports\u003dself.driver.capabilities.get("},{"line_number":1425,"context_line":"                    \u0027supports_remote_managed_ports\u0027))"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"        context \u003d nova.context.get_admin_context()"},{"line_number":1428,"context_line":"        instances \u003d objects.InstanceList.get_by_host("},{"line_number":1429,"context_line":"            context, self.host,"}],"source_content_type":"text/x-python","patch_set":2,"id":"513ff2c6_cebe8066","line":1426,"updated":"2022-02-07 18:32:54.000000000","message":"so this is moved so that the driver.capablities are populated.\nim not sure i like the idea of passing allow_remote_managed_ports\nto the pci parseing but i guess ill review that when i get to that change.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"674bc1022fc13b86c4de1eafa5fc7648e36491bc","unresolved":false,"context_lines":[{"line_number":1423,"context_line":"                CONF.pci.passthrough_whitelist,"},{"line_number":1424,"context_line":"                allow_remote_managed_ports\u003dself.driver.capabilities.get("},{"line_number":1425,"context_line":"                    \u0027supports_remote_managed_ports\u0027))"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"        context \u003d nova.context.get_admin_context()"},{"line_number":1428,"context_line":"        instances \u003d objects.InstanceList.get_by_host("},{"line_number":1429,"context_line":"            context, self.host,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bbf70a86_fe895ee2","line":1426,"in_reply_to":"513ff2c6_cebe8066","updated":"2022-02-08 16:50:57.000000000","message":"Removed allow_remote_managed_ports as discussed on IRC.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"}],"nova/network/neutron.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a81ba872f0dd95e113c29db2c4076e92627c62ff","unresolved":true,"context_lines":[{"line_number":286,"context_line":"    def __init__(self):"},{"line_number":287,"context_line":"        self.last_neutron_extension_sync \u003d None"},{"line_number":288,"context_line":"        self.extensions \u003d {}"},{"line_number":289,"context_line":"        self.pci_whitelist \u003d pci_whitelist.Whitelist("},{"line_number":290,"context_line":"            CONF.pci.passthrough_whitelist)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def _update_port_with_migration_profile("}],"source_content_type":"text/x-python","patch_set":1,"id":"518d7a7f_0e30a4f8","line":289,"updated":"2022-02-04 12:17:05.000000000","message":"This is used to fill the bindig profile information on neutron ports wondering if we defaulting allow_remote_managed_ports to False here that might cause problem during port binding of remote_managed ports","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"f9d99c40a6e11eac82ba6652c4d1eca2a5fe050e","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    def __init__(self):"},{"line_number":287,"context_line":"        self.last_neutron_extension_sync \u003d None"},{"line_number":288,"context_line":"        self.extensions \u003d {}"},{"line_number":289,"context_line":"        self.pci_whitelist \u003d pci_whitelist.Whitelist("},{"line_number":290,"context_line":"            CONF.pci.passthrough_whitelist)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def _update_port_with_migration_profile("}],"source_content_type":"text/x-python","patch_set":1,"id":"4a2c0c20_5a3a2e8c","line":289,"in_reply_to":"518d7a7f_0e30a4f8","updated":"2022-02-04 16:16:20.000000000","message":"Good point, I should change that to pass \"True\" explicitly.","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"064a480178acb3f79a82c59d0cfeaceca7c22943","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        # Note(dmitriis): Assume remote-managed ports are supported here"},{"line_number":290,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":291,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":292,"context_line":"        # a host can support this feature locally or not."},{"line_number":293,"context_line":"        self.pci_whitelist \u003d pci_whitelist.Whitelist("},{"line_number":294,"context_line":"            CONF.pci.passthrough_whitelist,"},{"line_number":295,"context_line":"            allow_remote_managed_ports\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0a0f014f_11ae4f4e","line":292,"updated":"2022-02-07 11:32:37.000000000","message":"Yeah, so if this runs in the compute services then we know that such service already checked the whitelist regarding remote managed ports and passed the check. So we can blindly allow such port here. \n\nIf this runs in other service (like api or conductor) then we need to allow such ports to allow the request to actually be scheduled to a compute that supports such port.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"941c67af90997f5f5ca8aaf47b690b48cc04dfb7","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        # Note(dmitriis): Assume remote-managed ports are supported here"},{"line_number":290,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":291,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":292,"context_line":"        # a host can support this feature locally or not."},{"line_number":293,"context_line":"        self.pci_whitelist \u003d pci_whitelist.Whitelist("},{"line_number":294,"context_line":"            CONF.pci.passthrough_whitelist,"},{"line_number":295,"context_line":"            allow_remote_managed_ports\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"58a9ad34_5f6c011e","line":292,"in_reply_to":"0a0f014f_11ae4f4e","updated":"2022-02-07 18:32:54.000000000","message":"well the conductor and api shoudl not be reading or useing the whitelist.\n\nunlike the alsias the whitelist shoudl only be used by the compute agent.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"}],"nova/pci/devspec.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"941c67af90997f5f5ca8aaf47b690b48cc04dfb7","unresolved":true,"context_lines":[{"line_number":270,"context_line":"                 allow_remote_managed_ports: bool \u003d False) -\u003e None:"},{"line_number":271,"context_line":"        self.tags \u003d dev_spec"},{"line_number":272,"context_line":"        self._allow_remote_managed_ports \u003d allow_remote_managed_ports"},{"line_number":273,"context_line":"        self._init_dev_details()"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _address_obj(self) -\u003e ty.Optional[WhitelistPciAddress]:"},{"line_number":276,"context_line":"        address_obj \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"a6ae66b7_bc0134ff","line":273,"updated":"2022-02-07 18:32:54.000000000","message":"i dont really like how this is leaking into other code so i dont think we shoudl add a new flag for this","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"674bc1022fc13b86c4de1eafa5fc7648e36491bc","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                 allow_remote_managed_ports: bool \u003d False) -\u003e None:"},{"line_number":271,"context_line":"        self.tags \u003d dev_spec"},{"line_number":272,"context_line":"        self._allow_remote_managed_ports \u003d allow_remote_managed_ports"},{"line_number":273,"context_line":"        self._init_dev_details()"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _address_obj(self) -\u003e ty.Optional[WhitelistPciAddress]:"},{"line_number":276,"context_line":"        address_obj \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"e2e0d180_f0b3f605","line":273,"in_reply_to":"a6ae66b7_bc0134ff","updated":"2022-02-08 16:50:57.000000000","message":"Removed allow_remote_managed_ports as discussed on IRC.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"}],"nova/pci/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a81ba872f0dd95e113c29db2c4076e92627c62ff","unresolved":true,"context_lines":[{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        self.stale: ty.Dict[str, objects.PciDevice] \u003d {}"},{"line_number":71,"context_line":"        self.node_id: str \u003d compute_node.id"},{"line_number":72,"context_line":"        self.dev_filter \u003d whitelist.Whitelist(CONF.pci.passthrough_whitelist)"},{"line_number":73,"context_line":"        numa_topology \u003d compute_node.numa_topology"},{"line_number":74,"context_line":"        if numa_topology:"},{"line_number":75,"context_line":"            # For legacy reasons, the NUMATopology is stored as a JSON blob."}],"source_content_type":"text/x-python","patch_set":1,"id":"24557b12_41db0108","line":72,"updated":"2022-02-04 12:17:05.000000000","message":"Could this also causes problem if the tracker sees remote_managed ports in the config but we stated here that those are not support","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"f9d99c40a6e11eac82ba6652c4d1eca2a5fe050e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        self.stale: ty.Dict[str, objects.PciDevice] \u003d {}"},{"line_number":71,"context_line":"        self.node_id: str \u003d compute_node.id"},{"line_number":72,"context_line":"        self.dev_filter \u003d whitelist.Whitelist(CONF.pci.passthrough_whitelist)"},{"line_number":73,"context_line":"        numa_topology \u003d compute_node.numa_topology"},{"line_number":74,"context_line":"        if numa_topology:"},{"line_number":75,"context_line":"            # For legacy reasons, the NUMATopology is stored as a JSON blob."}],"source_content_type":"text/x-python","patch_set":1,"id":"c6617556_7ae25776","line":72,"in_reply_to":"24557b12_41db0108","updated":"2022-02-04 16:16:20.000000000","message":"Yes, same here, I think I should pass supports_remote_managed\u003dTrue here.","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"064a480178acb3f79a82c59d0cfeaceca7c22943","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        # Note(dmitriis): Assume remote-managed ports are supported here"},{"line_number":74,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":75,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":76,"context_line":"        # a host can support this feature locally or not."},{"line_number":77,"context_line":"        self.dev_filter \u003d whitelist.Whitelist(CONF.pci.passthrough_whitelist,"},{"line_number":78,"context_line":"                                              allow_remote_managed_ports\u003dTrue)"},{"line_number":79,"context_line":"        numa_topology \u003d compute_node.numa_topology"}],"source_content_type":"text/x-python","patch_set":2,"id":"d29eec2b_fc060a1a","line":76,"updated":"2022-02-07 11:32:37.000000000","message":"yep, similar reasoning as in neutron.API","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"941c67af90997f5f5ca8aaf47b690b48cc04dfb7","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        # Note(dmitriis): Assume remote-managed ports are supported here"},{"line_number":74,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":75,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":76,"context_line":"        # a host can support this feature locally or not."},{"line_number":77,"context_line":"        self.dev_filter \u003d whitelist.Whitelist(CONF.pci.passthrough_whitelist,"},{"line_number":78,"context_line":"                                              allow_remote_managed_ports\u003dTrue)"},{"line_number":79,"context_line":"        numa_topology \u003d compute_node.numa_topology"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f47c172_6e7ee09a","line":76,"in_reply_to":"d29eec2b_fc060a1a","updated":"2022-02-07 18:32:54.000000000","message":"ya i dont think we shoudl be doing this \nalso the default seams to be true based on usage so if we were to add an allo_remote_managed_ports flag default to false seams incorrect.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"}],"nova/pci/stats.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a81ba872f0dd95e113c29db2c4076e92627c62ff","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":81,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":82,"context_line":"        # a host can support this feature locally or not."},{"line_number":83,"context_line":"        self.dev_filter \u003d dev_filter or whitelist.Whitelist("},{"line_number":84,"context_line":"            CONF.pci.passthrough_whitelist,"},{"line_number":85,"context_line":"            allow_remote_managed_ports\u003dTrue)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b4886570_42b80a28","line":83,"range":{"start_line":83,"start_character":26,"end_line":83,"end_character":36},"updated":"2022-02-04 12:17:05.000000000","message":"what if whitelist passed via dev_filter?","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"064a480178acb3f79a82c59d0cfeaceca7c22943","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":81,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":82,"context_line":"        # a host can support this feature locally or not."},{"line_number":83,"context_line":"        self.dev_filter \u003d dev_filter or whitelist.Whitelist("},{"line_number":84,"context_line":"            CONF.pci.passthrough_whitelist,"},{"line_number":85,"context_line":"            allow_remote_managed_ports\u003dTrue)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa769807_0446b844","line":83,"range":{"start_line":83,"start_character":26,"end_line":83,"end_character":36},"in_reply_to":"476503d3_4636ef14","updated":"2022-02-07 11:32:37.000000000","message":"Thanks for following up on this. I think we are safe.\n\n1) When this is called from the pci tracked then it is passing in a whitelist that allows remote managed ports. The tracker lives in the compute service that at startup already did the check and passed it. \n\n2) When this is called from the scheduler then the whitelist is instantiated here and from the scheduler perspective we are supporting such ports by selecting a host that supports such ports during the scheduling.\n\nI also don\u0027t have much alternative. We created a Whitelist object that has multiple reasons to exists. i) validate the config ii) to serve as a data structure holding the parsed config information. So in some case we need the logic from both #i) and #ii) but in other case we only need the logic of #ii) and we don\u0027t want to care about #i). Probably we cloud have two classes (in some relationship) to cover the two cases and use the simpler one in the scheduler. Still in the compute we have cases when we recreate the whitelist object instead of reusing the validated one from the startup. So this direction would be some nasty refactoring. \n\nI\u0027m OK with the current structure.","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"f9d99c40a6e11eac82ba6652c4d1eca2a5fe050e","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        # because PciDeviceStats is used both in the compute and scheduler"},{"line_number":81,"context_line":"        # services while the compute service does an early check on whether"},{"line_number":82,"context_line":"        # a host can support this feature locally or not."},{"line_number":83,"context_line":"        self.dev_filter \u003d dev_filter or whitelist.Whitelist("},{"line_number":84,"context_line":"            CONF.pci.passthrough_whitelist,"},{"line_number":85,"context_line":"            allow_remote_managed_ports\u003dTrue)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"476503d3_4636ef14","line":83,"range":{"start_line":83,"start_character":26,"end_line":83,"end_character":36},"in_reply_to":"b4886570_42b80a28","updated":"2022-02-04 16:16:20.000000000","message":"In the second upload I covered the case where this happens. This isn\u0027t a guarantee that other things that might create a PciDeviceStats will supply the option correctly but then I do not see any other places where we might want to do that.\n\nI don\u0027t have a good alternative to passing a parameter but I had a completely different approach in mind which would expose a property on the Whitelist object that would indicate whether the remote_managed tag was used there which I could then use for early validation. However, this does seem more cumbersome as I have to track it on the PciDeviceSpec objects as well and would would need to raise an exception elsewhere by checking this property.\n\nHopefully what I have now is better.","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a81ba872f0dd95e113c29db2c4076e92627c62ff","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # A tag is added here rather than at the client side to avoid an"},{"line_number":120,"context_line":"        # issue with having objects without this tag specified during an"},{"line_number":121,"context_line":"        # upgrade to the first version that supports handling this tag."},{"line_number":122,"context_line":"        if pool.get(PCI_REMOTE_MANAGED_TAG) is None:"},{"line_number":123,"context_line":"            # NOTE: tags are compared as strings case-insensitively, see"},{"line_number":124,"context_line":"            # pci_device_prop_match in nova/pci/utils.py."}],"source_content_type":"text/x-python","patch_set":1,"id":"1944fbe2_da613f8f","line":121,"updated":"2022-02-04 12:17:05.000000000","message":"thanks!","commit_id":"3840b488a17a2536bedc6a6eba7b5b572f6739ff"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"3551197e3b07cb62ef8dec11923ab20da0eb521e","unresolved":true,"context_lines":[{"line_number":177,"context_line":"        \"supports_image_type_vhdx\": False,"},{"line_number":178,"context_line":"        \"supports_image_type_vmdk\": False,"},{"line_number":179,"context_line":"        \"supports_image_type_ploop\": False,"},{"line_number":180,"context_line":"    }"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    # This driver is capable of rebalancing nodes between computes."},{"line_number":183,"context_line":"    rebalances_nodes \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"08131381_1f30bddb","line":180,"range":{"start_line":180,"start_character":3,"end_line":180,"end_character":5},"updated":"2022-02-07 16:13:39.000000000","message":"I think I need to add `supports_remote_managed_ports: False` here.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"674bc1022fc13b86c4de1eafa5fc7648e36491bc","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        \"supports_image_type_vhdx\": False,"},{"line_number":178,"context_line":"        \"supports_image_type_vmdk\": False,"},{"line_number":179,"context_line":"        \"supports_image_type_ploop\": False,"},{"line_number":180,"context_line":"    }"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    # This driver is capable of rebalancing nodes between computes."},{"line_number":183,"context_line":"    rebalances_nodes \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"c54d7a1e_3860a5fd","line":180,"range":{"start_line":180,"start_character":3,"end_line":180,"end_character":5},"in_reply_to":"08131381_1f30bddb","updated":"2022-02-08 16:50:57.000000000","message":"Done","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"77eb618e93e888fab76eac6470ac39cea138e1cc","unresolved":false,"context_lines":[{"line_number":1709,"context_line":"        possible to use on this host."},{"line_number":1710,"context_line":""},{"line_number":1711,"context_line":"        The check is based on a Libvirt version which added support for"},{"line_number":1712,"context_line":"        parsing and exposing PCI VPD since a card serial number (if present in"},{"line_number":1713,"context_line":"        the VPD) since the use of remote managed ports depends on this."},{"line_number":1714,"context_line":"        https://libvirt.org/news.html#v7-9-0-2021-11-01"},{"line_number":1715,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bb208f86_fadabc99","line":1712,"range":{"start_line":1712,"start_character":37,"end_line":1712,"end_character":63},"updated":"2022-02-07 13:31:46.000000000","message":"The sentence is a little bit mangled, I think I intended to remove those words and leave the ones after parenthesis only. I\u0027ll fix it here if I have to respin or in a follow-up.","commit_id":"5a4a17524b7087ac5807a1ae6427cfc15f3abb6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f6be9063902f8835551d5108fe8e76a906f03a3","unresolved":true,"context_lines":[{"line_number":1702,"context_line":"        return self._supports_amd_sev"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"    @property"},{"line_number":1705,"context_line":"    def supports_remote_managed_ports(self) -\u003e bool:"},{"line_number":1706,"context_line":"        \"\"\"Determine if the host supports remote managed ports."},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        Returns a boolean indicating whether remote managed ports are"}],"source_content_type":"text/x-python","patch_set":4,"id":"69cdd686_21b78c65","line":1705,"updated":"2022-02-09 10:59:15.000000000","message":"nit we normally do min version checks in the driver and define a constant so we can eaisly find which ones we can remove. but this is ok i guess.\nthe sev one above is a runtime check rather then a simple version check as even with the min version if the hos is intel sev is not going to work.","commit_id":"d1e9ecb443dd6bd5dc6456a3f9e33c1551436364"},{"author":{"_account_id":24824,"name":"Dmitrii Shcherbakov","username":"dmitriis"},"change_message_id":"1f8f92d1391ec3675499bb269ff9d18012066d64","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        return self._supports_amd_sev"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"    @property"},{"line_number":1705,"context_line":"    def supports_remote_managed_ports(self) -\u003e bool:"},{"line_number":1706,"context_line":"        \"\"\"Determine if the host supports remote managed ports."},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        Returns a boolean indicating whether remote managed ports are"}],"source_content_type":"text/x-python","patch_set":4,"id":"72346130_31b27bc8","line":1705,"in_reply_to":"69cdd686_21b78c65","updated":"2022-02-09 14:47:50.000000000","message":"I initially wanted to do a check in driver.py but then I saw a suggested pattern for host-dependent capabilities in a comment here here:\n\nhttps://review.opendev.org/c/openstack/nova/+/827839/4/nova/virt/libvirt/driver.py#811\n\nOther checks (sev, uefi, secure boot) have a little more to it in terms of host dependencies than just the Libvirt version.\n\nThis property is easy to unit test in isolation though.","commit_id":"d1e9ecb443dd6bd5dc6456a3f9e33c1551436364"}]}
