)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[{"line_number":36,"context_line":"  AND the hypervisor allow exporting the feature through to guests?\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"- Fix the test fallout."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Implements: blueprint cpu-selection-with-hypervisor-consideration"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Co-Authored-By: Chengsheng \u003cchengsheng@chinatelecom.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8d158216_4743687a","line":39,"updated":"2022-04-20 16:02:23.000000000","message":"Thank your for the excellent commit message!","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"64afb9ed_e3523def","updated":"2022-04-20 16:02:23.000000000","message":"Overall looks good, I only have some minor things inline","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"nova/tests/fixtures/libvirt.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[{"line_number":2065,"context_line":"        else:"},{"line_number":2066,"context_line":"            raise ValueError(\u0027Capability \"%s\" is not supported\u0027 % cap)"},{"line_number":2067,"context_line":""},{"line_number":2068,"context_line":"    def baselineHypervisorCPU(self, emulator, arch,"},{"line_number":2069,"context_line":"                              machinetype, virttype,"},{"line_number":2070,"context_line":"                              cpu, flag):"},{"line_number":2071,"context_line":"        \"\"\"Add new libvirt API.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a282207_8a24410a","line":2068,"updated":"2022-04-20 16:02:23.000000000","message":"OK, the returned stucture is the same for both libvirt call so the existing return value is good for the new call too.","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[{"line_number":83,"context_line":"              \u003cmodel\u003eOpteron_G3\u003c/model\u003e"},{"line_number":84,"context_line":"              \u003cvendor\u003eAMD\u003c/vendor\u003e"},{"line_number":85,"context_line":"              \u003ctopology sockets\u003d\u00271\u0027 cores\u003d\u00274\u0027 threads\u003d\u00271\u0027/\u003e"},{"line_number":86,"context_line":"              \u003cfeature name\u003d\u0027ibs\u0027 policy\u003d\"require\"/\u003e"},{"line_number":87,"context_line":"              \u003cfeature name\u003d\u0027osvw\u0027 policy\u003d\"require\"/\u003e"},{"line_number":88,"context_line":"            \u003c/cpu\u003e"},{"line_number":89,"context_line":"            \u003ctopology\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"07ccdc12_cf53b0ea","line":86,"updated":"2022-04-20 16:02:23.000000000","message":"OK, here and below; by this change the xml is conforming to the structure of the return value of getDomainCapabilities libvirt call.","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"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":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":7721,"context_line":"                \u003cmode name\u003d\u0027host-model\u0027 supported\u003d\u0027yes\u0027\u003e"},{"line_number":7722,"context_line":"                  \u003cmodel\u003ePenryn\u003c/model\u003e"},{"line_number":7723,"context_line":"                  \u003cvendor\u003eIntel\u003c/vendor\u003e"},{"line_number":7724,"context_line":"                  \u003cfeature name\u003d\u0027xtpr\u0027/\u003e"},{"line_number":7725,"context_line":"                \u003c/mode\u003e"},{"line_number":7726,"context_line":"              \u003c/cpu\u003e"},{"line_number":7727,"context_line":"            \u003c/domainCapabilities\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"dd59e396_830ee77f","line":7724,"range":{"start_line":7724,"start_character":18,"end_line":7724,"end_character":40},"updated":"2022-04-20 16:02:23.000000000","message":"as far as I see in my env libvirt domainCapabilities alway return a feature tag with a policy field for example:\n\n $ virsh domcapabilities\n [snip]\n    \u003cmode name\u003d\u0027host-model\u0027 supported\u003d\u0027yes\u0027\u003e\n      \u003cmodel fallback\u003d\u0027forbid\u0027\u003eSkylake-Client-IBRS\u003c/model\u003e\n      \u003cvendor\u003eIntel\u003c/vendor\u003e\n      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027ss\u0027/\u003e","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[{"line_number":7731,"context_line":"            emulator, arch, machinetype, virttype,"},{"line_number":7732,"context_line":"            cpu, flag"},{"line_number":7733,"context_line":"        ):"},{"line_number":7734,"context_line":"            return \"\"\"\u003ccpu mode\u003d\u0027custom\u0027 match\u003d\u0027exact\u0027\u003e"},{"line_number":7735,"context_line":"                        \u003cmodel fallback\u003d\u0027allow\u0027\u003ePenryn\u003c/model\u003e"},{"line_number":7736,"context_line":"                        \u003cvendor\u003eIntel\u003c/vendor\u003e"},{"line_number":7737,"context_line":"                        \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027xtpr\u0027/\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"d8474f80_e8033662","line":7734,"updated":"2022-04-20 16:02:23.000000000","message":"this xml looks OK","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":14805,"context_line":"                \u003cmode name\u003d\u0027host-model\u0027 supported\u003d\u0027yes\u0027\u003e"},{"line_number":14806,"context_line":"                  \u003cmodel\u003ePenryn\u003c/model\u003e"},{"line_number":14807,"context_line":"                  \u003cvendor\u003eIntel\u003c/vendor\u003e"},{"line_number":14808,"context_line":"                  \u003cfeature name\u003d\u0027xtpr\u0027/\u003e"},{"line_number":14809,"context_line":"                \u003c/mode\u003e"},{"line_number":14810,"context_line":"              \u003c/cpu\u003e"},{"line_number":14811,"context_line":"            \u003c/domainCapabilities\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"5c324923_19c7fd8e","line":14808,"updated":"2022-04-20 16:02:23.000000000","message":"I think policy is missing from this xml.","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":26592,"context_line":"                      \u003carch\u003ex86_64\u003c/arch\u003e"},{"line_number":26593,"context_line":"                      \u003cmodel\u003eBroadwell-noTSX\u003c/model\u003e"},{"line_number":26594,"context_line":"                      \u003ctopology sockets\u003d\u00271\u0027 cores\u003d\u00272\u0027 threads\u003d\u00272\u0027/\u003e"},{"line_number":26595,"context_line":"                      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027erms\u0027/\u003e"},{"line_number":26596,"context_line":"                      \u003cpages unit\u003d\u0027KiB\u0027 size\u003d\u00274\u0027 /\u003e"},{"line_number":26597,"context_line":"                      \u003cpages unit\u003d\u0027KiB\u0027 size\u003d\u00271024\u0027 /\u003e"},{"line_number":26598,"context_line":"                    \u003c/cpu\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"cafef443_ad31cad0","line":26595,"range":{"start_line":26595,"start_character":31,"end_line":26595,"end_character":47},"updated":"2022-04-20 16:02:23.000000000","message":"I don\u0027t see the policy field in my env in the output of the getCapabilities\n\n\n$ virsh capabilities\n\u003ccapabilities\u003e\n\n  \u003chost\u003e\n    \u003cuuid\u003e05d3b04c-3488-11b2-a85c-90c82f6a80db\u003c/uuid\u003e\n    \u003ccpu\u003e\n      \u003carch\u003ex86_64\u003c/arch\u003e\n      \u003cmodel\u003eSkylake-Client-noTSX-IBRS\u003c/model\u003e\n      \u003cvendor\u003eIntel\u003c/vendor\u003e\n      \u003cmicrocode version\u003d\u0027236\u0027/\u003e\n      \u003ccounter name\u003d\u0027tsc\u0027 frequency\u003d\u00272304000000\u0027 scaling\u003d\u0027no\u0027/\u003e\n      \u003ctopology sockets\u003d\u00271\u0027 dies\u003d\u00271\u0027 cores\u003d\u00274\u0027 threads\u003d\u00272\u0027/\u003e\n      \u003cfeature name\u003d\u0027ds\u0027/\u003e","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[{"line_number":26602,"context_line":"        mocked_domcap.return_value \u003d \"\"\""},{"line_number":26603,"context_line":"            \u003cdomainCapabilities\u003e"},{"line_number":26604,"context_line":"              \u003carch\u003ex86_64\u003c/arch\u003e"},{"line_number":26605,"context_line":"            \u003c/domainCapabilities\u003e"},{"line_number":26606,"context_line":"            \"\"\""},{"line_number":26607,"context_line":"        mocked_baseline.side_effect \u003d (_fake_broadwell_cpu_feature,"},{"line_number":26608,"context_line":"                                       _fake_qemu64_cpu_feature,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ea7f108a_dca6a53e","line":26605,"updated":"2022-04-20 16:02:23.000000000","message":"looks good","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":26663,"context_line":"                      \u003carch\u003ex86_64\u003c/arch\u003e"},{"line_number":26664,"context_line":"                      \u003cmodel\u003eBroadwell-noTSX\u003c/model\u003e"},{"line_number":26665,"context_line":"                      \u003ctopology sockets\u003d\u00271\u0027 cores\u003d\u00272\u0027 threads\u003d\u00272\u0027/\u003e"},{"line_number":26666,"context_line":"                      \u003cfeature policy\u003d\u0027require\u0027 name\u003d\u0027erms\u0027/\u003e"},{"line_number":26667,"context_line":"                      \u003cpages unit\u003d\u0027KiB\u0027 size\u003d\u00274\u0027 /\u003e"},{"line_number":26668,"context_line":"                      \u003cpages unit\u003d\u0027KiB\u0027 size\u003d\u00271024\u0027 /\u003e"},{"line_number":26669,"context_line":"                    \u003c/cpu\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac5be7e2_6f7e21cb","line":26666,"range":{"start_line":26666,"start_character":31,"end_line":26666,"end_character":37},"updated":"2022-04-20 16:02:23.000000000","message":"ditto","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":false,"context_lines":[{"line_number":26755,"context_line":"              \u003cmachine\u003epc-i440fx-rhel7.6.0\u003c/machine\u003e"},{"line_number":26756,"context_line":"              \u003carch\u003es390x\u003c/arch\u003e"},{"line_number":26757,"context_line":"              \u003cvcpu max\u003d\u0027240\u0027/\u003e"},{"line_number":26758,"context_line":"            \u003c/domainCapabilities\u003e"},{"line_number":26759,"context_line":"            \"\"\""},{"line_number":26760,"context_line":""},{"line_number":26761,"context_line":"        not_supported_exc \u003d fakelibvirt.make_libvirtError("}],"source_content_type":"text/x-python","patch_set":1,"id":"15822344_aac1f9bd","line":26758,"updated":"2022-04-20 16:02:23.000000000","message":"looks good.","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":628,"context_line":"                \u003cmode name\u003d\u0027host-model\u0027 supported\u003d\u0027yes\u0027\u003e"},{"line_number":629,"context_line":"                  \u003cmodel\u003ePenryn\u003c/model\u003e"},{"line_number":630,"context_line":"                  \u003cvendor\u003eIntel\u003c/vendor\u003e"},{"line_number":631,"context_line":"                  \u003cfeature name\u003d\u0027xtpr\u0027/\u003e"},{"line_number":632,"context_line":"                \u003c/mode\u003e"},{"line_number":633,"context_line":"              \u003c/cpu\u003e"},{"line_number":634,"context_line":"            \u003c/domainCapabilities\u003e"}],"source_content_type":"text/x-python","patch_set":1,"id":"2990fd8f_52d8b423","line":631,"range":{"start_line":631,"start_character":18,"end_line":631,"end_character":40},"updated":"2022-04-20 16:02:23.000000000","message":"I think there is a policy field in the feature tag in the returned xml","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17e7f070a9afd05541a0b903d81ca6f1f78c7997","unresolved":true,"context_lines":[{"line_number":740,"context_line":"        super(LibvirtConfigCPUFeature, self).__init__(root_name\u003d\u0027feature\u0027,"},{"line_number":741,"context_line":"                                                      **kwargs)"},{"line_number":742,"context_line":"        self.name \u003d name"},{"line_number":743,"context_line":"        self.policy \u003d policy"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"    def parse_dom(self, xmldoc):"},{"line_number":746,"context_line":"        super(LibvirtConfigCPUFeature, self).parse_dom(xmldoc)"}],"source_content_type":"text/x-python","patch_set":1,"id":"468c003e_ff810136","line":743,"updated":"2022-05-06 12:08:08.000000000","message":"Can we avoid doing this? If you look at pretty much all other ConfigObject subclasses, you\u0027ll see that we don\u0027t pass in arbitrary kwargs. Instead, we create the object and set the properties after, e.g.\n\n  feature \u003d vconfig.LibvirtConfigCPUFeature()\n  feature.name \u003d \u0027tsx\u0027\n  feature.policy \u003d \u0027require\u0027\n\nSo the \u0027__init__\u0027 for this should look like:\n\n  def __init__(self, **kwargs):\n      super().__init__(root_name\u003d\u0027feature\u0027, **kwargs)\n      self.name \u003d None\n      self.policy \u003d \u0027require\u0027","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":12095,"context_line":""},{"line_number":12096,"context_line":"        def _resolve_features(cpu):"},{"line_number":12097,"context_line":"            cpu_baseline \u003d deepcopy(cpu)"},{"line_number":12098,"context_line":"            cpu_baseline.arch \u003d None"},{"line_number":12099,"context_line":"            xml_str \u003d cpu_baseline.to_xml()"},{"line_number":12100,"context_line":"            features_xml \u003d self._get_guest_baseline_cpu_features(xml_str)"},{"line_number":12101,"context_line":"            feature_names \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"027dfedc_67bd0341","line":12098,"updated":"2022-04-20 16:02:23.000000000","message":"I remember we talked about why the arch needs to be nulled. Can we document that here?","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17e7f070a9afd05541a0b903d81ca6f1f78c7997","unresolved":true,"context_lines":[{"line_number":12095,"context_line":""},{"line_number":12096,"context_line":"        def _resolve_features(cpu):"},{"line_number":12097,"context_line":"            cpu_baseline \u003d deepcopy(cpu)"},{"line_number":12098,"context_line":"            cpu_baseline.arch \u003d None"},{"line_number":12099,"context_line":"            xml_str \u003d cpu_baseline.to_xml()"},{"line_number":12100,"context_line":"            features_xml \u003d self._get_guest_baseline_cpu_features(xml_str)"},{"line_number":12101,"context_line":"            feature_names \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"824a5eb4_7b5ed29f","line":12098,"in_reply_to":"027dfedc_67bd0341","updated":"2022-05-06 12:08:08.000000000","message":"+1","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17e7f070a9afd05541a0b903d81ca6f1f78c7997","unresolved":true,"context_lines":[{"line_number":800,"context_line":"        self._caps.parse_str(xmlstr)"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"        emulator_bin, arch,\\"},{"line_number":803,"context_line":"        machine_type, virt_type \u003d self._get_hypervisor_info(self._caps)"},{"line_number":804,"context_line":"        domcap \u003d self._get_domain_capabilities("},{"line_number":805,"context_line":"                emulator_bin\u003demulator_bin, arch\u003darch,"},{"line_number":806,"context_line":"                machine_type\u003dmachine_type, virt_type\u003dvirt_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"a9a6f22d_20c710e4","line":803,"updated":"2022-05-06 12:08:08.000000000","message":"style nit: this is really weird way to break this. Could you do:\n\n  emulator_bin, arch, machine_type, virt_type \u003d \\\n      self._get_hypervisor_info(self._caps)","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17e7f070a9afd05541a0b903d81ca6f1f78c7997","unresolved":true,"context_lines":[{"line_number":802,"context_line":"        emulator_bin, arch,\\"},{"line_number":803,"context_line":"        machine_type, virt_type \u003d self._get_hypervisor_info(self._caps)"},{"line_number":804,"context_line":"        domcap \u003d self._get_domain_capabilities("},{"line_number":805,"context_line":"                emulator_bin\u003demulator_bin, arch\u003darch,"},{"line_number":806,"context_line":"                machine_type\u003dmachine_type, virt_type\u003dvirt_type)"},{"line_number":807,"context_line":"        # NOTE(chengsheng \u0026 kchamart): To use baselineHypervisorCPU(),"},{"line_number":808,"context_line":"        # we need to obtain the CPU features and model from libvirt\u0027s"}],"source_content_type":"text/x-python","patch_set":1,"id":"c038a0c3_0787a24f","line":805,"range":{"start_line":805,"start_character":12,"end_line":805,"end_character":16},"updated":"2022-05-06 12:08:08.000000000","message":"nit: no need for double indentation (are you using Vim? 😉)","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2901e1ebf4532c265a388419117a5c1c03258d71","unresolved":true,"context_lines":[{"line_number":816,"context_line":"        # NOTE(mriedem): Don\u0027t attempt to get baseline CPU features"},{"line_number":817,"context_line":"        # if libvirt can\u0027t determine the host cpu model."},{"line_number":818,"context_line":"        if ("},{"line_number":819,"context_line":"            hasattr(libvirt, \u0027VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES\u0027) and"},{"line_number":820,"context_line":"            self._caps.host.cpu.model is not None"},{"line_number":821,"context_line":"        ):"},{"line_number":822,"context_line":"            cpu \u003d vconfig.LibvirtConfigCPU()"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfdf7cd7_43bfe2ab","line":819,"range":{"start_line":819,"start_character":30,"end_line":819,"end_character":70},"updated":"2022-04-20 16:02:23.000000000","message":"the code below does not depend on this flag any more.\n\n//later\n\nhm but the call to baseline_hypervisor_cpu() does depend on this flag. But it is only conditionally. It seems the overall intention is that the baseline_hypervisor_cpu() call to work even if VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES is not available. So I think this condition here is not needed any more. The condition in baseline_hypervisor_cpu() seems to be enough","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17e7f070a9afd05541a0b903d81ca6f1f78c7997","unresolved":true,"context_lines":[{"line_number":824,"context_line":"            cpu.vendor \u003d self._caps.host.cpu.vendor"},{"line_number":825,"context_line":"            cpu.features \u003d self._caps.host.cpu.features"},{"line_number":826,"context_line":"            xml_str \u003d cpu.to_xml()"},{"line_number":827,"context_line":"            # NOTE(chengsheng \u0026 kchamart): The older guest CPU config"},{"line_number":828,"context_line":"            # libvirt APIs that Nova uses -- compareCPU() and"},{"line_number":829,"context_line":"            # baselineCPU() -- don\u0027t consider the capabilities of the"},{"line_number":830,"context_line":"            # \"host hypervisor\" (KVM, QEMU and details libvirt knows"}],"source_content_type":"text/x-python","patch_set":1,"id":"814deb7e_63b1f06b","line":827,"updated":"2022-05-06 12:08:08.000000000","message":"As an aside, why do we need to note this? Are we still using the older guest CPU config APIs elsewhere still? I haven\u0027t looked yet. If we are, shouldn\u0027t we be removing these?","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"17e7f070a9afd05541a0b903d81ca6f1f78c7997","unresolved":true,"context_lines":[{"line_number":827,"context_line":"            # NOTE(chengsheng \u0026 kchamart): The older guest CPU config"},{"line_number":828,"context_line":"            # libvirt APIs that Nova uses -- compareCPU() and"},{"line_number":829,"context_line":"            # baselineCPU() -- don\u0027t consider the capabilities of the"},{"line_number":830,"context_line":"            # \"host hypervisor\" (KVM, QEMU and details libvirt knows"},{"line_number":831,"context_line":"            # about the host).  More concretely, with the older APIs,"},{"line_number":832,"context_line":"            # there is no way to ask if a given CPU model plus CPU flags"},{"line_number":833,"context_line":"            # combination is supported by KVM and a specific QEMU binary"},{"line_number":834,"context_line":"            # on the host."}],"source_content_type":"text/x-python","patch_set":1,"id":"83f2aaea_ab2900df","line":831,"range":{"start_line":830,"start_character":32,"end_line":831,"end_character":29},"updated":"2022-05-06 12:08:08.000000000","message":"Can you reword this? I\u0027m not sure what you\u0027re trying to say. What about KVM? The fact that it\u0027s present? Similarly, what about QEMU? The version? Support for specific features? Would something like this make sense?\n\n  (the presence of KVM, the version and capabilities of QEMU, and\n  miscellaneous other details that libvirt has extracted from the host)","commit_id":"45c75313cef197c1bf343dfb557c97bd97a85e25"}]}
