)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f98130b4edb5b966fb4c4c8de1fc38520ebae316","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ya.wang \u003cwang.ya@99cloud.net\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-07-15 09:21:48 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support report multi CPU model traits"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change exist method: \u0027_get_cpu_traits\u0027, make it support report multi CPU"},{"line_number":10,"context_line":"model\u0027s traits."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_673388f7","line":7,"range":{"start_line":7,"start_character":8,"end_line":7,"end_character":14},"updated":"2019-08-28 15:58:40.000000000","message":"reporting","commit_id":"5c11d41b337c61a628849a5ecc87b22d182a9abb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"cd3122d8c35be12a16c832bab6012e8bf281dd56","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ya.wang \u003cwang.ya@99cloud.net\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-07-15 09:21:48 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support report multi CPU model traits"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change exist method: \u0027_get_cpu_traits\u0027, make it support report multi CPU"},{"line_number":10,"context_line":"model\u0027s traits."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_a36226d8","line":7,"range":{"start_line":7,"start_character":8,"end_line":7,"end_character":14},"in_reply_to":"7faddb67_673388f7","updated":"2019-08-29 08:10:30.000000000","message":"Done","commit_id":"5c11d41b337c61a628849a5ecc87b22d182a9abb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f98130b4edb5b966fb4c4c8de1fc38520ebae316","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support report multi CPU model traits"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change exist method: \u0027_get_cpu_traits\u0027, make it support report multi CPU"},{"line_number":10,"context_line":"model\u0027s traits."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I448f9fe02acda111aa90b3ea17e53bc0c27cd09d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_0758942e","line":9,"range":{"start_line":9,"start_character":38,"end_line":9,"end_character":41},"updated":"2019-08-28 15:58:40.000000000","message":". M","commit_id":"5c11d41b337c61a628849a5ecc87b22d182a9abb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f98130b4edb5b966fb4c4c8de1fc38520ebae316","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support report multi CPU model traits"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change exist method: \u0027_get_cpu_traits\u0027, make it support report multi CPU"},{"line_number":10,"context_line":"model\u0027s traits."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I448f9fe02acda111aa90b3ea17e53bc0c27cd09d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_872ec489","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":12},"updated":"2019-08-28 15:58:40.000000000","message":"existing","commit_id":"5c11d41b337c61a628849a5ecc87b22d182a9abb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"cd3122d8c35be12a16c832bab6012e8bf281dd56","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support report multi CPU model traits"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change exist method: \u0027_get_cpu_traits\u0027, make it support report multi CPU"},{"line_number":10,"context_line":"model\u0027s traits."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I448f9fe02acda111aa90b3ea17e53bc0c27cd09d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_4361f2d2","line":9,"range":{"start_line":9,"start_character":38,"end_line":9,"end_character":41},"in_reply_to":"7faddb67_0758942e","updated":"2019-08-29 08:10:30.000000000","message":"Done","commit_id":"5c11d41b337c61a628849a5ecc87b22d182a9abb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"cd3122d8c35be12a16c832bab6012e8bf281dd56","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support report multi CPU model traits"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change exist method: \u0027_get_cpu_traits\u0027, make it support report multi CPU"},{"line_number":10,"context_line":"model\u0027s traits."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I448f9fe02acda111aa90b3ea17e53bc0c27cd09d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_635c2e19","line":9,"range":{"start_line":9,"start_character":7,"end_line":9,"end_character":12},"in_reply_to":"7faddb67_872ec489","updated":"2019-08-29 08:10:30.000000000","message":"Done","commit_id":"5c11d41b337c61a628849a5ecc87b22d182a9abb"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cbe111bf0b53408c8067be2f6ac752718676794e","unresolved":false,"context_lines":[{"line_number":9723,"context_line":"        ensures user specified CPU feature flags to be included."},{"line_number":9724,"context_line":"        :return: A dict of trait names mapped to boolean values or None."},{"line_number":9725,"context_line":"        \"\"\""},{"line_number":9726,"context_line":"        cpu \u003d self._get_guest_cpu_model_config()"},{"line_number":9727,"context_line":"        if not cpu:"},{"line_number":9728,"context_line":"            LOG.info(\u0027The current libvirt hypervisor %(virt_type)s \u0027"},{"line_number":9729,"context_line":"                     \u0027does not support reporting CPU traits.\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_31d8a751","line":9726,"range":{"start_line":9726,"start_character":8,"end_line":9726,"end_character":48},"updated":"2019-08-15 05:43:06.000000000","message":"I\u0027m not sure it is still meaningful to call this method. You only need the CONF.libvirt.cpu_models and CONF.libvirt.cpu_mode later.\n\nThen you can iterate each models in the loop line 9760","commit_id":"f3fec9844d9b8626a33430e449a7fd19a1bf66c7"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"4218e15bab66562de9d282f8ca5f9675e8a05935","unresolved":false,"context_lines":[{"line_number":9723,"context_line":"        ensures user specified CPU feature flags to be included."},{"line_number":9724,"context_line":"        :return: A dict of trait names mapped to boolean values or None."},{"line_number":9725,"context_line":"        \"\"\""},{"line_number":9726,"context_line":"        cpu \u003d self._get_guest_cpu_model_config()"},{"line_number":9727,"context_line":"        if not cpu:"},{"line_number":9728,"context_line":"            LOG.info(\u0027The current libvirt hypervisor %(virt_type)s \u0027"},{"line_number":9729,"context_line":"                     \u0027does not support reporting CPU traits.\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_63dddc3f","line":9726,"range":{"start_line":9726,"start_character":8,"end_line":9726,"end_character":48},"in_reply_to":"7faddb67_31d8a751","updated":"2019-08-16 17:24:19.000000000","message":"It\u0027s not easy to remove this call. If we don\u0027t use self._get_guest_cpu_model_config, then we need to check various configuration items, such as virt_type, cpu_mode and cpu_models","commit_id":"f3fec9844d9b8626a33430e449a7fd19a1bf66c7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cbe111bf0b53408c8067be2f6ac752718676794e","unresolved":false,"context_lines":[{"line_number":9761,"context_line":"                caps.host.cpu.model \u003d model"},{"line_number":9762,"context_line":"                caps.host.cpu.features \u003d set()"},{"line_number":9763,"context_line":"                # Account for features in cpu_model_extra_flags conf"},{"line_number":9764,"context_line":"                for f in cpu.features:"},{"line_number":9765,"context_line":"                    caps.host.cpu.add_feature("},{"line_number":9766,"context_line":"                        vconfig.LibvirtConfigCPUFeature(name\u003df.name))"},{"line_number":9767,"context_line":"                features \u003d features.union(_resolve_features(caps.host.cpu))"},{"line_number":9768,"context_line":""},{"line_number":9769,"context_line":"        return libvirt_utils.cpu_features_to_traits(features)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_b11ed709","line":9766,"range":{"start_line":9764,"start_character":16,"end_line":9766,"end_character":69},"updated":"2019-08-15 05:43:06.000000000","message":"line 9726 return the first model. Then this adds first cpu model\u0027s features in each loop.","commit_id":"f3fec9844d9b8626a33430e449a7fd19a1bf66c7"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"4218e15bab66562de9d282f8ca5f9675e8a05935","unresolved":false,"context_lines":[{"line_number":9761,"context_line":"                caps.host.cpu.model \u003d model"},{"line_number":9762,"context_line":"                caps.host.cpu.features \u003d set()"},{"line_number":9763,"context_line":"                # Account for features in cpu_model_extra_flags conf"},{"line_number":9764,"context_line":"                for f in cpu.features:"},{"line_number":9765,"context_line":"                    caps.host.cpu.add_feature("},{"line_number":9766,"context_line":"                        vconfig.LibvirtConfigCPUFeature(name\u003df.name))"},{"line_number":9767,"context_line":"                features \u003d features.union(_resolve_features(caps.host.cpu))"},{"line_number":9768,"context_line":""},{"line_number":9769,"context_line":"        return libvirt_utils.cpu_features_to_traits(features)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_23e36407","line":9766,"range":{"start_line":9764,"start_character":16,"end_line":9766,"end_character":69},"in_reply_to":"7faddb67_b11ed709","updated":"2019-08-16 17:24:19.000000000","message":"Yes, it should not in this loop.","commit_id":"f3fec9844d9b8626a33430e449a7fd19a1bf66c7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"20d6cab2b78a806d1bdd7fa5e1e5ce5b0f586171","unresolved":false,"context_lines":[{"line_number":9789,"context_line":"            caps.host.cpu.features \u003d set()"},{"line_number":9790,"context_line":"            features \u003d features.union(_resolve_features(caps.host.cpu))"},{"line_number":9791,"context_line":"        else:"},{"line_number":9792,"context_line":"            models \u003d CONF.libvirt.cpu_models"},{"line_number":9793,"context_line":"            # For custom mode, iter cpu models"},{"line_number":9794,"context_line":"            for model in models:"},{"line_number":9795,"context_line":"                caps.host.cpu.model \u003d model"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_bb6611ee","line":9792,"updated":"2019-08-26 05:41:05.000000000","message":"you need to take care of the case insensitive, I guess?","commit_id":"275d6b642d2bffbc73d3307fa2669c50d68e5c70"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"e7aeedd8d51162f03276d13f287db36ec100ff96","unresolved":false,"context_lines":[{"line_number":9789,"context_line":"            caps.host.cpu.features \u003d set()"},{"line_number":9790,"context_line":"            features \u003d features.union(_resolve_features(caps.host.cpu))"},{"line_number":9791,"context_line":"        else:"},{"line_number":9792,"context_line":"            models \u003d CONF.libvirt.cpu_models"},{"line_number":9793,"context_line":"            # For custom mode, iter cpu models"},{"line_number":9794,"context_line":"            for model in models:"},{"line_number":9795,"context_line":"                caps.host.cpu.model \u003d model"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_12aa7b19","line":9792,"in_reply_to":"7faddb67_bb6611ee","updated":"2019-08-28 09:22:53.000000000","message":"You are right, updated and unit test had been added..","commit_id":"275d6b642d2bffbc73d3307fa2669c50d68e5c70"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f98130b4edb5b966fb4c4c8de1fc38520ebae316","unresolved":false,"context_lines":[{"line_number":9793,"context_line":"        else:"},{"line_number":9794,"context_line":"            models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":9795,"context_line":"                      for model in CONF.libvirt.cpu_models]"},{"line_number":9796,"context_line":"            # For custom mode, iter cpu models"},{"line_number":9797,"context_line":"            for model in models:"},{"line_number":9798,"context_line":"                caps.host.cpu.model \u003d model"},{"line_number":9799,"context_line":"                caps.host.cpu.features \u003d set()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_47e7c847","line":9796,"range":{"start_line":9796,"start_character":31,"end_line":9796,"end_character":35},"updated":"2019-08-28 15:58:40.000000000","message":"iterate through","commit_id":"99ddff79d7440d6ab538e701cfd460962c58ec8a"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"cd3122d8c35be12a16c832bab6012e8bf281dd56","unresolved":false,"context_lines":[{"line_number":9793,"context_line":"        else:"},{"line_number":9794,"context_line":"            models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":9795,"context_line":"                      for model in CONF.libvirt.cpu_models]"},{"line_number":9796,"context_line":"            # For custom mode, iter cpu models"},{"line_number":9797,"context_line":"            for model in models:"},{"line_number":9798,"context_line":"                caps.host.cpu.model \u003d model"},{"line_number":9799,"context_line":"                caps.host.cpu.features \u003d set()"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_e3701ea7","line":9796,"range":{"start_line":9796,"start_character":31,"end_line":9796,"end_character":35},"in_reply_to":"7faddb67_47e7c847","updated":"2019-08-29 08:10:30.000000000","message":"Done","commit_id":"99ddff79d7440d6ab538e701cfd460962c58ec8a"}],"releasenotes/notes/libvirt-cpu-models-selection-153e734946a7f5cc.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f98130b4edb5b966fb4c4c8de1fc38520ebae316","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    supports. If ``[libvirt] cpu_mode`` is set to ``custom``, the libvirt"},{"line_number":7,"context_line":"    driver will select the first CPU model in the ``cpu_model_list`` list that"},{"line_number":8,"context_line":"    can provide the required feature traits."},{"line_number":9,"context_line":"deprecations:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    The ``[libvirt] cpu_model`` option is deprecated and will be removed in a"},{"line_number":12,"context_line":"    future release. The ``[libvirt] cpu_models`` option should be used instead."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7faddb67_67852459","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":79},"updated":"2019-08-28 15:58:40.000000000","message":"This isn\u0027t a deprecation but rather than upgrade impact. How about:\n\n  upgrades:\n    - |\n      The ``[libvirt] cpu_model`` has been renamed to ``[libvirt] cpu_models``\n      and now accepts a list of CPUs.","commit_id":"99ddff79d7440d6ab538e701cfd460962c58ec8a"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"cd3122d8c35be12a16c832bab6012e8bf281dd56","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    supports. If ``[libvirt] cpu_mode`` is set to ``custom``, the libvirt"},{"line_number":7,"context_line":"    driver will select the first CPU model in the ``cpu_model_list`` list that"},{"line_number":8,"context_line":"    can provide the required feature traits."},{"line_number":9,"context_line":"deprecations:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    The ``[libvirt] cpu_model`` option is deprecated and will be removed in a"},{"line_number":12,"context_line":"    future release. The ``[libvirt] cpu_models`` option should be used instead."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7faddb67_03745a9b","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":79},"in_reply_to":"7faddb67_67852459","updated":"2019-08-29 08:10:30.000000000","message":"Done","commit_id":"99ddff79d7440d6ab538e701cfd460962c58ec8a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f98130b4edb5b966fb4c4c8de1fc38520ebae316","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7faddb67_07a31002","line":13,"updated":"2019-08-28 15:58:40.000000000","message":"Should this have been included with the first patch?","commit_id":"99ddff79d7440d6ab538e701cfd460962c58ec8a"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"cd3122d8c35be12a16c832bab6012e8bf281dd56","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7faddb67_c3f08200","line":13,"in_reply_to":"7faddb67_07a31002","updated":"2019-08-29 08:10:30.000000000","message":"It can, the first patch has completed main feature.","commit_id":"99ddff79d7440d6ab538e701cfd460962c58ec8a"}]}
