)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1113690c0546a121994ed7a40d2f111e4b75b95","unresolved":true,"context_lines":[{"line_number":20,"context_line":"In sum, for AArch64, (a) guests should use \u0027host-passthrough\u0027; and (b) src host to dest host CPU comparison"},{"line_number":21,"context_line":"only makes sense to know about _host_ CPU compatibility, but you will not get any CPU config that you can give"},{"line_number":22,"context_line":"to a guest. For more detail discussion, please check link [3] and discussion [4]."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[1] https://listman.redhat.com/archives/libvir-list/2020-September/msg01391.html — Modify virCPUarmCompare to perform compare actions"},{"line_number":25,"context_line":"[2] https://review.opendev.org/c/openstack/nova/+/589769/1/nova/virt/libvirt/driver.py#6892"},{"line_number":26,"context_line":"[3] https://www.redhat.com/archives/libvir-list/2020-September/msg00262.html"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"e72fcb09_9e6e8a09","line":23,"updated":"2021-09-02 14:50:38.000000000","message":"nit: would be nice to wrap the lines at 72 chars","commit_id":"84d4fd7ad42a445586aa2388e5c431e936e7c10e"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"aea6b6fd660e73968bc2e306d4427363d9179c75","unresolved":false,"context_lines":[{"line_number":20,"context_line":"In sum, for AArch64, (a) guests should use \u0027host-passthrough\u0027; and (b) src host to dest host CPU comparison"},{"line_number":21,"context_line":"only makes sense to know about _host_ CPU compatibility, but you will not get any CPU config that you can give"},{"line_number":22,"context_line":"to a guest. For more detail discussion, please check link [3] and discussion [4]."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"[1] https://listman.redhat.com/archives/libvir-list/2020-September/msg01391.html — Modify virCPUarmCompare to perform compare actions"},{"line_number":25,"context_line":"[2] https://review.opendev.org/c/openstack/nova/+/589769/1/nova/virt/libvirt/driver.py#6892"},{"line_number":26,"context_line":"[3] https://www.redhat.com/archives/libvir-list/2020-September/msg00262.html"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"91aaf9dc_eba2a62a","line":23,"in_reply_to":"e72fcb09_9e6e8a09","updated":"2021-09-03 03:21:01.000000000","message":"Done","commit_id":"84d4fd7ad42a445586aa2388e5c431e936e7c10e"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"27c5e122829a8ea3aa0748a0c335b9683c9de552","unresolved":true,"context_lines":[{"line_number":10850,"context_line":"        self.assertIsNone(ret)"},{"line_number":10851,"context_line":""},{"line_number":10852,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dFalse)"},{"line_number":10853,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":10854,"context_line":"    @mock.patch.object(nova.virt.libvirt, \u0027config\u0027)"},{"line_number":10855,"context_line":"    def test_compare_cpu_aarch64_skip_comparison(self,"},{"line_number":10856,"context_line":"                                                 mock_vconfig,"}],"source_content_type":"text/x-python","patch_set":3,"id":"653102c6_5c5fc3e4","line":10853,"range":{"start_line":10853,"start_character":0,"end_line":10853,"end_character":48},"updated":"2021-05-24 09:23:15.000000000","message":"This is unused now right?","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":true,"context_lines":[{"line_number":10850,"context_line":"        self.assertIsNone(ret)"},{"line_number":10851,"context_line":""},{"line_number":10852,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dFalse)"},{"line_number":10853,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":10854,"context_line":"    @mock.patch.object(nova.virt.libvirt, \u0027config\u0027)"},{"line_number":10855,"context_line":"    def test_compare_cpu_aarch64_skip_comparison(self,"},{"line_number":10856,"context_line":"                                                 mock_vconfig,"}],"source_content_type":"text/x-python","patch_set":3,"id":"22e57a03_c4f122fd","line":10853,"range":{"start_line":10853,"start_character":0,"end_line":10853,"end_character":48},"in_reply_to":"653102c6_5c5fc3e4","updated":"2021-05-29 03:23:31.000000000","message":"Yes, removed","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"27c5e122829a8ea3aa0748a0c335b9683c9de552","unresolved":true,"context_lines":[{"line_number":10857,"context_line":"                                                 mock_compare,"},{"line_number":10858,"context_line":"                                                 mock_version):"},{"line_number":10859,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":10860,"context_line":"        skip_comparison_exc \u003d fakelibvirt.make_libvirtError("},{"line_number":10861,"context_line":"                fakelibvirt.libvirtError,"},{"line_number":10862,"context_line":"                \u0027Host CPU compatibility check does not make \u0027"},{"line_number":10863,"context_line":"                \u0027sense on AArch64 before Libvirt 6.9.0; skip CPU comparison\u0027)"},{"line_number":10864,"context_line":"        mock_compare.side_effect \u003d skip_comparison_exc"},{"line_number":10865,"context_line":"        self.mock_uname.return_value \u003d fakelibvirt.os_uname("},{"line_number":10866,"context_line":"            \u0027Linux\u0027, \u0027\u0027, \u00275.4.0-0-generic\u0027, \u0027\u0027, fields.Architecture.AARCH64)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e259027b_9fef0cba","line":10863,"range":{"start_line":10860,"start_character":0,"end_line":10863,"end_character":77},"updated":"2021-05-24 09:23:15.000000000","message":"As above, I don\u0027t think compare_cpu is called so this isn\u0027t raised.","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":true,"context_lines":[{"line_number":10857,"context_line":"                                                 mock_compare,"},{"line_number":10858,"context_line":"                                                 mock_version):"},{"line_number":10859,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":10860,"context_line":"        skip_comparison_exc \u003d fakelibvirt.make_libvirtError("},{"line_number":10861,"context_line":"                fakelibvirt.libvirtError,"},{"line_number":10862,"context_line":"                \u0027Host CPU compatibility check does not make \u0027"},{"line_number":10863,"context_line":"                \u0027sense on AArch64 before Libvirt 6.9.0; skip CPU comparison\u0027)"},{"line_number":10864,"context_line":"        mock_compare.side_effect \u003d skip_comparison_exc"},{"line_number":10865,"context_line":"        self.mock_uname.return_value \u003d fakelibvirt.os_uname("},{"line_number":10866,"context_line":"            \u0027Linux\u0027, \u0027\u0027, \u00275.4.0-0-generic\u0027, \u0027\u0027, fields.Architecture.AARCH64)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a576119_e6fc085a","line":10863,"range":{"start_line":10860,"start_character":0,"end_line":10863,"end_character":77},"in_reply_to":"e259027b_9fef0cba","updated":"2021-05-29 03:23:31.000000000","message":"This test assume that has_min_version return false","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"27c5e122829a8ea3aa0748a0c335b9683c9de552","unresolved":true,"context_lines":[{"line_number":10882,"context_line":"        ret \u003d conn._compare_cpu(None,"},{"line_number":10883,"context_line":"                                jsonutils.dumps(_fake_cpu_info_aarch64),"},{"line_number":10884,"context_line":"                                instance)"},{"line_number":10885,"context_line":"        self.assertIsNone(ret)"},{"line_number":10886,"context_line":""},{"line_number":10887,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":10888,"context_line":"    @mock.patch.object(nova.virt.libvirt.LibvirtDriver,"}],"source_content_type":"text/x-python","patch_set":3,"id":"97d7dd67_0d35ec53","line":10885,"range":{"start_line":10885,"start_character":8,"end_line":10885,"end_character":30},"updated":"2021-05-24 09:23:15.000000000","message":"Can you also assert that the call to compare_cpu uses host_cpu?\n\nAlso shouldn\u0027t you mock out compre_cpu to return 0?","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08b463b45f1c166551bc48974625b4e6f035ca74","unresolved":true,"context_lines":[{"line_number":10882,"context_line":"        ret \u003d conn._compare_cpu(None,"},{"line_number":10883,"context_line":"                                jsonutils.dumps(_fake_cpu_info_aarch64),"},{"line_number":10884,"context_line":"                                instance)"},{"line_number":10885,"context_line":"        self.assertIsNone(ret)"},{"line_number":10886,"context_line":""},{"line_number":10887,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":10888,"context_line":"    @mock.patch.object(nova.virt.libvirt.LibvirtDriver,"}],"source_content_type":"text/x-python","patch_set":3,"id":"249b2115_184bf3a4","line":10885,"range":{"start_line":10885,"start_character":8,"end_line":10885,"end_character":30},"in_reply_to":"97d7dd67_0d35ec53","updated":"2021-05-25 16:53:47.000000000","message":"This test is identical to the previous one save for the different \u0027has_min_version\u0027. You should be asserting something more has changed.","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":true,"context_lines":[{"line_number":10882,"context_line":"        ret \u003d conn._compare_cpu(None,"},{"line_number":10883,"context_line":"                                jsonutils.dumps(_fake_cpu_info_aarch64),"},{"line_number":10884,"context_line":"                                instance)"},{"line_number":10885,"context_line":"        self.assertIsNone(ret)"},{"line_number":10886,"context_line":""},{"line_number":10887,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":10888,"context_line":"    @mock.patch.object(nova.virt.libvirt.LibvirtDriver,"}],"source_content_type":"text/x-python","patch_set":3,"id":"b4a53a9a_9b958244","line":10885,"range":{"start_line":10885,"start_character":8,"end_line":10885,"end_character":30},"in_reply_to":"97d7dd67_0d35ec53","updated":"2021-05-29 03:23:31.000000000","message":"compare_cpu shows that:\nNone. if given cpu info is not compatible to this server,\n            raise exception.\n\nSo assertNone is OK.\nI will add more test check","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e52406821f020ebd276c10fec63055bffaeae41","unresolved":true,"context_lines":[{"line_number":11034,"context_line":"        self.assertIsNone(ret)"},{"line_number":11035,"context_line":""},{"line_number":11036,"context_line":"    @mock.patch.object(host.Host, \u0027get_capabilities\u0027)"},{"line_number":11037,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":11038,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":11039,"context_line":"    def test_compare_cpu_host_aarch64(self,"},{"line_number":11040,"context_line":"                                      mock_compare,"}],"source_content_type":"text/x-python","patch_set":7,"id":"acb19a56_5d83d7a4","line":11037,"updated":"2021-08-31 14:14:39.000000000","message":"I wish you could have used a fake Connection object providing the right libvirt version [1] instead of mocking the whole has_min_version which doesn\u0027t make us checking the libvirt version itself.\n\nIf you don\u0027t wanna use this Connection object, please then at least change the mocked method to explicitely verify against MIN_LIBVIRT_AARCH64_CPU_COMPARE\n\nEg. :\n\n  with mock.patch(conn, \u0027getLibVersion\u0027) as get_libvirt_version:\n   get_libvirt_version.return_value \u003d libvirt_driver.MIN_LIBVIRT_AARCH64_CPU_COMPARE)\n   \u003cdo the compare\u003e\n\n\n[1] https://github.com/openstack/nova/blob/efd9a4212bfd0127a9bd9b367207b70f7fad43e1/nova/tests/fixtures/libvirt.py#L1648","commit_id":"e3b9bacdc182f74b6a19d4000f4a83e77dd5014e"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"e319e3e228b7d08d1d9d515bda27a41bc9909527","unresolved":false,"context_lines":[{"line_number":11034,"context_line":"        self.assertIsNone(ret)"},{"line_number":11035,"context_line":""},{"line_number":11036,"context_line":"    @mock.patch.object(host.Host, \u0027get_capabilities\u0027)"},{"line_number":11037,"context_line":"    @mock.patch.object(host.Host, \u0027has_min_version\u0027, return_value\u003dTrue)"},{"line_number":11038,"context_line":"    @mock.patch.object(host.Host, \u0027compare_cpu\u0027)"},{"line_number":11039,"context_line":"    def test_compare_cpu_host_aarch64(self,"},{"line_number":11040,"context_line":"                                      mock_compare,"}],"source_content_type":"text/x-python","patch_set":7,"id":"2db579d8_175c34f4","line":11037,"in_reply_to":"acb19a56_5d83d7a4","updated":"2021-09-02 06:16:43.000000000","message":"Done","commit_id":"e3b9bacdc182f74b6a19d4000f4a83e77dd5014e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"27c5e122829a8ea3aa0748a0c335b9683c9de552","unresolved":true,"context_lines":[{"line_number":9310,"context_line":"        else:"},{"line_number":9311,"context_line":"            cpu \u003d self._vcpu_model_to_cpu_config(guest_cpu)"},{"line_number":9312,"context_line":""},{"line_number":9313,"context_line":"        host_cpu \u003d self._host.get_capabilities().host.cpu"},{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""}],"source_content_type":"text/x-python","patch_set":3,"id":"1b949af9_8166d56a","line":9313,"range":{"start_line":9313,"start_character":8,"end_line":9313,"end_character":57},"updated":"2021-05-24 09:23:15.000000000","message":"Do we care at all about the guest CPU arch?","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":true,"context_lines":[{"line_number":9310,"context_line":"        else:"},{"line_number":9311,"context_line":"            cpu \u003d self._vcpu_model_to_cpu_config(guest_cpu)"},{"line_number":9312,"context_line":""},{"line_number":9313,"context_line":"        host_cpu \u003d self._host.get_capabilities().host.cpu"},{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""}],"source_content_type":"text/x-python","patch_set":3,"id":"0b10bcf8_d3f1108f","line":9313,"range":{"start_line":9313,"start_character":8,"end_line":9313,"end_character":57},"in_reply_to":"1b949af9_8166d56a","updated":"2021-05-29 03:23:31.000000000","message":"Do not need to care about the guest CPU arch, based on libvirt realization: https://www.redhat.com/archives/libvir-list/2020-September/msg00328.html","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08b463b45f1c166551bc48974625b4e6f035ca74","unresolved":true,"context_lines":[{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9317,"context_line":"                          \"the host cpu info instead of guest cpu\")"},{"line_number":9318,"context_line":"                cpu \u003d host_cpu"},{"line_number":9319,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9320,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"02bf4f49_33545920","line":9317,"updated":"2021-05-25 16:53:47.000000000","message":"A link to docs or some other place that this limitation is discussed would be appreciated","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08b463b45f1c166551bc48974625b4e6f035ca74","unresolved":true,"context_lines":[{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9317,"context_line":"                          \"the host cpu info instead of guest cpu\")"},{"line_number":9318,"context_line":"                cpu \u003d host_cpu"},{"line_number":9319,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9320,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"36f525a7_54ac92b8","line":9317,"range":{"start_line":9317,"start_character":62,"end_line":9317,"end_character":65},"updated":"2021-05-25 16:53:47.000000000","message":"CPU","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08b463b45f1c166551bc48974625b4e6f035ca74","unresolved":true,"context_lines":[{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9317,"context_line":"                          \"the host cpu info instead of guest cpu\")"},{"line_number":9318,"context_line":"                cpu \u003d host_cpu"},{"line_number":9319,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9320,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"6e911c00_ec0288e6","line":9317,"range":{"start_line":9317,"start_character":36,"end_line":9317,"end_character":39},"updated":"2021-05-25 16:53:47.000000000","message":"CPU","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":false,"context_lines":[{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9317,"context_line":"                          \"the host cpu info instead of guest cpu\")"},{"line_number":9318,"context_line":"                cpu \u003d host_cpu"},{"line_number":9319,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9320,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"62355433_0d41aae9","line":9317,"in_reply_to":"02bf4f49_33545920","updated":"2021-05-29 03:23:31.000000000","message":"Done","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":false,"context_lines":[{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9317,"context_line":"                          \"the host cpu info instead of guest cpu\")"},{"line_number":9318,"context_line":"                cpu \u003d host_cpu"},{"line_number":9319,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9320,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5caae52e_e00d2a82","line":9317,"range":{"start_line":9317,"start_character":62,"end_line":9317,"end_character":65},"in_reply_to":"36f525a7_54ac92b8","updated":"2021-05-29 03:23:31.000000000","message":"Done","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":false,"context_lines":[{"line_number":9314,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9315,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9316,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9317,"context_line":"                          \"the host cpu info instead of guest cpu\")"},{"line_number":9318,"context_line":"                cpu \u003d host_cpu"},{"line_number":9319,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9320,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3871d627_62e3a608","line":9317,"range":{"start_line":9317,"start_character":36,"end_line":9317,"end_character":39},"in_reply_to":"6e911c00_ec0288e6","updated":"2021-05-29 03:23:31.000000000","message":"Done","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2e5df8fb43a9fc00e83cccfa33a6861f53617df","unresolved":true,"context_lines":[{"line_number":9366,"context_line":"        host_cpu \u003d self._host.get_capabilities().host.cpu"},{"line_number":9367,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9368,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9369,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9370,"context_line":"                          \"the host CPU info instead of guest CPU, more\""},{"line_number":9371,"context_line":"                          \"detailed info please check:\""},{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7c6dc1c0_30179b69","line":9373,"range":{"start_line":9369,"start_character":0,"end_line":9373,"end_character":57},"updated":"2021-07-19 13:06:27.000000000","message":"Linking to a libvirt patch thread is not operator-friendly and can be too much info.\n\nI\u0027d rewrite the error as:\n\n    \"On AArch64 hosts, source and destination host CPUs \n    are compared to check if they\u0027re compatible (the only\n    use-case supported by libvirt for Arm/AAarch64)\"","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"54ef1f3f53b17631dd5e0ce8a578e1da240cedef","unresolved":false,"context_lines":[{"line_number":9366,"context_line":"        host_cpu \u003d self._host.get_capabilities().host.cpu"},{"line_number":9367,"context_line":"        if host_cpu.arch \u003d\u003d fields.Architecture.AARCH64:"},{"line_number":9368,"context_line":"            if self._host.has_min_version(MIN_LIBVIRT_AARCH64_CPU_COMPARE):"},{"line_number":9369,"context_line":"                LOG.debug(\"on Aarch64 platform, CPU compare needs to compare \""},{"line_number":9370,"context_line":"                          \"the host CPU info instead of guest CPU, more\""},{"line_number":9371,"context_line":"                          \"detailed info please check:\""},{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5029cd40_2c36f1c1","line":9373,"range":{"start_line":9369,"start_character":0,"end_line":9373,"end_character":57},"in_reply_to":"7c6dc1c0_30179b69","updated":"2021-08-16 07:05:32.000000000","message":"Done","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2e5df8fb43a9fc00e83cccfa33a6861f53617df","unresolved":true,"context_lines":[{"line_number":9371,"context_line":"                          \"detailed info please check:\""},{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""}],"source_content_type":"text/x-python","patch_set":5,"id":"f3d96326_33a51889","line":9374,"range":{"start_line":9374,"start_character":0,"end_line":9374,"end_character":30},"updated":"2021-07-19 13:06:27.000000000","message":"First, let\u0027s remove some confusion with the vague phrase \"CPU comparison\" — it can mean comparing guest CPU with host CPU; or one host CPU with another host CPU:\n\nThe general use case of libvirt\u0027s compareCPU() API is to allow comparing a guest CPU to a host CPU.  However, for AArch64, the _only_ use case libvirt supports is to allow comparing host CPU with a destination CPU — this is accomplished with the help of this patch[1].\n\nSo what we\u0027re talking about here, in context of AArch64, is comparing source _host_ CPU to destination _host_ CPU, so as to prevent a guest from migrating to a completely different host.\n\n                                     * * *\n\nFor AArch64, in the past we skipped[2] _guest_ CPU to host CPU comparison (the \"traditional\" use case) check for AArch64 for two main reasons, and these reasons are still valid:\n\n- There are lots of vendors making different AArch64 CPUs, and they\u0027re all not easily comparable because they all differ in various ways.\n\n- QEMU AArch64 developers themselves recommend that using \u0027host-passthrough\u0027 is  the way to run KVM guests on AArch64.\n\nIn sum, for AArch64, (a) guests should use \u0027host-passthrough\u0027; and (b) src host to dest host CPU comparison only makes sense to know about _host_ CPU compatibility, but you will not get any CPU config that you can give to a guest.\n\n\n[1] https://listman.redhat.com/archives/libvir-list/2020-September/msg01391.html — Modify virCPUarmCompare to perform compare actions\n\n[2] https://review.opendev.org/c/openstack/nova/+/589769/1/nova/virt/libvirt/driver.py#6892","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"54ef1f3f53b17631dd5e0ce8a578e1da240cedef","unresolved":false,"context_lines":[{"line_number":9371,"context_line":"                          \"detailed info please check:\""},{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9efbc722_d0721719","line":9374,"range":{"start_line":9374,"start_character":0,"end_line":9374,"end_character":30},"in_reply_to":"dffcc5ff_dfaf0e45","updated":"2021-08-16 07:05:32.000000000","message":"Done","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"d32edcae9beed4f9113388fa1bb6c826bf47fe28","unresolved":true,"context_lines":[{"line_number":9371,"context_line":"                          \"detailed info please check:\""},{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""}],"source_content_type":"text/x-python","patch_set":5,"id":"dffcc5ff_dfaf0e45","line":9374,"range":{"start_line":9374,"start_character":0,"end_line":9374,"end_character":30},"in_reply_to":"f3d96326_33a51889","updated":"2021-07-19 13:09:11.000000000","message":"Also, please include some of the rationale above in the commit message.\n\n(I.e. that this patch is trying to enable source host to destination CPU host comparison, etc.)","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bc751ee8e8ae2bc3297d266d80cc19f081bea357","unresolved":true,"context_lines":[{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""},{"line_number":9378,"context_line":"                          \"sense on AArch64 before libvirt %s; skip CPU \""}],"source_content_type":"text/x-python","patch_set":5,"id":"eb2b9ec7_9a7986fa","line":9375,"updated":"2021-07-20 10:37:03.000000000","message":"This single debug line is unhelpful for operators. Why do you want to provide the host CPU ?","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"54ef1f3f53b17631dd5e0ce8a578e1da240cedef","unresolved":false,"context_lines":[{"line_number":9372,"context_line":"                          \"https://listman.redhat.com/archives/libvir-list/\""},{"line_number":9373,"context_line":"                          \"2020-September/msg00262.html\")"},{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""},{"line_number":9378,"context_line":"                          \"sense on AArch64 before libvirt %s; skip CPU \""}],"source_content_type":"text/x-python","patch_set":5,"id":"255f6e29_c763c13e","line":9375,"in_reply_to":"eb2b9ec7_9a7986fa","updated":"2021-08-16 07:05:32.000000000","message":"Done","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bc751ee8e8ae2bc3297d266d80cc19f081bea357","unresolved":true,"context_lines":[{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""},{"line_number":9378,"context_line":"                          \"sense on AArch64 before libvirt %s; skip CPU \""},{"line_number":9379,"context_line":"                          \"comparison\", MIN_LIBVIRT_AARCH64_CPU_COMPARE)"},{"line_number":9380,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"a93d7f5a_b7071b6c","line":9377,"updated":"2021-07-20 10:37:03.000000000","message":"You should just leave to call libvirt even if the libvirt version is \u003c6.9","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"54ef1f3f53b17631dd5e0ce8a578e1da240cedef","unresolved":true,"context_lines":[{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""},{"line_number":9378,"context_line":"                          \"sense on AArch64 before libvirt %s; skip CPU \""},{"line_number":9379,"context_line":"                          \"comparison\", MIN_LIBVIRT_AARCH64_CPU_COMPARE)"},{"line_number":9380,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"8bf3a219_aef9b1f3","line":9377,"in_reply_to":"a93d7f5a_b7071b6c","updated":"2021-08-16 07:05:32.000000000","message":"Hi Sylvain,\n\nI think we should leave not to call libvirt(and skip the comparsion) if the version \u003c6.9, since it will induce libvirt error.","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2e5df8fb43a9fc00e83cccfa33a6861f53617df","unresolved":true,"context_lines":[{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""},{"line_number":9378,"context_line":"                          \"sense on AArch64 before libvirt %s; skip CPU \""},{"line_number":9379,"context_line":"                          \"comparison\", MIN_LIBVIRT_AARCH64_CPU_COMPARE)"},{"line_number":9380,"context_line":"                return"},{"line_number":9381,"context_line":""},{"line_number":9382,"context_line":"        u \u003d (\"http://libvirt.org/html/libvirt-libvirt-host.html#\""}],"source_content_type":"text/x-python","patch_set":5,"id":"bf7f9fd6_31717b21","line":9379,"range":{"start_line":9377,"start_character":0,"end_line":9379,"end_character":72},"updated":"2021-07-19 13:06:27.000000000","message":"This error should be rewritten too.  Something like:\n\n     You need %s libvirt version to be able to compare source \n     host CPU with destination host CPU; skip CPU comparison,\n     MIN_LIBVIRT_AARCH^$_CPU_COMPARE","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"54ef1f3f53b17631dd5e0ce8a578e1da240cedef","unresolved":false,"context_lines":[{"line_number":9374,"context_line":"                cpu \u003d host_cpu"},{"line_number":9375,"context_line":"                LOG.debug(\"%s\", host_cpu)"},{"line_number":9376,"context_line":"            else:"},{"line_number":9377,"context_line":"                LOG.debug(\"Host CPU compatibility check does not make \""},{"line_number":9378,"context_line":"                          \"sense on AArch64 before libvirt %s; skip CPU \""},{"line_number":9379,"context_line":"                          \"comparison\", MIN_LIBVIRT_AARCH64_CPU_COMPARE)"},{"line_number":9380,"context_line":"                return"},{"line_number":9381,"context_line":""},{"line_number":9382,"context_line":"        u \u003d (\"http://libvirt.org/html/libvirt-libvirt-host.html#\""}],"source_content_type":"text/x-python","patch_set":5,"id":"6fcf6c76_ecab25e7","line":9379,"range":{"start_line":9377,"start_character":0,"end_line":9379,"end_character":72},"in_reply_to":"bf7f9fd6_31717b21","updated":"2021-08-16 07:05:32.000000000","message":"Done","commit_id":"21d970456f6835bab4bff16db848736eed1a1722"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1113690c0546a121994ed7a40d2f111e4b75b95","unresolved":true,"context_lines":[{"line_number":9358,"context_line":"                LOG.debug(\"On AArch64 hosts, source and destination host \""},{"line_number":9359,"context_line":"                          \"CPUs are compared to check if they\u0027re compatible\""},{"line_number":9360,"context_line":"                          \"(the only use-case supported by libvirt for \""},{"line_number":9361,"context_line":"                          \"Arm64/AAarch64)\")"},{"line_number":9362,"context_line":"                cpu \u003d host_cpu"},{"line_number":9363,"context_line":"            else:"},{"line_number":9364,"context_line":"                LOG.debug(\"You need %s libvirt version to be able to compare \""}],"source_content_type":"text/x-python","patch_set":9,"id":"d4849ed1_0e8ea7f9","line":9361,"range":{"start_line":9361,"start_character":33,"end_line":9361,"end_character":36},"updated":"2021-09-02 14:50:38.000000000","message":"nit: I think there is one too much \u0027A\u0027s here","commit_id":"84d4fd7ad42a445586aa2388e5c431e936e7c10e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e455b4157882ddcf7e90d65ede5e4afff2dd0181","unresolved":true,"context_lines":[{"line_number":9358,"context_line":"                LOG.debug(\"On AArch64 hosts, source and destination host \""},{"line_number":9359,"context_line":"                          \"CPUs are compared to check if they\u0027re compatible\""},{"line_number":9360,"context_line":"                          \"(the only use-case supported by libvirt for \""},{"line_number":9361,"context_line":"                          \"Arm64/AAarch64)\")"},{"line_number":9362,"context_line":"                cpu \u003d host_cpu"},{"line_number":9363,"context_line":"            else:"},{"line_number":9364,"context_line":"                LOG.debug(\"You need %s libvirt version to be able to compare \""}],"source_content_type":"text/x-python","patch_set":9,"id":"e36ede18_43d96922","line":9361,"range":{"start_line":9361,"start_character":33,"end_line":9361,"end_character":36},"in_reply_to":"d4849ed1_0e8ea7f9","updated":"2021-09-02 14:56:15.000000000","message":"ya good spot its aarch64 or AArch64 i think this can be fixed in a follow up","commit_id":"84d4fd7ad42a445586aa2388e5c431e936e7c10e"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"aea6b6fd660e73968bc2e306d4427363d9179c75","unresolved":false,"context_lines":[{"line_number":9358,"context_line":"                LOG.debug(\"On AArch64 hosts, source and destination host \""},{"line_number":9359,"context_line":"                          \"CPUs are compared to check if they\u0027re compatible\""},{"line_number":9360,"context_line":"                          \"(the only use-case supported by libvirt for \""},{"line_number":9361,"context_line":"                          \"Arm64/AAarch64)\")"},{"line_number":9362,"context_line":"                cpu \u003d host_cpu"},{"line_number":9363,"context_line":"            else:"},{"line_number":9364,"context_line":"                LOG.debug(\"You need %s libvirt version to be able to compare \""}],"source_content_type":"text/x-python","patch_set":9,"id":"fc705c6f_8a062b6d","line":9361,"range":{"start_line":9361,"start_character":33,"end_line":9361,"end_character":36},"in_reply_to":"e36ede18_43d96922","updated":"2021-09-03 03:21:01.000000000","message":"Done","commit_id":"84d4fd7ad42a445586aa2388e5c431e936e7c10e"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"27c5e122829a8ea3aa0748a0c335b9683c9de552","unresolved":true,"context_lines":[{"line_number":793,"context_line":"                xml_str \u003d self._caps.host.cpu.to_xml()"},{"line_number":794,"context_line":"                if isinstance(xml_str, bytes):"},{"line_number":795,"context_line":"                    xml_str \u003d xml_str.decode(\u0027utf-8\u0027)"},{"line_number":796,"context_line":"                # NOTE(kevinz): The baseline CPU info on Aarch64 will not"},{"line_number":797,"context_line":"                # include any features. So on Aarch64, we use the original"},{"line_number":798,"context_line":"                # features from LibvirtConfigCaps."},{"line_number":799,"context_line":"                if self._caps.host.cpu.arch !\u003d fields.Architecture.AARCH64:"},{"line_number":800,"context_line":"                    features \u003d self.get_connection().baselineCPU("},{"line_number":801,"context_line":"                        [xml_str],"},{"line_number":802,"context_line":"                        libvirt.VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES)"},{"line_number":803,"context_line":"                    if features:"},{"line_number":804,"context_line":"                        cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":805,"context_line":"                        cpu.parse_str(features)"},{"line_number":806,"context_line":"                        self._caps.host.cpu.features \u003d cpu.features"},{"line_number":807,"context_line":"            except libvirt.libvirtError as ex:"},{"line_number":808,"context_line":"                error_code \u003d ex.get_error_code()"},{"line_number":809,"context_line":"                if error_code \u003d\u003d libvirt.VIR_ERR_NO_SUPPORT:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4c3ec7c4_8d69e704","line":806,"range":{"start_line":796,"start_character":0,"end_line":806,"end_character":67},"updated":"2021-05-24 09:23:15.000000000","message":"I don\u0027t see any tests for this change.","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"},{"author":{"_account_id":22076,"name":"Kevin Zhao","email":"kevin.zhao@linaro.org","username":"KevinZhao"},"change_message_id":"836be12700fc1830edcb2cb22622b61a1748afce","unresolved":false,"context_lines":[{"line_number":793,"context_line":"                xml_str \u003d self._caps.host.cpu.to_xml()"},{"line_number":794,"context_line":"                if isinstance(xml_str, bytes):"},{"line_number":795,"context_line":"                    xml_str \u003d xml_str.decode(\u0027utf-8\u0027)"},{"line_number":796,"context_line":"                # NOTE(kevinz): The baseline CPU info on Aarch64 will not"},{"line_number":797,"context_line":"                # include any features. So on Aarch64, we use the original"},{"line_number":798,"context_line":"                # features from LibvirtConfigCaps."},{"line_number":799,"context_line":"                if self._caps.host.cpu.arch !\u003d fields.Architecture.AARCH64:"},{"line_number":800,"context_line":"                    features \u003d self.get_connection().baselineCPU("},{"line_number":801,"context_line":"                        [xml_str],"},{"line_number":802,"context_line":"                        libvirt.VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES)"},{"line_number":803,"context_line":"                    if features:"},{"line_number":804,"context_line":"                        cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":805,"context_line":"                        cpu.parse_str(features)"},{"line_number":806,"context_line":"                        self._caps.host.cpu.features \u003d cpu.features"},{"line_number":807,"context_line":"            except libvirt.libvirtError as ex:"},{"line_number":808,"context_line":"                error_code \u003d ex.get_error_code()"},{"line_number":809,"context_line":"                if error_code \u003d\u003d libvirt.VIR_ERR_NO_SUPPORT:"}],"source_content_type":"text/x-python","patch_set":3,"id":"0edc5a30_ace48c1c","line":806,"range":{"start_line":796,"start_character":0,"end_line":806,"end_character":67},"in_reply_to":"4c3ec7c4_8d69e704","updated":"2021-05-29 03:23:31.000000000","message":"Done","commit_id":"f0b2923d7e6b760af990c387f4f700dabb6020e3"}]}
