)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"c30042928236aebf42ea180e778a55edbf427df1","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-12 11:32:46 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"vCPU mdoels selection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rename the exist config attribute: [libvirt]/cpu_model to"},{"line_number":10,"context_line":"[libvirt]/cpu_models, which is an orderd list of CPU models the host"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_3b003d02","line":7,"range":{"start_line":7,"start_character":5,"end_line":7,"end_character":11},"updated":"2019-08-05 08:43:00.000000000","message":"models","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","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-12 11:32:46 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"vCPU mdoels selection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rename the exist config attribute: [libvirt]/cpu_model to"},{"line_number":10,"context_line":"[libvirt]/cpu_models, which is an orderd list of CPU models the host"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_c614ac4f","line":7,"range":{"start_line":7,"start_character":5,"end_line":7,"end_character":11},"in_reply_to":"7faddb67_3b003d02","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"supports. The value in the list can be made case-insensitive."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change logic of method: \u0027_get_guest_cpu_model_config\u0027, if cpu_mode is"},{"line_number":14,"context_line":"custom and cpu_models setted. It will parse the required traits"},{"line_number":15,"context_line":"associated with the CPU flags from flavor extra_specs and select the"},{"line_number":16,"context_line":"most appropriate CPU model."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7faddb67_acdd43de","line":14,"range":{"start_line":14,"start_character":22,"end_line":14,"end_character":28},"updated":"2019-08-28 15:49:09.000000000","message":"set","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":11,"context_line":"supports. The value in the list can be made case-insensitive."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change logic of method: \u0027_get_guest_cpu_model_config\u0027, if cpu_mode is"},{"line_number":14,"context_line":"custom and cpu_models setted. It will parse the required traits"},{"line_number":15,"context_line":"associated with the CPU flags from flavor extra_specs and select the"},{"line_number":16,"context_line":"most appropriate CPU model."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7faddb67_feb2fae4","line":14,"range":{"start_line":14,"start_character":22,"end_line":14,"end_character":28},"in_reply_to":"7faddb67_acdd43de","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c4cb9009e6550aaf5f8f2eba893cb7976f659692","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Add new method \u0027get_cpu_model_names\u0027 to host.py. It will return a list"},{"line_number":19,"context_line":"of the cpu models that the CPU arch can support."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Remove some of the compatibility checks for cpu_mode and cpu_models,"},{"line_number":22,"context_line":"they will be moved to service init part in next patch."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Update the docs of hypervisor-kvm."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7faddb67_27716ca9","line":22,"range":{"start_line":21,"start_character":0,"end_line":22,"end_character":54},"updated":"2019-08-28 15:54:00.000000000","message":"This is no longer true","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Add new method \u0027get_cpu_model_names\u0027 to host.py. It will return a list"},{"line_number":19,"context_line":"of the cpu models that the CPU arch can support."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Remove some of the compatibility checks for cpu_mode and cpu_models,"},{"line_number":22,"context_line":"they will be moved to service init part in next patch."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Update the docs of hypervisor-kvm."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7faddb67_9ec9865b","line":22,"range":{"start_line":21,"start_character":0,"end_line":22,"end_character":54},"in_reply_to":"7faddb67_27716ca9","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":7,"context_line":"vCPU model selection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rename the exist config attribute: [libvirt]/cpu_model to"},{"line_number":10,"context_line":"[libvirt]/cpu_models, which is an orderd list of CPU models the host"},{"line_number":11,"context_line":"supports. The value in the list can be made case-insensitive."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change logic of method: \u0027_get_guest_cpu_model_config\u0027, if cpu_mode is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_e5867465","line":10,"range":{"start_line":10,"start_character":34,"end_line":10,"end_character":40},"updated":"2019-09-05 11:11:27.000000000","message":"ordered","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":7,"context_line":"vCPU model selection"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rename the exist config attribute: [libvirt]/cpu_model to"},{"line_number":10,"context_line":"[libvirt]/cpu_models, which is an orderd list of CPU models the host"},{"line_number":11,"context_line":"supports. The value in the list can be made case-insensitive."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change logic of method: \u0027_get_guest_cpu_model_config\u0027, if cpu_mode is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5faad753_d9c46395","line":10,"range":{"start_line":10,"start_character":34,"end_line":10,"end_character":40},"in_reply_to":"7faddb67_e5867465","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"}],"doc/source/admin/configuration/hypervisor-kvm.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    [libvirt]"},{"line_number":362,"context_line":"    cpu_mode \u003d custom"},{"line_number":363,"context_line":"    cpu_model_list \u003d Penryn,IvyBridge,Haswell,Broadwell,Skylake-Client"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"Then ``Haswell``, the first cpu model supporting both ``avx`` and ``avx2`` will"},{"line_number":366,"context_line":"be chosen by libvirt."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_040f3288","line":363,"range":{"start_line":363,"start_character":4,"end_line":363,"end_character":18},"updated":"2019-08-02 13:32:50.000000000","message":"cpu_models","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    [libvirt]"},{"line_number":362,"context_line":"    cpu_mode \u003d custom"},{"line_number":363,"context_line":"    cpu_model_list \u003d Penryn,IvyBridge,Haswell,Broadwell,Skylake-Client"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"Then ``Haswell``, the first cpu model supporting both ``avx`` and ``avx2`` will"},{"line_number":366,"context_line":"be chosen by libvirt."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_5b3df9c1","line":363,"range":{"start_line":363,"start_character":4,"end_line":363,"end_character":18},"in_reply_to":"7faddb67_040f3288","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_c424ba0f","line":380,"range":{"start_line":380,"start_character":18,"end_line":380,"end_character":19},"updated":"2019-08-02 13:32:50.000000000","message":"drop","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_641f06b7","line":380,"range":{"start_line":380,"start_character":64,"end_line":380,"end_character":67},"updated":"2019-08-02 13:32:50.000000000","message":"is","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_7b38f5d1","line":380,"range":{"start_line":380,"start_character":64,"end_line":380,"end_character":67},"in_reply_to":"7faddb67_641f06b7","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_1b3301f8","line":380,"range":{"start_line":380,"start_character":18,"end_line":380,"end_character":19},"in_reply_to":"7faddb67_c424ba0f","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_447e8ae4","line":381,"range":{"start_line":381,"start_character":60,"end_line":381,"end_character":65},"updated":"2019-08-02 13:32:50.000000000","message":"host","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_841a42c3","line":381,"range":{"start_line":381,"start_character":10,"end_line":381,"end_character":15},"updated":"2019-08-02 13:32:50.000000000","message":"models","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_5b42d93f","line":381,"range":{"start_line":381,"start_character":60,"end_line":381,"end_character":65},"in_reply_to":"7faddb67_447e8ae4","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":378,"context_line":".. note::"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_7b3d55b9","line":381,"range":{"start_line":381,"start_character":10,"end_line":381,"end_character":15},"in_reply_to":"7faddb67_841a42c3","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_e480d6c1","line":382,"range":{"start_line":382,"start_character":54,"end_line":382,"end_character":64},"updated":"2019-08-02 13:32:50.000000000","message":"is configured","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_1b48e159","line":382,"range":{"start_line":382,"start_character":54,"end_line":382,"end_character":64},"in_reply_to":"7faddb67_e480d6c1","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_c4691a25","line":383,"range":{"start_line":383,"start_character":45,"end_line":383,"end_character":70},"updated":"2019-08-02 13:32:50.000000000","message":"If incompatible CPU models or flags are specified,","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_048412d2","line":383,"range":{"start_line":383,"start_character":34,"end_line":383,"end_character":39},"updated":"2019-08-02 13:32:50.000000000","message":"host","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_3b435d41","line":383,"range":{"start_line":383,"start_character":34,"end_line":383,"end_character":39},"in_reply_to":"7faddb67_048412d2","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  Please note that: if :oslo.config:option:`libvirt.cpu_models` are configured,"},{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_fb7aa585","line":383,"range":{"start_line":383,"start_character":45,"end_line":383,"end_character":70},"in_reply_to":"7faddb67_c4691a25","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"None (default for all libvirt-driven hypervisors other than KVM \u0026 QEMU)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_04a09241","line":384,"range":{"start_line":384,"start_character":0,"end_line":384,"end_character":48},"updated":"2019-08-02 13:32:50.000000000","message":"Is this actually true? Your configuration option help text suggests QEMU will fall back to emulating these features if the host CPU doesn\u0027t support them. This is unclear to me.","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":381,"context_line":"  the CPU model in the list needs to be compatible with the guest CPU. Also, if"},{"line_number":382,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` configured, all flags"},{"line_number":383,"context_line":"  needs to be compatible with the guest CPU. If the config not correct, nova"},{"line_number":384,"context_line":"  service will raise an error and stop starting."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"None (default for all libvirt-driven hypervisors other than KVM \u0026 QEMU)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7faddb67_9b7b7179","line":384,"range":{"start_line":384,"start_character":0,"end_line":384,"end_character":48},"in_reply_to":"7faddb67_04a09241","updated":"2019-08-05 09:05:55.000000000","message":"Yes, it will block the startup if configuration are incompatible. The configuration option help text will be removed.","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":".. code-block:: console"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    # openstack flavor set FLAVOR_ID --property trait:HW_CPU_X86_AVX\u003drequired \\"},{"line_number":357,"context_line":"                                     --property trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"and :oslo.config:option:`libvirt.cpu_models` is configured like this:"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7faddb67_4c936f01","line":356,"range":{"start_line":356,"start_character":4,"end_line":356,"end_character":5},"updated":"2019-08-28 15:49:09.000000000","message":"This isn\u0027t a sudo command. s/#/$/","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":".. code-block:: console"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    # openstack flavor set FLAVOR_ID --property trait:HW_CPU_X86_AVX\u003drequired \\"},{"line_number":357,"context_line":"                                     --property trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"and :oslo.config:option:`libvirt.cpu_models` is configured like this:"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7faddb67_bec48242","line":356,"range":{"start_line":356,"start_character":4,"end_line":356,"end_character":5},"in_reply_to":"7faddb67_4c936f01","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":".. note::"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"  Please note that if :oslo.config:option:`libvirt.cpu_models` is configured,"},{"line_number":383,"context_line":"  the CPU models in the list needs to be compatible with the host CPU. Also, if"},{"line_number":384,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` is configured, all flags"},{"line_number":385,"context_line":"  needs to be compatible with the host CPU. If incompatible CPU models or flags"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7faddb67_0c9d7709","line":382,"range":{"start_line":382,"start_character":2,"end_line":382,"end_character":21},"updated":"2019-08-28 15:49:09.000000000","message":"s/Please note that if/If","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":".. note::"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"  Please note that if :oslo.config:option:`libvirt.cpu_models` is configured,"},{"line_number":383,"context_line":"  the CPU models in the list needs to be compatible with the host CPU. Also, if"},{"line_number":384,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` is configured, all flags"},{"line_number":385,"context_line":"  needs to be compatible with the host CPU. If incompatible CPU models or flags"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7faddb67_5ec30e39","line":382,"range":{"start_line":382,"start_character":2,"end_line":382,"end_character":21},"in_reply_to":"7faddb67_0c9d7709","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    cpu_mode \u003d custom"},{"line_number":365,"context_line":"    cpu_models \u003d Penryn,IvyBridge,Haswell,Broadwell,Skylake-Client"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"Then ``Haswell``, the first cpu model supporting both ``avx`` and ``avx2`` will"},{"line_number":368,"context_line":"be chosen by libvirt."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"In selecting the ``custom`` mode, along with a"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_a57cfc70","line":367,"range":{"start_line":367,"start_character":74,"end_line":367,"end_character":79},"updated":"2019-09-05 11:11:27.000000000","message":"``avx2``, will\n\n(missing comma)","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    cpu_mode \u003d custom"},{"line_number":365,"context_line":"    cpu_models \u003d Penryn,IvyBridge,Haswell,Broadwell,Skylake-Client"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"Then ``Haswell``, the first cpu model supporting both ``avx`` and ``avx2`` will"},{"line_number":368,"context_line":"be chosen by libvirt."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"In selecting the ``custom`` mode, along with a"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5faad753_39457718","line":367,"range":{"start_line":367,"start_character":74,"end_line":367,"end_character":79},"in_reply_to":"7faddb67_a57cfc70","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":383,"context_line":"  the CPU models in the list needs to be compatible with the host CPU. Also, if"},{"line_number":384,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` is configured, all flags"},{"line_number":385,"context_line":"  needs to be compatible with the host CPU. If incompatible CPU models or flags"},{"line_number":386,"context_line":"  are specified, nova service will raise an error and stop starting."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"None (default for all libvirt-driven hypervisors other than KVM \u0026 QEMU)"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_058dd07a","line":386,"range":{"start_line":386,"start_character":54,"end_line":386,"end_character":68},"updated":"2019-09-05 11:11:27.000000000","message":"fail to start.","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":383,"context_line":"  the CPU models in the list needs to be compatible with the host CPU. Also, if"},{"line_number":384,"context_line":"  :oslo.config:option:`libvirt.cpu_model_extra_flags` is configured, all flags"},{"line_number":385,"context_line":"  needs to be compatible with the host CPU. If incompatible CPU models or flags"},{"line_number":386,"context_line":"  are specified, nova service will raise an error and stop starting."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"None (default for all libvirt-driven hypervisors other than KVM \u0026 QEMU)"}],"source_content_type":"text/x-rst","patch_set":12,"id":"5faad753_f946ff21","line":386,"range":{"start_line":386,"start_character":54,"end_line":386,"end_character":68},"in_reply_to":"7faddb67_058dd07a","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"}],"doc/source/admin/mitigation-for-Intel-MDS-security-flaws.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":48,"context_line":"       flag will be passed through to the Nova guests automatically."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    c. Specific custom CPU models — this can be enabled using the"},{"line_number":51,"context_line":"       Nova config attributes: ``[libvirt]/cpu_mode \u003d custom`` plus"},{"line_number":52,"context_line":"       particular named CPU models, e.g. ``[libvirt]/cpu_models \u003d"},{"line_number":53,"context_line":"       IvyBridge``"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_e5ebd40e","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":50},"updated":"2019-09-05 11:11:27.000000000","message":"nit: Should read:\n\n  :oslo.config:`libvirt.cpu_mode`\\ \u003dcustom\n\nThere are other entries here too. Could you fix this at least in a follow-up?","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":48,"context_line":"       flag will be passed through to the Nova guests automatically."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    c. Specific custom CPU models — this can be enabled using the"},{"line_number":51,"context_line":"       Nova config attributes: ``[libvirt]/cpu_mode \u003d custom`` plus"},{"line_number":52,"context_line":"       particular named CPU models, e.g. ``[libvirt]/cpu_models \u003d"},{"line_number":53,"context_line":"       IvyBridge``"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"5faad753_d9f783d4","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":50},"in_reply_to":"7faddb67_e5ebd40e","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"}],"nova/conf/libvirt.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  will fail."},{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"               deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"               bounds\u003dFalse,"},{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_846fa226","line":549,"range":{"start_line":549,"start_character":8,"end_line":549,"end_character":15},"updated":"2019-08-02 13:32:50.000000000","message":"nit: the indentation is off here","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  will fail."},{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"               deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"               bounds\u003dFalse,"},{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_4000a402","line":549,"range":{"start_line":549,"start_character":8,"end_line":549,"end_character":15},"in_reply_to":"7faddb67_846fa226","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"               deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"               bounds\u003dFalse,"},{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""},{"line_number":553,"context_line":"An ordered list of CPU models the host supports. It is expected that the list"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_04d2d2d1","line":550,"range":{"start_line":550,"start_character":0,"end_line":550,"end_character":28},"updated":"2019-08-02 13:32:50.000000000","message":"What\u0027s this doing?\n\nLater: Oh, oslo.config says [1]:\n\n  :param bounds: if True, value should be inside \"[\" and \"]\" \n\nHowever, this defaults to false [2] so I think we don\u0027t need to specify it. Can you drop this?\n\n[1] https://github.com/openstack/oslo.config/blob/e39aa0cffada9da42d2b5f9102a3c33264a4bc73/oslo_config/types.py#L466\n[2] https://github.com/openstack/oslo.config/blob/e39aa0cffada9da42d2b5f9102a3c33264a4bc73/oslo_config/types.py#L474","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"               deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"               bounds\u003dFalse,"},{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""},{"line_number":553,"context_line":"An ordered list of CPU models the host supports. It is expected that the list"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_20056814","line":550,"range":{"start_line":550,"start_character":0,"end_line":550,"end_character":28},"in_reply_to":"7faddb67_04d2d2d1","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":550,"context_line":"               bounds\u003dFalse,"},{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""},{"line_number":553,"context_line":"An ordered list of CPU models the host supports. It is expected that the list"},{"line_number":554,"context_line":"is ordered so that the more common and lees advanced CPU models are listed"},{"line_number":555,"context_line":"earlier."},{"line_number":556,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_64e2a6a2","line":553,"range":{"start_line":553,"start_character":48,"end_line":553,"end_character":49},"updated":"2019-08-02 13:32:50.000000000","message":"nit: Start a new paragraph here","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":550,"context_line":"               bounds\u003dFalse,"},{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""},{"line_number":553,"context_line":"An ordered list of CPU models the host supports. It is expected that the list"},{"line_number":554,"context_line":"is ordered so that the more common and lees advanced CPU models are listed"},{"line_number":555,"context_line":"earlier."},{"line_number":556,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9b06111c","line":553,"range":{"start_line":553,"start_character":48,"end_line":553,"end_character":49},"in_reply_to":"7faddb67_64e2a6a2","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""},{"line_number":553,"context_line":"An ordered list of CPU models the host supports. It is expected that the list"},{"line_number":554,"context_line":"is ordered so that the more common and lees advanced CPU models are listed"},{"line_number":555,"context_line":"earlier."},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_24f26e71","line":554,"range":{"start_line":554,"start_character":39,"end_line":554,"end_character":43},"updated":"2019-08-02 13:32:50.000000000","message":"less","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":551,"context_line":"               default\u003d[],"},{"line_number":552,"context_line":"               help\u003d\"\"\""},{"line_number":553,"context_line":"An ordered list of CPU models the host supports. It is expected that the list"},{"line_number":554,"context_line":"is ordered so that the more common and lees advanced CPU models are listed"},{"line_number":555,"context_line":"earlier."},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_bb098d2b","line":554,"range":{"start_line":554,"start_character":39,"end_line":554,"end_character":43},"in_reply_to":"7faddb67_24f26e71","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":565,"context_line":"  would result in an error and the instance launch will fail."},{"line_number":566,"context_line":"* ``virt_type``: Only the virtualization types ``kvm`` and ``qemu`` use this."},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"NOTE: Be careful to only specify models which can be fully supported in"},{"line_number":569,"context_line":"hardware. Specifying models with CPU features that are emulated by qemu could"},{"line_number":570,"context_line":"result in performance degrade."},{"line_number":571,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_04ebb277","line":568,"range":{"start_line":568,"start_character":0,"end_line":568,"end_character":6},"updated":"2019-08-02 13:32:50.000000000","message":"Let\u0027s use the directive:\n\n  .. note::\n\n     Be careful...","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":565,"context_line":"  would result in an error and the instance launch will fail."},{"line_number":566,"context_line":"* ``virt_type``: Only the virtualization types ``kvm`` and ``qemu`` use this."},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"NOTE: Be careful to only specify models which can be fully supported in"},{"line_number":569,"context_line":"hardware. Specifying models with CPU features that are emulated by qemu could"},{"line_number":570,"context_line":"result in performance degrade."},{"line_number":571,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_db29e989","line":568,"range":{"start_line":568,"start_character":0,"end_line":568,"end_character":6},"in_reply_to":"7faddb67_04ebb277","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":566,"context_line":"* ``virt_type``: Only the virtualization types ``kvm`` and ``qemu`` use this."},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"NOTE: Be careful to only specify models which can be fully supported in"},{"line_number":569,"context_line":"hardware. Specifying models with CPU features that are emulated by qemu could"},{"line_number":570,"context_line":"result in performance degrade."},{"line_number":571,"context_line":"\"\"\"),"},{"line_number":572,"context_line":"    cfg.ListOpt("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_e4e776ab","line":569,"range":{"start_line":569,"start_character":67,"end_line":569,"end_character":71},"updated":"2019-08-02 13:32:50.000000000","message":"QEMU","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":566,"context_line":"* ``virt_type``: Only the virtualization types ``kvm`` and ``qemu`` use this."},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"NOTE: Be careful to only specify models which can be fully supported in"},{"line_number":569,"context_line":"hardware. Specifying models with CPU features that are emulated by qemu could"},{"line_number":570,"context_line":"result in performance degrade."},{"line_number":571,"context_line":"\"\"\"),"},{"line_number":572,"context_line":"    cfg.ListOpt("}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9b1ff159","line":569,"range":{"start_line":569,"start_character":67,"end_line":569,"end_character":71},"in_reply_to":"7faddb67_e4e776ab","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"121f93899d45fb9e9dfa726662401cd1800be207","unresolved":false,"context_lines":[{"line_number":567,"context_line":""},{"line_number":568,"context_line":"NOTE: Be careful to only specify models which can be fully supported in"},{"line_number":569,"context_line":"hardware. Specifying models with CPU features that are emulated by qemu could"},{"line_number":570,"context_line":"result in performance degrade."},{"line_number":571,"context_line":"\"\"\"),"},{"line_number":572,"context_line":"    cfg.ListOpt("},{"line_number":573,"context_line":"        \u0027cpu_model_extra_flags\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_c4003a37","line":570,"range":{"start_line":570,"start_character":22,"end_line":570,"end_character":30},"updated":"2019-08-02 13:32:50.000000000","message":"degradation.","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0aa3da9e47047540a3f399ebc1532d35c7226c67","unresolved":false,"context_lines":[{"line_number":567,"context_line":""},{"line_number":568,"context_line":"NOTE: Be careful to only specify models which can be fully supported in"},{"line_number":569,"context_line":"hardware. Specifying models with CPU features that are emulated by qemu could"},{"line_number":570,"context_line":"result in performance degrade."},{"line_number":571,"context_line":"\"\"\"),"},{"line_number":572,"context_line":"    cfg.ListOpt("},{"line_number":573,"context_line":"        \u0027cpu_model_extra_flags\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_fb2ce599","line":570,"range":{"start_line":570,"start_character":22,"end_line":570,"end_character":30},"in_reply_to":"7faddb67_c4003a37","updated":"2019-08-05 09:05:55.000000000","message":"Done","commit_id":"44174fefe1ea7a970b362297131094b7a20af561"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  will fail."},{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"                deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"                default\u003d[],"},{"line_number":551,"context_line":"                help\u003d\"\"\""},{"line_number":552,"context_line":"An ordered list of CPU models the host supports."},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"It is expected that the list is ordered so that the more common and less"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_ff688af4","line":551,"range":{"start_line":549,"start_character":0,"end_line":551,"end_character":24},"updated":"2019-08-28 15:49:09.000000000","message":"nit: Can you reduce this to 8-space indentation like above/below (let\u0027s be locally consistent, at least)","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b6a580baf7e3f940f5940c62de789784fa9a7f54","unresolved":false,"context_lines":[{"line_number":552,"context_line":"An ordered list of CPU models the host supports."},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"It is expected that the list is ordered so that the more common and less"},{"line_number":555,"context_line":"advanced CPU models are listed earlier."},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"Possible values:"},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_581cc376","line":555,"updated":"2019-08-26 05:27:54.000000000","message":"I expected more explain at here. Like which cpu model will be choiced by the guest, we should have a basic rule describe at here.","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0f9d0906296abb1e5aaf9170fa46f24c0ea38f96","unresolved":false,"context_lines":[{"line_number":552,"context_line":"An ordered list of CPU models the host supports."},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"It is expected that the list is ordered so that the more common and less"},{"line_number":555,"context_line":"advanced CPU models are listed earlier."},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"Possible values:"},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_3c38b0ec","line":555,"in_reply_to":"7faddb67_581cc376","updated":"2019-08-28 09:22:32.000000000","message":"Done","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  will fail."},{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"                deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"                default\u003d[],"},{"line_number":551,"context_line":"                help\u003d\"\"\""},{"line_number":552,"context_line":"An ordered list of CPU models the host supports."}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_8c9087ef","line":549,"range":{"start_line":549,"start_character":8,"end_line":549,"end_character":16},"updated":"2019-08-28 15:49:09.000000000","message":"nit: Can you drop this indentation","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":546,"context_line":"  will fail."},{"line_number":547,"context_line":"\"\"\"),"},{"line_number":548,"context_line":"    cfg.ListOpt(\u0027cpu_models\u0027,"},{"line_number":549,"context_line":"                deprecated_name\u003d\u0027cpu_model\u0027,"},{"line_number":550,"context_line":"                default\u003d[],"},{"line_number":551,"context_line":"                help\u003d\"\"\""},{"line_number":552,"context_line":"An ordered list of CPU models the host supports."}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_fee75ae2","line":549,"range":{"start_line":549,"start_character":8,"end_line":549,"end_character":16},"in_reply_to":"7faddb67_8c9087ef","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a48eb68dc17b979451077fcdfe62bbbdb95b721","unresolved":false,"context_lines":[{"line_number":554,"context_line":"It is expected that the list is ordered so that the more common and less"},{"line_number":555,"context_line":"advanced CPU models are listed earlier. Here is an example:"},{"line_number":556,"context_line":"``SandyBridge,IvyBridge,Haswell,Broadwell``, the latter CPU model\u0027s features is"},{"line_number":557,"context_line":"richer that the previous CPU model."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"Possible values:"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_8b460d21","line":557,"updated":"2019-08-30 07:08:44.000000000","message":"It will be great to talk about the rule of trait and the model selection.","commit_id":"34058ce1bba55a0e3cb8756612b530273904d74f"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":7079,"context_line":"        self.flags(cpu_mode\u003d\"custom\","},{"line_number":7080,"context_line":"                   cpu_models\u003d[\"PENRYN\", \"IVYBRIDGE\"],"},{"line_number":7081,"context_line":"                   group\u003d\"libvirt\")"},{"line_number":7082,"context_line":"        conf \u003d drvr._get_guest_config(instance_ref,"},{"line_number":7083,"context_line":"                                      _fake_network_info(self, 1),"},{"line_number":7084,"context_line":"                                      image_meta, disk_info)"},{"line_number":7085,"context_line":"        self.assertEqual(conf.cpu.mode, \"custom\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_65f364e8","line":7082,"range":{"start_line":7082,"start_character":20,"end_line":7082,"end_character":37},"updated":"2019-09-05 11:11:27.000000000","message":"Why test \u0027_get_guest_config\u0027 instead of \u0027_get_guest_cpu_config\u0027 directly?","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"da3c44b40d74cc6d95c33ef5ef3c6fdd899bc93c","unresolved":false,"context_lines":[{"line_number":7079,"context_line":"        self.flags(cpu_mode\u003d\"custom\","},{"line_number":7080,"context_line":"                   cpu_models\u003d[\"PENRYN\", \"IVYBRIDGE\"],"},{"line_number":7081,"context_line":"                   group\u003d\"libvirt\")"},{"line_number":7082,"context_line":"        conf \u003d drvr._get_guest_config(instance_ref,"},{"line_number":7083,"context_line":"                                      _fake_network_info(self, 1),"},{"line_number":7084,"context_line":"                                      image_meta, disk_info)"},{"line_number":7085,"context_line":"        self.assertEqual(conf.cpu.mode, \"custom\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"5faad753_2e2f0240","line":7082,"range":{"start_line":7082,"start_character":20,"end_line":7082,"end_character":37},"in_reply_to":"5faad753_749f76b4","updated":"2019-09-11 15:21:52.000000000","message":"okay, that makes sense","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":7079,"context_line":"        self.flags(cpu_mode\u003d\"custom\","},{"line_number":7080,"context_line":"                   cpu_models\u003d[\"PENRYN\", \"IVYBRIDGE\"],"},{"line_number":7081,"context_line":"                   group\u003d\"libvirt\")"},{"line_number":7082,"context_line":"        conf \u003d drvr._get_guest_config(instance_ref,"},{"line_number":7083,"context_line":"                                      _fake_network_info(self, 1),"},{"line_number":7084,"context_line":"                                      image_meta, disk_info)"},{"line_number":7085,"context_line":"        self.assertEqual(conf.cpu.mode, \"custom\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"5faad753_749f76b4","line":7082,"range":{"start_line":7082,"start_character":20,"end_line":7082,"end_character":37},"in_reply_to":"7faddb67_65f364e8","updated":"2019-09-06 06:33:46.000000000","message":"Use \u0027_get_guest_cpu_config\u0027 means we need to manually assemble \u0027guest_cpu_numa_config\u0027 and \u0027instance_numa_topology\u0027, which is generally not an easy task.","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":7068,"context_line":"        self.assertEqual(conf.cpu.threads, 1)"},{"line_number":7069,"context_line":"        mock_warn.assert_not_called()"},{"line_number":7070,"context_line":""},{"line_number":7071,"context_line":"    def test_get_guest_cpu_config_custom_upper_cpu_model(self):"},{"line_number":7072,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":7073,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":7074,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":7075,"context_line":"        disk_info \u003d blockinfo.get_disk_info(CONF.libvirt.virt_type,"},{"line_number":7076,"context_line":"                                            instance_ref,"},{"line_number":7077,"context_line":"                                            image_meta)"},{"line_number":7078,"context_line":""},{"line_number":7079,"context_line":"        self.flags(cpu_mode\u003d\"custom\","},{"line_number":7080,"context_line":"                   cpu_models\u003d[\"PENRYN\", \"IVYBRIDGE\"],"},{"line_number":7081,"context_line":"                   group\u003d\"libvirt\")"},{"line_number":7082,"context_line":"        conf \u003d drvr._get_guest_config(instance_ref,"},{"line_number":7083,"context_line":"                                      _fake_network_info(self, 1),"},{"line_number":7084,"context_line":"                                      image_meta, disk_info)"},{"line_number":7085,"context_line":"        self.assertEqual(conf.cpu.mode, \"custom\")"},{"line_number":7086,"context_line":"        self.assertEqual(conf.cpu.model, \"Penryn\")"},{"line_number":7087,"context_line":"        self.assertEqual(conf.cpu.sockets, instance_ref.flavor.vcpus)"},{"line_number":7088,"context_line":"        self.assertEqual(conf.cpu.cores, 1)"},{"line_number":7089,"context_line":"        self.assertEqual(conf.cpu.threads, 1)"},{"line_number":7090,"context_line":""},{"line_number":7091,"context_line":"    def test_get_guest_cpu_config_custom_without_traits(self):"},{"line_number":7092,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_e562f4ac","line":7089,"range":{"start_line":7071,"start_character":0,"end_line":7089,"end_character":45},"updated":"2019-09-05 11:11:27.000000000","message":"We could centralize most of these:\n\n  def _test_get_guest_cpu_config_custom(self, extra_specs):\n      test_instance \u003d _create_test_instance()\n      if extra_specs:\n          test_instance[\u0027flavor\u0027][\u0027extra_specs\u0027] \u003d extra_specs\n      drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)\n      instance_ref \u003d objects.Instance(**test_instance)\n      image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)\n      disk_info \u003d blockinfo.get_disk_info(CONF.libvirt.virt_type,\n                                          instance_ref,\n                                          image_meta)\n\n      return drvr._get_guest_config(instance_ref,\n                                    _fake_network_info(self, 1),\n                                    image_meta, disk_info)\n\n  def test_get_guest_cpu_config_custom_upper_cpu_model(self):\n      self.flags(cpu_mode\u003d\"custom\",\n                 cpu_models\u003d[\"PENRYN\", \"IVYBRIDGE\"],\n                 group\u003d\"libvirt\")\n\n      self._test_get_guest_cpu_config_custom()\n\netc., though we probably should be calling \u0027_get_guest_cpu_config\u0027 instead as noted above.\n\nThis would be a good follow-up","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"023030167376c21e391177477e3b16b39b3c5416","unresolved":false,"context_lines":[{"line_number":3963,"context_line":""},{"line_number":3964,"context_line":"    def _get_guest_cpu_model_config(self, flavor\u003dNone):"},{"line_number":3965,"context_line":"        mode \u003d CONF.libvirt.cpu_mode"},{"line_number":3966,"context_line":"        models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":3967,"context_line":"                  for model in CONF.libvirt.cpu_models]"},{"line_number":3968,"context_line":"        extra_flags \u003d set([flag.lower() for flag in"},{"line_number":3969,"context_line":"            CONF.libvirt.cpu_model_extra_flags])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c06e2dff","line":3966,"range":{"start_line":3966,"start_character":8,"end_line":3966,"end_character":15},"updated":"2019-08-14 12:35:09.000000000","message":"the libvirt requires the model name sensitive?","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"dc986ed5226d5ec192f4358bf151ded6f8d0cca4","unresolved":false,"context_lines":[{"line_number":3963,"context_line":""},{"line_number":3964,"context_line":"    def _get_guest_cpu_model_config(self, flavor\u003dNone):"},{"line_number":3965,"context_line":"        mode \u003d CONF.libvirt.cpu_mode"},{"line_number":3966,"context_line":"        models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":3967,"context_line":"                  for model in CONF.libvirt.cpu_models]"},{"line_number":3968,"context_line":"        extra_flags \u003d set([flag.lower() for flag in"},{"line_number":3969,"context_line":"            CONF.libvirt.cpu_model_extra_flags])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_15ac659d","line":3966,"range":{"start_line":3966,"start_character":8,"end_line":3966,"end_character":15},"in_reply_to":"7faddb67_c06e2dff","updated":"2019-08-16 17:24:13.000000000","message":"Yes, I tried to use a lowercase model, then libvirt throws an error.","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"023030167376c21e391177477e3b16b39b3c5416","unresolved":false,"context_lines":[{"line_number":4010,"context_line":"            extra_specs \u003d flavor.get(\u0027extra_specs\u0027, {}) if flavor else {}"},{"line_number":4011,"context_line":"            flags \u003d libvirt_utils.get_flags_by_flavor_specs(extra_specs)"},{"line_number":4012,"context_line":"            if flags:"},{"line_number":4013,"context_line":"                cpu.model \u003d self._set_model(models, flags)"},{"line_number":4014,"context_line":""},{"line_number":4015,"context_line":"        LOG.debug(\"CPU mode \u0027%(mode)s\u0027 models \u0027%(models)s\u0027 was chosen, \""},{"line_number":4016,"context_line":"                  \"with extra flags: \u0027%(extra_flags)s\u0027\","}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_db4b825c","line":4013,"range":{"start_line":4013,"start_character":34,"end_line":4013,"end_character":37},"updated":"2019-08-14 12:35:09.000000000","message":"I feel the name should be _match_cpu_model_by_flags?","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"dc986ed5226d5ec192f4358bf151ded6f8d0cca4","unresolved":false,"context_lines":[{"line_number":4010,"context_line":"            extra_specs \u003d flavor.get(\u0027extra_specs\u0027, {}) if flavor else {}"},{"line_number":4011,"context_line":"            flags \u003d libvirt_utils.get_flags_by_flavor_specs(extra_specs)"},{"line_number":4012,"context_line":"            if flags:"},{"line_number":4013,"context_line":"                cpu.model \u003d self._set_model(models, flags)"},{"line_number":4014,"context_line":""},{"line_number":4015,"context_line":"        LOG.debug(\"CPU mode \u0027%(mode)s\u0027 models \u0027%(models)s\u0027 was chosen, \""},{"line_number":4016,"context_line":"                  \"with extra flags: \u0027%(extra_flags)s\u0027\","}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_759a796f","line":4013,"range":{"start_line":4013,"start_character":34,"end_line":4013,"end_character":37},"in_reply_to":"7faddb67_db4b825c","updated":"2019-08-16 17:24:13.000000000","message":"Done","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8d96ca8fba7461c9b55373045702e2ad4113a264","unresolved":false,"context_lines":[{"line_number":4034,"context_line":"        return cpu"},{"line_number":4035,"context_line":""},{"line_number":4036,"context_line":"    def _set_model(self, models, flags):"},{"line_number":4037,"context_line":"        cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":4038,"context_line":"        cpu.arch \u003d self._host.get_capabilities().host.cpu.arch"},{"line_number":4039,"context_line":"        for model in models:"},{"line_number":4040,"context_line":"            cpu.model \u003d model"},{"line_number":4041,"context_line":"            features_xml \u003d self._get_guest_baseline_cpu_features(cpu.to_xml())"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_91c5db90","line":4038,"range":{"start_line":4037,"start_character":8,"end_line":4038,"end_character":62},"updated":"2019-08-15 05:31:11.000000000","message":"I\u0027m thinking maybe you need to move this two lines into the loop.\n\nOtherwise, I feel we will add first cpu model\u0027s featues to the second cpu model, since line 4043 parse the new xml and continue append new feature to existed LibvirtConfigCPU obj.\n\nAnd I\u0027m hoping we have a unittest cover this case.","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"dc986ed5226d5ec192f4358bf151ded6f8d0cca4","unresolved":false,"context_lines":[{"line_number":4034,"context_line":"        return cpu"},{"line_number":4035,"context_line":""},{"line_number":4036,"context_line":"    def _set_model(self, models, flags):"},{"line_number":4037,"context_line":"        cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":4038,"context_line":"        cpu.arch \u003d self._host.get_capabilities().host.cpu.arch"},{"line_number":4039,"context_line":"        for model in models:"},{"line_number":4040,"context_line":"            cpu.model \u003d model"},{"line_number":4041,"context_line":"            features_xml \u003d self._get_guest_baseline_cpu_features(cpu.to_xml())"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_dabd99b1","line":4038,"range":{"start_line":4037,"start_character":8,"end_line":4038,"end_character":62},"in_reply_to":"7faddb67_91c5db90","updated":"2019-08-16 17:24:13.000000000","message":"Done","commit_id":"ca722b3073ef65b6ae4a17888313ed4d6920588d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bc7f488bb24eb0baa5555bfcb5933d235c0da83c","unresolved":false,"context_lines":[{"line_number":4050,"context_line":"            cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":4051,"context_line":"            cpu.arch \u003d self._host.get_capabilities().host.cpu.arch"},{"line_number":4052,"context_line":"            cpu.model \u003d model"},{"line_number":4053,"context_line":"            features_xml \u003d self._get_guest_baseline_cpu_features(cpu.to_xml())"},{"line_number":4054,"context_line":"            if features_xml:"},{"line_number":4055,"context_line":"                cpu.parse_str(features_xml)"},{"line_number":4056,"context_line":"                feature_names \u003d [f.name for f in cpu.features]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_3cffac66","line":4053,"range":{"start_line":4053,"start_character":12,"end_line":4053,"end_character":78},"updated":"2019-08-22 09:02:26.000000000","message":"I prefer we cache this after read once","commit_id":"5130bf534c995ac096ee1e075b932eb419490698"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b6a580baf7e3f940f5940c62de789784fa9a7f54","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        # intended to be updatable directly"},{"line_number":423,"context_line":"        self.provider_tree \u003d None"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        self.cpu_models_mapping \u003d {}"},{"line_number":426,"context_line":"        self.cpu_model_flag_mapping \u003d {}"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _get_volume_drivers(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_7873bf17","line":425,"updated":"2019-08-26 05:27:54.000000000","message":"Good to have a comment about why we need this mapping.","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0f9d0906296abb1e5aaf9170fa46f24c0ea38f96","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        # intended to be updatable directly"},{"line_number":423,"context_line":"        self.provider_tree \u003d None"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"        self.cpu_models_mapping \u003d {}"},{"line_number":426,"context_line":"        self.cpu_model_flag_mapping \u003d {}"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def _get_volume_drivers(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_f77a3123","line":425,"in_reply_to":"7faddb67_7873bf17","updated":"2019-08-28 09:22:32.000000000","message":"Done","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b6a580baf7e3f940f5940c62de789784fa9a7f54","unresolved":false,"context_lines":[{"line_number":3958,"context_line":"    def _build_cpu_model_mapping(self):"},{"line_number":3959,"context_line":"        cpu_models \u003d self._host.get_cpu_model_names()"},{"line_number":3960,"context_line":"        for cpu_model in cpu_models:"},{"line_number":3961,"context_line":"            self.cpu_models_mapping[cpu_model.lower()] \u003d cpu_model"},{"line_number":3962,"context_line":""},{"line_number":3963,"context_line":"    def _get_cpu_model_mapping(self, model):"},{"line_number":3964,"context_line":"        if not self.cpu_models_mapping:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_385f8776","line":3961,"range":{"start_line":3961,"start_character":12,"end_line":3961,"end_character":66},"updated":"2019-08-26 05:27:54.000000000","message":"I\u0027m thinking about whether we really need to support case-insensitive. Maybe we just simple the case, require the case-sensitive also. But I let other people to comment on this.","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0f9d0906296abb1e5aaf9170fa46f24c0ea38f96","unresolved":false,"context_lines":[{"line_number":3958,"context_line":"    def _build_cpu_model_mapping(self):"},{"line_number":3959,"context_line":"        cpu_models \u003d self._host.get_cpu_model_names()"},{"line_number":3960,"context_line":"        for cpu_model in cpu_models:"},{"line_number":3961,"context_line":"            self.cpu_models_mapping[cpu_model.lower()] \u003d cpu_model"},{"line_number":3962,"context_line":""},{"line_number":3963,"context_line":"    def _get_cpu_model_mapping(self, model):"},{"line_number":3964,"context_line":"        if not self.cpu_models_mapping:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_57b225e7","line":3961,"range":{"start_line":3961,"start_character":12,"end_line":3961,"end_character":66},"in_reply_to":"7faddb67_385f8776","updated":"2019-08-28 09:22:32.000000000","message":"The support of case-insensitive had been wrote in the spec. [1]\n\n[1]: https://github.com/openstack/nova-specs/blame/master/specs/train/approved/cpu-model-selection.rst#L94","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b6a580baf7e3f940f5940c62de789784fa9a7f54","unresolved":false,"context_lines":[{"line_number":4048,"context_line":""},{"line_number":4049,"context_line":"    def _match_cpu_model_by_flags(self, models, flags):"},{"line_number":4050,"context_line":"        for model in models:"},{"line_number":4051,"context_line":"            if (model in self.cpu_model_flag_mapping and"},{"line_number":4052,"context_line":"                flags.issubset(self.cpu_model_flag_mapping.get(model))):"},{"line_number":4053,"context_line":"                return model"},{"line_number":4054,"context_line":"            cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":4055,"context_line":"            cpu.arch \u003d self._host.get_capabilities().host.cpu.arch"},{"line_number":4056,"context_line":"            cpu.model \u003d model"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_58f28371","line":4053,"range":{"start_line":4051,"start_character":12,"end_line":4053,"end_character":28},"updated":"2019-08-26 05:27:54.000000000","message":"maybe can be simplified as:\n\nif flags.issubset(self.cpu_model_flag_mapping.get(model, set([])):\n     return model","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0f9d0906296abb1e5aaf9170fa46f24c0ea38f96","unresolved":false,"context_lines":[{"line_number":4048,"context_line":""},{"line_number":4049,"context_line":"    def _match_cpu_model_by_flags(self, models, flags):"},{"line_number":4050,"context_line":"        for model in models:"},{"line_number":4051,"context_line":"            if (model in self.cpu_model_flag_mapping and"},{"line_number":4052,"context_line":"                flags.issubset(self.cpu_model_flag_mapping.get(model))):"},{"line_number":4053,"context_line":"                return model"},{"line_number":4054,"context_line":"            cpu \u003d vconfig.LibvirtConfigCPU()"},{"line_number":4055,"context_line":"            cpu.arch \u003d self._host.get_capabilities().host.cpu.arch"},{"line_number":4056,"context_line":"            cpu.model \u003d model"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_17c90d50","line":4053,"range":{"start_line":4051,"start_character":12,"end_line":4053,"end_character":28},"in_reply_to":"7faddb67_58f28371","updated":"2019-08-28 09:22:32.000000000","message":"Done","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b6a580baf7e3f940f5940c62de789784fa9a7f54","unresolved":false,"context_lines":[{"line_number":4064,"context_line":""},{"line_number":4065,"context_line":"        msg \u003d (\u0027No CPU model match traits, models: {models}, required \u0027"},{"line_number":4066,"context_line":"               \u0027flags: {flags}\u0027.format(models\u003dmodels, flags\u003dflags))"},{"line_number":4067,"context_line":"        raise exception.InvalidCPUInfo(msg)"},{"line_number":4068,"context_line":""},{"line_number":4069,"context_line":"    def _get_guest_cpu_config(self, flavor, image_meta,"},{"line_number":4070,"context_line":"                              guest_cpu_numa_config, instance_numa_topology):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_d807531d","line":4067,"range":{"start_line":4067,"start_character":8,"end_line":4067,"end_character":43},"updated":"2019-08-26 05:27:54.000000000","message":"it will be great we have anywhere to talk about this, tell the user the improper config, may lead to the request being rejected.","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":3958,"context_line":"        else:"},{"line_number":3959,"context_line":"            mount.get_manager().host_down()"},{"line_number":3960,"context_line":""},{"line_number":3961,"context_line":"    def _build_cpu_model_mapping(self):"},{"line_number":3962,"context_line":"        cpu_models \u003d self._host.get_cpu_model_names()"},{"line_number":3963,"context_line":"        for cpu_model in cpu_models:"},{"line_number":3964,"context_line":"            self.cpu_models_mapping[cpu_model.lower()] \u003d cpu_model"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_2c6e3300","line":3961,"range":{"start_line":3961,"start_character":0,"end_line":3961,"end_character":39},"updated":"2019-08-28 15:49:09.000000000","message":"nit: I\u0027d personally fold this into \u0027_get_cpu_model_mapping\u0027","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":3958,"context_line":"        else:"},{"line_number":3959,"context_line":"            mount.get_manager().host_down()"},{"line_number":3960,"context_line":""},{"line_number":3961,"context_line":"    def _build_cpu_model_mapping(self):"},{"line_number":3962,"context_line":"        cpu_models \u003d self._host.get_cpu_model_names()"},{"line_number":3963,"context_line":"        for cpu_model in cpu_models:"},{"line_number":3964,"context_line":"            self.cpu_models_mapping[cpu_model.lower()] \u003d cpu_model"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_9ece6659","line":3961,"range":{"start_line":3961,"start_character":0,"end_line":3961,"end_character":39},"in_reply_to":"7faddb67_2c6e3300","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":3970,"context_line":""},{"line_number":3971,"context_line":"    def _get_guest_cpu_model_config(self, flavor\u003dNone):"},{"line_number":3972,"context_line":"        mode \u003d CONF.libvirt.cpu_mode"},{"line_number":3973,"context_line":"        models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":3974,"context_line":"                  for model in CONF.libvirt.cpu_models]"},{"line_number":3975,"context_line":"        extra_flags \u003d set([flag.lower() for flag in"},{"line_number":3976,"context_line":"            CONF.libvirt.cpu_model_extra_flags])"},{"line_number":3977,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_2c47137a","line":3974,"range":{"start_line":3973,"start_character":0,"end_line":3974,"end_character":55},"updated":"2019-08-28 15:49:09.000000000","message":"Any chance we could move this into \u0027_get_cpu_model_mapping\u0027 and rename it to \u0027_get_cpu_model_mappings\u0027? This is already rather complex","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c32f75f661fd0157be3879e460c3e9556d3d9238","unresolved":false,"context_lines":[{"line_number":3970,"context_line":""},{"line_number":3971,"context_line":"    def _get_guest_cpu_model_config(self, flavor\u003dNone):"},{"line_number":3972,"context_line":"        mode \u003d CONF.libvirt.cpu_mode"},{"line_number":3973,"context_line":"        models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":3974,"context_line":"                  for model in CONF.libvirt.cpu_models]"},{"line_number":3975,"context_line":"        extra_flags \u003d set([flag.lower() for flag in"},{"line_number":3976,"context_line":"            CONF.libvirt.cpu_model_extra_flags])"},{"line_number":3977,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_d5e7d4e2","line":3974,"range":{"start_line":3973,"start_character":0,"end_line":3974,"end_character":55},"in_reply_to":"7faddb67_20906c42","updated":"2019-08-29 13:15:59.000000000","message":"ack. Thanks for the info","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":3970,"context_line":""},{"line_number":3971,"context_line":"    def _get_guest_cpu_model_config(self, flavor\u003dNone):"},{"line_number":3972,"context_line":"        mode \u003d CONF.libvirt.cpu_mode"},{"line_number":3973,"context_line":"        models \u003d [self._get_cpu_model_mapping(model)"},{"line_number":3974,"context_line":"                  for model in CONF.libvirt.cpu_models]"},{"line_number":3975,"context_line":"        extra_flags \u003d set([flag.lower() for flag in"},{"line_number":3976,"context_line":"            CONF.libvirt.cpu_model_extra_flags])"},{"line_number":3977,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_20906c42","line":3974,"range":{"start_line":3973,"start_character":0,"end_line":3974,"end_character":55},"in_reply_to":"7faddb67_2c47137a","updated":"2019-08-29 08:10:31.000000000","message":"It\u0027s not a good idea to return a list in \u0027_get_cpu_model_mapping\u0027. The next patch will check the CPU model compatibility one by one, if we translate all models at once, then the check method\u0027s log may not same as admin\u0027s configuration.","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ef48b15be21f5bd54664f65c5e7fbe9f50a40f4b","unresolved":false,"context_lines":[{"line_number":4012,"context_line":"            msg \u003d _(\"Config requested custom CPU models, but no \""},{"line_number":4013,"context_line":"                    \"model names was provided\")"},{"line_number":4014,"context_line":"            raise exception.Invalid(msg)"},{"line_number":4015,"context_line":"        elif mode !\u003d \"custom\" and models:"},{"line_number":4016,"context_line":"            msg \u003d _(\"CPU model names should not be set when a \""},{"line_number":4017,"context_line":"                    \"host CPU model is requested\")"},{"line_number":4018,"context_line":"            raise exception.Invalid(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_2c15d349","line":4015,"range":{"start_line":4015,"start_character":8,"end_line":4015,"end_character":10},"updated":"2019-08-28 15:49:09.000000000","message":"unrelated: we could just change this to \u0027if\u0027","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"81b4c80543c03bf11e4288f64d3deb1eed9fa744","unresolved":false,"context_lines":[{"line_number":4012,"context_line":"            msg \u003d _(\"Config requested custom CPU models, but no \""},{"line_number":4013,"context_line":"                    \"model names was provided\")"},{"line_number":4014,"context_line":"            raise exception.Invalid(msg)"},{"line_number":4015,"context_line":"        elif mode !\u003d \"custom\" and models:"},{"line_number":4016,"context_line":"            msg \u003d _(\"CPU model names should not be set when a \""},{"line_number":4017,"context_line":"                    \"host CPU model is requested\")"},{"line_number":4018,"context_line":"            raise exception.Invalid(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_7eeccaba","line":4015,"range":{"start_line":4015,"start_character":8,"end_line":4015,"end_character":10},"in_reply_to":"7faddb67_2c15d349","updated":"2019-08-29 08:10:31.000000000","message":"Done","commit_id":"53862f99d7e1e8bcb9bcc71e76daac7faf8ae4c6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":4014,"context_line":"            msg \u003d _(\"Config requested custom CPU models, but no \""},{"line_number":4015,"context_line":"                    \"model names was provided\")"},{"line_number":4016,"context_line":"            raise exception.Invalid(msg)"},{"line_number":4017,"context_line":"        if mode !\u003d \"custom\" and models:"},{"line_number":4018,"context_line":"            msg \u003d _(\"CPU model names should not be set when a \""},{"line_number":4019,"context_line":"                    \"host CPU model is requested\")"},{"line_number":4020,"context_line":"            raise exception.Invalid(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_25124cfe","line":4017,"updated":"2019-09-05 11:11:27.000000000","message":"nit: adding a newline before this would be nice","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":4014,"context_line":"            msg \u003d _(\"Config requested custom CPU models, but no \""},{"line_number":4015,"context_line":"                    \"model names was provided\")"},{"line_number":4016,"context_line":"            raise exception.Invalid(msg)"},{"line_number":4017,"context_line":"        if mode !\u003d \"custom\" and models:"},{"line_number":4018,"context_line":"            msg \u003d _(\"CPU model names should not be set when a \""},{"line_number":4019,"context_line":"                    \"host CPU model is requested\")"},{"line_number":4020,"context_line":"            raise exception.Invalid(msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5faad753_54835a57","line":4017,"in_reply_to":"7faddb67_25124cfe","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"}],"nova/virt/libvirt/utils.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b6a580baf7e3f940f5940c62de789784fa9a7f54","unresolved":false,"context_lines":[{"line_number":594,"context_line":"    required_traits \u003d resource_request.all_required_traits"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    flags \u003d set()"},{"line_number":597,"context_line":"    for k, v in CPU_TRAITS_MAPPING.items():"},{"line_number":598,"context_line":"        if v in required_traits:"},{"line_number":599,"context_line":"            flags.add(k)"},{"line_number":600,"context_line":"    return flags"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_186f2bfd","line":597,"updated":"2019-08-26 05:27:54.000000000","message":"this is inefficient. Whatever we have required traits or not, or have required CPU traits or not, we will do a loop for all the known traits.\n\nCan we have a reverse mapping cache?\n\n\nI\u0027m also thinking whether we can put the required features into instance.cpu_model.features in the API layer and save to db, then we needn\u0027t parse it every time from the extra spec? But this can be done in the future, to do the improvement.","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"0f9d0906296abb1e5aaf9170fa46f24c0ea38f96","unresolved":false,"context_lines":[{"line_number":594,"context_line":"    required_traits \u003d resource_request.all_required_traits"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    flags \u003d set()"},{"line_number":597,"context_line":"    for k, v in CPU_TRAITS_MAPPING.items():"},{"line_number":598,"context_line":"        if v in required_traits:"},{"line_number":599,"context_line":"            flags.add(k)"},{"line_number":600,"context_line":"    return flags"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_f77311e7","line":597,"in_reply_to":"7faddb67_186f2bfd","updated":"2019-08-28 09:22:32.000000000","message":"Yes, we can create reversed mapping when service start.","commit_id":"e99ce7f0c88c20060cb47f31755baca684451cbb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"815cb4836204cc1685c6d17383c8237534d931a4","unresolved":false,"context_lines":[{"line_number":592,"context_line":""},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"def get_flags_by_flavor_specs(extra_specs):"},{"line_number":595,"context_line":"    resource_request \u003d scheduler_utils.ResourceRequest.from_extra_specs("},{"line_number":596,"context_line":"        extra_specs)"},{"line_number":597,"context_line":"    required_traits \u003d resource_request.all_required_traits"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    flags \u003d [TRAITS_CPU_MAPPING.get(trait) for trait in required_traits]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_352c28ab","line":596,"range":{"start_line":595,"start_character":0,"end_line":596,"end_character":20},"updated":"2019-08-29 13:28:50.000000000","message":"This needs to change because of [1]. Unfortunately, to use that you\u0027re going to need quite a few wrappers and that probably isn\u0027t necessary since all you care about in. It might easier to just do something like I\u0027m doing at [2]?\n\nAs an aside, we should probably standardize a function for \"get me all \u0027resources:\u0027 prefixed extra specs from the flavor, possibly as a property of the flavor attribute. That can be done later though\n\n[1] https://github.com/openstack/nova/commit/7abe83f6460b053985c45d5b7af2b0ed5b17b66a\n[2] https://review.opendev.org/#/c/671801/32/nova/virt/hardware.py@1478","commit_id":"3059accbaaf76345520ddb5036387540a8858508"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"07edfa19bd0120e40d1b23ec51f4a0d75e8f0f08","unresolved":false,"context_lines":[{"line_number":592,"context_line":""},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"def get_flags_by_flavor_specs(extra_specs):"},{"line_number":595,"context_line":"    resource_request \u003d scheduler_utils.ResourceRequest.from_extra_specs("},{"line_number":596,"context_line":"        extra_specs)"},{"line_number":597,"context_line":"    required_traits \u003d resource_request.all_required_traits"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    flags \u003d [TRAITS_CPU_MAPPING.get(trait) for trait in required_traits]"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_3043c8b2","line":596,"range":{"start_line":595,"start_character":0,"end_line":596,"end_character":20},"in_reply_to":"7faddb67_352c28ab","updated":"2019-08-30 06:59:31.000000000","message":"We can build a RequestSpec object(only have flavor) and use the object to init ResourceRequest.\n\nAgree with you, some special/frequently used properties can be parsed and placed in the flavor\u0027s attribute(or somewhere else).","commit_id":"3059accbaaf76345520ddb5036387540a8858508"}],"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":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    replace configuration item: ``[libvirt] cpu_model`` to"},{"line_number":5,"context_line":"    ``[libvirt] cpu_models``, which is an ordered list of CPU models the host"},{"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":"upgrades:"},{"line_number":10,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_05c5d05b","line":7,"range":{"start_line":7,"start_character":52,"end_line":7,"end_character":66},"updated":"2019-09-05 11:11:27.000000000","message":"This doesn\u0027t exist.","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    replace configuration item: ``[libvirt] cpu_model`` to"},{"line_number":5,"context_line":"    ``[libvirt] cpu_models``, which is an ordered list of CPU models the host"},{"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":"upgrades:"},{"line_number":10,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5faad753_74d69652","line":7,"range":{"start_line":7,"start_character":52,"end_line":7,"end_character":66},"in_reply_to":"7faddb67_05c5d05b","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    replace configuration item: ``[libvirt] cpu_model`` to"},{"line_number":5,"context_line":"    ``[libvirt] cpu_models``, which is an ordered list of CPU models the host"},{"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":"upgrades:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    The ``[libvirt] cpu_model`` has been renamed to ``[libvirt] cpu_models``"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_65ca846e","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":44},"updated":"2019-09-05 11:11:27.000000000","message":"This still reads poorly. How about:\n\n  It is now possible to specify an ordered list of CPU models in the\n  ``[libvirt] cpu_models`` config option. If ``[libvirt] cpu_mode``\n  is set to ``custom``, the libvirt driver will select the first\n  CPU model in this list that can provide the required feature\n  traits.","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    replace configuration item: ``[libvirt] cpu_model`` to"},{"line_number":5,"context_line":"    ``[libvirt] cpu_models``, which is an ordered list of CPU models the host"},{"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":"upgrades:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    The ``[libvirt] cpu_model`` has been renamed to ``[libvirt] cpu_models``"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5faad753_54d11a57","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":44},"in_reply_to":"7faddb67_65ca846e","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6ce9c1ac91c16ea0f42f65f4d264a6f0b31bc237","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    can provide the required feature traits."},{"line_number":9,"context_line":"upgrades:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    The ``[libvirt] cpu_model`` has been renamed to ``[libvirt] cpu_models``"},{"line_number":12,"context_line":"    and now accepts a list of CPUs."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_c5a018a8","line":11,"range":{"start_line":11,"start_character":31,"end_line":11,"end_character":32},"updated":"2019-09-05 11:11:27.000000000","message":"config option","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"},{"author":{"_account_id":27614,"name":"ya.wang","email":"me@littleya.com","username":"ya.wang"},"change_message_id":"2125581f31336bf9a32e0118209898d8c8f5b176","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    can provide the required feature traits."},{"line_number":9,"context_line":"upgrades:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    The ``[libvirt] cpu_model`` has been renamed to ``[libvirt] cpu_models``"},{"line_number":12,"context_line":"    and now accepts a list of CPUs."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5faad753_14cba2a5","line":11,"range":{"start_line":11,"start_character":31,"end_line":11,"end_character":32},"in_reply_to":"7faddb67_c5a018a8","updated":"2019-09-06 06:33:46.000000000","message":"Done","commit_id":"b7b9fd83587eac527c1f429b9a8b803e7edae43b"}]}
