)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8b980d8c9340e8f0440dfb214762db73b338b553","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jack Ding \u003cjack.ding@windriver.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-10-11 18:17:51 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: High Precision Event Timer (HPET) on x86 guests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support HPET for x86 guests in the libvirt driver."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_b9b46c1e","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":4},"updated":"2018-10-12 14:35:36.000000000","message":"Is this still a WIP?","commit_id":"23a324307b0a13209883c49faf85fad48e550582"}],"specs/stein/approved/support-hpet-on-guest.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"591ead99435bc266dadd56a96e158fc824c8639b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Proposed change"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Operator indicates desire for HPET in the guest via flavor extra specs."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"We want to avoid scheduling to hosts that can\u0027t do that, so we propose to"},{"line_number":26,"context_line":"introduce a standard trait (working name: ``HPET_GUEST_CAPABLE``; bikeshed"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_c3fec005","line":23,"range":{"start_line":23,"start_character":52,"end_line":23,"end_character":71},"updated":"2018-10-04 19:08:36.000000000","message":"Jay rightly points out that we should support this in the image meta. Either in addition or instead.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9f06135de1b1dde0af9a54bf691ee4a48ee3130e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Operator indicates desire for HPET in the guest via flavor extra specs."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"We want to avoid scheduling to hosts that can\u0027t do that, so we propose to"},{"line_number":26,"context_line":"introduce a standard trait (working name: ``HPET_GUEST_CAPABLE``; bikeshed"},{"line_number":27,"context_line":"away) which HPET-capable hosts will set on the root provider in the same way as"},{"line_number":28,"context_line":"other \"capabilities\"."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_61c30f3b","line":26,"range":{"start_line":26,"start_character":42,"end_line":26,"end_character":64},"updated":"2018-10-05 16:02:17.000000000","message":"This is now called COMPUTE_TIME_HPET.\n\nhttps://review.openstack.org/#/c/608258/","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f7e9b08bb57343427690c62e96f74c11da3129b3","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"We want to avoid scheduling to hosts that can\u0027t do that, so we propose to"},{"line_number":26,"context_line":"introduce a standard trait (working name: ``HPET_GUEST_CAPABLE``; bikeshed"},{"line_number":27,"context_line":"away) which HPET-capable hosts will set on the root provider in the same way as"},{"line_number":28,"context_line":"other \"capabilities\"."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"And this trait must **somehow** wind up in the ``GET /allocation_candidates``"},{"line_number":31,"context_line":"query (``?required\u003dHPET_GUEST_CAPABLE``)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_5b7db46b","line":28,"range":{"start_line":27,"start_character":12,"end_line":28,"end_character":21},"updated":"2018-10-04 20:56:42.000000000","message":"Agreed in hangout to do this.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ce97dc2b091bf1dfcfbe41411654cd01f81307ce","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"**CON:** The implicit transformation of a special extra spec into"},{"line_number":44,"context_line":"placement-isms is arcane. This wouldn\u0027t be the only instance of this; we would"},{"line_number":45,"context_line":"need to organize the \"special\" extra specs in the code for maintainability, and"},{"line_number":46,"context_line":"document them thoroughly."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Explicit Trait, Implicit Config"},{"line_number":49,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_d7775e3c","line":46,"range":{"start_line":44,"start_character":26,"end_line":46,"end_character":25},"updated":"2018-10-04 16:19:13.000000000","message":"Presumably we\u0027d transform image properties as well?\n\nThis would also allow us to preserve backwards compatibility (where we deem it appropriate) with existing flavor extra-specs or image properties where the underlying resource tracking is moving to placement.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bc0e3ec9d2df83cfee88774bf93a67832e3d0d4f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"**CON:** The implicit transformation of a special extra spec into"},{"line_number":44,"context_line":"placement-isms is arcane. This wouldn\u0027t be the only instance of this; we would"},{"line_number":45,"context_line":"need to organize the \"special\" extra specs in the code for maintainability, and"},{"line_number":46,"context_line":"document them thoroughly."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Explicit Trait, Implicit Config"},{"line_number":49,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_ddc53f40","line":46,"range":{"start_line":44,"start_character":26,"end_line":46,"end_character":25},"in_reply_to":"3f79a3b5_7a619138","updated":"2018-10-04 17:42:03.000000000","message":"other examples might be \n\n- huge pages were hw:mem_page_size will get translated into a  corresponding trait. \n- cpu thread policy e.g. tagging hosts with HW_SMT and either forbining or requireing  the SMT trait based on hw:cpu_thread_policy:isolate or required\n- vIOMMU\n- machine type (q35 or aarch64)\n\nbut yes i also agree that we would want to transfrom both image properties and flavor extra spec if we went this way.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"32f256111b687f1b720e899d4e0c547e83ec25af","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"**CON:** The implicit transformation of a special extra spec into"},{"line_number":44,"context_line":"placement-isms is arcane. This wouldn\u0027t be the only instance of this; we would"},{"line_number":45,"context_line":"need to organize the \"special\" extra specs in the code for maintainability, and"},{"line_number":46,"context_line":"document them thoroughly."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Explicit Trait, Implicit Config"},{"line_number":49,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_7a619138","line":46,"range":{"start_line":44,"start_character":26,"end_line":46,"end_character":25},"in_reply_to":"3f79a3b5_d7775e3c","updated":"2018-10-04 16:36:15.000000000","message":"Agreed. When I said \"wouldn\u0027t be the only instance\" I was thinking more about upcoming use cases like UEFI boot. But yeah, compatibility with existing stuff is also in play.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f7e9b08bb57343427690c62e96f74c11da3129b3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"need to organize the \"special\" extra specs in the code for maintainability, and"},{"line_number":46,"context_line":"document them thoroughly."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Explicit Trait, Implicit Config"},{"line_number":49,"context_line":"-------------------------------"},{"line_number":50,"context_line":"* Operator specifies extra spec in existing supported format"},{"line_number":51,"context_line":"  ``trait:HPET_GUEST_CAPABLE\u003drequired``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_5b0e14e5","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":31},"updated":"2018-10-04 20:56:42.000000000","message":"Agreed in the hangout to do this one.\n\nDoesn\u0027t preclude doing the explicit/explicit for things that are more complex than straight boolean.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ce97dc2b091bf1dfcfbe41411654cd01f81307ce","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* The driver looks for ``trait*:HPET_GUEST_CAPABLE\u003drequired`` and uses that as"},{"line_number":55,"context_line":"  its cue to enable HPET on the guest."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Explicit Config, Explicit Trait"},{"line_number":60,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_97ed66ba","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":59},"updated":"2018-10-04 16:19:13.000000000","message":"I guess this opens up the question of whether a trait always describes something that is unconditionally present on a given resource provider, or whether it can be something that is supported, but is only enabled if requested.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bc0e3ec9d2df83cfee88774bf93a67832e3d0d4f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* The driver looks for ``trait*:HPET_GUEST_CAPABLE\u003drequired`` and uses that as"},{"line_number":55,"context_line":"  its cue to enable HPET on the guest."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Explicit Config, Explicit Trait"},{"line_number":60,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_080a971d","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":59},"in_reply_to":"3f79a3b5_97ed66ba","updated":"2018-10-04 17:42:03.000000000","message":"ignoreing that it give trait multiple meaning it also raises the questin if i have a forbien trait am i guarnteed that\nfeatre will be disabled.\n\nmy other concern in say an ironic case would be what does\nwhat does a raid5 trait mean in this case.\n\nwill the instance both with all disk in a raid5 or or just on a host that has hardware support for raid5?\n\nor back to the HPET in the ironic case \nrait*:HPET_GUEST_CAPABLE\u003drequired woudl enable the hpet in the bios and rait*:HPET_GUEST_CAPABLE\u003dforbidden would disable it?","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"ce97dc2b091bf1dfcfbe41411654cd01f81307ce","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Explicit Config, Explicit Trait"},{"line_number":60,"context_line":"-------------------------------"},{"line_number":61,"context_line":"* Operator specifies **both** extra specs, ``hw:hpet\u003dTrue`` and"},{"line_number":62,"context_line":"  ``trait:HPET_GUEST_CAPABLE\u003drequired``, in the flavor."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_17edd623","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":31},"updated":"2018-10-04 16:19:13.000000000","message":"I\u0027d like to rule this one out as terrible for the end-user.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bc0e3ec9d2df83cfee88774bf93a67832e3d0d4f","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Explicit Config, Explicit Trait"},{"line_number":60,"context_line":"-------------------------------"},{"line_number":61,"context_line":"* Operator specifies **both** extra specs, ``hw:hpet\u003dTrue`` and"},{"line_number":62,"context_line":"  ``trait:HPET_GUEST_CAPABLE\u003drequired``, in the flavor."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_5d5ccf7f","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":31},"in_reply_to":"3f79a3b5_17edd623","updated":"2018-10-04 17:42:03.000000000","message":"its strange as an enuser i personally woudl feel more comfortable with either the first option or this one\n\nthe only one i persoanly have concerns with is \"Explicit Trait, Implicit Config\"\n\nby being fully explicit i feel like there is less confusion even if there is more verbosity.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9b7d32a26900cbadb937e161b93dd8c8fc73958b","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Explicit Config, Explicit Trait"},{"line_number":60,"context_line":"-------------------------------"},{"line_number":61,"context_line":"* Operator specifies **both** extra specs, ``hw:hpet\u003dTrue`` and"},{"line_number":62,"context_line":"  ``trait:HPET_GUEST_CAPABLE\u003drequired``, in the flavor."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_28cbd31d","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":31},"in_reply_to":"3f79a3b5_48340f4a","updated":"2018-10-04 18:09:49.000000000","message":"\u003e As an end user I kind of see the use of placement as an\n \u003e implementation detail rather than something I should really need to\n \u003e care about.  So it would be weird to me to need to specify both\n \u003e \"hw:hpet\u003dTrue\" and \"trait:HPET_GUEST_CAPABLE\u003drequired\" since\n \u003e arguably either one could be inferred from the other.\n\nFWIW, I agree strongly with this.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"07218bf87db22d78c963d49d806807fa0f7eaaac","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Explicit Config, Explicit Trait"},{"line_number":60,"context_line":"-------------------------------"},{"line_number":61,"context_line":"* Operator specifies **both** extra specs, ``hw:hpet\u003dTrue`` and"},{"line_number":62,"context_line":"  ``trait:HPET_GUEST_CAPABLE\u003drequired``, in the flavor."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_48340f4a","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":31},"in_reply_to":"3f79a3b5_5d5ccf7f","updated":"2018-10-04 18:04:45.000000000","message":"As an end user I kind of see the use of placement as an implementation detail rather than something I should really need to care about.  So it would be weird to me to need to specify both \"hw:hpet\u003dTrue\" and \"trait:HPET_GUEST_CAPABLE\u003drequired\" since arguably either one could be inferred from the other.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f7e9b08bb57343427690c62e96f74c11da3129b3","unresolved":false,"context_lines":[{"line_number":73,"context_line":"Alternatives"},{"line_number":74,"context_line":"------------"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"If the operator intends HPET to be on, but a) spells the value(s) wrong in the"},{"line_number":77,"context_line":"flavor, or b) is able to wind up on a host that doesn\u0027t support HPET, the guest"},{"line_number":78,"context_line":"simply doesn\u0027t get HPET turned on. We mostly agreed in the `nova meeting`_ that"},{"line_number":79,"context_line":"these should fail hard and early."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":".. _nova meeting: http://eavesdrop.openstack.org/meetings/nova/2018/nova.2018-10-04-14.03.log.html#l-135"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_bbc3a858","line":78,"range":{"start_line":76,"start_character":0,"end_line":78,"end_character":34},"updated":"2018-10-04 20:56:42.000000000","message":"Agreed in the hangout that this should be a (late) fail at the driver.","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bc0e3ec9d2df83cfee88774bf93a67832e3d0d4f","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":".. _nova meeting: http://eavesdrop.openstack.org/meetings/nova/2018/nova.2018-10-04-14.03.log.html#l-135"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Data model impact"},{"line_number":84,"context_line":"-----------------"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Changes which require modifications to the data model often have a wider impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_083857c9","line":83,"range":{"start_line":83,"start_character":0,"end_line":83,"end_character":17},"updated":"2018-10-04 17:42:03.000000000","message":"NOTE to other readers the rest of the spec is the tempalte so the important part is captured above","commit_id":"09cc661c0dae8269d711926355c3a4bd54b5dc3f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5714fa0245bcedf5e6191d32fcfaf037212ce640","unresolved":false,"context_lines":[{"line_number":24,"context_line":"image properties."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"We want to avoid scheduling to hosts that can\u0027t do that, so we propose to"},{"line_number":27,"context_line":"introduce a standard trait ``COMPUTE_TIME_HPET`` which HPET-capable hosts"},{"line_number":28,"context_line":"will set on the root provider in the same way as other \"capabilities\"."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"* Operator specifies in flavor extra spec or image property in existing"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_640f2f2f","line":27,"range":{"start_line":27,"start_character":55,"end_line":27,"end_character":73},"updated":"2018-10-11 09:19:50.000000000","message":"you should define what is a HPET-capable host given all the discussion we had during the Google Hangout.","commit_id":"bf8fa31845774bdf470fa542a0ddb375491302ea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5714fa0245bcedf5e6191d32fcfaf037212ce640","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"We want to avoid scheduling to hosts that can\u0027t do that, so we propose to"},{"line_number":27,"context_line":"introduce a standard trait ``COMPUTE_TIME_HPET`` which HPET-capable hosts"},{"line_number":28,"context_line":"will set on the root provider in the same way as other \"capabilities\"."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"* Operator specifies in flavor extra spec or image property in existing"},{"line_number":31,"context_line":"  supported format ``trait:COMPUTE_TIME_HPET\u003drequired``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_042afb7c","line":28,"updated":"2018-10-11 09:19:50.000000000","message":"I assume it is the responsibility of the virt driver to lookup the host and see whether it can support HPET guests ?","commit_id":"bf8fa31845774bdf470fa542a0ddb375491302ea"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"43da895f9efdeed62dcc9de15cdcdae499aeafcc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"If the operator intends HPET to be on, but a) spells the value(s) wrong in the"},{"line_number":41,"context_line":"flavor, or b) is able to wind up on a host that doesn\u0027t support HPET, the guest"},{"line_number":42,"context_line":"simply doesn\u0027t get HPET turned on. These should be a (late) fail at the driver."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Data model impact"},{"line_number":45,"context_line":"-----------------"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_048be6c0","line":43,"updated":"2018-10-10 21:34:37.000000000","message":"Need to list the alternatives we haggled over to get here. I.e. the other combinations of implicit/explicit trait/config. (The one we\u0027re going with is \"explicit trait, implicit config\".)","commit_id":"bf8fa31845774bdf470fa542a0ddb375491302ea"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"43da895f9efdeed62dcc9de15cdcdae499aeafcc","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Data model impact"},{"line_number":45,"context_line":"-----------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Changes which require modifications to the data model often have a wider impact"},{"line_number":48,"context_line":"on the system.  The community often has strong opinions on how the data model"},{"line_number":49,"context_line":"should be evolved, from both a functional and performance perspective. It is"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3f79a3b5_248862c1","line":46,"updated":"2018-10-10 21:34:37.000000000","message":"Boilerplate hereinafter needs to be removed and replaced with real content.","commit_id":"bf8fa31845774bdf470fa542a0ddb375491302ea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3d780366b361ffa960d1e4ce326ee5cc56fdc88d","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Use Cases"},{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":"Operator requests HPET enabled on a guest, and it happens."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Proposed change"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_e7f80f7f","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":58},"updated":"2018-10-11 23:31:35.000000000","message":"nit thats an expectation not a usecase.\na usecase would be something like this\n\nAs an end user looking to migrate a existing Physical appliance to run in a cloud environment i would like to be able to to request a gust with a HPET so that i can share common code between my visualized an physical product.\n\nAs an operator i would like to support onboarding legacy VNF for my telco customers where guest image cannot be modified to work without a HPET.","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"0a9d569cc4f4bc059b798c87e1a3f844d4af0fd4","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Use Cases"},{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":"Operator requests HPET enabled on a guest, and it happens."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Proposed change"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_dda271ad","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":58},"in_reply_to":"3f79a3b5_e7f80f7f","updated":"2018-10-12 16:42:17.000000000","message":"Done","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3d780366b361ffa960d1e4ce326ee5cc56fdc88d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Operator indicates desire for HPET in the guest by specifying a placement"},{"line_number":24,"context_line":"trait ``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor extra-specs or"},{"line_number":25,"context_line":"image properties."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":28,"context_line":"``GET /allocation_candidates``."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_e706cf74","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":16},"updated":"2018-10-11 23:31:35.000000000","message":"endusers can indicate there desire/need to have a hpet by uploading there own image with the same trait.","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"0a9d569cc4f4bc059b798c87e1a3f844d4af0fd4","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Operator indicates desire for HPET in the guest by specifying a placement"},{"line_number":24,"context_line":"trait ``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor extra-specs or"},{"line_number":25,"context_line":"image properties."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":28,"context_line":"``GET /allocation_candidates``."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_1da22998","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":16},"in_reply_to":"3f79a3b5_e706cf74","updated":"2018-10-12 16:42:17.000000000","message":"Done","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3d780366b361ffa960d1e4ce326ee5cc56fdc88d","unresolved":false,"context_lines":[{"line_number":120,"context_line":"Upgrade impact"},{"line_number":121,"context_line":"--------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The operator needs to set the config option appropriately after an upgrade."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_e7548f58","line":123,"range":{"start_line":123,"start_character":30,"end_line":123,"end_character":43},"updated":"2018-10-11 23:31:35.000000000","message":"traits","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"0a9d569cc4f4bc059b798c87e1a3f844d4af0fd4","unresolved":false,"context_lines":[{"line_number":120,"context_line":"Upgrade impact"},{"line_number":121,"context_line":"--------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The operator needs to set the config option appropriately after an upgrade."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_fdbdedb1","line":123,"range":{"start_line":123,"start_character":30,"end_line":123,"end_character":43},"in_reply_to":"3f79a3b5_590198b4","updated":"2018-10-12 16:42:17.000000000","message":"Done","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8b980d8c9340e8f0440dfb214762db73b338b553","unresolved":false,"context_lines":[{"line_number":120,"context_line":"Upgrade impact"},{"line_number":121,"context_line":"--------------"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"The operator needs to set the config option appropriately after an upgrade."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3f79a3b5_590198b4","line":123,"range":{"start_line":123,"start_character":30,"end_line":123,"end_character":43},"in_reply_to":"3f79a3b5_e7548f58","updated":"2018-10-12 14:35:36.000000000","message":"Not sure this is relevant. This is a feature we didn\u0027t support previously.","commit_id":"23a324307b0a13209883c49faf85fad48e550582"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Once scheduled to a compute node, the virt driver looks for"},{"line_number":39,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image and uses that as"},{"line_number":40,"context_line":"its cue to enable HPET on the guest."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_458bc367","line":39,"range":{"start_line":39,"start_character":7,"end_line":39,"end_character":8},"updated":"2018-10-15 17:57:30.000000000","message":"Why the wildcard?","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7356e638e2a656ca663b513714b2c0a75e9833ac","unresolved":false,"context_lines":[{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Once scheduled to a compute node, the virt driver looks for"},{"line_number":39,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image and uses that as"},{"line_number":40,"context_line":"its cue to enable HPET on the guest."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_a59bb761","line":39,"range":{"start_line":39,"start_character":7,"end_line":39,"end_character":8},"in_reply_to":"3f79a3b5_458bc367","updated":"2018-10-15 18:06:56.000000000","message":"In case the flavor is using a numbered request group to identify resources in the compute node provider.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Once scheduled to a compute node, the virt driver looks for"},{"line_number":39,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image and uses that as"},{"line_number":40,"context_line":"its cue to enable HPET on the guest."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_288bfe1d","line":39,"range":{"start_line":39,"start_character":7,"end_line":39,"end_character":8},"in_reply_to":"3f79a3b5_65f27f6b","updated":"2018-10-15 19:12:56.000000000","message":"Done","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27b7fe6aa2b71a4ddea0bb65661cc044eb43c99a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Once scheduled to a compute node, the virt driver looks for"},{"line_number":39,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image and uses that as"},{"line_number":40,"context_line":"its cue to enable HPET on the guest."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_65f27f6b","line":39,"range":{"start_line":39,"start_character":7,"end_line":39,"end_character":8},"in_reply_to":"3f79a3b5_a59bb761","updated":"2018-10-15 18:20:50.000000000","message":"OK - and we don\u0027t support those for image properties right? We should probably note that for clarity.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Alternatives"},{"line_number":43,"context_line":"------------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The following options were considered, but ultimatedly we choose the"},{"line_number":46,"context_line":"*Explicit Trait, Implicit Config* option. The result is that it is officially"},{"line_number":47,"context_line":"acceptable for virt drivers to key off placement traits specified in the"},{"line_number":48,"context_line":"image/flavor in order to turn on/off configuration options for the instance."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_c5ecb329","line":45,"range":{"start_line":45,"start_character":58,"end_line":45,"end_character":64},"updated":"2018-10-15 17:57:30.000000000","message":"chose","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Alternatives"},{"line_number":43,"context_line":"------------"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The following options were considered, but ultimatedly we choose the"},{"line_number":46,"context_line":"*Explicit Trait, Implicit Config* option. The result is that it is officially"},{"line_number":47,"context_line":"acceptable for virt drivers to key off placement traits specified in the"},{"line_number":48,"context_line":"image/flavor in order to turn on/off configuration options for the instance."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_c8504a0c","line":45,"range":{"start_line":45,"start_character":58,"end_line":45,"end_character":64},"in_reply_to":"3f79a3b5_c5ecb329","updated":"2018-10-15 19:12:56.000000000","message":"Done","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Other deployer impact"},{"line_number":119,"context_line":"---------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_85c31b8a","line":121,"updated":"2018-10-15 17:57:30.000000000","message":"Well, something outside of nova must decorate HPET-capable compute node providers with the trait, yes?","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27b7fe6aa2b71a4ddea0bb65661cc044eb43c99a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Other deployer impact"},{"line_number":119,"context_line":"---------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_2596c7f0","line":121,"in_reply_to":"3f79a3b5_65103ff5","updated":"2018-10-15 18:20:50.000000000","message":"OK that\u0027s not clear to me.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7356e638e2a656ca663b513714b2c0a75e9833ac","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Other deployer impact"},{"line_number":119,"context_line":"---------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"None"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Developer impact"},{"line_number":124,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_65103ff5","line":121,"in_reply_to":"3f79a3b5_85c31b8a","updated":"2018-10-15 18:06:56.000000000","message":"I thought the virt driver was responsible for detecting and setting the capability bit.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Implementation"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_a543b710","line":131,"updated":"2018-10-15 17:57:30.000000000","message":"As with any flavor extra spec, the compute node code has to be upgraded to support it. In other words, I could set the trait on a Rocky compute and the scheduler could select it, but the trait would be ignored because the Rocky compute code doesn\u0027t know about it.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27b7fe6aa2b71a4ddea0bb65661cc044eb43c99a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Implementation"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_25bfa760","line":131,"in_reply_to":"3f79a3b5_25bd67d6","updated":"2018-10-15 18:20:50.000000000","message":"It\u0027s semi obvious, but we do have times where we do minimum compute capability checks across the deployment. If the compute code itself is decorating the provider with the trait, then it\u0027s a non-issue because the scheduler shouldn\u0027t pick a Rocky node. But since that wasn\u0027t clear to me (who was setting the trait) I assumed an external user/system was doing it.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Implementation"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_a89b8e61","line":131,"in_reply_to":"3f79a3b5_25bfa760","updated":"2018-10-15 19:12:56.000000000","message":"rephrased","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7356e638e2a656ca663b513714b2c0a75e9833ac","unresolved":false,"context_lines":[{"line_number":128,"context_line":"Upgrade impact"},{"line_number":129,"context_line":"--------------"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Implementation"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_25bd67d6","line":131,"in_reply_to":"3f79a3b5_a543b710","updated":"2018-10-15 18:06:56.000000000","message":"I thought it was kind of obvious, so I commented (in PS7) and Jack removed his words from here. My bad :(","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Work Items"},{"line_number":146,"context_line":"----------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Add COMPUTE_TIME_HPET trait"},{"line_number":149,"context_line":"* Add required trait in flavor spec"},{"line_number":150,"context_line":"* libvirt driver changes to support HPET"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_055e2be8","line":148,"updated":"2018-10-15 17:57:30.000000000","message":"This is already done in os-traits right?","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7356e638e2a656ca663b513714b2c0a75e9833ac","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Work Items"},{"line_number":146,"context_line":"----------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Add COMPUTE_TIME_HPET trait"},{"line_number":149,"context_line":"* Add required trait in flavor spec"},{"line_number":150,"context_line":"* libvirt driver changes to support HPET"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_258b271e","line":148,"in_reply_to":"3f79a3b5_055e2be8","updated":"2018-10-15 18:06:56.000000000","message":"Proposed, but not merged [1]. Are you asking to include the link to the review?\n\n[1] https://review.openstack.org/#/c/608258/","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27b7fe6aa2b71a4ddea0bb65661cc044eb43c99a","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Work Items"},{"line_number":146,"context_line":"----------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Add COMPUTE_TIME_HPET trait"},{"line_number":149,"context_line":"* Add required trait in flavor spec"},{"line_number":150,"context_line":"* libvirt driver changes to support HPET"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_85af9b29","line":148,"in_reply_to":"3f79a3b5_258b271e","updated":"2018-10-15 18:20:50.000000000","message":"I would at least mention it gets added to the os-traits library.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":145,"context_line":"Work Items"},{"line_number":146,"context_line":"----------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Add COMPUTE_TIME_HPET trait"},{"line_number":149,"context_line":"* Add required trait in flavor spec"},{"line_number":150,"context_line":"* libvirt driver changes to support HPET"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_c8ab6a6e","line":148,"in_reply_to":"3f79a3b5_85af9b29","updated":"2018-10-15 19:12:56.000000000","message":"moved to dependencies","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":146,"context_line":"----------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Add COMPUTE_TIME_HPET trait"},{"line_number":149,"context_line":"* Add required trait in flavor spec"},{"line_number":150,"context_line":"* libvirt driver changes to support HPET"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_65491f2d","line":149,"range":{"start_line":149,"start_character":2,"end_line":149,"end_character":35},"updated":"2018-10-15 17:57:30.000000000","message":"This probably doesn\u0027t need to be listed here - this is something the operator / admin does.","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":146,"context_line":"----------"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Add COMPUTE_TIME_HPET trait"},{"line_number":149,"context_line":"* Add required trait in flavor spec"},{"line_number":150,"context_line":"* libvirt driver changes to support HPET"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_e8050610","line":149,"range":{"start_line":149,"start_character":2,"end_line":149,"end_character":35},"in_reply_to":"3f79a3b5_65491f2d","updated":"2018-10-15 19:12:56.000000000","message":"removed","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Dependencies"},{"line_number":153,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"None"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Testing"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_e5568fcd","line":155,"updated":"2018-10-15 17:57:30.000000000","message":"The new standard trait needs to be added to the os-traits library and released, correct?","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Dependencies"},{"line_number":153,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"None"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Testing"},{"line_number":158,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_2800deff","line":155,"in_reply_to":"3f79a3b5_e5568fcd","updated":"2018-10-15 19:12:56.000000000","message":"Done","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7005da7696aef145cd772e67b05da485f0d764ea","unresolved":false,"context_lines":[{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Operations Guide and End User Guide."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_65627fa9","line":166,"updated":"2018-10-15 17:57:30.000000000","message":"There is no ops guide I don\u0027t think. I believe what you\u0027re looking for specifically is:\n\nhttps://docs.openstack.org/nova/latest/user/flavors.html#extra-specs\n\nand\n\nhttps://docs.openstack.org/glance/latest/admin/useful-image-properties.html\n\nCorrect?","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"b1d72c41678a8b124a282b0226894284b8e0b7c7","unresolved":false,"context_lines":[{"line_number":163,"context_line":"Documentation Impact"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Operations Guide and End User Guide."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f79a3b5_08fde206","line":166,"in_reply_to":"3f79a3b5_65627fa9","updated":"2018-10-15 19:12:56.000000000","message":"Done","commit_id":"854cfbe6acd7f7344a6d7b27ab576c8f82997ca7"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"8fccbb5c22e0fec6ce3e23297d02d6c33438d32c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my visualized and physical products."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_055db246","line":20,"range":{"start_line":20,"start_character":39,"end_line":20,"end_character":64},"updated":"2018-10-16 16:12:14.000000000","message":"After talking to QEMU and libvirt developers, the \nrecommendation seems to be: \"don\u0027t use HPET\" -- it\u0027s rare that anyone wants to use that.\n\nFurther, from a chat with Dan Berrangé \u0026 others:\n\n(1) HPET is very expensive compared to other time sources.\n\n(2) It\u0027s even worse in virtual machines than bare metal; because HPET access involves a context switch to QEMU userspace, where as TSC is handled by KVM natively.\n\n(3) There\u0027s reliability issues for HPET in QEMU too, IIRC, as it won\u0027t catch up missed ticks.\n\nPlease explain the use case as to _why_ HPET, given the above.","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"e6b1bf63b46532f0b4fcf4a85ce99ed81201e6a2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my visualized and physical products."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_7948e62c","line":20,"range":{"start_line":20,"start_character":60,"end_line":20,"end_character":64},"updated":"2018-10-15 21:05:38.000000000","message":"For the guest, is there a difference between the one emulated by QEMU and a real hardware one?","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2f3f604514a55679773caa96247157cc6f2f3d79","unresolved":false,"context_lines":[{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my visualized and physical products."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_4b341bfa","line":20,"range":{"start_line":20,"start_character":39,"end_line":20,"end_character":64},"in_reply_to":"3f79a3b5_055db246","updated":"2018-10-16 17:42:58.000000000","message":"The ability to enable HPET is desired to support the virtualization of legacy OS\u0027s (such as VxWorks) which do not support more modern clock sources.\n\nThe intent is to keep the HPET disabled unless the guest specifically asks for it to be enabled.","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"cc5ff2089fa2cf452bcfc87aca23f2be26327226","unresolved":false,"context_lines":[{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my visualized and physical products."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_f6c86a56","line":20,"range":{"start_line":20,"start_character":60,"end_line":20,"end_character":64},"in_reply_to":"3f79a3b5_7948e62c","updated":"2018-10-16 17:44:38.000000000","message":"I don\u0027t know that we can speak to that authoritatively in terms of API.  The qemu HPET support was originally added to support Linux guests and from our experience it also works for VxWorks guests.\n\nThe *performance* of the emulated HPET has historically been less good than real hardware which is why we don\u0027t use it by default.","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"e6b1bf63b46532f0b4fcf4a85ce99ed81201e6a2","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my visualized and physical products."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_1938d29c","line":21,"range":{"start_line":21,"start_character":29,"end_line":21,"end_character":39},"updated":"2018-10-15 21:05:38.000000000","message":"nit: virtualized","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"581f61a63da149a088f5c686079218674aa1b42a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my visualized and physical products."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_7acadfa0","line":21,"range":{"start_line":21,"start_character":29,"end_line":21,"end_character":39},"in_reply_to":"3f79a3b5_1938d29c","updated":"2018-10-17 19:26:50.000000000","message":"Done","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fefc9a4696d83bbdc3fa36d736d288f854799ebe","unresolved":false,"context_lines":[{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_bbc51692","line":26,"updated":"2018-10-15 19:38:20.000000000","message":"I think this section should explicitly say the virt driver will report the trait on the compute node resource provider, so there is no confusion about who / what is doing that.","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"2f3f604514a55679773caa96247157cc6f2f3d79","unresolved":false,"context_lines":[{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_76b53acf","line":26,"in_reply_to":"3f79a3b5_0810694e","updated":"2018-10-16 17:42:58.000000000","message":"I\u0027m not sure it matters in this particular case since HPET is purely virtualized.\n\nIn the more general case would we ever want to select a host based on the host clocksource?  Any sane x86 host would have invariant TSC and would use that as the clocksource.\n\nI could maybe see wanting to know what clock sources are available to the guest--can we infer that from the hypervisor type and the architecture or do we need more than that?","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf88ff9099baa8a1a0b7717ceb92018a6d2f16bd","unresolved":false,"context_lines":[{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_f902b6b9","line":26,"in_reply_to":"3f79a3b5_7ea0cc91","updated":"2018-10-15 21:04:11.000000000","message":"As per IRC (putting this here for posterity) as far as I can tell with qemu/kvm the HPET is purely emulated, and so can theoretically be enabled for any guest.\n\nIf we want to preserve the status quo by default, then we\u0027d need a config option (maybe virt-driver-specific) to allow opt-in for providing HPET when asked.","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"8fccbb5c22e0fec6ce3e23297d02d6c33438d32c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_0810694e","line":26,"in_reply_to":"3f79a3b5_7ea0cc91","updated":"2018-10-16 16:12:14.000000000","message":"Yeah, libvirt currently doesn\u0027t report clock sources via its host capabilities API (virConnectGetCapabilities()).\n\nProbably because \"no one has asked for it before\".  First step to get it is to file au upstream libvirt bug here:\n\nhttps://bugzilla.redhat.com/enter_bug.cgi?product\u003dVirtualization%20Tools\u0026component\u003dlibvirt","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"303ea44bb1896e78a46016b9d809b86c7c6c5b23","unresolved":false,"context_lines":[{"line_number":23,"context_line":"As an operator I would like to support onboarding legacy VNFs for my telco"},{"line_number":24,"context_line":"customers where a guest image cannot be modified to work without a HPET."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_7ea0cc91","line":26,"in_reply_to":"3f79a3b5_bbc51692","updated":"2018-10-15 20:30:17.000000000","message":"If the virt driver is going to report the trait, I think we need details in here on how it\u0027s going to determine that, because as far as I know there is nothing in the libvirt host capabilities that say if hpet is available. I found this:\n\nhttps://www.reddit.com/r/VFIO/comments/5g6rxb/a_fix_for_windows_vm_performancestuttering_when/\n\nWhich indicates the need to cat out and grep the host to see if hpet is a clocksource - is that what is being proposed? Or is a config option being proposed? Other?","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fefc9a4696d83bbdc3fa36d736d288f854799ebe","unresolved":false,"context_lines":[{"line_number":129,"context_line":"Upgrade impact"},{"line_number":130,"context_line":"--------------"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"The operator needs to set the config option appropriately after the upgrade."},{"line_number":133,"context_line":"Since the COMPUTE_TIME_HPET trait was decorated by new virt driver code, the"},{"line_number":134,"context_line":"compute nodes that do not contain upgraded code would not be selected."},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_3be02627","line":132,"range":{"start_line":132,"start_character":30,"end_line":132,"end_character":43},"updated":"2018-10-15 19:38:20.000000000","message":"There is no config option - the wording here is confusing. Config options are something else. I think you just mean the flavor extra spec and/or image property.","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"581f61a63da149a088f5c686079218674aa1b42a","unresolved":false,"context_lines":[{"line_number":129,"context_line":"Upgrade impact"},{"line_number":130,"context_line":"--------------"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"The operator needs to set the config option appropriately after the upgrade."},{"line_number":133,"context_line":"Since the COMPUTE_TIME_HPET trait was decorated by new virt driver code, the"},{"line_number":134,"context_line":"compute nodes that do not contain upgraded code would not be selected."},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3f79a3b5_5ac5a38f","line":132,"range":{"start_line":132,"start_character":30,"end_line":132,"end_character":43},"in_reply_to":"3f79a3b5_3be02627","updated":"2018-10-17 19:26:50.000000000","message":"Done","commit_id":"6a0acb9801851b0b287d1846a67731d6eb76aa8e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec994d9c918fbaa91bd041e373739bbd7f37de8f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Use Cases"},{"line_number":17,"context_line":"---------"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"As an end user looking to migrate an existing hardware to run in a cloud"},{"line_number":20,"context_line":"environment I would like to be able to request a guest with HPET so that I can"},{"line_number":21,"context_line":"share common code between my virtualized and physical products."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_b217e2ef","line":19,"range":{"start_line":19,"start_character":54,"end_line":19,"end_character":55},"updated":"2018-10-23 01:13:17.000000000","message":"appliance","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a26eaed9616a6d1e75c8964bacfa617acc8f02c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":33,"context_line":"their own images with the same trait."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_c766ac29","line":34,"updated":"2018-10-18 13:13:44.000000000","message":"What will happen if the flavor contains trait:COMPUTE_TIME_HPET\u003dforbidden and the image contains trait:COMPUTE_TIME_HPET\u003drequired ? If we don\u0027t do anything specific then it will result in a generic NoValidHost as no allocation candidates will be returned by placement. However we can do better and detect the conflict in nova and reject the server create request with a specific message early enough.\nHowever I\u0027m not sure if such detection will be easy to do if numbered request groups are involved.","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"77b14ac454246458f0714c4bebc5d672b24a3889","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":33,"context_line":"their own images with the same trait."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_17696f24","line":34,"in_reply_to":"3f79a3b5_38ee538a","updated":"2018-10-29 09:31:03.000000000","message":"OK. If the we already use a generic NoValidHost in similar cases then I\u0027m totally fine to do that here as well.","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec994d9c918fbaa91bd041e373739bbd7f37de8f","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":33,"context_line":"their own images with the same trait."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_f2255a5c","line":34,"in_reply_to":"3f79a3b5_c766ac29","updated":"2018-10-23 01:13:17.000000000","message":"well for flavor extra spec that can also be set in image meta data we raise specific exception at the virt diriver level which gets converted into a generic no valid hosts found error i belive by the time it gets to the tenant.\n\nthis would be no different. \nwe could implement some basic pre placement traits validatetion but i think this is out of scope of this spec.\na better error message would be nice but im not sure this spec is the correct place to have that discussing.\n\nperhaps we sould start with a debug log in the virt dirver and then we can think about a genreic approch later as a pre placement filter/validatior?","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fd9a1d21441f82335e3eaaff92163738d843dc04","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":33,"context_line":"their own images with the same trait."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":36,"context_line":"``GET /allocation_candidates``."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_38ee538a","line":34,"in_reply_to":"3f79a3b5_f2255a5c","updated":"2018-10-23 04:55:18.000000000","message":"Yea, probably a check before calling the placement, but yes, it doesn\u0027t sounds like the scope of this spec.","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7a26eaed9616a6d1e75c8964bacfa617acc8f02c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image or"},{"line_number":40,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` for numbered request group in flavor and"},{"line_number":41,"context_line":"uses that as its cue to enable HPET on the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"},{"line_number":44,"context_line":"------------"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_0746e47f","line":42,"updated":"2018-10-18 13:13:44.000000000","message":"How will the compute node RP be decorated with the COMPUTE_TIME_HPET trait?","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e5ededdd0e04e4e57f59952bba9ff53ab64ac35d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image or"},{"line_number":40,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` for numbered request group in flavor and"},{"line_number":41,"context_line":"uses that as its cue to enable HPET on the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"},{"line_number":44,"context_line":"------------"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_72b67428","line":42,"in_reply_to":"3f79a3b5_0746e47f","updated":"2018-10-18 13:31:55.000000000","message":"Heh, apparently this continues to come up in this spec, see my earlier -1s. The proposal is for the virt driver to report it as part of the update_provider_tree periodic call. The bigger question is what logic is going to be used to determine when the trait will be reported.","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fd9a1d21441f82335e3eaaff92163738d843dc04","unresolved":false,"context_lines":[{"line_number":39,"context_line":"``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image or"},{"line_number":40,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` for numbered request group in flavor and"},{"line_number":41,"context_line":"uses that as its cue to enable HPET on the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"},{"line_number":44,"context_line":"------------"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_d835dff7","line":42,"in_reply_to":"3f79a3b5_3203d2bf","updated":"2018-10-23 04:55:18.000000000","message":"Or we say, based on different virt driver, some driver may not support hpet?","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec994d9c918fbaa91bd041e373739bbd7f37de8f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image or"},{"line_number":40,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` for numbered request group in flavor and"},{"line_number":41,"context_line":"uses that as its cue to enable HPET on the guest."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Alternatives"},{"line_number":44,"context_line":"------------"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3f79a3b5_3203d2bf","line":42,"in_reply_to":"3f79a3b5_72b67428","updated":"2018-10-23 01:13:17.000000000","message":"in the specific case of the the libvirt driver this likely will take the form of a qemu and libvirt version check to dethermin if a sutiable minium version is prenet untill such a time as our supported minium version exceed the version hpet emulation was intorduced at which time it can simply always be reported.","commit_id":"e5ee3377709f4d88adc66b77b835ff98df63e744"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"47d2bd69f3098f028e1bb4a6271144b04e442a20","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_610c9d43","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":9},"updated":"2018-10-29 16:09:32.000000000","message":"end users, not operators.  (Operators probably won\u0027t care whether the users are using this or not.)","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ce62e41b8594d1e585bbf9c93a58aa3926741143","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_087aa923","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":9},"in_reply_to":"3f79a3b5_610c9d43","updated":"2018-10-29 18:18:39.000000000","message":"Done","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"47d2bd69f3098f028e1bb4a6271144b04e442a20","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":33,"context_line":"their own images and set the same image property."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":36,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_4105e113","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":49},"updated":"2018-10-29 16:09:32.000000000","message":"I think you could delete this sentence.","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"ce62e41b8594d1e585bbf9c93a58aa3926741143","unresolved":false,"context_lines":[{"line_number":29,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":33,"context_line":"their own images and set the same image property."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":36,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_28752533","line":33,"range":{"start_line":32,"start_character":0,"end_line":33,"end_character":49},"in_reply_to":"3f79a3b5_4105e113","updated":"2018-10-29 18:18:39.000000000","message":"Done","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"47d2bd69f3098f028e1bb4a6271144b04e442a20","unresolved":false,"context_lines":[{"line_number":36,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":37,"context_line":"``architecture\u003dx86_64``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"A few options to use Traits were considered as described in the next secsion,"},{"line_number":40,"context_line":"but we end up chose the simpler approach due to the following reasons:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"1) HPET is provided by qemu via emulation, so there are no security"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_bc4c1a75","line":39,"range":{"start_line":39,"start_character":69,"end_line":39,"end_character":76},"updated":"2018-10-29 16:09:32.000000000","message":"section","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"47d2bd69f3098f028e1bb4a6271144b04e442a20","unresolved":false,"context_lines":[{"line_number":37,"context_line":"``architecture\u003dx86_64``."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"A few options to use Traits were considered as described in the next secsion,"},{"line_number":40,"context_line":"but we end up chose the simpler approach due to the following reasons:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"1) HPET is provided by qemu via emulation, so there are no security"},{"line_number":43,"context_line":"implications as there are already better clock sources available."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_3c380ac9","line":40,"range":{"start_line":40,"start_character":14,"end_line":40,"end_character":19},"updated":"2018-10-29 16:09:32.000000000","message":"choosing","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"47d2bd69f3098f028e1bb4a6271144b04e442a20","unresolved":false,"context_lines":[{"line_number":55,"context_line":"5) Initially we would only support enabling HPET on qemu.  Specifying the"},{"line_number":56,"context_line":"hypervisor type will ensure the instance is scheduled on a host using the qemu"},{"line_number":57,"context_line":"hypervisor.  It would be possible to extend this to other hypervisors as well"},{"line_number":58,"context_line":"if applicable (vmware supports it, I think), and which ones are supported could"},{"line_number":59,"context_line":"be documented in the \"useful image properties\" documentation."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_bc75fa98","line":58,"range":{"start_line":58,"start_character":31,"end_line":58,"end_character":33},"updated":"2018-10-29 16:09:32.000000000","message":"the ability to enable/disable HPET","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"47d2bd69f3098f028e1bb4a6271144b04e442a20","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Upgrade impact"},{"line_number":160,"context_line":"--------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"The operator/user needs to set the image property appropriately after the"},{"line_number":163,"context_line":"upgrade."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3f79a3b5_2261c4d4","line":163,"range":{"start_line":162,"start_character":0,"end_line":163,"end_character":8},"updated":"2018-10-29 16:09:32.000000000","message":"maybe reword this to say that the new image property will only work reliably after all nodes have been upgraded.\n\nQuestion for other reviewers...do we need an explicit check to disallow setting this image property if any x86/qemu compute nodes are not yet upgraded?","commit_id":"27802615f178e75fc8269b7051ab54bd273e190b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a394eb799cd2530fbf331563c2632eefcc938c57","unresolved":false,"context_lines":[{"line_number":63,"context_line":"A few options to use Trait were considered, but ultimatedly we chose the"},{"line_number":64,"context_line":"simpler"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Explicit Trait, Implicit Config"},{"line_number":67,"context_line":"-------------------------------"},{"line_number":68,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":69,"context_line":"placement trait ``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor extra-specs."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":72,"context_line":"their own images with the same trait."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":75,"context_line":"``GET /allocation_candidates``."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Once scheduled to a compute node, the virt driver looks for"},{"line_number":78,"context_line":"``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image or"},{"line_number":79,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` for numbered request group in flavor and"},{"line_number":80,"context_line":"uses that as its cue to enable HPET on the guest."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"If we do get down to the virt driver and the trait is set, and the driver for"},{"line_number":83,"context_line":"whatever reason (e.g. value(s) wrong in the flavor; wind up on a host that"},{"line_number":84,"context_line":"doesn\u0027t support HPET etc.) determines it\u0027s not capable of flipping the switch,"},{"line_number":85,"context_line":"it should fail. [1]_"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Explicit Config, Implicit Trait"},{"line_number":90,"context_line":"-------------------------------"},{"line_number":91,"context_line":"* Operator specifies extra spec ``hw:hpet\u003dTrue`` in the flavor."},{"line_number":92,"context_line":"* Nova recognizes this as a known special case and adds"},{"line_number":93,"context_line":"  ``required\u003dCOMPUTE_TIME_HPET`` to the ``GET /allocation_candidates`` query."},{"line_number":94,"context_line":"* The driver uses the ``hw:hpet\u003dTrue`` extra spec as its cue to enable HPET on"},{"line_number":95,"context_line":"  the guest."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**CON:** The implicit transformation of a special extra spec into"},{"line_number":98,"context_line":"placement-isms is arcane. This wouldn\u0027t be the only instance of this; we would"},{"line_number":99,"context_line":"need to organize the \"special\" extra specs in the code for maintainability, and"},{"line_number":100,"context_line":"document them thoroughly."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Explicit Config, Explicit Trait"},{"line_number":103,"context_line":"-------------------------------"},{"line_number":104,"context_line":"* Operator specifies **both** extra specs, ``hw:hpet\u003dTrue`` and"},{"line_number":105,"context_line":"  ``trait:COMPUTE_TIME_HPET\u003drequired``, in the flavor."},{"line_number":106,"context_line":"* Existing nova scheduler code picks up the latter and passes it to ``GET"},{"line_number":107,"context_line":"  /allocation_candidates``."},{"line_number":108,"context_line":"* The driver uses the ``hw:hpet\u003dTrue`` extra spec as its cue to enable HPET on"},{"line_number":109,"context_line":"  the guest."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"**CON:** The operator has to remember to set both extra specs, which is kind of"},{"line_number":112,"context_line":"gross UX. (If she forgets ``hw:hpet\u003dTrue``, she ends up with HPET off; if she"},{"line_number":113,"context_line":"forgets ``trait:COMPUTE_TIME_HPET\u003drequired``, she can end up with late-failing"},{"line_number":114,"context_line":"NoValidHosts.)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Data model impact"},{"line_number":117,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_4968a0f1","line":114,"range":{"start_line":66,"start_character":0,"end_line":114,"end_character":14},"updated":"2018-10-30 02:09:11.000000000","message":"so we can remove those? or move those under the alternative section.","commit_id":"e1d0e29853f123b042fa5e9b17925ba38abdfcbe"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"5b5a6de26ce641b908cb299ac4cbd30377444ffe","unresolved":false,"context_lines":[{"line_number":63,"context_line":"A few options to use Trait were considered, but ultimatedly we chose the"},{"line_number":64,"context_line":"simpler"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Explicit Trait, Implicit Config"},{"line_number":67,"context_line":"-------------------------------"},{"line_number":68,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":69,"context_line":"placement trait ``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor extra-specs."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"End users can indicate their desire to have HPET in the guest by uploading"},{"line_number":72,"context_line":"their own images with the same trait."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Existing nova scheduler code picks up the trait and passes it to"},{"line_number":75,"context_line":"``GET /allocation_candidates``."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Once scheduled to a compute node, the virt driver looks for"},{"line_number":78,"context_line":"``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor/image or"},{"line_number":79,"context_line":"``trait*:COMPUTE_TIME_HPET\u003drequired`` for numbered request group in flavor and"},{"line_number":80,"context_line":"uses that as its cue to enable HPET on the guest."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"If we do get down to the virt driver and the trait is set, and the driver for"},{"line_number":83,"context_line":"whatever reason (e.g. value(s) wrong in the flavor; wind up on a host that"},{"line_number":84,"context_line":"doesn\u0027t support HPET etc.) determines it\u0027s not capable of flipping the switch,"},{"line_number":85,"context_line":"it should fail. [1]_"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"**CON:** We\u0027re using a trait to effect guest configuration."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Explicit Config, Implicit Trait"},{"line_number":90,"context_line":"-------------------------------"},{"line_number":91,"context_line":"* Operator specifies extra spec ``hw:hpet\u003dTrue`` in the flavor."},{"line_number":92,"context_line":"* Nova recognizes this as a known special case and adds"},{"line_number":93,"context_line":"  ``required\u003dCOMPUTE_TIME_HPET`` to the ``GET /allocation_candidates`` query."},{"line_number":94,"context_line":"* The driver uses the ``hw:hpet\u003dTrue`` extra spec as its cue to enable HPET on"},{"line_number":95,"context_line":"  the guest."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"**CON:** The implicit transformation of a special extra spec into"},{"line_number":98,"context_line":"placement-isms is arcane. This wouldn\u0027t be the only instance of this; we would"},{"line_number":99,"context_line":"need to organize the \"special\" extra specs in the code for maintainability, and"},{"line_number":100,"context_line":"document them thoroughly."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Explicit Config, Explicit Trait"},{"line_number":103,"context_line":"-------------------------------"},{"line_number":104,"context_line":"* Operator specifies **both** extra specs, ``hw:hpet\u003dTrue`` and"},{"line_number":105,"context_line":"  ``trait:COMPUTE_TIME_HPET\u003drequired``, in the flavor."},{"line_number":106,"context_line":"* Existing nova scheduler code picks up the latter and passes it to ``GET"},{"line_number":107,"context_line":"  /allocation_candidates``."},{"line_number":108,"context_line":"* The driver uses the ``hw:hpet\u003dTrue`` extra spec as its cue to enable HPET on"},{"line_number":109,"context_line":"  the guest."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"**CON:** The operator has to remember to set both extra specs, which is kind of"},{"line_number":112,"context_line":"gross UX. (If she forgets ``hw:hpet\u003dTrue``, she ends up with HPET off; if she"},{"line_number":113,"context_line":"forgets ``trait:COMPUTE_TIME_HPET\u003drequired``, she can end up with late-failing"},{"line_number":114,"context_line":"NoValidHosts.)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Data model impact"},{"line_number":117,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3f79a3b5_437b9079","line":114,"range":{"start_line":66,"start_character":0,"end_line":114,"end_character":14},"in_reply_to":"3f79a3b5_4968a0f1","updated":"2018-10-30 14:42:50.000000000","message":"Done","commit_id":"e1d0e29853f123b042fa5e9b17925ba38abdfcbe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f78e8ca3af00327224094d27f02ade76c4e6bcfe","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_e77ba877","line":32,"updated":"2018-10-31 18:24:04.000000000","message":"Are we going to actually check these other things, or just document them and pass on hpet if set on the image meta? Then if the latter fails because the hypervisor rejects it, we don\u0027t have to add business logic into the driver, which would be nice. It would also mean the door is left open for non-x86 arch support if that comes in the future.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"db76cea1e5fa132c2d86dec90d7553e5445cc78d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_d5cacfa1","line":32,"in_reply_to":"3f79a3b5_028d6f28","updated":"2018-10-31 23:36:45.000000000","message":"We do some extra spec and image metadata check for numa stuff, probably somewhere similar to that.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"8c11268945dc8325232161a5c40bfc308c8d961f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_82089f25","line":32,"in_reply_to":"3f79a3b5_3f59a428","updated":"2018-10-31 21:50:31.000000000","message":"ok I found the convenient place to check is in libvrt driver. That will be after the instance is scheduled and about to spawn. The spawn would fail if checking is failed and the user has to deal with it.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8a89059cff177a7dac6b56994bf95f44a3e6ff5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_b69a565d","line":32,"in_reply_to":"3f79a3b5_6dbddd01","updated":"2018-11-06 14:25:51.000000000","message":"\u003e sounds like we put some compute logic into glance? yes, except\n \u003e glance some generic schema stuff, then I feel it won\u0027t work.\n\nI don\u0027t think it will either. I\u0027m perfectly OK with just letting the hypervisor fail on this if the image is misconfigured. I don\u0027t think this is going to be used that often outside of windriver.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"d713a0ce62586162ef34abace3a01fe25932aa56","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_028d6f28","line":32,"in_reply_to":"3f79a3b5_82089f25","updated":"2018-10-31 22:27:40.000000000","message":"If we\u0027re waiting as far down as the libvirt driver, we may as well let libvirt/qemu fail if they\u0027re going to, or succeed if they happen to be valid.\n\nThe alternative would be to do it much earlier, at instance boot and/or instance rebuild time while we can still synchronously return an error message to the user.  (Basically make it part of the image/flavor validation that we\u0027re proposing to add.)  I\u0027m not sure we want to go through that hassle though since as Matt says it would mean adding business logic in nova that might change depending on hypervisor changes.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6bf1551fdd801dd939d6962ce0140256d8181931","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_3f59a428","line":32,"in_reply_to":"3f79a3b5_926c709f","updated":"2018-10-31 20:49:03.000000000","message":"Where do you propose to check it? I guess that\u0027s something which could be debated in code, but we don\u0027t have a lot of special image property validation checks in the API.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"340e1fed884bf0c7db9a33e004ff636d668ece49","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_eac4ba96","line":32,"in_reply_to":"3f79a3b5_d5cacfa1","updated":"2018-11-01 19:26:23.000000000","message":"\u003e If we\u0027re waiting as far down as the libvirt driver, we may as well let libvirt/qemu fail if they\u0027re going to, or succeed if they happen to be valid.\n\nI agree with that, and it\u0027s what I said above. If it works, cool. If it doesn\u0027t, the hypervisor should tell us.\n\nI don\u0027t really want to add special validation logic for image properties in the compute API, especially for something like this which will be rarely used, when really if any validation should be performed, it should be in glance when the properties are set. By the time you pass the thing to the compute API, it\u0027s a bit late and you\u0027ll find out if it works once it gets to the compute.\n\nDoesn\u0027t glance have some kind of schema definition for metadefs? I suppose that\u0027s per property though, and not for conditional relationships between various properties.\n\nAnyway, I suggest we leave this intentionally obscure in the spec and deal with it in code.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"85fb27f7dee26ba01a3a4e6a8fc7e6fba843b18c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_926c709f","line":32,"in_reply_to":"3f79a3b5_e77ba877","updated":"2018-10-31 19:09:17.000000000","message":"I think we need to check these things in order to fail earlier so that we don\u0027t waste resources on scheduling.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"62a9c51e57d32258c918270a97ceb1ebe5052dbe","unresolved":false,"context_lines":[{"line_number":29,"context_line":"End users can indicate their desire to have HPET in the guest by specifying a"},{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_6dbddd01","line":32,"in_reply_to":"3f79a3b5_eac4ba96","updated":"2018-11-06 01:23:50.000000000","message":"sounds like we put some compute logic into glance? yes, except glance some generic schema stuff, then I feel it won\u0027t work.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f78e8ca3af00327224094d27f02ade76c4e6bcfe","unresolved":false,"context_lines":[{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A few options to use Traits were considered as described in the next section,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_c701cc05","line":33,"range":{"start_line":33,"start_character":44,"end_line":33,"end_character":47},"updated":"2018-10-31 18:24:04.000000000","message":"space","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"88f89175b49e5e86d44e65ab3e3dfea430426d2c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"image property ``hw_time_hpet\u003dTrue``."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A few options to use Traits were considered as described in the next section,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_f21fe457","line":33,"range":{"start_line":33,"start_character":44,"end_line":33,"end_character":47},"in_reply_to":"3f79a3b5_c701cc05","updated":"2018-10-31 19:06:52.000000000","message":"Done","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3900127604326dad04872f1e9558d4366225a4f5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A few options to use Traits were considered as described in the next section,"},{"line_number":37,"context_line":"but we end up choosing the simpler approach due to the following reasons:"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_c7eb0c0f","line":35,"updated":"2018-10-31 18:24:51.000000000","message":"Could be worth noting that a corresponding flavor extra spec will not be introduced since enabling hpet is really a per-image concern rather than a resource concern for capacity planning.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"88f89175b49e5e86d44e65ab3e3dfea430426d2c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Setting the new image property to \"True\" would only be guaranteed to be valid"},{"line_number":33,"context_line":"in combination with ``hypervisor_type\u003dqemu``and either ``architecture\u003di686`` or"},{"line_number":34,"context_line":"``architecture\u003dx86_64``."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"A few options to use Traits were considered as described in the next section,"},{"line_number":37,"context_line":"but we end up choosing the simpler approach due to the following reasons:"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_f27b6477","line":35,"in_reply_to":"3f79a3b5_c7eb0c0f","updated":"2018-10-31 19:06:52.000000000","message":"Done","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f78e8ca3af00327224094d27f02ade76c4e6bcfe","unresolved":false,"context_lines":[{"line_number":37,"context_line":"but we end up choosing the simpler approach due to the following reasons:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"1) HPET is provided by qemu via emulation, so there are no security"},{"line_number":40,"context_line":"implications as there are already better clock sources available."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2) The HPET was turned off by default purely because of issues with time"},{"line_number":43,"context_line":"drifting on Windows guests. (See nova commit ba3fd16605.)"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_4715bc3d","line":40,"updated":"2018-10-31 18:24:04.000000000","message":"nit: for a numbered list, align the words with the sentence above to format the list properly (here and below)","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"88f89175b49e5e86d44e65ab3e3dfea430426d2c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"but we end up choosing the simpler approach due to the following reasons:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"1) HPET is provided by qemu via emulation, so there are no security"},{"line_number":40,"context_line":"implications as there are already better clock sources available."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2) The HPET was turned off by default purely because of issues with time"},{"line_number":43,"context_line":"drifting on Windows guests. (See nova commit ba3fd16605.)"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_72599427","line":40,"in_reply_to":"3f79a3b5_4715bc3d","updated":"2018-10-31 19:06:52.000000000","message":"Done","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0ea5136c6991bfec2398cf309c029e07071f5d65","unresolved":false,"context_lines":[{"line_number":64,"context_line":"a simpler approach without using Trait."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Explicit Trait, Implicit Config**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":69,"context_line":"placement trait ``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor extra-specs."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_3b68f8ba","line":67,"updated":"2018-10-30 16:20:44.000000000","message":"Yeah, this works. Could also use the next level of underlining, probably `~`, as in\n\n Explicit Trait, Implicit Config\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n...which would make these subsections under \"Alternatives\".\n\nBut this is fine too.","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"},{"author":{"_account_id":28433,"name":"Jack Ding","email":"jackding@gmail.com","username":"jackding"},"change_message_id":"88f89175b49e5e86d44e65ab3e3dfea430426d2c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"a simpler approach without using Trait."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"**Explicit Trait, Implicit Config**"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Operators can indicate their desire to have HPET in the guest by specifying a"},{"line_number":69,"context_line":"placement trait ``trait:COMPUTE_TIME_HPET\u003drequired`` in the flavor extra-specs."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"3f79a3b5_b2364cdf","line":67,"in_reply_to":"3f79a3b5_3b68f8ba","updated":"2018-10-31 19:06:52.000000000","message":"Done","commit_id":"263d77ee1a090e06d242fa9af9815a4185ecc666"}]}
