)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"5b2afec78ef237121afd3a2e5c03a5d041bf94e4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"To mitigate the problem , we use cpu_models to replace cpu_model, where"},{"line_number":16,"context_line":"cpu_models is an ordered list of CPU models the host supports. The list"},{"line_number":17,"context_line":"is ordered so that the more common and less advanced CPU models are"},{"line_number":18,"context_line":"listed earlier. End users specify CPU models they required through"},{"line_number":19,"context_line":"traits, libvirt driver then select the first one in the list that can"},{"line_number":20,"context_line":"provide the required feature traits. This would make it more likely that"},{"line_number":21,"context_line":"the instance could be live-migrated later on."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_f104b1c6","line":18,"range":{"start_line":18,"start_character":38,"end_line":18,"end_character":44},"updated":"2018-12-13 20:44:13.000000000","message":"features, not models","commit_id":"d8fabbbf99f7fa31a2e8f90d8af9382d2972194c"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"13669647193bcc38e85cc2cb608160361b521028","unresolved":false,"context_lines":[{"line_number":15,"context_line":"To mitigate the problem , we use cpu_models to replace cpu_model, where"},{"line_number":16,"context_line":"cpu_models is an ordered list of CPU models the host supports. The list"},{"line_number":17,"context_line":"is ordered so that the more common and less advanced CPU models are"},{"line_number":18,"context_line":"listed earlier. End users specify CPU models they required through"},{"line_number":19,"context_line":"traits, libvirt driver then select the first one in the list that can"},{"line_number":20,"context_line":"provide the required feature traits. This would make it more likely that"},{"line_number":21,"context_line":"the instance could be live-migrated later on."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_3159c967","line":18,"range":{"start_line":18,"start_character":38,"end_line":18,"end_character":44},"in_reply_to":"3f79a3b5_f104b1c6","updated":"2018-12-18 15:52:12.000000000","message":"Done","commit_id":"d8fabbbf99f7fa31a2e8f90d8af9382d2972194c"}],"specs/stein/approved/cpu-model-selection.rst":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Currently we uses cpu_model in nova.conf (when cpu_mode is set to ``custom``)"},{"line_number":17,"context_line":"to specify the CPU model the instance should use on this host. This could have"},{"line_number":18,"context_line":"implications on availability of compute nodes for live migration if you ended"},{"line_number":19,"context_line":"up with an ``advanced`` CPU model when all you really cared about was an older"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_41e545ce","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":17},"updated":"2018-12-05 16:52:01.000000000","message":"should be \"use\"","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Currently we uses cpu_model in nova.conf (when cpu_mode is set to ``custom``)"},{"line_number":17,"context_line":"to specify the CPU model the instance should use on this host. This could have"},{"line_number":18,"context_line":"implications on availability of compute nodes for live migration if you ended"},{"line_number":19,"context_line":"up with an ``advanced`` CPU model when all you really cared about was an older"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_8a3002ec","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":17},"in_reply_to":"3f79a3b5_41e545ce","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"8b5975d0333e14839cf8d1395ff61795f85e5192","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Currently we uses cpu_model in nova.conf (when cpu_mode is set to ``custom``)"},{"line_number":17,"context_line":"to specify the CPU model the instance should use on this host. This could have"},{"line_number":18,"context_line":"implications on availability of compute nodes for live migration if you ended"},{"line_number":19,"context_line":"up with an ``advanced`` CPU model when all you really cared about was an older"},{"line_number":20,"context_line":"feature flag."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Use Cases"},{"line_number":23,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_cdac8daa","line":20,"range":{"start_line":17,"start_character":63,"end_line":20,"end_character":12},"updated":"2019-02-18 10:02:54.000000000","message":"(I had this comment sitting since November, I just didn\u0027t \u0027hit send\u0027, sigh.)\n\nSo yes, to precisely solve that libvirt provides the baselineCPU()—and since libvirt 4.4.0, the recommended variant of it baselineHypervisorCPU() API—to figure out a lowest common denominator among the given CPUs.\n\nIf you, as an operator, know the hosts inside out, then you can even \"craft\" a model + CPU features across your bespoke environment.  It is painful, but real customers already do this today.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"---------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"As a user, I would like to boot an instance on a host supporting specific CPU"},{"line_number":26,"context_line":"features and be able to live migrate the instance to other hosts that also"},{"line_number":27,"context_line":"support the specific CPU features."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_e18d71da","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":37},"updated":"2018-12-05 16:52:01.000000000","message":"only admins can live-migrate, so it\u0027d be more accurate to say something like \"and for the instance to be live-migrateable to as many other hosts as possible that also support...\"","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":23,"context_line":"---------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"As a user, I would like to boot an instance on a host supporting specific CPU"},{"line_number":26,"context_line":"features and be able to live migrate the instance to other hosts that also"},{"line_number":27,"context_line":"support the specific CPU features."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ea9ad672","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":37},"in_reply_to":"3f79a3b5_e18d71da","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace cpu_model with cpu_models which is an ordered list of CPU models the"},{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_411305b2","line":34,"range":{"start_line":33,"start_character":15,"end_line":34,"end_character":30},"updated":"2018-12-05 16:52:01.000000000","message":"The list would be created by the operator, so we can\u0027t actually specify the order of the list.  It would be more accurate to say \"It is expected that the list is ordered...\"","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace cpu_model with cpu_models which is an ordered list of CPU models the"},{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_0a9e3267","line":34,"range":{"start_line":33,"start_character":15,"end_line":34,"end_character":30},"in_reply_to":"3f79a3b5_411305b2","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace cpu_model with cpu_models which is an ordered list of CPU models the"},{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_c17cf5ea","line":35,"range":{"start_line":34,"start_character":31,"end_line":35,"end_character":15},"updated":"2018-12-05 16:52:01.000000000","message":"Technically end users wouldn\u0027t specify CPU *models*, they would specify the CPU *features* they require.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"47d23a6cc83ba4665ffa6b5f7012816af135d8e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace cpu_model with cpu_models which is an ordered list of CPU models the"},{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_db30cb57","line":35,"range":{"start_line":34,"start_character":31,"end_line":35,"end_character":15},"updated":"2018-11-30 11:08:29.000000000","message":"i have some concerns about this.\n\nthere have been several attempts to enable this in the past\nthis being the most recent https://review.openstack.org/#/c/387295/2/specs/ocata/approved/modify-cpu-mode-precedence.rst. i was in favor of that proposal by the way.\n\nmy concern is that in a public cloud env the teant would require knoladge of the infrastucture of the cloud\nand would have to use that knolage in a non portable way to request the cpus model or cpus features they want.\n\nspecifically ignoring the fact that placement is an admin only api so teantas can deterim what traits are available currently the only way for a non privaladed use to supply traits is via glance image.\n\nhttps://github.com/openstack/nova-specs/blob/master/specs/rocky/implemented/glance-image-traits.rst\n\nfor the feature flag we would have to change the meaning of\nthe existing feature flags traits\n\nhttps://github.com/openstack/os-traits/blob/master/os_traits/hw/cpu/x86.py#L17-L64\nand\nhttps://github.com/openstack/os-traits/blob/master/os_traits/hw/cpu/aarch64.py#L18-L66\n\nfrom this host support feature x to \nthis host support feature x and the hypervisors can expose feature x and will exposes it to the guest.\n\nwhen we consider cpu_models instead of cpu features we would have to consider interoperability.\n\nwe can either standardize them in os-traits requiring the creationg of a vendor specific namesapce to list all vendor models or the use of CUSTOM_TRAITS meaning there is not interoperablity between clouds.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace cpu_model with cpu_models which is an ordered list of CPU models the"},{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_aa093e34","line":35,"range":{"start_line":34,"start_character":31,"end_line":35,"end_character":15},"in_reply_to":"3f79a3b5_c17cf5ea","updated":"2018-12-10 16:11:14.000000000","message":"Added reference to report-cpu-features-as-traits.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace cpu_model with cpu_models which is an ordered list of CPU models the"},{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_6165e149","line":35,"range":{"start_line":34,"start_character":31,"end_line":35,"end_character":15},"in_reply_to":"3f79a3b5_db30cb57","updated":"2018-12-05 16:52:01.000000000","message":"The CPU features are already exposed as traits as part of https://specs.openstack.org/openstack/nova-specs/specs/rocky/implemented/report-cpu-features-as-traits.html\n\nIn libvirt, currently the exposed traits depend on the configured mode/model.  With this proposed change, we would expose a superset of the traits of all the models in the \"cpu_model\" list.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_01c50d09","line":36,"range":{"start_line":36,"start_character":37,"end_line":36,"end_character":74},"updated":"2018-12-05 16:52:01.000000000","message":"We\u0027d probably want to add a note that any extra flags specified in cpu_model_extra_flags would need to be compatible with *all* models in the \"cpu_models\" list.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":33,"context_line":"host supports. The list is ordered so that the more common and less advanced"},{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_706554e3","line":36,"range":{"start_line":36,"start_character":37,"end_line":36,"end_character":74},"in_reply_to":"3f79a3b5_01c50d09","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_a1c5390a","line":37,"range":{"start_line":37,"start_character":36,"end_line":37,"end_character":39},"updated":"2018-12-05 16:52:01.000000000","message":"should be \"the instance\"","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":34,"context_line":"CPU models are listed earlier. End users specify CPU models they required"},{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_d07228af","line":37,"range":{"start_line":37,"start_character":36,"end_line":37,"end_character":39},"in_reply_to":"3f79a3b5_a1c5390a","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d61e467eae493b3ab1705cffdb1bbcf97de7c24a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_c1b15592","line":38,"updated":"2018-12-05 16:52:01.000000000","message":"It is implicit in the above description, but we might want to explicitly state that if no CPU feature traits are specified then the instance will be configured with the first CPU model in the list.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":35,"context_line":"through traits, libvirt driver then select the first one in the list that can"},{"line_number":36,"context_line":"provide the required feature traits (cpu_model_extra_flags is also checked)."},{"line_number":37,"context_line":"This would make it more likely that you could live-migrate later on."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_909d90ba","line":38,"in_reply_to":"3f79a3b5_c1b15592","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"22c9490951a74f20d83194f9bcea8213aa5f9790","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Negligible."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Other deployer impact"},{"line_number":76,"context_line":"---------------------"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"None"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Developer impact"},{"line_number":81,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ffb428f6","line":78,"range":{"start_line":75,"start_character":0,"end_line":78,"end_character":4},"updated":"2018-12-05 18:15:42.000000000","message":"We would want to add some information in the config option help text indicating that the operator should be careful to only specify models which can be fully supported in hardware.  If they specify models with CPU features that are emulated by qemu it could result in performance degredation.","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ea53a78462da75d8c58d62f90cb843df6aab2dac","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Negligible."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Other deployer impact"},{"line_number":76,"context_line":"---------------------"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"None"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Developer impact"},{"line_number":81,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_70e8f412","line":78,"range":{"start_line":75,"start_character":0,"end_line":78,"end_character":4},"in_reply_to":"3f79a3b5_ffb428f6","updated":"2018-12-10 16:11:14.000000000","message":"Done","commit_id":"e7f64df008f1fa0e425489b7074d7e94944a7cb1"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3e8d04e3ecca73fde1e93413fd8e67f6c6b1e92f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Upgrade impact"},{"line_number":94,"context_line":"--------------"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The operator needs to set the config option appropriately after an upgrade."},{"line_number":97,"context_line":"cpu_model should be replaced by an ordered list of cpu_models with the old"},{"line_number":98,"context_line":"cpu_model being the last on the list."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Implementation"},{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_f3b40e20","line":98,"range":{"start_line":96,"start_character":0,"end_line":98,"end_character":37},"updated":"2018-12-10 16:50:40.000000000","message":"if unset cpu_models should default to the value of cpu_model\nso that we maintain the same behavior without requiring config changes on upgrade.\n\nwe can remove the shim when we drop the cpu_model option.","commit_id":"4782311a79a4b44e988045a7f9fdcc096aa0af51"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"13669647193bcc38e85cc2cb608160361b521028","unresolved":false,"context_lines":[{"line_number":93,"context_line":"Upgrade impact"},{"line_number":94,"context_line":"--------------"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"The operator needs to set the config option appropriately after an upgrade."},{"line_number":97,"context_line":"cpu_model should be replaced by an ordered list of cpu_models with the old"},{"line_number":98,"context_line":"cpu_model being the last on the list."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Implementation"},{"line_number":101,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_579a87c2","line":98,"range":{"start_line":96,"start_character":0,"end_line":98,"end_character":37},"in_reply_to":"3f79a3b5_f3b40e20","updated":"2018-12-18 15:52:12.000000000","message":"Done","commit_id":"4782311a79a4b44e988045a7f9fdcc096aa0af51"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3e8d04e3ecca73fde1e93413fd8e67f6c6b1e92f","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* Conf: define [libvirt]cpu_models to replace [libvirt]cpu_model."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* Add a new scheduler filter ``CpuModelFilter`` in which host_passes() returns"},{"line_number":114,"context_line":"  True when the host CPU model is newer than or equal to the guest CPU model as"},{"line_number":115,"context_line":"  specified in the instance type."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Add/modify unit tests."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_b3469655","line":115,"range":{"start_line":113,"start_character":0,"end_line":115,"end_character":33},"updated":"2018-12-10 16:50:40.000000000","message":"why do we need a schduler filter.\nwe should be able to filter placement side.\nby the time we get to the schduler we will already know the host has teh correct traits.\n\nthe virt driver will need to be modified to determin the first model in the list tha that supprot the requested features but the scheduler should not care.","commit_id":"4782311a79a4b44e988045a7f9fdcc096aa0af51"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"13669647193bcc38e85cc2cb608160361b521028","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* Conf: define [libvirt]cpu_models to replace [libvirt]cpu_model."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"* Add a new scheduler filter ``CpuModelFilter`` in which host_passes() returns"},{"line_number":114,"context_line":"  True when the host CPU model is newer than or equal to the guest CPU model as"},{"line_number":115,"context_line":"  specified in the instance type."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"* Add/modify unit tests."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_17a88fd7","line":115,"range":{"start_line":113,"start_character":0,"end_line":115,"end_character":33},"in_reply_to":"3f79a3b5_b3469655","updated":"2018-12-18 15:52:12.000000000","message":"removed","commit_id":"4782311a79a4b44e988045a7f9fdcc096aa0af51"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"5b2afec78ef237121afd3a2e5c03a5d041bf94e4","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace ``cpu_model`` with ``cpu_models`` which is an ordered list of CPU"},{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier. Any extra flags"},{"line_number":35,"context_line":"specified in cpu_model_extra_flags would need to be compatible with *all*"},{"line_number":36,"context_line":"models in the ``cpu_models`` list."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":39,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will filter the ordered list of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_d1c2d555","line":36,"range":{"start_line":34,"start_character":61,"end_line":36,"end_character":34},"updated":"2018-12-13 20:44:13.000000000","message":"what happens if an extra flag is specified that isn\u0027t compatible with all the models in the list?  would we fail to start, ignore the models it\u0027s not compatible with, or ignore the cpu_model_extra_flags?\n\nSimilarly, what happens if both cpu_model and cpu_models are set?","commit_id":"d8fabbbf99f7fa31a2e8f90d8af9382d2972194c"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"13669647193bcc38e85cc2cb608160361b521028","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace ``cpu_model`` with ``cpu_models`` which is an ordered list of CPU"},{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier. Any extra flags"},{"line_number":35,"context_line":"specified in cpu_model_extra_flags would need to be compatible with *all*"},{"line_number":36,"context_line":"models in the ``cpu_models`` list."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":39,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will filter the ordered list of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_73ba9a0c","line":36,"range":{"start_line":34,"start_character":61,"end_line":36,"end_character":34},"in_reply_to":"3f79a3b5_d1c2d555","updated":"2018-12-18 15:52:12.000000000","message":"\u003e what happens if an extra flag is specified that isn\u0027t compatible\n \u003e with all the models in the list?  would we fail to start, ignore\n \u003e the models it\u0027s not compatible with, or ignore the\n \u003e cpu_model_extra_flags?\n \u003e \n \u003e Similarly, what happens if both cpu_model and cpu_models are set?\nextra flag and the selected model should be validated by host.compare_cpu() and fail to start if they are not compatible.\ncpu_model is replaced by cpu_models so if both are set the cpu_model should be ignored.","commit_id":"d8fabbbf99f7fa31a2e8f90d8af9382d2972194c"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"5b2afec78ef237121afd3a2e5c03a5d041bf94e4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"models in the ``cpu_models`` list."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":39,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will filter the ordered list of"},{"line_number":40,"context_line":"CPU models based on the union of required feature traits with"},{"line_number":41,"context_line":"``cpu_model_extra_flags`` and select the first CPU model that passed. This"},{"line_number":42,"context_line":"would make it more likely that the instance could be live-migrated later on."},{"line_number":43,"context_line":"If no CPU feature traits are specified then the instance will be configured"},{"line_number":44,"context_line":"with the first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_b1739950","line":41,"range":{"start_line":39,"start_character":48,"end_line":41,"end_character":25},"updated":"2018-12-13 20:44:13.000000000","message":"This is wrong.  The required feature traits describe what the user wants.\n\nThe cpu_model_extra_flags impact which traits are *provided*, as they get added on to the CPU features which are normally enabled by the specified models.","commit_id":"d8fabbbf99f7fa31a2e8f90d8af9382d2972194c"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"13669647193bcc38e85cc2cb608160361b521028","unresolved":false,"context_lines":[{"line_number":36,"context_line":"models in the ``cpu_models`` list."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":39,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will filter the ordered list of"},{"line_number":40,"context_line":"CPU models based on the union of required feature traits with"},{"line_number":41,"context_line":"``cpu_model_extra_flags`` and select the first CPU model that passed. This"},{"line_number":42,"context_line":"would make it more likely that the instance could be live-migrated later on."},{"line_number":43,"context_line":"If no CPU feature traits are specified then the instance will be configured"},{"line_number":44,"context_line":"with the first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_13b32638","line":41,"range":{"start_line":39,"start_character":48,"end_line":41,"end_character":25},"in_reply_to":"3f79a3b5_b1739950","updated":"2018-12-18 15:52:12.000000000","message":"fixed","commit_id":"d8fabbbf99f7fa31a2e8f90d8af9382d2972194c"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"9561066fa35ad0b11f30e1d43f0017dcc650e226","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":39,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will select the first CPU model"},{"line_number":40,"context_line":"in the ``cpu_models`` list that can provide the required feature traits. This"},{"line_number":41,"context_line":"would make it more likely that the instance could be live-migrated later on."},{"line_number":42,"context_line":"If no CPU feature traits are specified then the instance will be configured"},{"line_number":43,"context_line":"with the first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_a163f9df","line":40,"range":{"start_line":40,"start_character":7,"end_line":40,"end_character":72},"updated":"2018-12-18 19:33:17.000000000","message":"If cpu_model_extra_flags is specified, then that should be combined with the CPU model *before* checking whether it can provide the required feature traits.  Otherwise, someone asking for a feature trait provided by cpu_model_extra_flags might spuriously fail.","commit_id":"6c56474974ddbb2e595bba2a4ad3461043af565b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"981177c660af0ad84c1a3e40bd62c96d58a2827f","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":39,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will select the first CPU model"},{"line_number":40,"context_line":"in the ``cpu_models`` list that can provide the required feature traits. This"},{"line_number":41,"context_line":"would make it more likely that the instance could be live-migrated later on."},{"line_number":42,"context_line":"If no CPU feature traits are specified then the instance will be configured"},{"line_number":43,"context_line":"with the first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3f79a3b5_9a02e20c","line":40,"range":{"start_line":40,"start_character":7,"end_line":40,"end_character":72},"in_reply_to":"3f79a3b5_a163f9df","updated":"2018-12-18 23:03:19.000000000","message":"fixed","commit_id":"6c56474974ddbb2e595bba2a4ad3461043af565b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf40bd2d4809f32a25ea61c17b883a53ac9ad30","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Proposed change"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace ``cpu_model`` with ``cpu_models`` which is an ordered list of CPU"},{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_d076f991","line":32,"range":{"start_line":32,"start_character":29,"end_line":32,"end_character":39},"updated":"2018-12-18 23:55:12.000000000","message":"we should mention that the reported cpu feature traits will be the union of features of all the cpu models","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"e0e967516b70c2177200b8c0fc996aecf19f95d6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Proposed change"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace ``cpu_model`` with ``cpu_models`` which is an ordered list of CPU"},{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_c5638145","line":32,"range":{"start_line":32,"start_character":29,"end_line":32,"end_character":39},"in_reply_to":"3f79a3b5_6f160e5a","updated":"2018-12-20 03:03:19.000000000","message":"Done. Added to line 34.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bf834f801ef318154a7afa9577043f8c55586274","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Proposed change"},{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Replace ``cpu_model`` with ``cpu_models`` which is an ordered list of CPU"},{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_6f160e5a","line":32,"range":{"start_line":32,"start_character":29,"end_line":32,"end_character":39},"in_reply_to":"3f79a3b5_d076f991","updated":"2018-12-20 00:10:22.000000000","message":"@Jack, I guess you forget this comment.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6ae87e29931a1539ac06997170c843d5a9ecb542","unresolved":false,"context_lines":[{"line_number":41,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":42,"context_line":"first CPU model in the list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_35295f83","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":61},"updated":"2018-12-18 23:08:15.000000000","message":"nit: maybe note that this is specific to the libvirt driver.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ed35c3427e37753def894c0e2952ea897998d721","unresolved":false,"context_lines":[{"line_number":41,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":42,"context_line":"first CPU model in the list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_75def73d","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":61},"in_reply_to":"3f79a3b5_35295f83","updated":"2018-12-18 23:21:53.000000000","message":"You mean host.compute_cpu() is only for libvirt driver or do you mean the entire spec only applies to libvirt driver?","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f330959780dd6925e14b262c20d52cfcff0e37f5","unresolved":false,"context_lines":[{"line_number":41,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":42,"context_line":"first CPU model in the list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_cc541a26","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":61},"in_reply_to":"3f79a3b5_706125d5","updated":"2018-12-19 15:18:13.000000000","message":"Agreed, especially since I forgot about that. :)\n\nI saw a mention of \"cpu_model\" in the xen virt driver, but it\u0027s not used the same way.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf40bd2d4809f32a25ea61c17b883a53ac9ad30","unresolved":false,"context_lines":[{"line_number":41,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":42,"context_line":"first CPU model in the list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_706125d5","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":61},"in_reply_to":"3f79a3b5_75def73d","updated":"2018-12-18 23:55:12.000000000","message":"the configs of CONF.libvirt.cpu_model and CONF.libvirt.cpu_mode are libvirt specific. So I think this spec is specific to the libvirt. Maybe we should clear this in the beginning.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"47867540e59a735b82a65f502b64cfa2c771d71a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":42,"context_line":"first CPU model in the list."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_ce5debe5","line":45,"range":{"start_line":44,"start_character":0,"end_line":45,"end_character":61},"in_reply_to":"3f79a3b5_cc541a26","updated":"2018-12-19 17:39:39.000000000","message":"added a note at the beginning.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf40bd2d4809f32a25ea61c17b883a53ac9ad30","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":51,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_50a989d8","line":48,"range":{"start_line":46,"start_character":60,"end_line":48,"end_character":14},"updated":"2018-12-18 23:55:12.000000000","message":"we probably needn\u0027t this. Any extra flag can be added to any model as I understand. For example, people wants to add pcid flag to old model to avoid the performance reduce. This is the use-case of cpu_model_extra_flags. Kashyap can help on ensuring this.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7fef3a9716633a33a25a1b0aee8356060d1ac12a","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":51,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_716d96cc","line":48,"range":{"start_line":46,"start_character":60,"end_line":48,"end_character":14},"in_reply_to":"3f79a3b5_4e06bb75","updated":"2018-12-19 17:58:18.000000000","message":"Okay, so the error check would catch the case where the operator specifies a cpu_model and cpu_model_extra_flags combination that can\u0027t be satisfied by the actual host CPU.\n\nI guess if we wanted to check whether the hypervisor could do it we could use CompareHypervisorCPU, but that would be a new check and can be dealt with separately.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f330959780dd6925e14b262c20d52cfcff0e37f5","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":51,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_ec07961f","line":48,"range":{"start_line":46,"start_character":60,"end_line":48,"end_character":14},"in_reply_to":"3f79a3b5_50a989d8","updated":"2018-12-19 15:18:13.000000000","message":"I think it\u0027s possible to specify combinations that are not valid...for example, a new feature that\u0027s only available on (say) Skylake might not be valid to add to an IvyBridge model.  In this case I\u0027d expect libvirt or qemu to choke on it, so I think we\u0027d want to catch that as early as possible rather than have a mysterious failure later on.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bf834f801ef318154a7afa9577043f8c55586274","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":51,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_b2a809d7","line":48,"range":{"start_line":46,"start_character":60,"end_line":48,"end_character":14},"in_reply_to":"3f79a3b5_716d96cc","updated":"2018-12-20 00:10:22.000000000","message":"I see now, agree with Chris, it can be added later. Since there is no check for cpu_model_extra_flags also.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"47867540e59a735b82a65f502b64cfa2c771d71a","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":45,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":46,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":47,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":48,"context_line":"configuration."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":51,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_4e06bb75","line":48,"range":{"start_line":46,"start_character":60,"end_line":48,"end_character":14},"in_reply_to":"3f79a3b5_ec07961f","updated":"2018-12-19 17:39:39.000000000","message":"host.compare_cpu() checks if cpu_model+flags combination is supported by the *host* cpu, not qemu/kvm binary. In case of pcid flag, if is not declared in cpu_map.xml but supported by physical cpu, the host.compare_cpu() should consider it valid.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cdf40bd2d4809f32a25ea61c17b883a53ac9ad30","unresolved":false,"context_lines":[{"line_number":93,"context_line":"operator should be careful to only specify models which can be fully supported"},{"line_number":94,"context_line":"in hardware. If they specify models with CPU features that are emulated by qemu"},{"line_number":95,"context_line":"it could result in performance degredation."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Developer impact"},{"line_number":98,"context_line":"----------------"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_10e6b14a","line":96,"updated":"2018-12-18 23:55:12.000000000","message":"so I guess, we want to deprecate cpu_model config in this release?","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"47867540e59a735b82a65f502b64cfa2c771d71a","unresolved":false,"context_lines":[{"line_number":93,"context_line":"operator should be careful to only specify models which can be fully supported"},{"line_number":94,"context_line":"in hardware. If they specify models with CPU features that are emulated by qemu"},{"line_number":95,"context_line":"it could result in performance degredation."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Developer impact"},{"line_number":98,"context_line":"----------------"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_4e547b55","line":96,"in_reply_to":"3f79a3b5_10e6b14a","updated":"2018-12-19 17:39:39.000000000","message":"yes. I added it to the work items.","commit_id":"64c8022a2e8283d3d782d228d2dd7249e62483ee"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7fef3a9716633a33a25a1b0aee8356060d1ac12a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"up with an ``advanced`` CPU model when all you really cared about was an older"},{"line_number":20,"context_line":"feature flag."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. note:: This is specific to libvirt driver."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_ee56a72c","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":45},"updated":"2018-12-19 17:58:18.000000000","message":"This might make more sense to just include in the first sentence of the problem description.\n\n\"In the libvirt virt driver, currently we use the cpu_model...\"","commit_id":"7d1a6b94d857f04b12031060539f1b1d2ad169f9"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"c7e9981c3b4aa1602fdccc0873f15dbd94169aa5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"up with an ``advanced`` CPU model when all you really cared about was an older"},{"line_number":20,"context_line":"feature flag."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":".. note:: This is specific to libvirt driver."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_f74c36cb","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":45},"in_reply_to":"3f79a3b5_ee56a72c","updated":"2018-12-19 20:33:57.000000000","message":"Done","commit_id":"7d1a6b94d857f04b12031060539f1b1d2ad169f9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bf834f801ef318154a7afa9577043f8c55586274","unresolved":false,"context_lines":[{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"End users specify CPU features they required through traits [1]_, for example::"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    openstack flavor set 1 --property trait:HW_CPU_X86_AVX\u003drequired --property trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"If the ``cpu_mode`` is set to *custom*, libvirt driver will select the first"},{"line_number":41,"context_line":"CPU model in the ``cpu_models`` list (combined with ``cpu_model_extra_flags``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_124a1d58","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":109},"updated":"2018-12-20 00:10:22.000000000","message":"maybe you can move this example to line 46, and show for this request, which kind of cpu model will be chosen.","commit_id":"7637025ee5426f6ad6059ae2443c3cc99c2ec556"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"e0e967516b70c2177200b8c0fc996aecf19f95d6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"models the host supports. It is expected that the list is ordered so that the"},{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"End users specify CPU features they required through traits [1]_, for example::"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    openstack flavor set 1 --property trait:HW_CPU_X86_AVX\u003drequired --property trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"If the ``cpu_mode`` is set to *custom*, libvirt driver will select the first"},{"line_number":41,"context_line":"CPU model in the ``cpu_models`` list (combined with ``cpu_model_extra_flags``"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_85426993","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":109},"in_reply_to":"3f79a3b5_124a1d58","updated":"2018-12-20 03:03:19.000000000","message":"Done","commit_id":"7637025ee5426f6ad6059ae2443c3cc99c2ec556"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14f17cb11be86d2825f7fd7816fbc4d08542529b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"---------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"As a user, I would like to boot an instance on a host supporting specific CPU"},{"line_number":26,"context_line":"features and for the instance to be live-migrateable to as many other hosts as"},{"line_number":27,"context_line":"possible that also support the instance."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_6f76ff0c","line":26,"range":{"start_line":26,"start_character":41,"end_line":26,"end_character":52},"updated":"2018-12-20 16:47:24.000000000","message":"migratable","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ce23804a7f258ad28ce81eec5964382f996e6f4e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"---------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"As a user, I would like to boot an instance on a host supporting specific CPU"},{"line_number":26,"context_line":"features and for the instance to be live-migrateable to as many other hosts as"},{"line_number":27,"context_line":"possible that also support the instance."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_847c9d21","line":26,"range":{"start_line":26,"start_character":41,"end_line":26,"end_character":52},"in_reply_to":"3f79a3b5_6f76ff0c","updated":"2018-12-20 17:12:58.000000000","message":"Done","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14f17cb11be86d2825f7fd7816fbc4d08542529b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier. The reported cpu"},{"line_number":35,"context_line":"feature traits will be the union of features of all the cpu models."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":38,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will select the first CPU model"},{"line_number":39,"context_line":"in the ``cpu_models`` list (combined with ``cpu_model_extra_flags`` if it is"},{"line_number":40,"context_line":"specified) that can provide the required feature traits. This would make it"},{"line_number":41,"context_line":"more likely that the instance could be live-migrated later on. If no CPU"},{"line_number":42,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":43,"context_line":"first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_04a96dd9","line":40,"range":{"start_line":37,"start_character":66,"end_line":40,"end_character":55},"updated":"2018-12-20 16:47:24.000000000","message":"Given that libvirt is able to do this, why do we even need ``cpu_modes``? Couldn\u0027t libvirt just iterate through a list of supported CPUs to find the absolute minimum model that supports the flag?\n\nAlternatively, if libvirt doesn\u0027t know what that ordered list is, couldn\u0027t we just hardcode that somewhere (on a per-architecture basis, of course)? It would be pretty easy to exclude CPUs from this list for a given host by comparing our host CPU vs. each CPU in this list.","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ce23804a7f258ad28ce81eec5964382f996e6f4e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier. The reported cpu"},{"line_number":35,"context_line":"feature traits will be the union of features of all the cpu models."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":38,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will select the first CPU model"},{"line_number":39,"context_line":"in the ``cpu_models`` list (combined with ``cpu_model_extra_flags`` if it is"},{"line_number":40,"context_line":"specified) that can provide the required feature traits. This would make it"},{"line_number":41,"context_line":"more likely that the instance could be live-migrated later on. If no CPU"},{"line_number":42,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":43,"context_line":"first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_e414719c","line":40,"range":{"start_line":37,"start_character":66,"end_line":40,"end_character":55},"in_reply_to":"3f79a3b5_04a96dd9","updated":"2018-12-20 17:12:58.000000000","message":"I think the advantage to use ``cpu_models`` in conf is to allow admin to have some control over what type of cpus guest can use. For example, admin might want to exclude noTSX models in intel chips for performance, or exclude certain models for security concerns.","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f76c9151797b2c08d53b88bb163f99885bc297bf","unresolved":false,"context_lines":[{"line_number":34,"context_line":"more common and less advanced CPU models are listed earlier. The reported cpu"},{"line_number":35,"context_line":"feature traits will be the union of features of all the cpu models."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"End users specify CPU features they required through traits [1]_. If the"},{"line_number":38,"context_line":"``cpu_mode`` is set to *custom*, libvirt driver will select the first CPU model"},{"line_number":39,"context_line":"in the ``cpu_models`` list (combined with ``cpu_model_extra_flags`` if it is"},{"line_number":40,"context_line":"specified) that can provide the required feature traits. This would make it"},{"line_number":41,"context_line":"more likely that the instance could be live-migrated later on. If no CPU"},{"line_number":42,"context_line":"feature traits are specified then the instance will be configured with the"},{"line_number":43,"context_line":"first CPU model in the list."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_97984d7c","line":40,"range":{"start_line":37,"start_character":66,"end_line":40,"end_character":55},"in_reply_to":"3f79a3b5_04a96dd9","updated":"2018-12-20 17:44:31.000000000","message":"I\u0027m fairly sure that the various CPU models supported by libvirt are not necessarily strict supersets of each other.  This means that not all CPU models can be supported in hardware on a given host CPU model.\n\nIn practice, I\u0027d expect the cpu_models list to be limited to the CPU models actually present on the compute nodes in the cluster.","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14f17cb11be86d2825f7fd7816fbc4d08542529b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Work Items"},{"line_number":132,"context_line":"----------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Conf: define [libvirt]cpu_models. [libvirt]cpu_model is deprecated."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Virt driver changes."},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_6434e1aa","line":134,"range":{"start_line":134,"start_character":15,"end_line":134,"end_character":34},"updated":"2018-12-20 16:47:24.000000000","message":"``literal``","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14f17cb11be86d2825f7fd7816fbc4d08542529b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Work Items"},{"line_number":132,"context_line":"----------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Conf: define [libvirt]cpu_models. [libvirt]cpu_model is deprecated."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Virt driver changes."},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_e447911b","line":134,"range":{"start_line":134,"start_character":36,"end_line":134,"end_character":54},"updated":"2018-12-20 16:47:24.000000000","message":"ditto","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ce23804a7f258ad28ce81eec5964382f996e6f4e","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Work Items"},{"line_number":132,"context_line":"----------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Conf: define [libvirt]cpu_models. [libvirt]cpu_model is deprecated."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Virt driver changes."},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_444a05ae","line":134,"range":{"start_line":134,"start_character":15,"end_line":134,"end_character":34},"in_reply_to":"3f79a3b5_6434e1aa","updated":"2018-12-20 17:12:58.000000000","message":"Done","commit_id":"4edc88ef84d410550e0ccdc350ece954bcfdc5df"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53ac2fb0792732834494e364128747ae83da6bff","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"For example, if the end user specifies CPU features avx and avx2 as following::"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    openstack flavor set 1 --property trait:HW_CPU_X86_AVX\u003drequired --property trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"and ``cpu_models`` is configured like this::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_977b6d7b","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":109},"updated":"2018-12-20 17:31:45.000000000","message":"im surprised pep8 is not complaining about this\nbut if its happy so am i","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"e63d31e2c64ab0a247593e1de25b54899be47672","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"For example, if the end user specifies CPU features avx and avx2 as following::"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    openstack flavor set 1 --property trait:HW_CPU_X86_AVX\u003drequired --property trait:HW_CPU_X86_AVX2\u003drequired"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"and ``cpu_models`` is configured like this::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_3554d122","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":109},"in_reply_to":"3f79a3b5_977b6d7b","updated":"2018-12-20 20:13:33.000000000","message":"\u003e im surprised pep8 is not complaining about this\n \u003e but if its happy so am i\n\nAfaik code blocks (blocks after ::) are not checked by pep8, so I leave it as is, seeing other specs have done the same.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53ac2fb0792732834494e364128747ae83da6bff","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    [libvirt]"},{"line_number":53,"context_line":"    cpu_mode \u003d custom"},{"line_number":54,"context_line":"    cpu_models \u003d Conroe,Penryn,Nehalem,Westmere,SandyBridge,IvyBridge,Haswell,Broadwell,Skylake-Client,Skylake-Server"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"then ``Haswell``, the first cpu model supporting both avx and avx2 will be"},{"line_number":57,"context_line":"chosen by libvirt."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_57715598","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":117},"updated":"2018-12-20 17:31:45.000000000","message":"same as above.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3273fe8e09744c2828cc226813ab4c72ebfe7cb1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"then ``Haswell``, the first cpu model supporting both avx and avx2 will be"},{"line_number":57,"context_line":"chosen by libvirt."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":60,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":61,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":62,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":63,"context_line":"configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":66,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_0ba97824","line":63,"range":{"start_line":59,"start_character":0,"end_line":63,"end_character":14},"updated":"2018-12-20 21:40:31.000000000","message":"Is there any reason we don\u0027t do this today if cpu_model_extra_flags is incompatible with the single cpu_model? Maybe that\u0027s a question for Kashyap.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"cd8b18aeeb1f2fe55213f3181323fb1dfe0f6b2c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"then ``Haswell``, the first cpu model supporting both avx and avx2 will be"},{"line_number":57,"context_line":"chosen by libvirt."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":60,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":61,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":62,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":63,"context_line":"configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":66,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_26db494c","line":63,"range":{"start_line":59,"start_character":0,"end_line":63,"end_character":14},"in_reply_to":"3f79a3b5_0ba97824","updated":"2018-12-20 22:18:49.000000000","message":"There\u0027s a comment related to this in the code:\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L3846-L3851\n\nIn the related bug (https://bugzilla.redhat.com/show_bug.cgi?id\u003d1559832) Kashyap points to virConnectCompareCPU() which is called by host.compare_cpu().\n\nIncidentally, as of libvirt 4.3 it should be possible to use virConnectCompareHypervisorCPU() to validate whether the requested model plus flags is possible for libvirt to provide given the hypervisor and cpu model of the host. So it looks like there\u0027s room for future improvement here.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"8b5975d0333e14839cf8d1395ff61795f85e5192","unresolved":false,"context_lines":[{"line_number":56,"context_line":"then ``Haswell``, the first cpu model supporting both avx and avx2 will be"},{"line_number":57,"context_line":"chosen by libvirt."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"If ``cpu_model_extra_flags`` is specified, it should be checked against each"},{"line_number":60,"context_line":"cpu model in the ``cpu_models`` list using host.compare_cpu() to make sure it"},{"line_number":61,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":62,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":63,"context_line":"configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":66,"context_line":"ignored."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fdfeff1_5184d90a","line":63,"range":{"start_line":59,"start_character":0,"end_line":63,"end_character":14},"in_reply_to":"3f79a3b5_26db494c","updated":"2019-02-18 10:02:54.000000000","message":"Obviously, I\u0027m too late to comment on this change.  The above code comment needs fixing, since the upstream libvirt RFC I filed is already addressed.\n\nAnd yes, I was planning to update Nova\u0027s libvirt driver to use the new, \"hypervisor-literate\", libvirt APIs with this blueprint (\"CPU selection with hypervisor consideration\"):\n\nhttps://blueprints.launchpad.net/nova/+spec/cpu-selection-with-hypervisor-consideration","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"53ac2fb0792732834494e364128747ae83da6bff","unresolved":false,"context_lines":[{"line_number":61,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":62,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":63,"context_line":"configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":66,"context_line":"ignored."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Alternatives"},{"line_number":69,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_97c92daf","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":7},"updated":"2018-12-20 17:31:45.000000000","message":"preferably with a warning but that is an implementation detail","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3273fe8e09744c2828cc226813ab4c72ebfe7cb1","unresolved":false,"context_lines":[{"line_number":61,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":62,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":63,"context_line":"configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":66,"context_line":"ignored."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Alternatives"},{"line_number":69,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_8b28289e","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":7},"in_reply_to":"3f79a3b5_2bdb144c","updated":"2018-12-20 21:40:31.000000000","message":"Rather than ignore, I would think we\u0027d deprecate cpu_model but support it for upgrades, i.e. if cpu_model is set, we\u0027d add it to cpu_models and use cpu_models. So let\u0027s say I have cpu_model \u003d IvyBridge today, then upgrade and have cpu_model still set but cpu_models is not set, then nova would just automatically add the entry from cpu_model to cpu_models for graceful upgrades. Essentially a union of both options.\n\n(later)\n\nOK I see this is in Upgrade impact below, so makes sense.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"baa7b222969f34c4f99f9a658aa90bd8a8c4e566","unresolved":false,"context_lines":[{"line_number":61,"context_line":"is compatible with *all* models in the ``cpu_models`` list. Any incompatibility"},{"line_number":62,"context_line":"should prevent compute host from starting and user needs to correct the"},{"line_number":63,"context_line":"configuration."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"If both ``cpu_models`` and ``cpu_model`` are set, ``cpu_model`` will be"},{"line_number":66,"context_line":"ignored."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Alternatives"},{"line_number":69,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_2bdb144c","line":66,"range":{"start_line":64,"start_character":0,"end_line":66,"end_character":7},"in_reply_to":"3f79a3b5_97c92daf","updated":"2018-12-20 21:06:42.000000000","message":"\u003e preferably with a warning but that is an implementation detail\n\nwill leave it as is now unless there are other changes needed.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3273fe8e09744c2828cc226813ab4c72ebfe7cb1","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Performance Impact"},{"line_number":99,"context_line":"------------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Negligible."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_eb1e7c70","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":10},"updated":"2018-12-20 21:40:31.000000000","message":"Would there be libvirt API calls made while iterating the list of cpu_models looking for a fit based on the required traits? Or is this something we\u0027ll be doing in python?","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2a847303740333b454ffc124f8102e00303b871","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Performance Impact"},{"line_number":99,"context_line":"------------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Negligible."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_667b81f1","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":10},"in_reply_to":"3f79a3b5_e6ca3142","updated":"2018-12-20 22:22:23.000000000","message":"\u003e I suppose we could parse the libvirt CPU model XML files in python, but that would require making assumptions about the location and structure of those XML files.\n\nIsn\u0027t that information available from the baselineCPU API call? Or am I thinking of something else?","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"cd8b18aeeb1f2fe55213f3181323fb1dfe0f6b2c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Performance Impact"},{"line_number":99,"context_line":"------------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Negligible."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_e6ca3142","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":10},"in_reply_to":"3f79a3b5_eb1e7c70","updated":"2018-12-20 22:18:49.000000000","message":"I don\u0027t see any good option other than to call out to libvirt for each model in the list until we find one that satisfies the requirements.  Libvirt\u0027s virConnectBaselineHypervisorCPU() would give the *most* feature-rich CPU available from the list, but we actually want the *least* feature-rich CPU that still provides the required features.\n\nI suppose we could parse the libvirt CPU model XML files in python, but that would require making assumptions about the location and structure of those XML files.\n\nI don\u0027t expect the overhead of calling out to libvirt would be that big, especially since I\u0027d expect operators to only include the CPU models actually present in their cluster.","commit_id":"e3ada6332f6d33ffc9c7b41028ddf12771825ab8"}]}
