)]}'
{"specs/train/approved/cpu-selection-with-hypervisor-consideration.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5895270ec6e7d6110208478dbbafaa9170f37ff1","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Make Nova\u0027s guest CPU selection approach more effective and reliable by"},{"line_number":14,"context_line":"introducing two new QEMU- and libvirt-based CPU configuration APIs:"},{"line_number":15,"context_line":"baselineHypervisorCPU() and compareHypervisorCPU().  These new APIs are"},{"line_number":16,"context_line":"more \"hypervisor-literate\" in comparison to the existing libvirt APIs"},{"line_number":17,"context_line":"that Nova uses.  As in, the new APIs take into account what the \"host"},{"line_number":18,"context_line":"hypervisor\" (meaning: KVM, QEMU, and what libvirt knows about the host)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_87542700","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":23},"updated":"2019-04-01 10:32:45.000000000","message":"``literal``","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"d95a8ab1a9176878f2c9df9366a287033a420a43","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Make Nova\u0027s guest CPU selection approach more effective and reliable by"},{"line_number":14,"context_line":"introducing two new QEMU- and libvirt-based CPU configuration APIs:"},{"line_number":15,"context_line":"baselineHypervisorCPU() and compareHypervisorCPU().  These new APIs are"},{"line_number":16,"context_line":"more \"hypervisor-literate\" in comparison to the existing libvirt APIs"},{"line_number":17,"context_line":"that Nova uses.  As in, the new APIs take into account what the \"host"},{"line_number":18,"context_line":"hypervisor\" (meaning: KVM, QEMU, and what libvirt knows about the host)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_72fc123e","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":23},"in_reply_to":"5fc1f717_87542700","updated":"2019-04-04 08:58:23.000000000","message":"Can do.  I didn\u0027t bother using the literal as these are API names.  (Normally I reserve rST literals for Linux commands, specific invocations, that sort of things.)","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5895270ec6e7d6110208478dbbafaa9170f37ff1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Make Nova\u0027s guest CPU selection approach more effective and reliable by"},{"line_number":14,"context_line":"introducing two new QEMU- and libvirt-based CPU configuration APIs:"},{"line_number":15,"context_line":"baselineHypervisorCPU() and compareHypervisorCPU().  These new APIs are"},{"line_number":16,"context_line":"more \"hypervisor-literate\" in comparison to the existing libvirt APIs"},{"line_number":17,"context_line":"that Nova uses.  As in, the new APIs take into account what the \"host"},{"line_number":18,"context_line":"hypervisor\" (meaning: KVM, QEMU, and what libvirt knows about the host)"},{"line_number":19,"context_line":"is capable of."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_a7592336","line":16,"range":{"start_line":16,"start_character":27,"end_line":16,"end_character":40},"updated":"2019-04-01 10:32:45.000000000","message":"compared","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5895270ec6e7d6110208478dbbafaa9170f37ff1","unresolved":false,"context_lines":[{"line_number":25,"context_line":"Problem description"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The current guest CPU config libvirt APIs that Nova uses, compareCPU()"},{"line_number":29,"context_line":"and baselineCPU(), are \"not very useful\" (quoting the cover letter [1]_"},{"line_number":30,"context_line":"of the libvirt patch series that introduced the newer APIs), because"},{"line_number":31,"context_line":"they don\u0027t consider the capabilities of the \"host hypervisor\" (KVM, QEMU"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_e7788b90","line":28,"range":{"start_line":28,"start_character":58,"end_line":28,"end_character":70},"updated":"2019-04-01 10:32:45.000000000","message":"``literal`` (here and elsewhere)","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5895270ec6e7d6110208478dbbafaa9170f37ff1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"able to make meaningful decisions when determining guest CPU models and"},{"line_number":48,"context_line":"their features:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  - While determining guest CPU models, Nova can take into account"},{"line_number":51,"context_line":"    several other aspects, e.g. the type of virtualization (pure"},{"line_number":52,"context_line":"    emulation vs. hardware-accelerated), QEMU binary\u0027s capabilities,"},{"line_number":53,"context_line":"    guest machine type, and CPU architcture to construct a"},{"line_number":54,"context_line":"    better-informed guest CPU."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"  - Nova can will be able to do more fine-grained validation of CPU"},{"line_number":57,"context_line":"    models and flags.  I.e. answer questions like: \"Is the combination"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_47c39f8b","line":54,"range":{"start_line":50,"start_character":0,"end_line":54,"end_character":30},"updated":"2019-04-01 10:32:45.000000000","message":"These all need to be dedented to render correctly, else they\u0027ll be rendered as a blockquote","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"d95a8ab1a9176878f2c9df9366a287033a420a43","unresolved":false,"context_lines":[{"line_number":47,"context_line":"able to make meaningful decisions when determining guest CPU models and"},{"line_number":48,"context_line":"their features:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  - While determining guest CPU models, Nova can take into account"},{"line_number":51,"context_line":"    several other aspects, e.g. the type of virtualization (pure"},{"line_number":52,"context_line":"    emulation vs. hardware-accelerated), QEMU binary\u0027s capabilities,"},{"line_number":53,"context_line":"    guest machine type, and CPU architcture to construct a"},{"line_number":54,"context_line":"    better-informed guest CPU."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"  - Nova can will be able to do more fine-grained validation of CPU"},{"line_number":57,"context_line":"    models and flags.  I.e. answer questions like: \"Is the combination"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_3278caf6","line":54,"range":{"start_line":50,"start_character":0,"end_line":54,"end_character":30},"in_reply_to":"5fc1f717_47c39f8b","updated":"2019-04-04 08:58:23.000000000","message":"Will fix.  (Wish: would be nice if there were some toggle-able rST config that will handle these kind of indentations, too.  It is nicer to read in plain text.)","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5895270ec6e7d6110208478dbbafaa9170f37ff1","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"A quick description of the two APIs:"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  - baselineHypervisorCPU()."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    Purpose: This API computes the most feature-rich \"baseline\" CPU"},{"line_number":82,"context_line":"    (which includes CPU model plus additional features) that is (a)"},{"line_number":83,"context_line":"    compatible with all given host CPUs (as described in an XML"},{"line_number":84,"context_line":"    document), so that one can live migrate across the said hosts; and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_c798efcd","line":81,"range":{"start_line":79,"start_character":0,"end_line":81,"end_character":4},"updated":"2019-04-01 10:32:45.000000000","message":"nit: This would probably make sense as a definition list, i.e.\n\n``baselineHypervisorCPU()``\n  Purpose: This API...\n\n(note: no empty line between the term and definition)","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"d95a8ab1a9176878f2c9df9366a287033a420a43","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"A quick description of the two APIs:"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  - baselineHypervisorCPU()."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    Purpose: This API computes the most feature-rich \"baseline\" CPU"},{"line_number":82,"context_line":"    (which includes CPU model plus additional features) that is (a)"},{"line_number":83,"context_line":"    compatible with all given host CPUs (as described in an XML"},{"line_number":84,"context_line":"    document), so that one can live migrate across the said hosts; and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_72c41241","line":81,"range":{"start_line":79,"start_character":0,"end_line":81,"end_character":4},"in_reply_to":"5fc1f717_c798efcd","updated":"2019-04-04 08:58:23.000000000","message":"Thanks for the tip.  Will try that and see how it renders.","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5895270ec6e7d6110208478dbbafaa9170f37ff1","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"     .--------------------------------------------------------------."},{"line_number":93,"context_line":"     |           | baselineCPU()      | baselineHypervisorCPU()     |"},{"line_number":94,"context_line":"     ---------------------------------------------------------------|"},{"line_number":95,"context_line":"     |           | XML document       | XML document describing     |"},{"line_number":96,"context_line":"     |           | describing one     | one or more host CPUs       |"},{"line_number":97,"context_line":"     |           | or more host CPUs  |                             |"},{"line_number":98,"context_line":"     |           |--------------------|-----------------------------|"},{"line_number":99,"context_line":"     |           |                    | path to the QEMU binary     |"},{"line_number":100,"context_line":"     |           |                    |-----------------------------|"},{"line_number":101,"context_line":"     |Parameters |                    | the type of virtualization  |"},{"line_number":102,"context_line":"     |           |                    | (e.g. KVM, QEMU)            |"},{"line_number":103,"context_line":"     |           |                    |-----------------------------|"},{"line_number":104,"context_line":"     |           |                    | guest machine type          |"},{"line_number":105,"context_line":"     |           |                    |-----------------------------|"},{"line_number":106,"context_line":"     |           |                    | CPU architecture            |"},{"line_number":107,"context_line":"     \u0027--------------------------------------------------------------\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"  - compareHypervisorCPU()."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_87a2e7fb","line":107,"range":{"start_line":92,"start_character":0,"end_line":107,"end_character":69},"updated":"2019-04-01 10:32:45.000000000","message":"Does this render? I imagine not, in which case you should indent it by four and replace the above colon with a double colon (so this will render as a code block).","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"d95a8ab1a9176878f2c9df9366a287033a420a43","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"     .--------------------------------------------------------------."},{"line_number":93,"context_line":"     |           | baselineCPU()      | baselineHypervisorCPU()     |"},{"line_number":94,"context_line":"     ---------------------------------------------------------------|"},{"line_number":95,"context_line":"     |           | XML document       | XML document describing     |"},{"line_number":96,"context_line":"     |           | describing one     | one or more host CPUs       |"},{"line_number":97,"context_line":"     |           | or more host CPUs  |                             |"},{"line_number":98,"context_line":"     |           |--------------------|-----------------------------|"},{"line_number":99,"context_line":"     |           |                    | path to the QEMU binary     |"},{"line_number":100,"context_line":"     |           |                    |-----------------------------|"},{"line_number":101,"context_line":"     |Parameters |                    | the type of virtualization  |"},{"line_number":102,"context_line":"     |           |                    | (e.g. KVM, QEMU)            |"},{"line_number":103,"context_line":"     |           |                    |-----------------------------|"},{"line_number":104,"context_line":"     |           |                    | guest machine type          |"},{"line_number":105,"context_line":"     |           |                    |-----------------------------|"},{"line_number":106,"context_line":"     |           |                    | CPU architecture            |"},{"line_number":107,"context_line":"     \u0027--------------------------------------------------------------\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"  - compareHypervisorCPU()."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_2f306107","line":107,"range":{"start_line":92,"start_character":0,"end_line":107,"end_character":69},"in_reply_to":"5fc1f717_87a2e7fb","updated":"2019-04-04 08:58:23.000000000","message":"(I admit, I haven\u0027t checked if it rendered locally, first.)  Yep, will fix.","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d0163dc0ba32a405ce24447b335a3f6754a83599","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"- Rework the _get_guest_cpu_model_config() method in the libvirt"},{"line_number":226,"context_line":"  driver to take advantage of the fine-grained validation of CPU model"},{"line_number":227,"context_line":"  plus features (against a given QEMU binary)."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"- Rewrite the _compare_cpu() method\u0027s the logic in the libvirt driver to"},{"line_number":230,"context_line":"  take advantage of compareHypervisorCPU().  (While at it,rename it to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_927659d8","line":227,"updated":"2019-03-22 19:50:10.000000000","message":"Here and below, maybe add \"if available\" since they might be on an older libvirt?","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"d95a8ab1a9176878f2c9df9366a287033a420a43","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"- Rework the _get_guest_cpu_model_config() method in the libvirt"},{"line_number":226,"context_line":"  driver to take advantage of the fine-grained validation of CPU model"},{"line_number":227,"context_line":"  plus features (against a given QEMU binary)."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"- Rewrite the _compare_cpu() method\u0027s the logic in the libvirt driver to"},{"line_number":230,"context_line":"  take advantage of compareHypervisorCPU().  (While at it,rename it to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5fc1f717_32b76adb","line":227,"in_reply_to":"5fc1f717_927659d8","updated":"2019-04-04 08:58:23.000000000","message":"Yep, will do.","commit_id":"9a550f4b81867e03f648dead57c25b5c7fdcde28"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b083e2a967c7c0a17ffa952908bb3077b21bbba2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account::"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"      .--------------------------------------------------------------."},{"line_number":93,"context_line":"      |           | baselineCPU()      | baselineHypervisorCPU()     |"},{"line_number":94,"context_line":"      |--------------------------------------------------------------|"},{"line_number":95,"context_line":"      |           | XML document       | XML document describing     |"},{"line_number":96,"context_line":"      |           | describing one     | one or more host CPUs       |"},{"line_number":97,"context_line":"      |           | or more host CPUs  |                             |"},{"line_number":98,"context_line":"      |           |--------------------|-----------------------------|"},{"line_number":99,"context_line":"      |           |                    | path to the QEMU binary     |"},{"line_number":100,"context_line":"      |           |                    |-----------------------------|"},{"line_number":101,"context_line":"      |Parameters |                    | the type of virtualization  |"},{"line_number":102,"context_line":"      |           |                    | (e.g. KVM, QEMU)            |"},{"line_number":103,"context_line":"      |           |                    |-----------------------------|"},{"line_number":104,"context_line":"      |           |                    | guest machine type          |"},{"line_number":105,"context_line":"      |           |                    |-----------------------------|"},{"line_number":106,"context_line":"      |           |                    | CPU architecture            |"},{"line_number":107,"context_line":"      \u0027--------------------------------------------------------------\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"- ``compareHypervisorCPU()``"},{"line_number":110,"context_line":"    Purpose: This API compares a given CPU description with the CPU"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_68cce834","line":107,"range":{"start_line":92,"start_character":0,"end_line":107,"end_character":70},"updated":"2019-04-08 10:02:59.000000000","message":"This can actually render if you use \u0027+\u0027 everywhere for connectors:\n\n    +-----------+--------------------+-----------------------------+\n    |           | baselineCPU()      | baselineHypervisorCPU()     |\n    +-----------+--------------------+-----------------------------+\n    |           | XML document       | XML document describing     |\n    |           | describing one     | one or more host CPUs       |\n    |           | or more host CPUs  |                             |\n    |           +--------------------+-----------------------------+\n    |           |                    | path to the QEMU binary     |\n    |           |                    +-----------------------------+\n    |Parameters |                    | the type of virtualization  |\n    |           |                    | (e.g. KVM, QEMU)            |\n    |           |                    +-----------------------------+\n    |           |                    | guest machine type          |\n    |           |                    +-----------------------------+\n    |           |                    | CPU architecture            |\n    +-----------+--------------------+-----------------------------+\n\nDitto for below","commit_id":"fe22b2bf93754d7e80b14d1c6df0a1bb1559b104"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"94b91f8aedf6e5d8f99eccfcea8e0aa736093830","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account::"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"      .--------------------------------------------------------------."},{"line_number":93,"context_line":"      |           | baselineCPU()      | baselineHypervisorCPU()     |"},{"line_number":94,"context_line":"      |--------------------------------------------------------------|"},{"line_number":95,"context_line":"      |           | XML document       | XML document describing     |"},{"line_number":96,"context_line":"      |           | describing one     | one or more host CPUs       |"},{"line_number":97,"context_line":"      |           | or more host CPUs  |                             |"},{"line_number":98,"context_line":"      |           |--------------------|-----------------------------|"},{"line_number":99,"context_line":"      |           |                    | path to the QEMU binary     |"},{"line_number":100,"context_line":"      |           |                    |-----------------------------|"},{"line_number":101,"context_line":"      |Parameters |                    | the type of virtualization  |"},{"line_number":102,"context_line":"      |           |                    | (e.g. KVM, QEMU)            |"},{"line_number":103,"context_line":"      |           |                    |-----------------------------|"},{"line_number":104,"context_line":"      |           |                    | guest machine type          |"},{"line_number":105,"context_line":"      |           |                    |-----------------------------|"},{"line_number":106,"context_line":"      |           |                    | CPU architecture            |"},{"line_number":107,"context_line":"      \u0027--------------------------------------------------------------\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"- ``compareHypervisorCPU()``"},{"line_number":110,"context_line":"    Purpose: This API compares a given CPU description with the CPU"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_fea652c0","line":107,"range":{"start_line":92,"start_character":0,"end_line":107,"end_character":70},"in_reply_to":"5fc1f717_239a8361","updated":"2019-04-08 11:25:54.000000000","message":"I tried\n\n .. code-block:: text\n\nand it renders undecorated","commit_id":"fe22b2bf93754d7e80b14d1c6df0a1bb1559b104"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"cd0c24d788327fd8e03ca1a407c0512e83460833","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account::"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"      .--------------------------------------------------------------."},{"line_number":93,"context_line":"      |           | baselineCPU()      | baselineHypervisorCPU()     |"},{"line_number":94,"context_line":"      |--------------------------------------------------------------|"},{"line_number":95,"context_line":"      |           | XML document       | XML document describing     |"},{"line_number":96,"context_line":"      |           | describing one     | one or more host CPUs       |"},{"line_number":97,"context_line":"      |           | or more host CPUs  |                             |"},{"line_number":98,"context_line":"      |           |--------------------|-----------------------------|"},{"line_number":99,"context_line":"      |           |                    | path to the QEMU binary     |"},{"line_number":100,"context_line":"      |           |                    |-----------------------------|"},{"line_number":101,"context_line":"      |Parameters |                    | the type of virtualization  |"},{"line_number":102,"context_line":"      |           |                    | (e.g. KVM, QEMU)            |"},{"line_number":103,"context_line":"      |           |                    |-----------------------------|"},{"line_number":104,"context_line":"      |           |                    | guest machine type          |"},{"line_number":105,"context_line":"      |           |                    |-----------------------------|"},{"line_number":106,"context_line":"      |           |                    | CPU architecture            |"},{"line_number":107,"context_line":"      \u0027--------------------------------------------------------------\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"- ``compareHypervisorCPU()``"},{"line_number":110,"context_line":"    Purpose: This API compares a given CPU description with the CPU"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_239a8361","line":107,"range":{"start_line":92,"start_character":0,"end_line":107,"end_character":70},"in_reply_to":"5fc1f717_68cce834","updated":"2019-04-08 10:41:41.000000000","message":"Rendering is not the problem;  just that the words \"or\" and \"type\" are highlighted in green.\n\nSo I tried \"+\" (also: de-dendeted and haven\u0027t used\u0027::\u0027 or \u0027.. code-block\u0027), then table rendering is \"naked\":\n\nhttps://kashyapc.fedorapeople.org/Plain-rendering-of-table-Sphinx.png\n\nI prefer the code-block rendering, as it\u0027s visually clearer.","commit_id":"fe22b2bf93754d7e80b14d1c6df0a1bb1559b104"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"20ce2a5eeae9194ef68ddfe02dd0ff5c9bdefac4","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account::"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"      .--------------------------------------------------------------."},{"line_number":93,"context_line":"      |           | baselineCPU()      | baselineHypervisorCPU()     |"},{"line_number":94,"context_line":"      |--------------------------------------------------------------|"},{"line_number":95,"context_line":"      |           | XML document       | XML document describing     |"},{"line_number":96,"context_line":"      |           | describing one     | one or more host CPUs       |"},{"line_number":97,"context_line":"      |           | or more host CPUs  |                             |"},{"line_number":98,"context_line":"      |           |--------------------|-----------------------------|"},{"line_number":99,"context_line":"      |           |                    | path to the QEMU binary     |"},{"line_number":100,"context_line":"      |           |                    |-----------------------------|"},{"line_number":101,"context_line":"      |Parameters |                    | the type of virtualization  |"},{"line_number":102,"context_line":"      |           |                    | (e.g. KVM, QEMU)            |"},{"line_number":103,"context_line":"      |           |                    |-----------------------------|"},{"line_number":104,"context_line":"      |           |                    | guest machine type          |"},{"line_number":105,"context_line":"      |           |                    |-----------------------------|"},{"line_number":106,"context_line":"      |           |                    | CPU architecture            |"},{"line_number":107,"context_line":"      \u0027--------------------------------------------------------------\u0027"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"- ``compareHypervisorCPU()``"},{"line_number":110,"context_line":"    Purpose: This API compares a given CPU description with the CPU"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5fc1f717_23b11502","line":107,"range":{"start_line":92,"start_character":0,"end_line":107,"end_character":70},"in_reply_to":"5fc1f717_fea652c0","updated":"2019-04-09 07:05:53.000000000","message":"Ah-ha, that\u0027s it.  Thanks, Eric.\n\n(Self: Maybe it is worth it to commit the whole rST plus Sphinx abracadabra to memory.)","commit_id":"fe22b2bf93754d7e80b14d1c6df0a1bb1559b104"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"well-informed decisions when determining CPU models that are compatible"},{"line_number":23,"context_line":"across different hosts."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Problem description"},{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The current guest CPU config libvirt APIs that Nova uses,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_870ec389","line":25,"updated":"2019-04-09 14:48:39.000000000","message":"This section has words but they don\u0027t translate to problems for users/admins in nova operations - for each I should be able to ask, \"and because of this operation x can fail\" right? Assuming that most cases are live migration.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"model plus CPU flags against a specific QEMU binary (and KVM) to allow"},{"line_number":41,"context_line":"well-informed guest CPU configuration decisions."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"---------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"By taking advantage of the two CPU configuration APIs,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_c7e12bd2","line":43,"updated":"2019-04-09 14:48:39.000000000","message":"I kind of wish these use cases, while nicely detailed, would translate more to actual nova operations or known issues/limitations, i.e. if we know live migration can fail in some obscure way because of the lack of CPU information available to the driver, that could be given as an example and then this spec is a more clear win to solve those problems. Otherwise it\u0027s kind of hard for me to translate what\u0027s in here to actual end-user/admin visible operations in the compute API.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"model plus CPU flags against a specific QEMU binary (and KVM) to allow"},{"line_number":41,"context_line":"well-informed guest CPU configuration decisions."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"---------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"By taking advantage of the two CPU configuration APIs,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_764c079e","line":43,"in_reply_to":"5fc1f717_c7e12bd2","updated":"2019-04-25 11:22:44.000000000","message":"This is more of \"under the hood\" work.  The \"clear wins\" are:\n\n* More accurate baseline CPU calculation, to make an instance more live migration compatible across a pool of compute nodes\n* Better-informed CPU comparison (see _cpu_compare() method in Nova\u0027s libvirt driver) by taking more inputs into account, so that instance boot won\u0027t fail when you supply the CPU flags.  Because libvirt will filter out the CPU features that are not supported by QEMU on the compute host.\n\nOne of the known / issues limitations is documented in the code here: https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L3948,#L3959\n\n        [...]\n        # NOTE (kchamart): Currently there\u0027s no existing way to ask if a\n        # given CPU model + CPU flags combination is supported by KVM \u0026\n        # a specific QEMU binary.  However, libvirt runs the \u0027CPUID\u0027\n        # command upfront -- before even a Nova instance (a QEMU\n        # process) is launched -- to construct CPU models and check\n        # their validity; so we are good there.  In the long-term,\n        # upstream libvirt intends to add an additional new API that can\n        # do fine-grained validation of a certain CPU model + CPU flags\n        # against a specific QEMU binary (the libvirt RFE bug for that:\n        # https://bugzilla.redhat.com/show_bug.cgi?id\u003d1559832).\n        for flag in extra_flags:\n            cpu.add_feature(vconfig.LibvirtConfigGuestCPUFeature(flag))\n        [...]\n\nI filed the above mentioned libvirt RFE bug (now resolved), that introduces the two new APIs, based on Nova\u0027s use case.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  guest machine type, and CPU architcture to construct a"},{"line_number":55,"context_line":"  better-informed guest CPU."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- Nova can will be able to do more fine-grained validation of CPU"},{"line_number":58,"context_line":"  models and flags.  I.e. answer questions like: \"Is the combination"},{"line_number":59,"context_line":"  of Intel\u0027s ``IvyBridge`` CPU model plus the CPU flags ``pcid`` and"},{"line_number":60,"context_line":"  ``ssbd`` supported by the host hypervisor?\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_6755d7c1","line":57,"range":{"start_line":57,"start_character":7,"end_line":57,"end_character":10},"updated":"2019-04-09 14:48:39.000000000","message":"nix","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  better-informed guest CPU."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"- Nova can will be able to do more fine-grained validation of CPU"},{"line_number":58,"context_line":"  models and flags.  I.e. answer questions like: \"Is the combination"},{"line_number":59,"context_line":"  of Intel\u0027s ``IvyBridge`` CPU model plus the CPU flags ``pcid`` and"},{"line_number":60,"context_line":"  ``ssbd`` supported by the host hypervisor?\""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_cc515010","line":58,"range":{"start_line":58,"start_character":18,"end_line":58,"end_character":25},"updated":"2019-04-09 13:56:09.000000000","message":", i.e.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"- Armed with the above two points, Nova will also be positioned to"},{"line_number":63,"context_line":"  better report more accurate CPU traits.  (I.e. improve"},{"line_number":64,"context_line":"  _get_cpu_traits() method)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- Operators can get a more accurate view on what guest CPU models and"},{"line_number":67,"context_line":"  features their guests can realistically expect."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_2c401435","line":64,"range":{"start_line":64,"start_character":2,"end_line":64,"end_character":19},"updated":"2019-04-09 13:56:09.000000000","message":"``literal``","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  better report more accurate CPU traits.  (I.e. improve"},{"line_number":64,"context_line":"  _get_cpu_traits() method)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- Operators can get a more accurate view on what guest CPU models and"},{"line_number":67,"context_line":"  features their guests can realistically expect."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_27f82fc2","line":66,"updated":"2019-04-09 14:48:39.000000000","message":"How does nova enable this? Via the traits that get exposed in the placement API? Or would the operator be running something on the qemu or virsh command line that uses those new APIs?","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"  better report more accurate CPU traits.  (I.e. improve"},{"line_number":64,"context_line":"  _get_cpu_traits() method)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"- Operators can get a more accurate view on what guest CPU models and"},{"line_number":67,"context_line":"  features their guests can realistically expect."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_d1a61d54","line":66,"in_reply_to":"5fc1f717_27f82fc2","updated":"2019-04-25 11:22:44.000000000","message":"Most of the spec\u0027s work is largely internal reworking that provides a more robust \"guest CPU configuration experience\".  E.g. Replace the usage of the older APIs, and use the newer ones.  E.g. we will rewrite the _compare_cpu() method in driver.py to more rigorous checks of whether the host hypervisor is compatible with the requested CPU.  Where \"rigorous checks\" means, for example:\n\n* If you know you\u0027re going to create an \u0027x86_64\u0027 TCG (plain emulation) or KVM domain, you should pass this knowledge to compareHypervisorCPU()—by taking Nova\u0027s `CONF.libvirt.virt_type` into consideration, and supplying it as input to @virttype parameter of compareHypervisorCPU().\n\n* Likewise, we should take the existing _get_machine_type() method into consideration, and supply it as input to the @machine parameter of the compareHypervisorCPU() API.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b25b348df12149ad794b45e65575b54ae4e63c4","unresolved":false,"context_lines":[{"line_number":66,"context_line":"- Operators can get a more accurate view on what guest CPU models and"},{"line_number":67,"context_line":"  features their guests can realistically expect."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed change"},{"line_number":70,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Make Nova\u0027s CPU selection strategy more effective by taking advantage of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_3d85a0ad","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":15},"updated":"2019-04-09 15:51:20.000000000","message":"so this just descibes the new apis but does not propsose any change.\n\nis the propose change to use that api to validate the cpu compatiblity.\n\nif so when. on agent start? on instance boot? on live migration?\n\none thing i woudl like to see added in this section is\nthat a error will be logged if the config values for cpu_model_extra_flags is invalid and that the agent will exit.\n\nif we can tell that a config is invail and would cause vms to fail we should not allow the compute agent to continue running","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"- Operators can get a more accurate view on what guest CPU models and"},{"line_number":67,"context_line":"  features their guests can realistically expect."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Proposed change"},{"line_number":70,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Make Nova\u0027s CPU selection strategy more effective by taking advantage of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_ccb3e24c","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":15},"in_reply_to":"5fc1f717_3d85a0ad","updated":"2019-04-25 11:22:44.000000000","message":"The change is noted in the first paragraph below.  And as you noticed, I described more in the Work Items section.\n\nOn the \"log error if the values of `cpu_model_extra_flags` are invalid\" is a detail that I\u0027d like to iron out during the implementation.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Make Nova\u0027s CPU selection strategy more effective by taking advantage of"},{"line_number":73,"context_line":"the two new libvirt APIs: ``baselineHypervisorCPU()`` and"},{"line_number":74,"context_line":"``compareHypervisorCPU()`` [3]_.  These APIs provide more useful ways to"},{"line_number":75,"context_line":"determine comaptible models among CPU variants, and elimiates bugs in"},{"line_number":76,"context_line":"the older CPU config libvirt APIs along the way."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"A quick description of the two APIs:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_07fbb3bd","line":75,"range":{"start_line":75,"start_character":10,"end_line":75,"end_character":20},"updated":"2019-04-09 14:48:39.000000000","message":"compatible","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":78,"context_line":"A quick description of the two APIs:"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- ``baselineHypervisorCPU()``"},{"line_number":81,"context_line":"    Purpose: This API computes the most feature-rich \"baseline\" CPU"},{"line_number":82,"context_line":"    (which includes CPU model plus additional features) that is (a)"},{"line_number":83,"context_line":"    compatible with all given host CPUs (as described in an XML"},{"line_number":84,"context_line":"    document), so that one can live migrate across the said hosts; and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_0c5c3817","line":81,"range":{"start_line":81,"start_character":3,"end_line":81,"end_character":4},"updated":"2019-04-09 13:56:09.000000000","message":"nit: I think this whole thing is indented too much. If you meant to make this a definition list (which makes sense), you need to strip the \u0027- \u0027 from the line above. Ditto for the other API description","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":78,"context_line":"A quick description of the two APIs:"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- ``baselineHypervisorCPU()``"},{"line_number":81,"context_line":"    Purpose: This API computes the most feature-rich \"baseline\" CPU"},{"line_number":82,"context_line":"    (which includes CPU model plus additional features) that is (a)"},{"line_number":83,"context_line":"    compatible with all given host CPUs (as described in an XML"},{"line_number":84,"context_line":"    document), so that one can live migrate across the said hosts; and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_c2d6f94f","line":81,"range":{"start_line":81,"start_character":3,"end_line":81,"end_character":4},"in_reply_to":"5fc1f717_0c5c3817","updated":"2019-04-09 14:52:10.000000000","message":"Yep, fixed it in the next iteration to render it as a clean definition list.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    compatible with all given host CPUs (as described in an XML"},{"line_number":84,"context_line":"    document), so that one can live migrate across the said hosts; and"},{"line_number":85,"context_line":"    (b) is supported by the host hypervisor.  It is a more useful"},{"line_number":86,"context_line":"    version of the older baselinCPU(), which does not consider any"},{"line_number":87,"context_line":"    hypervisor capabilities when computing the baseline CPU."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_cc9f10b2","line":86,"range":{"start_line":86,"start_character":25,"end_line":86,"end_character":37},"updated":"2019-04-09 13:56:09.000000000","message":"nit: ``literal`` because this is code (here and elsewhere)","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    compatible with all given host CPUs (as described in an XML"},{"line_number":84,"context_line":"    document), so that one can live migrate across the said hosts; and"},{"line_number":85,"context_line":"    (b) is supported by the host hypervisor.  It is a more useful"},{"line_number":86,"context_line":"    version of the older baselinCPU(), which does not consider any"},{"line_number":87,"context_line":"    hypervisor capabilities when computing the baseline CPU."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_e7d547e7","line":86,"range":{"start_line":86,"start_character":25,"end_line":86,"end_character":37},"in_reply_to":"5fc1f717_cc9f10b2","updated":"2019-04-09 14:52:10.000000000","message":"Fixed in next iteration.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    .. code-block:: text"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"      +-----------+--------------------+-----------------------------+"},{"line_number":95,"context_line":"      |           | baselineCPU()      | baselineHypervisorCPU()     |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_4c3800d2","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":24},"updated":"2019-04-09 13:56:09.000000000","message":"nit: I\u0027d still personally rather we use the actual table since we can, but it\u0027s a nit and not something to hold this up on","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    A comparison of baselineCPU() and baselineHypervisorCPU() APIs, in"},{"line_number":90,"context_line":"    terms of what parameters they take into account:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    .. code-block:: text"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"      +-----------+--------------------+-----------------------------+"},{"line_number":95,"context_line":"      |           | baselineCPU()      | baselineHypervisorCPU()     |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_2cb1f48f","line":92,"range":{"start_line":92,"start_character":4,"end_line":92,"end_character":24},"in_reply_to":"5fc1f717_4c3800d2","updated":"2019-04-09 14:52:10.000000000","message":"[We sorted this out on IRC; just noting here for the record.]\n\nI actually tried the \"actual table\" rendering[1], and it is not clear at all, as you see.\n\nTo try the \"actual table\":\n\n- I used \u0027+\u0027 for connectors\n- Used no indentation\n- Removed the \u0027::\u0027 or \u0027.. code-block\u0027\n\nIt still gives me a \"naked\" table[1] with no borders.\n\nYou confirmed on IRC that it is the \"Ahh, that\u0027s the theme\u0027s fault. I\u0027d been testing with the default Sphinx theme.  Bad openstackdocstheme.  OK, ignore that comment so. That\u0027s certainly more difficult to read that one would like\"\n\nSo we\u0027ll stick with the existing \".. code-block:: text\"\n\n[1] https://kashyapc.fedorapeople.org/Plain-rendering-of-table-Sphinx.png","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"- ``compareHypervisorCPU()``"},{"line_number":112,"context_line":"    Purpose: This API compares a given CPU description with the CPU"},{"line_number":113,"context_line":"    capabilities the host hypervisor is able to provide.  It is a more"},{"line_number":114,"context_line":"    useful version of the existing compareCPU(), which compares the CPU"},{"line_number":115,"context_line":"    definition with the host CPU without considering any specific"},{"line_number":116,"context_line":"    hypervisor and its abilities."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    A comparison of compareCPU() and compareHypervisorCPU() APIs, in"},{"line_number":119,"context_line":"    terms of what parameters they take into account:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_e74a27ab","line":116,"range":{"start_line":113,"start_character":58,"end_line":116,"end_character":33},"updated":"2019-04-09 14:48:39.000000000","message":"As noted above, it would be more useful to me as a nova reviewer to know what this is going to fix if we have the new fancy API.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"- ``compareHypervisorCPU()``"},{"line_number":112,"context_line":"    Purpose: This API compares a given CPU description with the CPU"},{"line_number":113,"context_line":"    capabilities the host hypervisor is able to provide.  It is a more"},{"line_number":114,"context_line":"    useful version of the existing compareCPU(), which compares the CPU"},{"line_number":115,"context_line":"    definition with the host CPU without considering any specific"},{"line_number":116,"context_line":"    hypervisor and its abilities."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    A comparison of compareCPU() and compareHypervisorCPU() APIs, in"},{"line_number":119,"context_line":"    terms of what parameters they take into account:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_2ed39362","line":116,"range":{"start_line":113,"start_character":58,"end_line":116,"end_character":33},"in_reply_to":"5fc1f717_e74a27ab","updated":"2019-04-25 11:22:44.000000000","message":"Refer to my answers earlier on line-43.\n\nAlso, it will allow us to calculate traits more accurately, see the work item mentioned by Lei Zhang in _get_cpu_traits() method in https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L9538,#L9541:\n\n        # TODO(lei-zh): baselineCPU is not supported on all platforms.\n        # There is some work going on in the libvirt community to replace the\n        # baseline call. Consider using the new apis when they are ready. See\n        # https://www.redhat.com/archives/libvir-list/2018-May/msg01204.html.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":143,"context_line":"libvirt APIs, baselineCPU() and compareCPU()."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"But that would be doing a disservice to our users, as we have more"},{"line_number":146,"context_line":"reliable APIs that provides a more well-informed guest CPU"},{"line_number":147,"context_line":"configuration."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_078ad362","line":146,"range":{"start_line":146,"start_character":19,"end_line":146,"end_character":27},"updated":"2019-04-09 14:52:10.000000000","message":"s/provides/provide/","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Security impact"},{"line_number":160,"context_line":"---------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"This implicitly improves security -- as in, with these new APIs, you"},{"line_number":163,"context_line":"should be able to get a better sense of what CPU features are required"},{"line_number":164,"context_line":"to get mitigations from Meltdown and Spectre."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_07ddf3db","line":162,"updated":"2019-04-09 14:48:39.000000000","message":"Well this is probably along the lines of an example I was looking for above in the problem description section.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Security impact"},{"line_number":160,"context_line":"---------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"This implicitly improves security -- as in, with these new APIs, you"},{"line_number":163,"context_line":"should be able to get a better sense of what CPU features are required"},{"line_number":164,"context_line":"to get mitigations from Meltdown and Spectre."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_6cd2f65e","line":162,"in_reply_to":"5fc1f717_07ddf3db","updated":"2019-04-25 11:22:44.000000000","message":"Okay, wil that (and some more info) in the sections above in the next patch set.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":163,"context_line":"should be able to get a better sense of what CPU features are required"},{"line_number":164,"context_line":"to get mitigations from Meltdown and Spectre."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"(Rethink on how to phrase this for clarity, with an example.)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Notifications impact"},{"line_number":169,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_ece1ac2c","line":166,"range":{"start_line":166,"start_character":0,"end_line":166,"end_character":61},"updated":"2019-04-09 13:56:09.000000000","message":"Drop this","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":163,"context_line":"should be able to get a better sense of what CPU features are required"},{"line_number":164,"context_line":"to get mitigations from Meltdown and Spectre."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"(Rethink on how to phrase this for clarity, with an example.)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Notifications impact"},{"line_number":169,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_2c6c9434","line":166,"range":{"start_line":166,"start_character":0,"end_line":166,"end_character":61},"in_reply_to":"5fc1f717_ece1ac2c","updated":"2019-04-09 14:52:10.000000000","message":"Oeps.  Done.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":186,"context_line":"The following libvirt and QEMU versions:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- For ``x86_64``:"},{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_acd16459","line":189,"range":{"start_line":189,"start_character":2,"end_line":189,"end_character":3},"updated":"2019-04-09 13:56:09.000000000","message":"nit: Remove (I think)","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":186,"context_line":"The following libvirt and QEMU versions:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- For ``x86_64``:"},{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_cccb901b","line":189,"range":{"start_line":189,"start_character":2,"end_line":189,"end_character":3},"in_reply_to":"5fc1f717_acd16459","updated":"2019-04-09 14:52:10.000000000","message":"Yeah, otherwise the rendered sub-bullets are too far away.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- For ``x86_64``:"},{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"},{"line_number":193,"context_line":"   - libvirt \u003e\u003d5.2"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_47853bac","line":190,"range":{"start_line":190,"start_character":24,"end_line":190,"end_character":29},"updated":"2019-04-09 14:48:39.000000000","message":"OK so we at least have a couple of libvirt driver features that already require this version so it\u0027s not crazy:\n\nMIN_LIBVIRT_FILE_BACKED_DISCARD_VERSION \u003d (4, 4, 0)\nMIN_QEMU_FILE_BACKED_DISCARD_VERSION \u003d (2, 10, 0)\n\nMIN_LIBVIRT_NATIVE_TLS_VERSION \u003d (4, 4, 0)\nMIN_QEMU_NATIVE_TLS_VERSION \u003d (2, 11, 0)","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- For ``x86_64``:"},{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"},{"line_number":193,"context_line":"   - libvirt \u003e\u003d5.2"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_6cc7fc99","line":190,"range":{"start_line":190,"start_character":5,"end_line":190,"end_character":13},"updated":"2019-04-09 13:56:09.000000000","message":"nit: drop?","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- For ``x86_64``:"},{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"},{"line_number":193,"context_line":"   - libvirt \u003e\u003d5.2"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_6cccdc33","line":190,"range":{"start_line":190,"start_character":5,"end_line":190,"end_character":13},"in_reply_to":"5fc1f717_6cc7fc99","updated":"2019-04-09 14:52:10.000000000","message":"Yes, dropped the x86_64 prefix in next iteration.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"},{"line_number":193,"context_line":"   - libvirt \u003e\u003d5.2"},{"line_number":194,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_67e5d7a3","line":192,"updated":"2019-04-09 14:48:39.000000000","message":"How can you list versions for libvirt/qemu here when it\u0027s WIP upstream?","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":189,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":190,"context_line":"   - x86_64: libvirt \u003e\u003d 4.4.0"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"- For ``s390x`` (work is actively in progress upstream [4]_):"},{"line_number":193,"context_line":"   - libvirt \u003e\u003d5.2"},{"line_number":194,"context_line":"   - QEMU \u003e\u003d 2.9"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_8e315fef","line":192,"in_reply_to":"5fc1f717_67e5d7a3","updated":"2019-04-25 11:22:44.000000000","message":"Good question, I could\u0027ve been clearer.  I added it based on the approximate estimate upstream libvirt developer gave.\n\nFor s390x, the QEMU version is accurate; libvirt work is still pending.  I removed the libvirt version in the next iteration, as it hasn\u0027t landed in libvirt 5.2.  (And s390x is not a blocker for this spec, either.)","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":201,"context_line":"Upgrade impact"},{"line_number":202,"context_line":"--------------"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None that I know of.  But do some further tests and research to ensure"},{"line_number":205,"context_line":"that there\u0027s no impact on live migration."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Implementation"},{"line_number":208,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_ac3644b3","line":205,"range":{"start_line":204,"start_character":0,"end_line":205,"end_character":41},"updated":"2019-04-09 13:56:09.000000000","message":"Users will need to have the above libvirt/qemu versions to take advantage of these APIs?","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":201,"context_line":"Upgrade impact"},{"line_number":202,"context_line":"--------------"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None that I know of.  But do some further tests and research to ensure"},{"line_number":205,"context_line":"that there\u0027s no impact on live migration."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Implementation"},{"line_number":208,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_2ed4f31f","line":205,"range":{"start_line":204,"start_character":0,"end_line":205,"end_character":41},"in_reply_to":"5fc1f717_07009301","updated":"2019-04-25 11:22:44.000000000","message":"[...]\n\n \u003e But will going from a stein compute to a train compute in this case be OK?\n\nYes, that should be OK from my basic tests.  But I need to do some more tests to iron out any \"gotchas\".","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":201,"context_line":"Upgrade impact"},{"line_number":202,"context_line":"--------------"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None that I know of.  But do some further tests and research to ensure"},{"line_number":205,"context_line":"that there\u0027s no impact on live migration."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Implementation"},{"line_number":208,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_07009301","line":205,"range":{"start_line":204,"start_character":0,"end_line":205,"end_character":41},"in_reply_to":"5fc1f717_ac3644b3","updated":"2019-04-09 14:48:39.000000000","message":"So what happens if I\u0027ve got a Train compute with the new libvirt/qemu binaries and I\u0027ve got a Stein compute with the older versions, let\u0027s say libvirt 3.0.0 and qemu 2.8 if we\u0027re just going with the minimums for stein. What happens if I try live migrating from one to the other?\n\nThankfully conductor will already reject going from new to old hypervisor versions:\n\nhttps://github.com/openstack/nova/blob/d42a007425d9adb691134137e1e0b7dda356df62/nova/conductor/tasks/live_migrate.py#L261\n\nBut will going from a stein compute to a train compute in this case be OK?","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b132dc7838546074796b8c12793e25a33637cdfb","unresolved":false,"context_lines":[{"line_number":201,"context_line":"Upgrade impact"},{"line_number":202,"context_line":"--------------"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None that I know of.  But do some further tests and research to ensure"},{"line_number":205,"context_line":"that there\u0027s no impact on live migration."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Implementation"},{"line_number":208,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_2c3ed428","line":205,"range":{"start_line":204,"start_character":0,"end_line":205,"end_character":41},"in_reply_to":"5fc1f717_ac3644b3","updated":"2019-04-09 14:52:10.000000000","message":"Yes.  I\u0027ll mention it here.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b25b348df12149ad794b45e65575b54ae4e63c4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"Primary assignee:"},{"line_number":214,"context_line":"  \u003ckashyapc\u003e"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Work Items"},{"line_number":217,"context_line":"----------"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"- Introduce a Nova wrapper method, baseline_hypervisor_cpu(), for"},{"line_number":220,"context_line":"  libvirt\u0027s baselineHypervisorCPU() API."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_1db1c48f","line":217,"range":{"start_line":216,"start_character":0,"end_line":217,"end_character":10},"updated":"2019-04-09 15:51:20.000000000","message":"i was expect some of this to be in the propsoed changes section in a breife sumary of what was going to be cahnged.\n\nfor exeample the majority? all? of this work seams to be confined to the virt dirver? \n\nthe cpu feature flags are reported as traits on the compute node resouce provider and this is how we schdule based on cpu feature today. have you validate that the traits will not change if we start pulling info form baselineHypervisorCPU?","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":227,"context_line":"  plus features (against a given QEMU binary), if available on the given"},{"line_number":228,"context_line":"  compute host."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"- Rewrite the _compare_cpu() method\u0027s the logic in the libvirt driver to"},{"line_number":231,"context_line":"  take advantage of compareHypervisorCPU().  (While at it,rename it to"},{"line_number":232,"context_line":"  _compare_hypervisor_cpu()."},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_420f692d","line":230,"range":{"start_line":230,"start_character":38,"end_line":230,"end_character":41},"updated":"2019-04-09 14:48:39.000000000","message":"nix","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"  compute host."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"- Rewrite the _compare_cpu() method\u0027s the logic in the libvirt driver to"},{"line_number":231,"context_line":"  take advantage of compareHypervisorCPU().  (While at it,rename it to"},{"line_number":232,"context_line":"  _compare_hypervisor_cpu()."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"- Update the check_can_live_migrate_destination() method in the libvirt"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_822231a2","line":231,"range":{"start_line":231,"start_character":58,"end_line":231,"end_character":59},"updated":"2019-04-09 14:48:39.000000000","message":"space","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":245,"context_line":"Dependencies"},{"line_number":246,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"This is not a strict \"dependncy\", but noting for completeness\u0027 sake:"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"- s390x support [4]_ for libvirt\u0027s compareHypervisorCPU() and"},{"line_number":251,"context_line":"  baselineHypervisorCPU()."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_2c4a5426","line":248,"range":{"start_line":248,"start_character":22,"end_line":248,"end_character":31},"updated":"2019-04-09 13:56:09.000000000","message":"dependency","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"66e8d3e21e46c8699eadd3a99ca44fb648f2d368","unresolved":false,"context_lines":[{"line_number":255,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"- Introduce \"fake libvirt\" methods for baselineHypervisorCPU() and"},{"line_number":258,"context_line":"  compareHypervisorCPU() APIs with minimum-required functionanlity"},{"line_number":259,"context_line":"  (because duplicating libvirt\u0027s logic is complicated and doesn\u0027t add"},{"line_number":260,"context_line":"  much value to replicate it)."},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_4c47a01e","line":258,"range":{"start_line":258,"start_character":52,"end_line":258,"end_character":66},"updated":"2019-04-09 13:56:09.000000000","message":"functionality","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc9eef7be62a1b5f83763e997e687d04d0fc3d5d","unresolved":false,"context_lines":[{"line_number":266,"context_line":"Documentation Impact"},{"line_number":267,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Operations Guide need to be updated to explain how the newer APIs allow"},{"line_number":270,"context_line":"more reliable guest CPU configuration."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5fc1f717_2269fdbc","line":269,"updated":"2019-04-09 14:48:39.000000000","message":"Are you referring to https://docs.openstack.org/operations-guide/ or the nova admin docs?\n\nhttps://docs.openstack.org/nova/latest/admin/\n\nJust wondering if you had some specific existing documentation in mind that would need to be updated.","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"489d17ba7432e671ad20acd9c7a8303705f575b6","unresolved":false,"context_lines":[{"line_number":266,"context_line":"Documentation Impact"},{"line_number":267,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Operations Guide need to be updated to explain how the newer APIs allow"},{"line_number":270,"context_line":"more reliable guest CPU configuration."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ffb9cba7_ec0d863e","line":269,"in_reply_to":"5fc1f717_2269fdbc","updated":"2019-04-25 11:22:44.000000000","message":"I was thinking of adding a new section in the https://docs.openstack.org/nova/latest/admin/ with a few things:\n\n* We strongly recommend operators to use Nova\u0027s libvirt driver\u0027s default CPU mode `host-model`—it also automatically adds the right flags for Meltdown/Spectre mitigation, assuming you have up2date microcode, kernel, QEMU and libvirt versions installed).  So for \"most cases\" `host-model` is really the best choice.\n\n* However, if you want a custom CPU model plus flags for whatever reasons, then I was considering to  add a docs section titled: \"How to calculate a baseline CPU + flags, if you know your compute host pool very well\".","commit_id":"fad9c8c35d3f382428c10d6b9912ea3ab8d0caa0"}]}
