)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5576fa2a67d2771614266022428b4a95487ab6d5"},{"line_number":15,"context_line":"Implements: blueprint libvirt-pmu-configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_96cee360","line":13,"updated":"2019-07-18 08:48:24.000000000","message":"Could you add a Depends-On link to the glance change?","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5576fa2a67d2771614266022428b4a95487ab6d5"},{"line_number":15,"context_line":"Implements: blueprint libvirt-pmu-configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_a992a055","line":13,"in_reply_to":"7faddb67_96cee360","updated":"2019-07-18 09:20:01.000000000","message":"oh to define the metadef for the image meta. sure  i can go do that.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Libvirt: add support for vPMU configuration."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds the ablity for a user or operator to contol"},{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_01927959","line":10,"range":{"start_line":10,"start_character":51,"end_line":10,"end_character":53},"updated":"2019-08-07 16:56:53.000000000","message":"nit: one too many spaces","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds the ablity for a user or operator to contol"},{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5576fa2a67d2771614266022428b4a95487ab6d5"},{"line_number":15,"context_line":"Implements: blueprint libvirt-pmu-configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_218f752f","line":12,"updated":"2019-08-07 16:56:53.000000000","message":"Do you have a patch up for the glance docs?\n\nhttps://docs.openstack.org/glance/latest/admin/useful-image-properties.html\n\nI\u0027d like to see that is up and depends on this before we merge so we don\u0027t forget about it.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a441502a47211ae797befca98fe65fcca8596040","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds the ablity for a user or operator to contol"},{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5576fa2a67d2771614266022428b4a95487ab6d5"},{"line_number":15,"context_line":"Implements: blueprint libvirt-pmu-configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_d71bc3c7","line":12,"in_reply_to":"7faddb67_218f752f","updated":"2019-08-12 13:51:53.000000000","message":"i pushed it here https://review.opendev.org/#/c/675182/","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"af57f925d59d412e6e9e0702728f44d977e0cfc3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5576fa2a67d2771614266022428b4a95487ab6d5"},{"line_number":15,"context_line":"Implements: blueprint libvirt-pmu-configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_62382fed","line":13,"updated":"2019-08-06 10:22:02.000000000","message":"Please add a Depends-On link to the glance change that introduce the metadef for the image meta hw_pmu.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the virtualisation of a performance monitoring unit  within a vm."},{"line_number":11,"context_line":"This change introduces a new \"hw:pmu\" extra spec and a corresponding"},{"line_number":12,"context_line":"image metadata property \"hw_pmu\"."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I5576fa2a67d2771614266022428b4a95487ab6d5"},{"line_number":15,"context_line":"Implements: blueprint libvirt-pmu-configuration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_622f68a7","line":13,"in_reply_to":"7faddb67_62382fed","updated":"2019-08-12 18:09:38.000000000","message":"i have the depend on relation ship reversed. e.g. the glance patch will depend on this one.\nill add the review link to the glance patch  however in the next version of the commit message.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"}],"doc/source/user/flavors.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Perfromcne Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If a for the libvirt virt driver a vPMU can be enabled or disabled for an"},{"line_number":380,"context_line":"  instance using the \"hw:pmu\" extra_spec or the \"hw_pmu\" image property."},{"line_number":381,"context_line":"  The supported values are True or False. If the pmu is not explicitly enabled"},{"line_number":382,"context_line":"  or disabled via the flavor or image its presence is left to qemu to decide."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_16e0b3cc","line":379,"range":{"start_line":379,"start_character":2,"end_line":379,"end_character":10},"updated":"2019-07-18 08:48:24.000000000","message":"I cannot parse this.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Perfromcne Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If a for the libvirt virt driver a vPMU can be enabled or disabled for an"},{"line_number":380,"context_line":"  instance using the \"hw:pmu\" extra_spec or the \"hw_pmu\" image property."},{"line_number":381,"context_line":"  The supported values are True or False. If the pmu is not explicitly enabled"},{"line_number":382,"context_line":"  or disabled via the flavor or image its presence is left to qemu to decide."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_c9203c9e","line":379,"range":{"start_line":379,"start_character":2,"end_line":379,"end_character":10},"in_reply_to":"7faddb67_16e0b3cc","updated":"2019-07-18 09:20:01.000000000","message":"i think this was when my mother rang and i went to get the phone. which is to say i have no idea either but ill rewrite this to make sense.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":379,"context_line":"  If a for the libvirt virt driver a vPMU can be enabled or disabled for an"},{"line_number":380,"context_line":"  instance using the \"hw:pmu\" extra_spec or the \"hw_pmu\" image property."},{"line_number":381,"context_line":"  The supported values are True or False. If the pmu is not explicitly enabled"},{"line_number":382,"context_line":"  or disabled via the flavor or image its presence is left to qemu to decide."},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"  .. code-block:: console"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_36e36fdb","line":382,"range":{"start_line":382,"start_character":62,"end_line":382,"end_character":66},"updated":"2019-07-18 08:48:24.000000000","message":"just qemu or libvirt and qemu?","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":379,"context_line":"  If a for the libvirt virt driver a vPMU can be enabled or disabled for an"},{"line_number":380,"context_line":"  instance using the \"hw:pmu\" extra_spec or the \"hw_pmu\" image property."},{"line_number":381,"context_line":"  The supported values are True or False. If the pmu is not explicitly enabled"},{"line_number":382,"context_line":"  or disabled via the flavor or image its presence is left to qemu to decide."},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"  .. code-block:: console"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_c9a35cff","line":382,"range":{"start_line":382,"start_character":62,"end_line":382,"end_character":66},"in_reply_to":"7faddb67_36e36fdb","updated":"2019-07-18 09:20:01.000000000","message":"qemu. if you dont generate the element at all libvirt does not have a default. qemu decides based on the cpu model. if its a recent cpu model or if you use host passthough it enables the vPMU older models have it disabled.\n\nits not really that well documented the best referece i found was the cover letter of the patch that made it configurable https://lists.gnu.org/archive/html/qemu-arm/2016-09/msg00128.html\n\ni think the behavior is also different on x86 vs arm but if you say nothiing in the libvirt xml then qemu will decided however it does it today.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":392,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":393,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":394,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":395,"context_line":"     required, such workloads should set ``hw:pmu\u003dfalse``. For most workloads"},{"line_number":396,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_d6e53bdd","line":395,"range":{"start_line":395,"start_character":50,"end_line":395,"end_character":55},"updated":"2019-07-18 08:48:24.000000000","message":"Is the value False/True case sensitive?","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":392,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":393,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":394,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":395,"context_line":"     required, such workloads should set ``hw:pmu\u003dfalse``. For most workloads"},{"line_number":396,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"  .. note::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7faddb67_4901acae","line":395,"range":{"start_line":395,"start_character":50,"end_line":395,"end_character":55},"in_reply_to":"7faddb67_d6e53bdd","updated":"2019-07-18 09:20:01.000000000","message":"im using the FlexibleBooleanField type for the image proerty which internally calls oslo.utils strutils.bool_from_string\nwhich is the same function i used to munge the flavor extra spec into a bool.\n\nstrutils.bool_from_string is not only a case insenstive match\nbut will convert (\u0027t\u0027,\u0027true\u0027, \u0027on\u0027, \u0027y\u0027, \u0027yes\u0027, or \u00271\u0027) to True and (\u0027f\u0027, \u0027false\u0027, \u0027off\u0027, \u0027n\u0027, \u0027no\u0027, or \u00270\u0027) to false\n\nhttps://github.com/openstack/oslo.utils/blob/master/oslo_utils/strutils.py#L115-L150\n\nthis was meant to be uppercase to match with python and i would prefer people used that but im not restricing it to just True|False in the code.\n\nif some one wants to use On|Off they can i just dont plan to document the other forms","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"c160b9b69009da91aadbcd83c282286eb82c4c3d","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Perfromcne Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_e3725ead","line":378,"range":{"start_line":378,"start_character":0,"end_line":378,"end_character":10},"updated":"2019-07-29 13:49:32.000000000","message":"Performance","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65702ca1bd39bbe01b5c7dc073b3f278cf896f0a","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Perfromcne Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_cf48a388","line":378,"range":{"start_line":378,"start_character":0,"end_line":378,"end_character":10},"in_reply_to":"7faddb67_e3725ead","updated":"2019-07-29 17:04:50.000000000","message":"Done","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    the host\u0027s entropy per period."},{"line_number":374,"context_line":"  - RATE-PERIOD: (integer) Duration of the read period in seconds."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_81874913","line":376,"updated":"2019-08-07 16:56:53.000000000","message":"This should be ..\n\nhttp://logs.openstack.org/38/671338/5/check/openstack-tox-docs/7eeaa34/html/user/flavors.html","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":373,"context_line":"    the host\u0027s entropy per period."},{"line_number":374,"context_line":"  - RATE-PERIOD: (integer) Duration of the read period in seconds."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_36de923e","line":376,"in_reply_to":"7faddb67_81874913","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_a18cc535","line":378,"range":{"start_line":378,"start_character":28,"end_line":378,"end_character":36},"updated":"2019-08-07 16:56:53.000000000","message":"Maybe this should be (vPMU), the `` `` don\u0027t render as you\u0027d expect:\n\nhttp://logs.openstack.org/38/671338/5/check/openstack-tox-docs/7eeaa34/html/user/flavors.html","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_f6df9a35","line":378,"range":{"start_line":378,"start_character":28,"end_line":378,"end_character":36},"in_reply_to":"7faddb67_9edf83d5","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_9edf83d5","line":378,"range":{"start_line":378,"start_character":28,"end_line":378,"end_character":36},"in_reply_to":"7faddb67_a18cc535","updated":"2019-08-09 11:10:17.000000000","message":"Agree","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_5ef34b74","line":379,"range":{"start_line":379,"start_character":44,"end_line":379,"end_character":50},"updated":"2019-08-09 11:10:17.000000000","message":"driver,\n\n(comma)","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":376,"context_line":". _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_36b772f8","line":379,"range":{"start_line":379,"start_character":44,"end_line":379,"end_character":50},"in_reply_to":"7faddb67_5ef34b74","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"},{"line_number":383,"context_line":"  to qemu to decide."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_1eedd38a","line":381,"range":{"start_line":381,"start_character":44,"end_line":381,"end_character":57},"updated":"2019-08-09 11:10:17.000000000","message":"``True`` or ``False``","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":378,"context_line":"Performance Monitoring Unit ``vPMU``"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"},{"line_number":383,"context_line":"  to qemu to decide."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_f6c8fa75","line":381,"range":{"start_line":381,"start_character":44,"end_line":381,"end_character":57},"in_reply_to":"7faddb67_1eedd38a","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"},{"line_number":383,"context_line":"  to qemu to decide."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"  .. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_defe5b37","line":382,"range":{"start_line":382,"start_character":51,"end_line":382,"end_character":56},"updated":"2019-08-09 11:10:17.000000000","message":"image,","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"},{"line_number":383,"context_line":"  to qemu to decide."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"  .. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_b6c28252","line":382,"range":{"start_line":382,"start_character":51,"end_line":382,"end_character":56},"in_reply_to":"7faddb67_defe5b37","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"},{"line_number":383,"context_line":"  to qemu to decide."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"  .. code-block:: console"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_7efba746","line":383,"range":{"start_line":383,"start_character":5,"end_line":383,"end_character":9},"updated":"2019-08-09 11:10:17.000000000","message":"QEMU","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are True or False. If the pmu is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image its presence is left"},{"line_number":383,"context_line":"  to qemu to decide."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"  .. code-block:: console"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_16a9168f","line":383,"range":{"start_line":383,"start_character":5,"end_line":383,"end_character":9},"in_reply_to":"7faddb67_7efba746","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"  .. note::"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_2178d529","line":392,"range":{"start_line":392,"start_character":36,"end_line":392,"end_character":40},"updated":"2019-08-07 16:56:53.000000000","message":"``perf`` or link to docs about this","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"  .. note::"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_f68d5a35","line":392,"range":{"start_line":392,"start_character":36,"end_line":392,"end_character":40},"in_reply_to":"7faddb67_2178d529","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_c1746139","line":394,"range":{"start_line":394,"start_character":18,"end_line":394,"end_character":26},"updated":"2019-08-07 16:56:53.000000000","message":"workloads","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_b697e245","line":394,"range":{"start_line":394,"start_character":18,"end_line":394,"end_character":26},"in_reply_to":"7faddb67_9ef8e349","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":391,"context_line":""},{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_9ef8e349","line":394,"range":{"start_line":394,"start_character":18,"end_line":394,"end_character":26},"in_reply_to":"7faddb67_c1746139","updated":"2019-08-09 11:10:17.000000000","message":"workloads,","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_818c292f","line":395,"range":{"start_line":395,"start_character":37,"end_line":395,"end_character":40},"updated":"2019-08-07 16:56:53.000000000","message":"Avoid a run-on sentence and do \". If the...\"","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":392,"context_line":"     The vPMU is used by tools like perf in the guest to provide more accurate"},{"line_number":393,"context_line":"     information for profiling application and monitoring guest performance."},{"line_number":394,"context_line":"     For realtime workload the emulation of a vPMU can introduce additional"},{"line_number":395,"context_line":"     latency which may be undesirable if the telemetry it provides is not"},{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_5688ee20","line":395,"range":{"start_line":395,"start_character":37,"end_line":395,"end_character":40},"in_reply_to":"7faddb67_818c292f","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"  .. note::"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"     It is an error to set different values in the flavor and image for the vPMU."},{"line_number":402,"context_line":"     If the value of the image metadata property conflicts with the flavor an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_c1a9c17c","line":399,"updated":"2019-08-07 16:56:53.000000000","message":"I\u0027m not sure this needs to be a note - it\u0027s kind of normal behavior you\u0027d expect and what a lot of other extra specs and image properties do. This is mostly a nit, I just don\u0027t like that most of this documentation is notes.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a441502a47211ae797befca98fe65fcca8596040","unresolved":false,"context_lines":[{"line_number":396,"context_line":"     required, such workloads should set ``hw:pmu\u003dFalse``. For most workloads"},{"line_number":397,"context_line":"     the default of unset or enabling the vPMU ``hw:pmu\u003dTrue`` will be correct."},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"  .. note::"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"     It is an error to set different values in the flavor and image for the vPMU."},{"line_number":402,"context_line":"     If the value of the image metadata property conflicts with the flavor an"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_dc01aa08","line":399,"in_reply_to":"7faddb67_c1a9c17c","updated":"2019-08-12 13:51:53.000000000","message":"ok ill drop the use of here and above.\n\ni normally just read docs unrendered so find notes nice for grouping but it does look weired wehn rendered so ill just leave this as paragraphs.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f666b91afb789406202769120316da11e5a18c86","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"     It is an error to set different values in the flavor and image for the vPMU."},{"line_number":402,"context_line":"     If the value of the image metadata property conflicts with the flavor an"},{"line_number":403,"context_line":"     error will be raised when trying to create a new instance."},{"line_number":404,"context_line":""},{"line_number":405,"context_line":".. _extra-specs-cpu-topology:"},{"line_number":406,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_219d3557","line":403,"range":{"start_line":403,"start_character":41,"end_line":403,"end_character":63},"updated":"2019-08-07 16:56:53.000000000","message":"create or resize an instance","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":376,"context_line":".. _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver, a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are ``True`` or ``False``. If the vPMU is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image, its presence is left"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_665d1c14","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":50},"updated":"2019-08-13 23:05:37.000000000","message":"The code is more restrictive than this, it\u0027s also conditional on ``[libvirt]/virt_type`` being ``qemu`` or ``kvm`` so you should probably mention that as well.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":376,"context_line":".. _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver, a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are ``True`` or ``False``. If the vPMU is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image, its presence is left"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_c63f3085","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":50},"in_reply_to":"7faddb67_665d1c14","updated":"2019-08-13 23:30:41.000000000","message":"ah yes you are correct. it would not makes sense for libvirt/lxc or libvirt/openvz.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a22a21e5dda75ca3353df82c161a253a39201fc8","unresolved":false,"context_lines":[{"line_number":376,"context_line":".. _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver, a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are ``True`` or ``False``. If the vPMU is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image, its presence is left"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_fe573300","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":50},"in_reply_to":"7faddb67_c63f3085","updated":"2019-08-15 17:00:48.000000000","message":"Done","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ec310500c6c775a3a2a556ab1a2be40e6fd1fe50","unresolved":false,"context_lines":[{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver, a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are ``True`` or ``False``. If the vPMU is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image, its presence is left"},{"line_number":383,"context_line":"  to QEMU to decide."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_7bb7073c","line":381,"range":{"start_line":381,"start_character":78,"end_line":381,"end_character":85},"updated":"2019-08-13 09:34:47.000000000","message":"nit: wrapping","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a22a21e5dda75ca3353df82c161a253a39201fc8","unresolved":false,"context_lines":[{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver, a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are ``True`` or ``False``. If the vPMU is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image, its presence is left"},{"line_number":383,"context_line":"  to QEMU to decide."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_be3d3bbc","line":381,"range":{"start_line":381,"start_character":78,"end_line":381,"end_character":85},"in_reply_to":"7faddb67_46e82e15","updated":"2019-08-15 17:00:48.000000000","message":"Done","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ae6b49110be4033e6c2396d998761e8e7ec4ed8","unresolved":false,"context_lines":[{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver, a vPMU can be enabled or"},{"line_number":380,"context_line":"  disabled for an instance using the ``hw:pmu`` extra_spec or the ``hw_pmu``"},{"line_number":381,"context_line":"  image property.  The supported values are ``True`` or ``False``. If the vPMU is not"},{"line_number":382,"context_line":"  explicitly enabled or disabled via the flavor or image, its presence is left"},{"line_number":383,"context_line":"  to QEMU to decide."},{"line_number":384,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_46e82e15","line":381,"range":{"start_line":381,"start_character":78,"end_line":381,"end_character":85},"in_reply_to":"7faddb67_7bb7073c","updated":"2019-08-13 10:33:22.000000000","message":"technically i dont think we enfore line lenght in the docs\nbut if the gate job fails ill fix this.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"301fe63696242456f522aaed7974b1b616078e49","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"  .. code-block:: console"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"},{"line_number":388,"context_line":"         --property hw:pmu\u003dTrue|False"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"  The vPMU is used by tools like ``perf`` in the guest to provide more accurate"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_e33c9ee2","line":387,"updated":"2019-08-13 22:50:06.000000000","message":"nit: this could be a single line","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a22a21e5dda75ca3353df82c161a253a39201fc8","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"  .. code-block:: console"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"     $ openstack flavor set FLAVOR-NAME \\"},{"line_number":388,"context_line":"         --property hw:pmu\u003dTrue|False"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"  The vPMU is used by tools like ``perf`` in the guest to provide more accurate"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7faddb67_1e76cfa5","line":387,"in_reply_to":"7faddb67_e33c9ee2","updated":"2019-08-15 17:00:48.000000000","message":"Done","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a51c0656420fd5e8f474bc9cf2806107c5fdc46d","unresolved":false,"context_lines":[{"line_number":376,"context_line":".. _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver and ``[libvirt]/virt_type``"},{"line_number":380,"context_line":"  is set to ``qemu`` or ``kvm``, a vPMU can be enabled or disabled for an"},{"line_number":381,"context_line":"  instance using the ``hw:pmu`` extra_spec or the ``hw_pmu`` image property."},{"line_number":382,"context_line":"  The supported values are ``True`` or ``False``. If the vPMU is not"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7faddb67_265100da","line":379,"range":{"start_line":379,"start_character":55,"end_line":379,"end_character":78},"updated":"2019-08-20 15:47:59.000000000","message":"should use :oslo.config:option: here","commit_id":"326bc658eef04576230d5ba90d2a02bf32deee03"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f128b8de6f199521137ea2c2d38cf7f4f200c95d","unresolved":false,"context_lines":[{"line_number":376,"context_line":".. _extra-specs-performance-monitoring-unit:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"Performance Monitoring Unit (vPMU)"},{"line_number":379,"context_line":"  If nova is deployed with the libvirt virt driver and ``[libvirt]/virt_type``"},{"line_number":380,"context_line":"  is set to ``qemu`` or ``kvm``, a vPMU can be enabled or disabled for an"},{"line_number":381,"context_line":"  instance using the ``hw:pmu`` extra_spec or the ``hw_pmu`` image property."},{"line_number":382,"context_line":"  The supported values are ``True`` or ``False``. If the vPMU is not"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7faddb67_30511e63","line":379,"range":{"start_line":379,"start_character":55,"end_line":379,"end_character":78},"in_reply_to":"7faddb67_265100da","updated":"2019-08-21 15:46:59.000000000","message":"Done: https://review.opendev.org/677769","commit_id":"326bc658eef04576230d5ba90d2a02bf32deee03"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"c160b9b69009da91aadbcd83c282286eb82c4c3d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.PciRequestAliasNotDefined,"},{"line_number":84,"context_line":"    exception.RealtimeConfigurationInvalid,"},{"line_number":85,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":86,"context_line":"    exception.ImagePMUCoflict"},{"line_number":87,"context_line":")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a3f46688","line":86,"range":{"start_line":86,"start_character":14,"end_line":86,"end_character":29},"updated":"2019-07-29 13:49:32.000000000","message":"Conflict","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65702ca1bd39bbe01b5c7dc073b3f278cf896f0a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.PciRequestAliasNotDefined,"},{"line_number":84,"context_line":"    exception.RealtimeConfigurationInvalid,"},{"line_number":85,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":86,"context_line":"    exception.ImagePMUCoflict"},{"line_number":87,"context_line":")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_6f5f2f41","line":86,"range":{"start_line":86,"start_character":14,"end_line":86,"end_character":29},"in_reply_to":"7faddb67_a3f46688","updated":"2019-07-29 17:04:50.000000000","message":"Done","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.PciRequestAliasNotDefined,"},{"line_number":84,"context_line":"    exception.RealtimeConfigurationInvalid,"},{"line_number":85,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":86,"context_line":"    exception.ImagePMUConflict"},{"line_number":87,"context_line":")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_7ea96722","line":86,"updated":"2019-08-09 11:10:17.000000000","message":"This list is in alphabetical order. Should keep it that way, I imagine","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.PciRequestAliasNotDefined,"},{"line_number":84,"context_line":"    exception.RealtimeConfigurationInvalid,"},{"line_number":85,"context_line":"    exception.RealtimeMaskNotFoundOrInvalid,"},{"line_number":86,"context_line":"    exception.ImagePMUConflict"},{"line_number":87,"context_line":")"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_96198623","line":86,"in_reply_to":"7faddb67_7ea96722","updated":"2019-08-12 18:09:38.000000000","message":"ah i missed that, yep that makes sense ill move it.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"14fd73ead9842ed4999b5fced8284e90cb6e54e0","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                        servers_policies.ZERO_DISK_FLAVOR, fatal\u003dFalse):"},{"line_number":651,"context_line":"                    raise exception.BootFromVolumeRequiredForZeroDiskFlavor()"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":654,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":655,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":656,"context_line":"        if (flavor_pmu is not None and image_pmu !\u003d"},{"line_number":657,"context_line":"            strutils.bool_from_string(flavor_pmu)):"},{"line_number":658,"context_line":"            raise exception.ImagePMUCoflict()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":661,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_337d5de7","line":658,"range":{"start_line":653,"start_character":8,"end_line":658,"end_character":45},"updated":"2019-07-24 21:37:00.000000000","message":"it looks like this is not quite correct.\nif i have hw:pmu\u003dtrue in the flavor it fails if i have nothing set in the image. and ya looking at it again now its close but not right. i forgot to check it the image value is set.","commit_id":"eaec3ec73579122068ec48804feeb202e8727581"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"c160b9b69009da91aadbcd83c282286eb82c4c3d","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":656,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":657,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":658,"context_line":"            raise exception.ImagePMUCoflict()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":661,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_83404a37","line":658,"range":{"start_line":658,"start_character":28,"end_line":658,"end_character":43},"updated":"2019-07-29 13:49:32.000000000","message":"Conflict","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65702ca1bd39bbe01b5c7dc073b3f278cf896f0a","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":656,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":657,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":658,"context_line":"            raise exception.ImagePMUCoflict()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":661,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_2f593759","line":658,"range":{"start_line":658,"start_character":28,"end_line":658,"end_character":43},"in_reply_to":"7faddb67_83404a37","updated":"2019-07-29 17:04:50.000000000","message":"Done","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                        servers_policies.ZERO_DISK_FLAVOR, fatal\u003dFalse):"},{"line_number":651,"context_line":"                    raise exception.BootFromVolumeRequiredForZeroDiskFlavor()"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":654,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":655,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":656,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":657,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":658,"context_line":"            raise exception.ImagePMUConflict()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":661,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_5e66eb2b","line":658,"range":{"start_line":653,"start_character":0,"end_line":658,"end_character":46},"updated":"2019-08-09 11:10:17.000000000","message":"Can we do this in \u0027_validate_flavor_image_numa_pci\u0027 and maybe just rename that? That\u0027s already doing non-NUMA checks for realtime, so the name is already sort of wrong. I\u0027d also _really_ like to see a \u0027get_constraints\u0027-style function in \u0027hardware.py\u0027 that we can use to extract this information, like we do for all the policies. If nothing else, it just means everything lives in the same place","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":650,"context_line":"                        servers_policies.ZERO_DISK_FLAVOR, fatal\u003dFalse):"},{"line_number":651,"context_line":"                    raise exception.BootFromVolumeRequiredForZeroDiskFlavor()"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":654,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":655,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":656,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":657,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":658,"context_line":"            raise exception.ImagePMUConflict()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":661,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_9100b0ad","line":658,"range":{"start_line":653,"start_character":0,"end_line":658,"end_character":46},"in_reply_to":"7faddb67_5e66eb2b","updated":"2019-08-12 18:09:38.000000000","message":"im not sure renaming _validate_flavor_image_numa_cpi makes\nsense. the current function is _validate_flavor_image_nostatus which is already really generic\n\ni could put this in a sperate function or just move the logic to hardware.py but its not really the same. this is really just a simple image properties check where we are testing strings values rather then asserting complicated behavior about relationship between multiple extraspecs like the numa stuff.\n\ni guess i could rename _validate_flavor_image_numa_pci to _validate_flavor_image_hardware_constratits and move the logic of this  to hardware.py and call it. ill fix the other nits and come back to this but this will noise to the review which i would rater avoid as i will have to modify unit tests ectra to reflect the name change. i think this refactor would be better done as a sperate change.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"301fe63696242456f522aaed7974b1b616078e49","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":657,"context_line":"            raise exception.ImagePMUConflict()"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":660,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"},{"line_number":661,"context_line":"            validate_pci\u003dvalidate_pci)"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_26016405","line":659,"range":{"start_line":659,"start_character":12,"end_line":659,"end_character":43},"updated":"2019-08-13 22:50:06.000000000","message":"Why don\u0027t you do the validation in here? Note that volume-backed resize doesn\u0027t call _validate_flavor_image_nostatus because of the root_bdm mess above.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":657,"context_line":"            raise exception.ImagePMUConflict()"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":660,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"},{"line_number":661,"context_line":"            validate_pci\u003dvalidate_pci)"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e6426c0f","line":659,"range":{"start_line":659,"start_character":12,"end_line":659,"end_character":43},"in_reply_to":"7faddb67_26016405","updated":"2019-08-13 23:30:41.000000000","message":"stephen asked the same :( because this for once is not related to numa or pci passthough and i did not want the conflate this entirly software based feature with the hardware specific stuff. i can move it but","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a22a21e5dda75ca3353df82c161a253a39201fc8","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":657,"context_line":"            raise exception.ImagePMUConflict()"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        API._validate_flavor_image_numa_pci("},{"line_number":660,"context_line":"            image, instance_type, validate_numa\u003dvalidate_numa,"},{"line_number":661,"context_line":"            validate_pci\u003dvalidate_pci)"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_de6b57b6","line":659,"range":{"start_line":659,"start_character":12,"end_line":659,"end_character":43},"in_reply_to":"7faddb67_e6426c0f","updated":"2019-08-15 17:00:48.000000000","message":"Done","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"301fe63696242456f522aaed7974b1b616078e49","unresolved":false,"context_lines":[{"line_number":3568,"context_line":"            if volume_backed is None:"},{"line_number":3569,"context_line":"                volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":3570,"context_line":"                    context, instance)"},{"line_number":3571,"context_line":"            # If the server is volume-backed, we still want to validate numa"},{"line_number":3572,"context_line":"            # and pci information in the new flavor, but we don\u0027t call"},{"line_number":3573,"context_line":"            # _validate_flavor_image_nostatus because how it handles checking"},{"line_number":3574,"context_line":"            # disk size validation was not intended for a volume-backed"},{"line_number":3575,"context_line":"            # resize case."},{"line_number":3576,"context_line":"            if volume_backed:"},{"line_number":3577,"context_line":"                self._validate_flavor_image_numa_pci("},{"line_number":3578,"context_line":"                    image, new_instance_type, validate_pci\u003dTrue)"},{"line_number":3579,"context_line":"            else:"},{"line_number":3580,"context_line":"                self._validate_flavor_image_nostatus("},{"line_number":3581,"context_line":"                    context, image, new_instance_type, root_bdm\u003dNone,"},{"line_number":3582,"context_line":"                    validate_pci\u003dTrue)"},{"line_number":3583,"context_line":""},{"line_number":3584,"context_line":"        filter_properties \u003d {\u0027ignore_hosts\u0027: []}"},{"line_number":3585,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e60a6c1e","line":3582,"range":{"start_line":3571,"start_character":12,"end_line":3582,"end_character":38},"updated":"2019-08-13 22:50:06.000000000","message":"HI!","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"20c3d9439acfa8f91e3bda92149e6a97d9b8a322","unresolved":false,"context_lines":[{"line_number":3568,"context_line":"            if volume_backed is None:"},{"line_number":3569,"context_line":"                volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":3570,"context_line":"                    context, instance)"},{"line_number":3571,"context_line":"            # If the server is volume-backed, we still want to validate numa"},{"line_number":3572,"context_line":"            # and pci information in the new flavor, but we don\u0027t call"},{"line_number":3573,"context_line":"            # _validate_flavor_image_nostatus because how it handles checking"},{"line_number":3574,"context_line":"            # disk size validation was not intended for a volume-backed"},{"line_number":3575,"context_line":"            # resize case."},{"line_number":3576,"context_line":"            if volume_backed:"},{"line_number":3577,"context_line":"                self._validate_flavor_image_numa_pci("},{"line_number":3578,"context_line":"                    image, new_instance_type, validate_pci\u003dTrue)"},{"line_number":3579,"context_line":"            else:"},{"line_number":3580,"context_line":"                self._validate_flavor_image_nostatus("},{"line_number":3581,"context_line":"                    context, image, new_instance_type, root_bdm\u003dNone,"},{"line_number":3582,"context_line":"                    validate_pci\u003dTrue)"},{"line_number":3583,"context_line":""},{"line_number":3584,"context_line":"        filter_properties \u003d {\u0027ignore_hosts\u0027: []}"},{"line_number":3585,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_3352e414","line":3582,"range":{"start_line":3571,"start_character":12,"end_line":3582,"end_character":38},"in_reply_to":"7faddb67_66675cb9","updated":"2019-08-15 15:51:01.000000000","message":"Renaming the function in a separate change is better yeah.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":3568,"context_line":"            if volume_backed is None:"},{"line_number":3569,"context_line":"                volume_backed \u003d compute_utils.is_volume_backed_instance("},{"line_number":3570,"context_line":"                    context, instance)"},{"line_number":3571,"context_line":"            # If the server is volume-backed, we still want to validate numa"},{"line_number":3572,"context_line":"            # and pci information in the new flavor, but we don\u0027t call"},{"line_number":3573,"context_line":"            # _validate_flavor_image_nostatus because how it handles checking"},{"line_number":3574,"context_line":"            # disk size validation was not intended for a volume-backed"},{"line_number":3575,"context_line":"            # resize case."},{"line_number":3576,"context_line":"            if volume_backed:"},{"line_number":3577,"context_line":"                self._validate_flavor_image_numa_pci("},{"line_number":3578,"context_line":"                    image, new_instance_type, validate_pci\u003dTrue)"},{"line_number":3579,"context_line":"            else:"},{"line_number":3580,"context_line":"                self._validate_flavor_image_nostatus("},{"line_number":3581,"context_line":"                    context, image, new_instance_type, root_bdm\u003dNone,"},{"line_number":3582,"context_line":"                    validate_pci\u003dTrue)"},{"line_number":3583,"context_line":""},{"line_number":3584,"context_line":"        filter_properties \u003d {\u0027ignore_hosts\u0027: []}"},{"line_number":3585,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_66675cb9","line":3582,"range":{"start_line":3571,"start_character":12,"end_line":3582,"end_character":38},"in_reply_to":"7faddb67_e60a6c1e","updated":"2019-08-13 23:30:41.000000000","message":"ya that is fair although im more inclined to rename this function if as stephen suggested if it going to validate non numa non pci things.\n\nill move the check in here in this patch and submit a follow up to rename that function to remove nuam and  pci form the name.\n\nmaybe vlaidate_flavor_image_hardware_properties?\nassuming it will validate anyting in the hw: namespace","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":563,"context_line":"        if not image:"},{"line_number":564,"context_line":"            return"},{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        image_properties \u003d image.get(\u0027properties\u0027, {})"},{"line_number":567,"context_line":"        config_drive_option \u003d image_properties.get("},{"line_number":568,"context_line":"            \u0027img_config_drive\u0027, \u0027optional\u0027)"},{"line_number":569,"context_line":"        if config_drive_option not in [\u0027optional\u0027, \u0027mandatory\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_bacb0051","line":566,"range":{"start_line":566,"start_character":8,"end_line":566,"end_character":54},"updated":"2019-08-16 00:49:41.000000000","message":"i just copied this by the way which is why i used it below.\ni guess we do it this way here because image is currently a dict but we convert the metadata to an object in _validate_flavor_image_numa_pci so its better to use the object form.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ceab98e3a49f7a82222f1609f4e1d73b2e92f21a","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                 for the full list."},{"line_number":675,"context_line":"        \"\"\""},{"line_number":676,"context_line":"        image_meta \u003d _get_image_meta_obj(image)"},{"line_number":677,"context_line":"        image_properties \u003d image.get(\u0027properties\u0027, {})"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":680,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_0e1e9a5e","line":677,"range":{"start_line":677,"start_character":27,"end_line":677,"end_character":54},"updated":"2019-08-15 19:11:19.000000000","message":"This could just be image_meta.properties right?","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fc4d21090c2c13a540fdab94dd86be5e33c892c3","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                 for the full list."},{"line_number":675,"context_line":"        \"\"\""},{"line_number":676,"context_line":"        image_meta \u003d _get_image_meta_obj(image)"},{"line_number":677,"context_line":"        image_properties \u003d image.get(\u0027properties\u0027, {})"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":680,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_1fdec63d","line":677,"range":{"start_line":677,"start_character":27,"end_line":677,"end_character":54},"in_reply_to":"7faddb67_0e1e9a5e","updated":"2019-08-15 22:42:54.000000000","message":"Yup. \u0027_get_image_meta_obj\u0027 calls \u0027ImageMeta.from_dict\u0027 which ensure the \u0027properties\u0027 attribute is always set.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ceab98e3a49f7a82222f1609f4e1d73b2e92f21a","unresolved":false,"context_lines":[{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":680,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":681,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":682,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":683,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":684,"context_line":"            raise exception.ImagePMUConflict()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_2e2356a9","line":681,"range":{"start_line":681,"start_character":20,"end_line":681,"end_character":50},"updated":"2019-08-15 19:11:19.000000000","message":"If you\u0027re using an ImageMetaProps object, then you can avoid the get and just hit image_meta.properties.get(\u0027hw_pmu\u0027) right? Just like in the virt driver code. And that will also take care of converting yes/no/1/0 values to true/false booleans, right?","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fc4d21090c2c13a540fdab94dd86be5e33c892c3","unresolved":false,"context_lines":[{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":680,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":681,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":682,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":683,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":684,"context_line":"            raise exception.ImagePMUConflict()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_5f8f5e29","line":681,"range":{"start_line":681,"start_character":20,"end_line":681,"end_character":50},"in_reply_to":"7faddb67_2e2356a9","updated":"2019-08-15 22:42:54.000000000","message":"There\u0027s no conversion going on for image_pmu, is there?","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":680,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":681,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":682,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":683,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":684,"context_line":"            raise exception.ImagePMUConflict()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_ba7d401d","line":681,"range":{"start_line":681,"start_character":20,"end_line":681,"end_character":50},"in_reply_to":"7faddb67_5f8f5e29","updated":"2019-08-16 00:49:41.000000000","message":"@matt\nyes you can.\n\n@stephen\nit depends on what you mean the image metadata field is a\na flexable bool field so it call strutils.bool_from_string intenally to convert it to a bool and support all the possibel truthy values e.g.yes/no/1/0/true/false ...\n\nso for the image we dont neeed to convert it again but strutils.bool_from_string aslo has an early out if its already a bool already.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d2defc0f578a3cd91da98adb8b4777160dbadbca","unresolved":false,"context_lines":[{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        # validate PMU extra spec and image metadata"},{"line_number":680,"context_line":"        flavor_pmu \u003d instance_type.extra_specs.get(\u0027hw:pmu\u0027)"},{"line_number":681,"context_line":"        image_pmu \u003d image_properties.get(\u0027hw_pmu\u0027)"},{"line_number":682,"context_line":"        if (flavor_pmu is not None and image_pmu is not None and"},{"line_number":683,"context_line":"                image_pmu !\u003d strutils.bool_from_string(flavor_pmu)):"},{"line_number":684,"context_line":"            raise exception.ImagePMUConflict()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_fefaacb7","line":681,"range":{"start_line":681,"start_character":20,"end_line":681,"end_character":50},"in_reply_to":"7faddb67_ba7d401d","updated":"2019-08-19 14:27:26.000000000","message":"My main point (as noted in the related unit test) is that if I have hw_pmu\u003dyes in my image and flavor, I\u0027ll get an error here because you\u0027re not using the converted ImageMetaProps, you\u0027re using the dict form only which doesn\u0027t do the boolean conversion.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"}],"nova/exception.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class ImagePMUCoflict(Invalid):"},{"line_number":2053,"context_line":"    msg_fmt \u003d _(\"Image property \u0027hw_pmu\u0027 is not permitted to \""},{"line_number":2054,"context_line":"                \"override the PMU policy set in the flavor\")"},{"line_number":2055,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_76ed67b5","line":2052,"range":{"start_line":2052,"start_character":22,"end_line":2052,"end_character":29},"updated":"2019-07-18 08:48:24.000000000","message":"The above two similar exceptions are both inherit from Forbidden instead of Invalid. I think we should keep the http response code consistent for these cases.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class ImagePMUCoflict(Invalid):"},{"line_number":2053,"context_line":"    msg_fmt \u003d _(\"Image property \u0027hw_pmu\u0027 is not permitted to \""},{"line_number":2054,"context_line":"                \"override the PMU policy set in the flavor\")"},{"line_number":2055,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_49e52c37","line":2052,"range":{"start_line":2052,"start_character":22,"end_line":2052,"end_character":29},"in_reply_to":"7faddb67_76ed67b5","updated":"2019-07-18 09:20:01.000000000","message":"they do but we catch and rethrow this\nexcption here\nhttps://review.opendev.org/#/c/671338/1/nova/api/openstack/compute/servers.py@791\n\nso the http code will be lost.\n\na 403 seams weird to me for this which is why i changed it to invalid but i can change it to inherit form forbiden.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"c160b9b69009da91aadbcd83c282286eb82c4c3d","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class ImagePMUCoflict(Forbidden):"},{"line_number":2053,"context_line":"    msg_fmt \u003d _(\"Image property \u0027hw_pmu\u0027 is not permitted to \""},{"line_number":2054,"context_line":"                \"override the PMU policy set in the flavor\")"},{"line_number":2055,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_03769aa5","line":2052,"range":{"start_line":2052,"start_character":6,"end_line":2052,"end_character":21},"updated":"2019-07-29 13:49:32.000000000","message":"conflict","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65702ca1bd39bbe01b5c7dc073b3f278cf896f0a","unresolved":false,"context_lines":[{"line_number":2049,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class ImagePMUCoflict(Forbidden):"},{"line_number":2053,"context_line":"    msg_fmt \u003d _(\"Image property \u0027hw_pmu\u0027 is not permitted to \""},{"line_number":2054,"context_line":"                \"override the PMU policy set in the flavor\")"},{"line_number":2055,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_4f54b321","line":2052,"range":{"start_line":2052,"start_character":6,"end_line":2052,"end_character":21},"in_reply_to":"7faddb67_03769aa5","updated":"2019-07-29 17:04:50.000000000","message":"Done","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class ImagePMUConflict(Forbidden):"},{"line_number":2053,"context_line":"    msg_fmt \u003d _(\"Image property \u0027hw_pmu\u0027 is not permitted to \""},{"line_number":2054,"context_line":"                \"override the PMU policy set in the flavor\")"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":""},{"line_number":2057,"context_line":"class UnsupportedPolicyException(Invalid):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_1e7073dc","line":2054,"range":{"start_line":2054,"start_character":34,"end_line":2054,"end_character":40},"updated":"2019-08-09 11:10:17.000000000","message":"configuration?","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":2051,"context_line":""},{"line_number":2052,"context_line":"class ImagePMUConflict(Forbidden):"},{"line_number":2053,"context_line":"    msg_fmt \u003d _(\"Image property \u0027hw_pmu\u0027 is not permitted to \""},{"line_number":2054,"context_line":"                \"override the PMU policy set in the flavor\")"},{"line_number":2055,"context_line":""},{"line_number":2056,"context_line":""},{"line_number":2057,"context_line":"class UnsupportedPolicyException(Invalid):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_718bb41d","line":2054,"range":{"start_line":2054,"start_character":34,"end_line":2054,"end_character":40},"in_reply_to":"7faddb67_1e7073dc","updated":"2019-08-12 18:09:38.000000000","message":"i could see it being argueed either way if we used configuration here i would say we should also use configuration for ImageCPUPinningForbidden above to be consistent. the policy is whether or not to expose the pmu\nthat directly impacts the xml we generate wich could be classed as vm configuration but when i think of vm configureation i think more of the config file based things like virt-type or cpu-modle so i prefer the term policy for things that are set in images/flavors.\n\nclass ImageNUMATopologyForbidden(Forbidden):\n    msg_fmt \u003d _(\"Image property \u0027%(name)s\u0027 is not permitted to override \"\n                \"NUMA configuration set against the flavor\")\n\ndoes use configuration to describe the same type of conflict so i think either could work but there seam to be more example of policy used in this file the configuration.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"}],"nova/objects/image_meta.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # Version 1.20: Added \u0027traits_required\u0027 list field"},{"line_number":173,"context_line":"    # Version 1.21: Added \u0027hw_time_hpet\u0027 field"},{"line_number":174,"context_line":"    # Version 1.22: Added \u0027gop\u0027, \u0027virtio\u0027 and \u0027none\u0027 to hw_video_model field"},{"line_number":175,"context_line":"    # Version 1.23: Added \u0027hw_pmu field"},{"line_number":176,"context_line":"    VERSION \u003d \u00271.23\u0027"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_a63a34c1","line":175,"range":{"start_line":175,"start_character":32,"end_line":175,"end_character":33},"updated":"2019-08-13 23:05:37.000000000","message":"u\u0027","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a22a21e5dda75ca3353df82c161a253a39201fc8","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # Version 1.20: Added \u0027traits_required\u0027 list field"},{"line_number":173,"context_line":"    # Version 1.21: Added \u0027hw_time_hpet\u0027 field"},{"line_number":174,"context_line":"    # Version 1.22: Added \u0027gop\u0027, \u0027virtio\u0027 and \u0027none\u0027 to hw_video_model field"},{"line_number":175,"context_line":"    # Version 1.23: Added \u0027hw_pmu field"},{"line_number":176,"context_line":"    VERSION \u003d \u00271.23\u0027"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_de527712","line":175,"range":{"start_line":175,"start_character":32,"end_line":175,"end_character":33},"in_reply_to":"7faddb67_a63a34c1","updated":"2019-08-15 17:00:48.000000000","message":"Done","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ceab98e3a49f7a82222f1609f4e1d73b2e92f21a","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # Version 1.20: Added \u0027traits_required\u0027 list field"},{"line_number":173,"context_line":"    # Version 1.21: Added \u0027hw_time_hpet\u0027 field"},{"line_number":174,"context_line":"    # Version 1.22: Added \u0027gop\u0027, \u0027virtio\u0027 and \u0027none\u0027 to hw_video_model field"},{"line_number":175,"context_line":"    # Version 1.23: Added \u0027hw_pmu field\u0027"},{"line_number":176,"context_line":"    VERSION \u003d \u00271.23\u0027"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_ae2e6689","line":175,"range":{"start_line":175,"start_character":26,"end_line":175,"end_character":40},"updated":"2019-08-15 19:11:19.000000000","message":"\u0027hw_pmu\u0027 field","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    # Version 1.20: Added \u0027traits_required\u0027 list field"},{"line_number":173,"context_line":"    # Version 1.21: Added \u0027hw_time_hpet\u0027 field"},{"line_number":174,"context_line":"    # Version 1.22: Added \u0027gop\u0027, \u0027virtio\u0027 and \u0027none\u0027 to hw_video_model field"},{"line_number":175,"context_line":"    # Version 1.23: Added \u0027hw_pmu field\u0027"},{"line_number":176,"context_line":"    VERSION \u003d \u00271.23\u0027"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_5a0bec8c","line":175,"range":{"start_line":175,"start_character":26,"end_line":175,"end_character":40},"in_reply_to":"7faddb67_ae2e6689","updated":"2019-08-16 00:49:41.000000000","message":"sorry yes ill fix that","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":6151,"context_line":""},{"line_number":6152,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6153,"context_line":"    def test_pmu_image_and_flavor_validation(self, mock_request):"},{"line_number":6154,"context_line":"        \"\"\"Tests that calling _validate_flavor_image_nostatus() with"},{"line_number":6155,"context_line":"        with an image that conflict with the flavor raises but no"},{"line_number":6156,"context_line":"        exception is raised if there is no conflict."},{"line_number":6157,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_167c33ea","line":6154,"range":{"start_line":6154,"start_character":64,"end_line":6154,"end_character":68},"updated":"2019-07-18 08:48:24.000000000","message":"strike","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":6151,"context_line":""},{"line_number":6152,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6153,"context_line":"    def test_pmu_image_and_flavor_validation(self, mock_request):"},{"line_number":6154,"context_line":"        \"\"\"Tests that calling _validate_flavor_image_nostatus() with"},{"line_number":6155,"context_line":"        with an image that conflict with the flavor raises but no"},{"line_number":6156,"context_line":"        exception is raised if there is no conflict."},{"line_number":6157,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_e9de583c","line":6154,"range":{"start_line":6154,"start_character":64,"end_line":6154,"end_character":68},"in_reply_to":"7faddb67_167c33ea","updated":"2019-07-18 09:20:01.000000000","message":"thanks we used to have a hacking check for this right?\nill fix in the next verion","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"af57f925d59d412e6e9e0702728f44d977e0cfc3","unresolved":false,"context_lines":[{"line_number":6151,"context_line":""},{"line_number":6152,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6153,"context_line":"    def test_pmu_image_and_flavor_validation(self, mock_request):"},{"line_number":6154,"context_line":"        \"\"\"Tests that calling _validate_flavor_image_nostatus() with"},{"line_number":6155,"context_line":"        with an image that conflict with the flavor raises but no"},{"line_number":6156,"context_line":"        exception is raised if there is no conflict."},{"line_number":6157,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_1d5c4017","line":6154,"range":{"start_line":6154,"start_character":64,"end_line":6154,"end_character":68},"in_reply_to":"7faddb67_e9de583c","updated":"2019-08-06 10:22:02.000000000","message":"I think we still have [1]. Maybe the line break hides the duplicates.\n[1] https://github.com/openstack/nova/blob/c883f2201026b9237a1fba9a0a55ff607d57e787/nova/hacking/checks.py#L669","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":6179,"context_line":"        \"\"\""},{"line_number":6180,"context_line":"        image \u003d dict(id\u003duuids.image_id, status\u003d\u0027foo\u0027)"},{"line_number":6181,"context_line":"        flavor \u003d self._create_flavor()"},{"line_number":6182,"context_line":"        self.compute_api._validate_flavor_image_nostatus("},{"line_number":6183,"context_line":"            self.context, image, flavor, root_bdm\u003dNone, validate_pci\u003dTrue)"},{"line_number":6184,"context_line":"        mock_request.assert_called_once_with(flavor)"},{"line_number":6185,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_367fefe0","line":6182,"updated":"2019-07-18 08:48:24.000000000","message":"This seems unrelated, but I agree that this indent looks better. so meh.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":6179,"context_line":"        \"\"\""},{"line_number":6180,"context_line":"        image \u003d dict(id\u003duuids.image_id, status\u003d\u0027foo\u0027)"},{"line_number":6181,"context_line":"        flavor \u003d self._create_flavor()"},{"line_number":6182,"context_line":"        self.compute_api._validate_flavor_image_nostatus("},{"line_number":6183,"context_line":"            self.context, image, flavor, root_bdm\u003dNone, validate_pci\u003dTrue)"},{"line_number":6184,"context_line":"        mock_request.assert_called_once_with(flavor)"},{"line_number":6185,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_491a0c17","line":6182,"in_reply_to":"7faddb67_367fefe0","updated":"2019-07-18 09:20:01.000000000","message":"ya this was a copy paste thing.\ni copied this to create teh new test then edited the wrong one and forgot to revert it.\n\nill leave this as this is unless people really care but ya its unrelated. this isnt going to be backported so its less of an issue. if it was i would remove this change.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"c160b9b69009da91aadbcd83c282286eb82c4c3d","unresolved":false,"context_lines":[{"line_number":6160,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6161,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"},{"line_number":6162,"context_line":"        self.assertRaises("},{"line_number":6163,"context_line":"            exception.ImagePMUCoflict,"},{"line_number":6164,"context_line":"            self.compute_api._validate_flavor_image_nostatus,"},{"line_number":6165,"context_line":"            self.context, image, flavor, None)"},{"line_number":6166,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_032bfaea","line":6163,"range":{"start_line":6163,"start_character":22,"end_line":6163,"end_character":37},"updated":"2019-07-29 13:49:32.000000000","message":"Conflict","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"65702ca1bd39bbe01b5c7dc073b3f278cf896f0a","unresolved":false,"context_lines":[{"line_number":6160,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6161,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"},{"line_number":6162,"context_line":"        self.assertRaises("},{"line_number":6163,"context_line":"            exception.ImagePMUCoflict,"},{"line_number":6164,"context_line":"            self.compute_api._validate_flavor_image_nostatus,"},{"line_number":6165,"context_line":"            self.context, image, flavor, None)"},{"line_number":6166,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_af3a07e4","line":6163,"range":{"start_line":6163,"start_character":22,"end_line":6163,"end_character":37},"in_reply_to":"7faddb67_032bfaea","updated":"2019-07-29 17:04:50.000000000","message":"Done","commit_id":"1234edc952dd11a7315bf91b502074720a861921"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        if updates:"},{"line_number":118,"context_line":"            flavor.update(updates)"},{"line_number":119,"context_line":"        return objects.Flavor._from_db_object("},{"line_number":120,"context_line":"            self.context, objects.Flavor(extra_specs\u003d{}), flavor)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _create_instance_obj(self, params\u003dNone, flavor\u003dNone):"},{"line_number":123,"context_line":"        \"\"\"Create a test instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_de717be0","line":120,"range":{"start_line":120,"start_character":41,"end_line":120,"end_character":55},"updated":"2019-08-09 11:10:17.000000000","message":"unrelated?","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        if updates:"},{"line_number":118,"context_line":"            flavor.update(updates)"},{"line_number":119,"context_line":"        return objects.Flavor._from_db_object("},{"line_number":120,"context_line":"            self.context, objects.Flavor(extra_specs\u003d{}), flavor)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def _create_instance_obj(self, params\u003dNone, flavor\u003dNone):"},{"line_number":123,"context_line":"        \"\"\"Create a test instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_b1ecccbb","line":120,"range":{"start_line":120,"start_character":41,"end_line":120,"end_character":55},"in_reply_to":"7faddb67_de717be0","updated":"2019-08-12 18:09:38.000000000","message":"no i think this was need for test to pass because i am checking flavor extra_specs in _validate_flavor_image_nostatus now where as before that function did not look at the extraspecs.\n\nby default objects.Flavor._from_db_object ignore extraspecs\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/flavor.py#L258-L259\n\nas a result this was causing issues since the extra specs were unset.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":6155,"context_line":"        with an image that conflicts with the flavor raises but no"},{"line_number":6156,"context_line":"        exception is raised if there is no conflict."},{"line_number":6157,"context_line":"        \"\"\""},{"line_number":6158,"context_line":"        image \u003d dict(id\u003duuids.image_id, status\u003d\u0027foo\u0027,"},{"line_number":6159,"context_line":"                     properties\u003d{\u0027hw_pmu\u0027: False})"},{"line_number":6160,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6161,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_de5adb4e","line":6158,"range":{"start_line":6158,"start_character":16,"end_line":6158,"end_character":21},"updated":"2019-08-09 11:10:17.000000000","message":"I\u0027d personally rather see this be a dict literal. It\u0027s nicer looking (subjective, I know) and means we\u0027re not shadowing a keyword (id)","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":6155,"context_line":"        with an image that conflicts with the flavor raises but no"},{"line_number":6156,"context_line":"        exception is raised if there is no conflict."},{"line_number":6157,"context_line":"        \"\"\""},{"line_number":6158,"context_line":"        image \u003d dict(id\u003duuids.image_id, status\u003d\u0027foo\u0027,"},{"line_number":6159,"context_line":"                     properties\u003d{\u0027hw_pmu\u0027: False})"},{"line_number":6160,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6161,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_7163b442","line":6158,"range":{"start_line":6158,"start_character":16,"end_line":6158,"end_character":21},"in_reply_to":"7faddb67_de5adb4e","updated":"2019-08-12 18:09:38.000000000","message":"this is not shadowing a keyworkd as we are not intoducing a scope in which id has a different meaning.\n\nshawoing as a term specifically refers to the intoduction of a varably in an inner scope with the same name as a variable in an outer scope which is not the case here. but i can update it.\n\ni originally copied the test_pci_validated function below which used dict which is why im using it here.\n\ni am fine with the {} usage for dicts but if you are default initallising sets you shoudl use set() as everyone forgets {} is always a dict and there is not shorthand for an empty set.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":6166,"context_line":""},{"line_number":6167,"context_line":"        # assert that if both the image and flavor are set to the same value"},{"line_number":6168,"context_line":"        # no exception is raised and the function returns nothing."},{"line_number":6169,"context_line":"        image \u003d dict(id\u003duuids.image_id, status\u003d\u0027foo\u0027,"},{"line_number":6170,"context_line":"                     properties\u003d{\u0027hw_pmu\u0027: True})"},{"line_number":6171,"context_line":"        self.assertIsNone(self.compute_api._validate_flavor_image_nostatus("},{"line_number":6172,"context_line":"            self.context, image, flavor, None))"},{"line_number":6173,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_3e2f6fa8","line":6170,"range":{"start_line":6169,"start_character":0,"end_line":6170,"end_character":49},"updated":"2019-08-09 11:10:17.000000000","message":"ditto","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":6166,"context_line":""},{"line_number":6167,"context_line":"        # assert that if both the image and flavor are set to the same value"},{"line_number":6168,"context_line":"        # no exception is raised and the function returns nothing."},{"line_number":6169,"context_line":"        image \u003d dict(id\u003duuids.image_id, status\u003d\u0027foo\u0027,"},{"line_number":6170,"context_line":"                     properties\u003d{\u0027hw_pmu\u0027: True})"},{"line_number":6171,"context_line":"        self.assertIsNone(self.compute_api._validate_flavor_image_nostatus("},{"line_number":6172,"context_line":"            self.context, image, flavor, None))"},{"line_number":6173,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_315d3c79","line":6170,"range":{"start_line":6169,"start_character":0,"end_line":6170,"end_character":49},"in_reply_to":"7faddb67_3e2f6fa8","updated":"2019-08-12 18:09:38.000000000","message":"sure ill change this but im going to have to change test_pci_validated to keep them consitent","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6da6ff93dd8d57741dd225dee183cc39da55d333","unresolved":false,"context_lines":[{"line_number":6155,"context_line":"        with an image that conflicts with the flavor raises but no"},{"line_number":6156,"context_line":"        exception is raised if there is no conflict."},{"line_number":6157,"context_line":"        \"\"\""},{"line_number":6158,"context_line":"        image \u003d {\u0027id\u0027: uuids.image_id, \u0027status\u0027: \u0027foo\u0027,"},{"line_number":6159,"context_line":"                 \u0027properties\u0027: {\u0027hw_pmu\u0027: False}}"},{"line_number":6160,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6161,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"},{"line_number":6162,"context_line":"        self.assertRaises("}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_e3bef7ac","line":6159,"range":{"start_line":6158,"start_character":15,"end_line":6159,"end_character":49},"updated":"2019-08-12 18:24:49.000000000","message":"stephen wanted me to use the {} style here","commit_id":"5facbb732243661c6ce18f9c10feaadda23a83bb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6da6ff93dd8d57741dd225dee183cc39da55d333","unresolved":false,"context_lines":[{"line_number":6177,"context_line":"        validate_pci\u003dTrue results in get_pci_requests_from_flavor() being"},{"line_number":6178,"context_line":"        called."},{"line_number":6179,"context_line":"        \"\"\""},{"line_number":6180,"context_line":"        image \u003d {\u0027id\u0027: uuids.image_id, \u0027status\u0027: \u0027foo\u0027}"},{"line_number":6181,"context_line":"        flavor \u003d self._create_flavor()"},{"line_number":6182,"context_line":"        self.compute_api._validate_flavor_image_nostatus("},{"line_number":6183,"context_line":"            self.context, image, flavor, root_bdm\u003dNone, validate_pci\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_63e8c7b2","line":6180,"range":{"start_line":6180,"start_character":7,"end_line":6180,"end_character":55},"updated":"2019-08-12 18:24:49.000000000","message":"so i updated this too to keep them consistent even though this is technically unrelated","commit_id":"5facbb732243661c6ce18f9c10feaadda23a83bb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":6135,"context_line":"                             cells)"},{"line_number":6136,"context_line":""},{"line_number":6137,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6138,"context_line":"    def test_pmu_image_and_flavor_validation(self, mock_request):"},{"line_number":6139,"context_line":"        \"\"\"Tests that calling _validate_flavor_image_nostatus()"},{"line_number":6140,"context_line":"        with an image that conflicts with the flavor raises but no"},{"line_number":6141,"context_line":"        exception is raised if there is no conflict."}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_c66e50c8","line":6138,"range":{"start_line":6138,"start_character":8,"end_line":6138,"end_character":44},"updated":"2019-08-13 23:05:37.000000000","message":"This doesn\u0027t test the cases that the extra spec is set but the image property is not and vice-versa.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":6135,"context_line":"                             cells)"},{"line_number":6136,"context_line":""},{"line_number":6137,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6138,"context_line":"    def test_pmu_image_and_flavor_validation(self, mock_request):"},{"line_number":6139,"context_line":"        \"\"\"Tests that calling _validate_flavor_image_nostatus()"},{"line_number":6140,"context_line":"        with an image that conflicts with the flavor raises but no"},{"line_number":6141,"context_line":"        exception is raised if there is no conflict."}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e6102c03","line":6138,"range":{"start_line":6138,"start_character":8,"end_line":6138,"end_character":44},"in_reply_to":"7faddb67_c66e50c8","updated":"2019-08-13 23:30:41.000000000","message":"oh right i guess i shoudl assert each independly too will do in next versions","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ceab98e3a49f7a82222f1609f4e1d73b2e92f21a","unresolved":false,"context_lines":[{"line_number":6168,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{})"},{"line_number":6169,"context_line":""},{"line_number":6170,"context_line":"        image \u003d {\u0027id\u0027: uuids.image_id, \u0027status\u0027: \u0027foo\u0027,"},{"line_number":6171,"context_line":"                 \u0027properties\u0027: {\u0027hw_pmu\u0027: True}}"},{"line_number":6172,"context_line":"        self.assertIsNone(self.compute_api._validate_flavor_image_nostatus("},{"line_number":6173,"context_line":"            self.context, image, flavor, None))"},{"line_number":6174,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_0e53fa17","line":6171,"range":{"start_line":6171,"start_character":42,"end_line":6171,"end_character":46},"updated":"2019-08-15 19:11:19.000000000","message":"Pass a non-boolean that will leverage the FlexibleBooleanField, like \u0027yes\u0027 or 1.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":6168,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{})"},{"line_number":6169,"context_line":""},{"line_number":6170,"context_line":"        image \u003d {\u0027id\u0027: uuids.image_id, \u0027status\u0027: \u0027foo\u0027,"},{"line_number":6171,"context_line":"                 \u0027properties\u0027: {\u0027hw_pmu\u0027: True}}"},{"line_number":6172,"context_line":"        self.assertIsNone(self.compute_api._validate_flavor_image_nostatus("},{"line_number":6173,"context_line":"            self.context, image, flavor, None))"},{"line_number":6174,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_5a30cc56","line":6171,"range":{"start_line":6171,"start_character":42,"end_line":6171,"end_character":46},"in_reply_to":"7faddb67_0e53fa17","updated":"2019-08-16 00:49:41.000000000","message":"sure ill set it to \"on\"\n\ni kind of been debating internally if it better to document (True or False) vs (On or Off) i have chosen to go with True or False but  On/Off is somewhat appealing.\n\ni don\u0027t like yes/1 or no/0 in this context but they would all work it is good to test that however so i will.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ceab98e3a49f7a82222f1609f4e1d73b2e92f21a","unresolved":false,"context_lines":[{"line_number":6174,"context_line":""},{"line_number":6175,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6176,"context_line":"    def test_pmu_flavor_only(self, mock_request):"},{"line_number":6177,"context_line":"        # assert that if only the image metadata is set then it is valid"},{"line_number":6178,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6179,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"},{"line_number":6180,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_ce408238","line":6177,"updated":"2019-08-15 19:11:19.000000000","message":"copy/paste error","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":6174,"context_line":""},{"line_number":6175,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6176,"context_line":"    def test_pmu_flavor_only(self, mock_request):"},{"line_number":6177,"context_line":"        # assert that if only the image metadata is set then it is valid"},{"line_number":6178,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6179,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"true\"})"},{"line_number":6180,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_fa309857","line":6177,"in_reply_to":"7faddb67_ce408238","updated":"2019-08-16 00:49:41.000000000","message":"yep","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":6254,"context_line":"    @mock.patch(\u0027nova.pci.request.get_pci_requests_from_flavor\u0027)"},{"line_number":6255,"context_line":"    def test_pmu_flavor_only(self, mock_request):"},{"line_number":6256,"context_line":"        # assert that if only the flavor extra_spec is set then it is valid"},{"line_number":6257,"context_line":"        # and test the sting to bool conversion of \"on\" works."},{"line_number":6258,"context_line":"        flavor \u003d objects.Flavor("},{"line_number":6259,"context_line":"            vcpus\u003d1, memory_mb\u003d512, root_gb\u003d1, extra_specs\u003d{\u0027hw:pmu\u0027: \"on\"})"},{"line_number":6260,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_fe6e2c2a","line":6257,"range":{"start_line":6257,"start_character":23,"end_line":6257,"end_character":28},"updated":"2019-08-19 14:46:29.000000000","message":"string","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"}],"nova/tests/unit/objects/test_image_meta.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7faddb67_3e18cf82","line":412,"updated":"2019-08-09 11:10:17.000000000","message":"I know we\u0027re not doing this here, but I\u0027d like to see a \u0027assertIn(\u0027traits_required\u0027, primitive[\u0027nova_object.data\u0027])\u0027 call here to give us a positive check","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"7faddb67_b1004c04","line":412,"in_reply_to":"7faddb67_3e18cf82","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":2193,"context_line":"            \u003cvendor_id state\u003d\"on\" value\u003d\"1234567890ab\"/\u003e"},{"line_number":2194,"context_line":"          \u003c/hyperv\u003e\"\"\")"},{"line_number":2195,"context_line":""},{"line_number":2196,"context_line":"    def test_feature_pmu(self):"},{"line_number":2197,"context_line":""},{"line_number":2198,"context_line":"        obj \u003d config.LibvirtConfigGuestFeaturePMU(True)"},{"line_number":2199,"context_line":"        xml \u003d obj.to_xml()"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_7ed1dccb","line":2196,"updated":"2019-08-19 14:46:29.000000000","message":"LibvirtConfigGuestFeaturePMU is now using bool_from_string but you\u0027re not testing that it is, so you should have on/off or some kind of non-boolean string value testing in here.","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":6136,"context_line":"                feature.state \u003d\u003d strutils.bool_from_string(state)"},{"line_number":6137,"context_line":"                for feature in cfg.features))"},{"line_number":6138,"context_line":""},{"line_number":6139,"context_line":"        # assert that if not set in image or flavor no pmu feature object"},{"line_number":6140,"context_line":"        # is created."},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"        flavor \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":6143,"context_line":"                                             extra_specs\u003d{},"},{"line_number":6144,"context_line":"                                             expected_attrs\u003d{\"extra_specs\"})"},{"line_number":6145,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"},{"line_number":6146,"context_line":""},{"line_number":6147,"context_line":"        instance_ref.flavor \u003d flavor"},{"line_number":6148,"context_line":"        disk_info \u003d blockinfo.get_disk_info("},{"line_number":6149,"context_line":"            CONF.libvirt.virt_type, instance_ref, image_meta)"},{"line_number":6150,"context_line":"        cfg \u003d drvr._get_guest_config("},{"line_number":6151,"context_line":"            instance_ref, [], image_meta, disk_info)"},{"line_number":6152,"context_line":"        self.assertFalse("},{"line_number":6153,"context_line":"            any(isinstance(feature, vconfig.LibvirtConfigGuestFeaturePMU)"},{"line_number":6154,"context_line":"                for feature in cfg.features))"},{"line_number":6155,"context_line":""},{"line_number":6156,"context_line":"    def _test_get_guest_config_disk_cachemodes(self, images_type):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_be0b5f29","line":6153,"range":{"start_line":6139,"start_character":0,"end_line":6153,"end_character":73},"updated":"2019-08-09 11:10:17.000000000","message":"Can we make this a separate test?","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":6136,"context_line":"                feature.state \u003d\u003d strutils.bool_from_string(state)"},{"line_number":6137,"context_line":"                for feature in cfg.features))"},{"line_number":6138,"context_line":""},{"line_number":6139,"context_line":"        # assert that if not set in image or flavor no pmu feature object"},{"line_number":6140,"context_line":"        # is created."},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"        flavor \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":6143,"context_line":"                                             extra_specs\u003d{},"},{"line_number":6144,"context_line":"                                             expected_attrs\u003d{\"extra_specs\"})"},{"line_number":6145,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"},{"line_number":6146,"context_line":""},{"line_number":6147,"context_line":"        instance_ref.flavor \u003d flavor"},{"line_number":6148,"context_line":"        disk_info \u003d blockinfo.get_disk_info("},{"line_number":6149,"context_line":"            CONF.libvirt.virt_type, instance_ref, image_meta)"},{"line_number":6150,"context_line":"        cfg \u003d drvr._get_guest_config("},{"line_number":6151,"context_line":"            instance_ref, [], image_meta, disk_info)"},{"line_number":6152,"context_line":"        self.assertFalse("},{"line_number":6153,"context_line":"            any(isinstance(feature, vconfig.LibvirtConfigGuestFeaturePMU)"},{"line_number":6154,"context_line":"                for feature in cfg.features))"},{"line_number":6155,"context_line":""},{"line_number":6156,"context_line":"    def _test_get_guest_config_disk_cachemodes(self, images_type):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_e32ef78a","line":6153,"range":{"start_line":6139,"start_character":0,"end_line":6153,"end_character":73},"in_reply_to":"7faddb67_be0b5f29","updated":"2019-08-12 18:09:38.000000000","message":"ya i guess ill do it in the next version.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":6095,"context_line":"                           for feature in cfg.features))"},{"line_number":6096,"context_line":""},{"line_number":6097,"context_line":"    def test_get_guest_config_with_pmu(self):"},{"line_number":6098,"context_line":""},{"line_number":6099,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":6100,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":6101,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_9e94d8e9","line":6098,"updated":"2019-08-19 14:46:29.000000000","message":"nit: add a description for the test or remove the blank line","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":6122,"context_line":"            # assert that values set in image are reflected in"},{"line_number":6123,"context_line":"            # the xml generated."},{"line_number":6124,"context_line":""},{"line_number":6125,"context_line":"            flavor \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":6126,"context_line":"                extra_specs\u003d{},"},{"line_number":6127,"context_line":"                expected_attrs\u003d{\"extra_specs\"})"},{"line_number":6128,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({"},{"line_number":6129,"context_line":"                \"disk_format\": \"raw\","},{"line_number":6130,"context_line":"                \"properties\": {\"hw_pmu\": state}})"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_be50b433","line":6127,"range":{"start_line":6125,"start_character":12,"end_line":6127,"end_character":47},"updated":"2019-08-19 14:46:29.000000000","message":"nit: you could just do:\n\ninstance_ref.flavor.extra_specs.pop(\u0027hw:pmu\u0027)","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":6140,"context_line":"                for feature in cfg.features))"},{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    def test_get_guest_config_with_pmu_unset(self):"},{"line_number":6143,"context_line":""},{"line_number":6144,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":6145,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":6146,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_5e9ae012","line":6143,"updated":"2019-08-19 14:46:29.000000000","message":"same","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":6141,"context_line":""},{"line_number":6142,"context_line":"    def test_get_guest_config_with_pmu_unset(self):"},{"line_number":6143,"context_line":""},{"line_number":6144,"context_line":"        self.flags(virt_type\u003d\u0027kvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":6145,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":6146,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":6147,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_fe262ccb","line":6144,"range":{"start_line":6144,"start_character":30,"end_line":6144,"end_character":33},"updated":"2019-08-19 14:46:29.000000000","message":"Use qemu for this one to get coverage for both the kvm and qemu conditional.","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c0d10d6eb118c9a2a4b7c8836563844e2c9543d","unresolved":false,"context_lines":[{"line_number":6097,"context_line":"    def test_get_guest_config_with_pmu(self):"},{"line_number":6098,"context_line":"        for virt_type in (\u0027qemu\u0027, \u0027kvm\u0027):"},{"line_number":6099,"context_line":"            self.flags(virt_type\u003dvirt_type, group\u003d\u0027libvirt\u0027)"},{"line_number":6100,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":6101,"context_line":"            instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":6102,"context_line":""},{"line_number":6103,"context_line":"            for state in (\"true\", \"false\"):"},{"line_number":6104,"context_line":"                # assert that values set in flavor are reflected in"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_1ba8e11d","line":6101,"range":{"start_line":6100,"start_character":12,"end_line":6101,"end_character":65},"updated":"2019-08-20 14:39:43.000000000","message":"nit: you could move this outside the for loop above","commit_id":"fd8f99798287129ab5a65f7df9b4819386c3b14f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c0d10d6eb118c9a2a4b7c8836563844e2c9543d","unresolved":false,"context_lines":[{"line_number":6138,"context_line":"    def test_get_guest_config_with_pmu_unset(self):"},{"line_number":6139,"context_line":"        for virt_type in (\u0027qemu\u0027, \u0027kvm\u0027):"},{"line_number":6140,"context_line":"            self.flags(virt_type\u003dvirt_type, group\u003d\u0027libvirt\u0027)"},{"line_number":6141,"context_line":"            drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":6142,"context_line":"            instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":6143,"context_line":""},{"line_number":6144,"context_line":"            # assert that if not set in image or flavor no pmu feature object"},{"line_number":6145,"context_line":"            # is created."}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_3ba35d45","line":6142,"range":{"start_line":6141,"start_character":12,"end_line":6142,"end_character":65},"updated":"2019-08-20 14:39:43.000000000","message":"same","commit_id":"fd8f99798287129ab5a65f7df9b4819386c3b14f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2c0d10d6eb118c9a2a4b7c8836563844e2c9543d","unresolved":false,"context_lines":[{"line_number":6183,"context_line":"            # assert that values set in image are also ignored."},{"line_number":6184,"context_line":""},{"line_number":6185,"context_line":"            instance_ref.flavor.extra_specs.pop(\u0027hw:pmu\u0027)"},{"line_number":6186,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({\"disk_format\": \"raw\"})"},{"line_number":6187,"context_line":""},{"line_number":6188,"context_line":"            disk_info \u003d blockinfo.get_disk_info("},{"line_number":6189,"context_line":"                CONF.libvirt.virt_type, instance_ref, image_meta)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_5b609901","line":6186,"range":{"start_line":6186,"start_character":12,"end_line":6186,"end_character":76},"updated":"2019-08-20 14:39:43.000000000","message":"This is missing the hw_pmu property.","commit_id":"fd8f99798287129ab5a65f7df9b4819386c3b14f"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ec310500c6c775a3a2a556ab1a2be40e6fd1fe50","unresolved":false,"context_lines":[{"line_number":2354,"context_line":""},{"line_number":2355,"context_line":"    def __init__(self, state, **kwargs):"},{"line_number":2356,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__("},{"line_number":2357,"context_line":"            \"pmu\", **kwargs)"},{"line_number":2358,"context_line":"        self.state \u003d state"},{"line_number":2359,"context_line":""},{"line_number":2360,"context_line":"    def format_dom(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_fbf1b702","line":2357,"range":{"start_line":2357,"start_character":0,"end_line":2357,"end_character":28},"updated":"2019-08-13 09:34:47.000000000","message":"nit: could probably fit on one line","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"    def __init__(self, state, **kwargs):"},{"line_number":2356,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__("},{"line_number":2357,"context_line":"            \"pmu\", **kwargs)"},{"line_number":2358,"context_line":"        self.state \u003d state"},{"line_number":2359,"context_line":""},{"line_number":2360,"context_line":"    def format_dom(self):"},{"line_number":2361,"context_line":"        root \u003d super(LibvirtConfigGuestFeaturePMU, self).format_dom()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e6710caa","line":2358,"range":{"start_line":2358,"start_character":8,"end_line":2358,"end_character":26},"updated":"2019-08-13 23:05:37.000000000","message":"So this is a boolean? Would be good to document this parameter with a docstring since it\u0027s used as a boolean type below but \"state\" in the xml is not a boolean.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"    def __init__(self, state, **kwargs):"},{"line_number":2356,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__("},{"line_number":2357,"context_line":"            \"pmu\", **kwargs)"},{"line_number":2358,"context_line":"        self.state \u003d state"},{"line_number":2359,"context_line":""},{"line_number":2360,"context_line":"    def format_dom(self):"},{"line_number":2361,"context_line":"        root \u003d super(LibvirtConfigGuestFeaturePMU, self).format_dom()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_a6f234e2","line":2358,"range":{"start_line":2358,"start_character":8,"end_line":2358,"end_character":26},"in_reply_to":"7faddb67_e6710caa","updated":"2019-08-13 23:30:41.000000000","message":"well state is a boolean with values of \"on\" or \"off\" but in the xml and here yes its a python bool but ill leave a comment to state that.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"    def __init__(self, state, **kwargs):"},{"line_number":2356,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__(\"pmu\", **kwargs)"},{"line_number":2357,"context_line":"        # NOTE(sean-k-mooney): state is a python bool"},{"line_number":2358,"context_line":"        self.state \u003d state"},{"line_number":2359,"context_line":""},{"line_number":2360,"context_line":"    def format_dom(self):"},{"line_number":2361,"context_line":"        root \u003d super(LibvirtConfigGuestFeaturePMU, self).format_dom()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_da691c25","line":2358,"range":{"start_line":2358,"start_character":21,"end_line":2358,"end_character":26},"updated":"2019-08-16 00:49:41.000000000","message":"ya so thinking about it i think ill just to the bool_form_string conversion here and allow this to accpeat anything bool  like so we can pass the raw flavor value and let this handle it.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d2defc0f578a3cd91da98adb8b4777160dbadbca","unresolved":false,"context_lines":[{"line_number":2355,"context_line":"    def __init__(self, state, **kwargs):"},{"line_number":2356,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__(\"pmu\", **kwargs)"},{"line_number":2357,"context_line":"        # NOTE(sean-k-mooney): state is a python bool"},{"line_number":2358,"context_line":"        self.state \u003d state"},{"line_number":2359,"context_line":""},{"line_number":2360,"context_line":"    def format_dom(self):"},{"line_number":2361,"context_line":"        root \u003d super(LibvirtConfigGuestFeaturePMU, self).format_dom()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_de16d0f2","line":2358,"range":{"start_line":2358,"start_character":21,"end_line":2358,"end_character":26},"in_reply_to":"7faddb67_da691c25","updated":"2019-08-19 14:27:26.000000000","message":"I\u0027m not sure what you\u0027re saying. You want to call bool_from_string here? The caller should have already converted to a boolean so I don\u0027t think we need to do bool_from_string here.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":2355,"context_line":""},{"line_number":2356,"context_line":"    def __init__(self, state, **kwargs):"},{"line_number":2357,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__(\"pmu\", **kwargs)"},{"line_number":2358,"context_line":"        # NOTE(sean-k-mooney): bool_from_string is needed to handel the raw"},{"line_number":2359,"context_line":"        # flavor exta_sepc value. bool_from_string internally checks if the"},{"line_number":2360,"context_line":"        # value is already a bool and reruns its. As such it\u0027s safe to use"},{"line_number":2361,"context_line":"        # with the image metadata property too, so we call it unconditionally."}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_9e61383c","line":2358,"range":{"start_line":2358,"start_character":61,"end_line":2358,"end_character":67},"updated":"2019-08-19 14:46:29.000000000","message":"handle","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":2357,"context_line":"        super(LibvirtConfigGuestFeaturePMU, self).__init__(\"pmu\", **kwargs)"},{"line_number":2358,"context_line":"        # NOTE(sean-k-mooney): bool_from_string is needed to handel the raw"},{"line_number":2359,"context_line":"        # flavor exta_sepc value. bool_from_string internally checks if the"},{"line_number":2360,"context_line":"        # value is already a bool and reruns its. As such it\u0027s safe to use"},{"line_number":2361,"context_line":"        # with the image metadata property too, so we call it unconditionally."},{"line_number":2362,"context_line":"        self.state \u003d strutils.bool_from_string(state)"},{"line_number":2363,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_7e5c7c7c","line":2360,"range":{"start_line":2360,"start_character":38,"end_line":2360,"end_character":48},"updated":"2019-08-19 14:46:29.000000000","message":"returns it","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":4808,"context_line":"            if pmu is not None:"},{"line_number":4809,"context_line":"                guest.features.append("},{"line_number":4810,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4811,"context_line":"                        pmu if isinstance(pmu, bool) else"},{"line_number":4812,"context_line":"                        strutils.bool_from_string(pmu)))"},{"line_number":4813,"context_line":""},{"line_number":4814,"context_line":"    def _check_number_of_serial_console(self, num_ports):"},{"line_number":4815,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_1698b319","line":4812,"range":{"start_line":4811,"start_character":28,"end_line":4812,"end_character":54},"updated":"2019-07-18 08:48:24.000000000","message":"I think you can simply call bool_from_string() as that will do the isintance(x, bool) shortcut anyhow.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bb406fb356904a937c755d937a76b00c32f231d7","unresolved":false,"context_lines":[{"line_number":4808,"context_line":"            if pmu is not None:"},{"line_number":4809,"context_line":"                guest.features.append("},{"line_number":4810,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4811,"context_line":"                        pmu if isinstance(pmu, bool) else"},{"line_number":4812,"context_line":"                        strutils.bool_from_string(pmu)))"},{"line_number":4813,"context_line":""},{"line_number":4814,"context_line":"    def _check_number_of_serial_console(self, num_ports):"},{"line_number":4815,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_89d24427","line":4812,"range":{"start_line":4811,"start_character":28,"end_line":4812,"end_character":54},"in_reply_to":"7faddb67_1698b319","updated":"2019-07-18 09:20:01.000000000","message":"your right it will.\nill do that thanks.","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":4805,"context_line":"            # we just use the values directly."},{"line_number":4806,"context_line":"            pmu \u003d (flavor.extra_specs.get(\u0027hw:pmu\u0027) or"},{"line_number":4807,"context_line":"                   image_meta.properties.get(\u0027hw_pmu\u0027))"},{"line_number":4808,"context_line":"            if pmu is not None:"},{"line_number":4809,"context_line":"                guest.features.append("},{"line_number":4810,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4811,"context_line":"                        strutils.bool_from_string(pmu)))"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_6102260c","line":4808,"range":{"start_line":4808,"start_character":12,"end_line":4808,"end_character":31},"updated":"2019-08-09 11:10:17.000000000","message":"if pmu:","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":4805,"context_line":"            # we just use the values directly."},{"line_number":4806,"context_line":"            pmu \u003d (flavor.extra_specs.get(\u0027hw:pmu\u0027) or"},{"line_number":4807,"context_line":"                   image_meta.properties.get(\u0027hw_pmu\u0027))"},{"line_number":4808,"context_line":"            if pmu is not None:"},{"line_number":4809,"context_line":"                guest.features.append("},{"line_number":4810,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4811,"context_line":"                        strutils.bool_from_string(pmu)))"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_637f6766","line":4808,"range":{"start_line":4808,"start_character":12,"end_line":4808,"end_character":31},"in_reply_to":"7faddb67_6102260c","updated":"2019-08-12 18:09:38.000000000","message":"no i want to test if its not none.\n\ni want to append it if pmu is True or False but not when its  None.\n\nNone means you did not set the pmu value in the flavor or image so we do not want to generate the xml element and instead leave it up to qemu to decided to keep backwards compatibility.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":4781,"context_line":"                    vconfig.LibvirtConfigGuestFeatureKvmHidden())"},{"line_number":4782,"context_line":""},{"line_number":4783,"context_line":"            # NOTE(sean-k-mooney) we validate that the image and flavor"},{"line_number":4784,"context_line":"            # cannot have conflicting value in the compute api\u0027s"},{"line_number":4785,"context_line":"            # _validate_flavor_image_nostatus function so"},{"line_number":4786,"context_line":"            # we just use the values directly."},{"line_number":4787,"context_line":"            pmu \u003d (flavor.extra_specs.get(\u0027hw:pmu\u0027) or"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_069a28c4","line":4784,"range":{"start_line":4784,"start_character":38,"end_line":4784,"end_character":43},"updated":"2019-08-13 23:05:37.000000000","message":"values","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":4781,"context_line":"                    vconfig.LibvirtConfigGuestFeatureKvmHidden())"},{"line_number":4782,"context_line":""},{"line_number":4783,"context_line":"            # NOTE(sean-k-mooney) we validate that the image and flavor"},{"line_number":4784,"context_line":"            # cannot have conflicting value in the compute api\u0027s"},{"line_number":4785,"context_line":"            # _validate_flavor_image_nostatus function so"},{"line_number":4786,"context_line":"            # we just use the values directly."},{"line_number":4787,"context_line":"            pmu \u003d (flavor.extra_specs.get(\u0027hw:pmu\u0027) or"},{"line_number":4788,"context_line":"                   image_meta.properties.get(\u0027hw_pmu\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_269de4ba","line":4785,"range":{"start_line":4784,"start_character":51,"end_line":4785,"end_character":54},"updated":"2019-08-13 23:05:37.000000000","message":"I\u0027d probably just say \"in the compute API\" since the function name could change over time.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":4781,"context_line":"                    vconfig.LibvirtConfigGuestFeatureKvmHidden())"},{"line_number":4782,"context_line":""},{"line_number":4783,"context_line":"            # NOTE(sean-k-mooney) we validate that the image and flavor"},{"line_number":4784,"context_line":"            # cannot have conflicting value in the compute api\u0027s"},{"line_number":4785,"context_line":"            # _validate_flavor_image_nostatus function so"},{"line_number":4786,"context_line":"            # we just use the values directly."},{"line_number":4787,"context_line":"            pmu \u003d (flavor.extra_specs.get(\u0027hw:pmu\u0027) or"},{"line_number":4788,"context_line":"                   image_meta.properties.get(\u0027hw_pmu\u0027))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_66fc3cb5","line":4785,"range":{"start_line":4784,"start_character":51,"end_line":4785,"end_character":54},"in_reply_to":"7faddb67_269de4ba","updated":"2019-08-13 23:30:41.000000000","message":"ya that is better","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fdb01b82ec930152277af1773558bfba241430c1","unresolved":false,"context_lines":[{"line_number":4789,"context_line":"            if pmu is not None:"},{"line_number":4790,"context_line":"                guest.features.append("},{"line_number":4791,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4792,"context_line":"                        strutils.bool_from_string(pmu)))"},{"line_number":4793,"context_line":""},{"line_number":4794,"context_line":"    def _check_number_of_serial_console(self, num_ports):"},{"line_number":4795,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e6a6ec0f","line":4792,"range":{"start_line":4792,"start_character":33,"end_line":4792,"end_character":49},"updated":"2019-08-13 23:05:37.000000000","message":"OK this is needed for the flavor extra spec which is a string but also handles passing in a boolean which would be the case with the image property.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2a13e12036cbeea990125918d868165603c931d6","unresolved":false,"context_lines":[{"line_number":4789,"context_line":"            if pmu is not None:"},{"line_number":4790,"context_line":"                guest.features.append("},{"line_number":4791,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4792,"context_line":"                        strutils.bool_from_string(pmu)))"},{"line_number":4793,"context_line":""},{"line_number":4794,"context_line":"    def _check_number_of_serial_console(self, num_ports):"},{"line_number":4795,"context_line":"        virt_type \u003d CONF.libvirt.virt_type"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_062d4845","line":4792,"range":{"start_line":4792,"start_character":33,"end_line":4792,"end_character":49},"in_reply_to":"7faddb67_e6a6ec0f","updated":"2019-08-13 23:30:41.000000000","message":"ya i originally only did it in the flavor case and gibi asked me to remove the type check to see if pmu was already a bool since bool_form_srting does it internally.\ni can leave a comment for this too.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ceab98e3a49f7a82222f1609f4e1d73b2e92f21a","unresolved":false,"context_lines":[{"line_number":4791,"context_line":"            if pmu is not None:"},{"line_number":4792,"context_line":"                # NOTE(sean-k-mooney): bool_from_string handles if the value"},{"line_number":4793,"context_line":"                # is already a bool internally so we call this even if we"},{"line_number":4794,"context_line":"                # already got a bool from the image."},{"line_number":4795,"context_line":"                guest.features.append("},{"line_number":4796,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4797,"context_line":"                        strutils.bool_from_string(pmu)))"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_2e7116a9","line":4794,"range":{"start_line":4794,"start_character":46,"end_line":4794,"end_character":51},"updated":"2019-08-15 19:11:19.000000000","message":"really it\u0027s about the flavor extra spec, because the value is stored directly in the extra spec, but the FlexibleBooleanField will coerce the image property to a boolean if it\u0027s a string (yes/no) or int (1/0).","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"57afd21e9ce48215d325b7c4dba2f01b6e902c76","unresolved":false,"context_lines":[{"line_number":4791,"context_line":"            if pmu is not None:"},{"line_number":4792,"context_line":"                # NOTE(sean-k-mooney): bool_from_string handles if the value"},{"line_number":4793,"context_line":"                # is already a bool internally so we call this even if we"},{"line_number":4794,"context_line":"                # already got a bool from the image."},{"line_number":4795,"context_line":"                guest.features.append("},{"line_number":4796,"context_line":"                    vconfig.LibvirtConfigGuestFeaturePMU("},{"line_number":4797,"context_line":"                        strutils.bool_from_string(pmu)))"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_9a1ac4c3","line":4794,"range":{"start_line":4794,"start_character":46,"end_line":4794,"end_character":51},"in_reply_to":"7faddb67_2e7116a9","updated":"2019-08-16 00:49:41.000000000","message":"write we call it to conver the flavor value.\n\nin v1 i did and isinstance check \nhttps://review.opendev.org/#/c/671338/1/nova/virt/libvirt/driver.py@4811\n\nto only do the conversion when need which made it more explcit but gibi suggest just letteing bool_form_sting handel it. ill mention that bool_form_sting s needed because we get the raw flavor vlaue and it needs to be coerced to a bool\n\nactully i could handle this in the class init function\nso i might do that instead.","commit_id":"43ca467cdb0681fd2df732af779bfb4716c3a2b9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f184e617f7d80d5d1e18d11ee4199c0e8df1b66","unresolved":false,"context_lines":[{"line_number":4775,"context_line":""},{"line_number":4776,"context_line":"            guest.features.append(hv)"},{"line_number":4777,"context_line":""},{"line_number":4778,"context_line":"        if virt_type in (\"qemu\", \"kvm\"):"},{"line_number":4779,"context_line":"            if hide_hypervisor_id:"},{"line_number":4780,"context_line":"                guest.features.append("},{"line_number":4781,"context_line":"                    vconfig.LibvirtConfigGuestFeatureKvmHidden())"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_5e0f4038","line":4778,"updated":"2019-08-19 14:46:29.000000000","message":"How about a test where virt_type is not qemu/kvm but the image/flavor has hw_pmu/hw:pmu configured for pmu and then assert the guest feature is not set?","commit_id":"f3748e24c2c6583d935c279c0387422c065ac214"}],"releasenotes/notes/libvirt-pmu-configuration-ec24904bddc84bef.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitroing unit (``vPMU``) vitualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_968b43c1","line":5,"range":{"start_line":5,"start_character":16,"end_line":5,"end_character":26},"updated":"2019-07-18 08:48:24.000000000","message":"monitoring","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitroing unit (``vPMU``) vitualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_56914bf0","line":5,"range":{"start_line":5,"start_character":43,"end_line":5,"end_character":56},"updated":"2019-07-18 08:48:24.000000000","message":"virtualization","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411d0c86a43d7b9f142e22f4fb7f76101d47d76d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectivly."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_768c87d6","line":10,"range":{"start_line":10,"start_character":58,"end_line":10,"end_character":69},"updated":"2019-07-18 08:48:24.000000000","message":"respectively","commit_id":"0029307cbbca1a4b3fc82121d4c673bb2b9cc236"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_015572fa","line":5,"range":{"start_line":5,"start_character":57,"end_line":5,"end_character":58},"updated":"2019-08-09 11:10:17.000000000","message":". This is particularly useful for real-time workloads.","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_414b6a5e","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":41},"updated":"2019-08-09 11:10:17.000000000","message":"Ha! For once, you don\u0027t need these. It\u0027s not a symbol (like ``VCPU`` would be, if referencing the thing from os_resources_classes) or anything else warranting a literal","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_e3b83712","line":5,"range":{"start_line":5,"start_character":57,"end_line":5,"end_character":58},"in_reply_to":"7faddb67_015572fa","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_8335c3aa","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":41},"in_reply_to":"7faddb67_414b6a5e","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_21250eac","line":6,"range":{"start_line":6,"start_character":29,"end_line":6,"end_character":40},"updated":"2019-08-09 11:10:17.000000000","message":"extra specs","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The libvirt driver has been extended to support user configurable"},{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_a338ff9e","line":6,"range":{"start_line":6,"start_character":29,"end_line":6,"end_character":40},"in_reply_to":"7faddb67_21250eac","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_8133a2f6","line":8,"range":{"start_line":8,"start_character":48,"end_line":8,"end_character":56},"updated":"2019-08-09 11:10:17.000000000","message":"ditto","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_e13616e8","line":8,"range":{"start_line":8,"start_character":11,"end_line":8,"end_character":19},"updated":"2019-08-09 11:10:17.000000000","message":"ditto","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_433fcb86","line":8,"range":{"start_line":8,"start_character":48,"end_line":8,"end_character":56},"in_reply_to":"7faddb67_8133a2f6","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    performance monitoring unit (``vPMU``) virtualization."},{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_63420712","line":8,"range":{"start_line":8,"start_character":11,"end_line":8,"end_character":19},"in_reply_to":"7faddb67_e13616e8","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"59eebb9df339931fee8c282478fe5da80b44d277","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_a1301eea","line":9,"range":{"start_line":9,"start_character":52,"end_line":9,"end_character":59},"updated":"2019-08-09 11:10:17.000000000","message":"feature, the operator","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fe47521a8872afa2cff44c0211c37e440fcc6f68","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    A pair of boolean flavor extra_specs and image metadata properties"},{"line_number":7,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":8,"context_line":"    of the ``vPMU``. By default the behavior of ``vPMU`` emulation has"},{"line_number":9,"context_line":"    not been changed, to take advantage of this new feature operator"},{"line_number":10,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_0349d330","line":9,"range":{"start_line":9,"start_character":52,"end_line":9,"end_character":59},"in_reply_to":"7faddb67_a1301eea","updated":"2019-08-12 18:09:38.000000000","message":"Done","commit_id":"25673263846373ba5a82117768d5aaba73110d16"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ec310500c6c775a3a2a556ab1a2be40e6fd1fe50","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    A pair of boolean flavor extra spec and image metadata properties"},{"line_number":8,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":9,"context_line":"    of the vPMU. By default the behavior of vPMU emulation has"},{"line_number":10,"context_line":"    not been changed, to take advantage of this new feature, the operator"},{"line_number":11,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_7be5c737","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":23},"updated":"2019-08-13 09:34:47.000000000","message":". To","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ec310500c6c775a3a2a556ab1a2be40e6fd1fe50","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":9,"context_line":"    of the vPMU. By default the behavior of vPMU emulation has"},{"line_number":10,"context_line":"    not been changed, to take advantage of this new feature, the operator"},{"line_number":11,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_dbbf1bfa","line":11,"range":{"start_line":11,"start_character":57,"end_line":11,"end_character":71},"updated":"2019-08-13 09:34:47.000000000","message":"nit: doesn\u0027t really make sense, since this isn\u0027t respective to anything. Maybe move the \"By default, the behavior...\" sentence to the end of the paragraph?","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"457344f820efd5271f0a4a5bc895b046127edec6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    ``hw:pmu`` and ``hw_pmu`` have been added to control the emulation"},{"line_number":9,"context_line":"    of the vPMU. By default the behavior of vPMU emulation has"},{"line_number":10,"context_line":"    not been changed, to take advantage of this new feature, the operator"},{"line_number":11,"context_line":"    or tenant will need to update their flavors or images respectively."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7faddb67_c6965e95","line":11,"range":{"start_line":11,"start_character":57,"end_line":11,"end_character":71},"in_reply_to":"7faddb67_dbbf1bfa","updated":"2019-08-13 10:32:01.000000000","message":"I ment the operator can set it in the flavor and the tenant can set it in the image. so im matching the odering of operator and tenant with flavor or image.","commit_id":"165351526d91c62ed3ead1c052152ce2913c02e3"}]}
