)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3370c6cd3ca3279af9e3693abf6211ec58f76f8a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"include hardware offloaded ovs."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ibd62b24c2bd2dd208d0f804378d4e4f2bbfdaed6"},{"line_number":16,"context_line":"Closes-Bug: #179520"},{"line_number":17,"context_line":"Related-Bug: #1805891"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_869d1fbd","line":16,"updated":"2019-08-07 15:54:02.000000000","message":"#1795920","commit_id":"8c5dca0949113c31f16426faf62ba4c12cade9a4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ba72eb973782624917bce99b65e34fd330bac208","unresolved":false,"context_lines":[{"line_number":13,"context_line":"include hardware offloaded ovs."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ibd62b24c2bd2dd208d0f804378d4e4f2bbfdaed6"},{"line_number":16,"context_line":"Closes-Bug: #179520"},{"line_number":17,"context_line":"Related-Bug: #1805891"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_669263ff","line":16,"in_reply_to":"7faddb67_869d1fbd","updated":"2019-08-07 16:14:32.000000000","message":"a i missed the 9 \nhttps://bugs.launchpad.net/nova/+bug/1795920\nis in fact the bug yes.","commit_id":"8c5dca0949113c31f16426faf62ba4c12cade9a4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1de7233464814918803e4d2c32b35b586d22a204","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1795920"},{"line_number":16,"context_line":"Related-Bug: #1805891"},{"line_number":17,"context_line":"Implements: blueprint sriov-numa-affinity-policy-via-flavor-and-image"},{"line_number":18,"context_line":"Change-Id: Ibd62b24c2bd2dd208d0f804378d4e4f2bbfdaed6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa7e38b_ce7309e7","line":17,"range":{"start_line":17,"start_character":22,"end_line":17,"end_character":69},"updated":"2019-09-18 22:33:58.000000000","message":"i am renameing this to vm-scoped-sriov-numa-affinity\n\nas i also plan to propose a seperate feature for port-scoped-sriov-numa-affinity.","commit_id":"2a5f50f809463acb0ea7203c9dc085a4fdb515cb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":10,"context_line":"defining a pci numa affinity policy via the flavor"},{"line_number":11,"context_line":"extra specs or image metadata properties enabling"},{"line_number":12,"context_line":"the policies to be applied to neutron sriov port"},{"line_number":13,"context_line":"include hardware offloaded ovs."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1795920"},{"line_number":16,"context_line":"Related-Bug: #1805891"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3fa7e38b_a412ec5f","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":7},"updated":"2019-12-09 22:59:45.000000000","message":"including?","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"}],"doc/source/admin/pci-passthrough.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9eeb374529271048a4dc0774fafae4edcd114283","unresolved":false,"context_lines":[{"line_number":74,"context_line":"   alias \u003d { \"vendor_id\":\"8086\", \"product_id\":\"154d\", \"device_type\":\"type-PF\", \"name\":\"a1\", \"numa_policy\":\"preferred\" }"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Refer to :oslo.config:option:`pci.alias` for syntax information."},{"line_number":77,"context_line":"Refer to :ref:`Affinity  \u003cpci_numa_affinity_policy\u003e` for numa_policy information."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Once configured, restart the :program:`nova-api` service."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_2c9225a0","line":77,"range":{"start_line":77,"start_character":57,"end_line":77,"end_character":68},"updated":"2019-11-26 18:27:11.000000000","message":"``numa_policy``","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"}],"doc/source/user/flavors.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":487,"context_line":".. _pci_numa_affinity_policy:"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_2bb50133","line":490,"range":{"start_line":490,"start_character":51,"end_line":490,"end_character":57},"updated":"2019-11-07 16:53:38.000000000","message":"affinity","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":487,"context_line":".. _pci_numa_affinity_policy:"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_33b6a0fb","line":490,"range":{"start_line":490,"start_character":51,"end_line":490,"end_character":57},"in_reply_to":"3fa7e38b_2bb50133","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_4bb2bd4b","line":491,"range":{"start_line":491,"start_character":2,"end_line":491,"end_character":5},"updated":"2019-11-07 16:53:38.000000000","message":"PCI","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_cb7f8d64","line":491,"range":{"start_line":491,"start_character":37,"end_line":491,"end_character":42},"updated":"2019-11-07 16:53:38.000000000","message":"SR-IOV","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_0b860567","line":491,"range":{"start_line":491,"start_character":6,"end_line":491,"end_character":16},"updated":"2019-11-07 16:53:38.000000000","message":"passthrough","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_d3ccec8b","line":491,"range":{"start_line":491,"start_character":6,"end_line":491,"end_character":16},"in_reply_to":"3fa7e38b_0b860567","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_93c67468","line":491,"range":{"start_line":491,"start_character":2,"end_line":491,"end_character":5},"in_reply_to":"3fa7e38b_4bb2bd4b","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_b3c13051","line":491,"range":{"start_line":491,"start_character":37,"end_line":491,"end_character":42},"in_reply_to":"3fa7e38b_cb7f8d64","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_8b91959d","line":492,"range":{"start_line":492,"start_character":34,"end_line":492,"end_character":44},"updated":"2019-11-07 16:53:38.000000000","message":"flavor extra spec","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_539ebc69","line":492,"range":{"start_line":492,"start_character":34,"end_line":492,"end_character":44},"in_reply_to":"3fa7e38b_8b91959d","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_2b8e6179","line":493,"range":{"start_line":493,"start_character":41,"end_line":493,"end_character":69},"updated":"2019-11-07 16:53:38.000000000","message":"``literal`` these","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affity policy for"},{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"},{"line_number":496,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_73a178a8","line":493,"range":{"start_line":493,"start_character":41,"end_line":493,"end_character":69},"in_reply_to":"3fa7e38b_2b8e6179","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"      This value will mean that nova will boot instances with PCI devices *only* if"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_2be3c136","line":494,"updated":"2019-11-07 16:53:38.000000000","message":"do we already have this text somewhere describing the PCI alias behavior? They should be cross-linked at the least.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"      This value will mean that nova will boot instances with PCI devices *only* if"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_3e59848d","line":494,"in_reply_to":"3fa7e38b_2be3c136","updated":"2019-11-13 16:03:41.000000000","message":"The only place I found these is in the config references for PCI alias [1], where they\u0027re just enumerated but not explained, and the original PCI NUMA affinity spec [2]\n\n[1] https://docs.openstack.org/nova/train/configuration/config.html#pci.alias\n[2] https://specs.openstack.org/openstack/nova-specs/specs/queens/implemented/share-pci-between-numa-nodes.html#proposed-change","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":491,"context_line":"  pci passthough devices and neutron sriov interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` extra spec or ``hw_pci_numa_affinity_policy``"},{"line_number":493,"context_line":"  image property. The allowed values are required, prefered or legacy (default)."},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"  **required**"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"      This value will mean that nova will boot instances with PCI devices *only* if"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_73bc18db","line":494,"in_reply_to":"3fa7e38b_2be3c136","updated":"2019-11-13 16:53:10.000000000","message":"not as far as i can tell.\n\nthe only docs i found were\n\nhttps://docs.openstack.org/nova/train/admin/pci-passthrough.html\n\nhttps://docs.openstack.org/nova/train/user/flavors.html#extra-spec-pci-passthrough\n\nand \n\nhttps://docs.openstack.org/nova/train/configuration/config.html#pci.alias\n\n^ is the only one that mentions the numa_policy field on the alias and while it lists the poicies it does not explain what they do.\n\nill add a link form those docs to this new info.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affinity policy for"},{"line_number":491,"context_line":"  PCI pass-though devices and neutron SR-IOV interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` flavor extra spec or"},{"line_number":493,"context_line":"  ``hw_pci_numa_affinity_policy``  image property. The allowed values are"},{"line_number":494,"context_line":"  ``required``,``preferred`` or ``legacy`` (default)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_d0061822","line":491,"range":{"start_line":491,"start_character":6,"end_line":491,"end_character":17},"updated":"2019-11-13 20:40:08.000000000","message":"passthrough (it\u0027s in one word elsewhere)","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"55c4feb0765ded7db4ce4c022c41fcc8747052f1","unresolved":false,"context_lines":[{"line_number":488,"context_line":""},{"line_number":489,"context_line":"PCI NUMA Affinity Policy"},{"line_number":490,"context_line":"  For the libvirt driver, you can specify the NUMA affinity policy for"},{"line_number":491,"context_line":"  PCI pass-though devices and neutron SR-IOV interfaces via the"},{"line_number":492,"context_line":"  ``hw:pci_numa_affinity_policy`` flavor extra spec or"},{"line_number":493,"context_line":"  ``hw_pci_numa_affinity_policy``  image property. The allowed values are"},{"line_number":494,"context_line":"  ``required``,``preferred`` or ``legacy`` (default)."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_1ff4bbf0","line":491,"range":{"start_line":491,"start_character":6,"end_line":491,"end_character":17},"in_reply_to":"3fa7e38b_d0061822","updated":"2019-11-14 01:47:25.000000000","message":"ya ill fix that\n\ni tend to write it as one word, that is my preference but spellcheck suggest 2 words or hyphenated.","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9eeb374529271048a4dc0774fafae4edcd114283","unresolved":false,"context_lines":[{"line_number":494,"context_line":"  ``required``,``preferred`` or ``legacy`` (default)."},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"  **required**"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"      This value will mean that nova will boot instances with PCI devices *only* if"},{"line_number":499,"context_line":"      at least one of the NUMA nodes is associated with these PCI devices. It means"},{"line_number":500,"context_line":"      that if NUMA node info for some PCI devices could not be determined, those"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_8ce8f915","line":497,"updated":"2019-11-26 18:27:11.000000000","message":"you need to drop this line or the below will render as a block quote instead of \u003cdd\u003e. You might also consider using a bullet list because it\u0027s consistent with the rest of the doc","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9eeb374529271048a4dc0774fafae4edcd114283","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"  **required**"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"      This value will mean that nova will boot instances with PCI devices *only* if"},{"line_number":499,"context_line":"      at least one of the NUMA nodes is associated with these PCI devices. It means"},{"line_number":500,"context_line":"      that if NUMA node info for some PCI devices could not be determined, those"},{"line_number":501,"context_line":"      PCI devices wouldn\u0027t be consumable by the instance. This provides maximum"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_61b331ee","line":498,"range":{"start_line":498,"start_character":74,"end_line":498,"end_character":80},"updated":"2019-11-26 18:27:11.000000000","message":"**only**","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f12d89cb9f2072388a8473f16b15a4124e8b0aec","unresolved":false,"context_lines":[{"line_number":495,"context_line":""},{"line_number":496,"context_line":"  **required**"},{"line_number":497,"context_line":"      This value will mean that nova will boot instances with PCI devices **only** if"},{"line_number":498,"context_line":"      at least one of the NUMA nodes is associated with these PCI devices. It means"},{"line_number":499,"context_line":"      that if NUMA node info for some PCI devices could not be determined, those"},{"line_number":500,"context_line":"      PCI devices wouldn\u0027t be consumable by the instance. This provides maximum"},{"line_number":501,"context_line":"      performance."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3fa7e38b_d6d2a933","line":498,"range":{"start_line":498,"start_character":15,"end_line":498,"end_character":36},"updated":"2019-12-02 15:29:13.000000000","message":"nit: one of the NUMA nodes of the instance","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"}],"nova/compute/api.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":929,"context_line":"            instance_type, affinity_policy\u003dpci_numa_affinity_policy)"},{"line_number":930,"context_line":"        result \u003d self.network_api.create_resource_requests("},{"line_number":931,"context_line":"            context, requested_networks, pci_request_info,"},{"line_number":932,"context_line":"            affinity_policy\u003dpci_numa_affinity_policy)"},{"line_number":933,"context_line":"        network_metadata, port_resource_requests \u003d result"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        # Creating servers with ports that have resource requests, like QoS"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_191aa217","line":932,"updated":"2019-11-13 16:03:41.000000000","message":"This looks weird - if the pci_numa_affinity_policy is already set on the request by get_pci_requests_from_flavor, why do we need to pass it again to create_resource_requests - but that\u0027s because create_resources_requests needs the policy for any new requests it creates for Neutron SRIOV ports (right?).","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":929,"context_line":"            instance_type, affinity_policy\u003dpci_numa_affinity_policy)"},{"line_number":930,"context_line":"        result \u003d self.network_api.create_resource_requests("},{"line_number":931,"context_line":"            context, requested_networks, pci_request_info,"},{"line_number":932,"context_line":"            affinity_policy\u003dpci_numa_affinity_policy)"},{"line_number":933,"context_line":"        network_metadata, port_resource_requests \u003d result"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"        # Creating servers with ports that have resource requests, like QoS"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_f491cb54","line":932,"in_reply_to":"3fa7e38b_191aa217","updated":"2019-11-13 16:53:10.000000000","message":"yes this if for neutron sriov ports\nand pci_request.get_pci_requests_from_flavor is for pci aliases in the falvor.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"}],"nova/exception.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"line_number":1902,"context_line":""},{"line_number":1903,"context_line":""},{"line_number":1904,"context_line":"class ImageNUMATopologyForbidden(Forbidden):"},{"line_number":1905,"context_line":"    msg_fmt \u003d _(\"Image property \u0027%(name)s\u0027 is not permitted to override \""},{"line_number":1906,"context_line":"                \"NUMA configuration set against the flavor\")"},{"line_number":1907,"context_line":""},{"line_number":1908,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_cfcd52bb","line":1905,"range":{"start_line":1905,"start_character":18,"end_line":1905,"end_character":42},"updated":"2019-11-28 14:21:28.000000000","message":"this read strangely to me which is why i am not using this ordering.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":1907,"context_line":""},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_bc093585","line":1910,"range":{"start_line":1910,"start_character":17,"end_line":1910,"end_character":59},"updated":"2019-11-28 08:49:52.000000000","message":"How about \ns/hw_pci_numa_affinity_policy Image property/Image property \u0027hw_pci_numa_affinity_policy\u0027 /?","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":1907,"context_line":""},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_89f66b5d","line":1910,"range":{"start_line":1910,"start_character":17,"end_line":1910,"end_character":59},"in_reply_to":"3fa7e38b_9e7ea6e1","updated":"2019-11-29 16:52:10.000000000","message":"ill change it to \"image property: \u0027foo\u0027\"\n\nwithout the : that just reads like a broken statement to me.\n\ni had intended to write \"The hw_pci... image property...\"","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"line_number":1907,"context_line":""},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_cfe47245","line":1910,"range":{"start_line":1910,"start_character":17,"end_line":1910,"end_character":59},"in_reply_to":"3fa7e38b_bc093585","updated":"2019-11-28 14:21:28.000000000","message":"i could add The but i dont think reversing the order makes sense. im not sure quoting  it makes sense bug i can.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":1907,"context_line":""},{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_9e7ea6e1","line":1910,"range":{"start_line":1910,"start_character":17,"end_line":1910,"end_character":59},"in_reply_to":"3fa7e38b_cfe47245","updated":"2019-11-28 17:03:53.000000000","message":"Yeah, \"Image property \u0027foo\u0027\" makes more sense, IMO","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_7c689d21","line":1911,"range":{"start_line":1911,"start_character":34,"end_line":1911,"end_character":61},"updated":"2019-11-28 08:49:52.000000000","message":"\u0027hw:pci_numa_affinity_policy\u0027","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_5c1a81c6","line":1911,"range":{"start_line":1911,"start_character":17,"end_line":1911,"end_character":18},"updated":"2019-11-28 08:49:52.000000000","message":"Space to be put at the end of the last line?","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"line_number":1908,"context_line":""},{"line_number":1909,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1910,"context_line":"    msg_fmt \u003d _(\"hw_pci_numa_affinity_policy Image property is not permitted\""},{"line_number":1911,"context_line":"                \" to override the hw:pci_numa_affinity_policy flavor \""},{"line_number":1912,"context_line":"                \"extra spec.\")"},{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_afcc96bb","line":1911,"range":{"start_line":1911,"start_character":34,"end_line":1911,"end_character":61},"in_reply_to":"3fa7e38b_7c689d21","updated":"2019-11-28 14:21:28.000000000","message":"ok i can quote it.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb231383749b9360a84ef918bbb539ee2d8d71a2","unresolved":false,"context_lines":[{"line_number":1856,"context_line":""},{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1859,"context_line":"    msg_fmt \u003d _(\"Image property:\u0027 hw_pci_numa_affinity_policy\u0027 is not \""},{"line_number":1860,"context_line":"                \"permitted to override the \u0027hw:pci_numa_affinity_policy\u0027 \""},{"line_number":1861,"context_line":"                \"flavor extra spec.\")"},{"line_number":1862,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_bdb6b388","line":1859,"range":{"start_line":1859,"start_character":31,"end_line":1859,"end_character":34},"updated":"2019-12-05 18:05:45.000000000","message":"space should be before the \u0027. Also, nit but can you drop the colon since it doesn\u0027t make sense","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3da4972035b4138234f21507731cbaa928c98ad","unresolved":false,"context_lines":[{"line_number":1856,"context_line":""},{"line_number":1857,"context_line":""},{"line_number":1858,"context_line":"class ImagePCINUMAPolicyForbidden(Forbidden):"},{"line_number":1859,"context_line":"    msg_fmt \u003d _(\"Image property:\u0027 hw_pci_numa_affinity_policy\u0027 is not \""},{"line_number":1860,"context_line":"                \"permitted to override the \u0027hw:pci_numa_affinity_policy\u0027 \""},{"line_number":1861,"context_line":"                \"flavor extra spec.\")"},{"line_number":1862,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_2f3a8297","line":1859,"range":{"start_line":1859,"start_character":31,"end_line":1859,"end_character":34},"in_reply_to":"3fa7e38b_bdb6b388","updated":"2019-12-05 23:16:28.000000000","message":"i really hat the order of image property followed by the name\ni feels backwards to me so i added the colon to both indicate a pause and to group the name with the type.\n\nbut in another context this is basically\n\n\"Football coach: \u0027Liverpool\u0027 ...\"\n\ninstead of \"\u0027Liverpool\u0027 football coach ...\"\n\nhow i would like to write this is \n\n\"The \u0027hw_pci_numa_affinity_policy\u0027 image property ...\"\n\nthis is what i originally intend to write but i forgot to type \"The\" but fine i dont really want to argue about this so ill just change it even though i don\u0027t agree with it.","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"}],"nova/network/api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f12d89cb9f2072388a8473f16b15a4124e8b0aec","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            requests created here will be added."},{"line_number":398,"context_line":"        :type pci_requests: nova.objects.InstancePCIRequests"},{"line_number":399,"context_line":"        :param affinity_policy: requested pci numa affinity policy"},{"line_number":400,"context_line":"        :type affinity_policy: nova.objects.fields.PCINUMAAffinityPolicy"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        :returns: A tuple with an instance of ``objects.NetworkMetadata`` for"},{"line_number":403,"context_line":"                  use by the scheduler or None and a list of RequestGroup"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_d6b709d7","line":400,"updated":"2019-12-02 15:29:13.000000000","message":"I\u0027m not 100% sure this is the type. The get_pci_numa_policy_constraint call does not specify what type it returns and as far as I understand it simply returns a string especially if we go the policy from the flavor.","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f0d8fb34291918ee122533e5e37febe39fc5916","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            requests created here will be added."},{"line_number":398,"context_line":"        :type pci_requests: nova.objects.InstancePCIRequests"},{"line_number":399,"context_line":"        :param affinity_policy: requested pci numa affinity policy"},{"line_number":400,"context_line":"        :type affinity_policy: nova.objects.fields.PCINUMAAffinityPolicy"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        :returns: A tuple with an instance of ``objects.NetworkMetadata`` for"},{"line_number":403,"context_line":"                  use by the scheduler or None and a list of RequestGroup"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_9821baa1","line":400,"in_reply_to":"3fa7e38b_d6b709d7","updated":"2019-12-02 19:45:12.000000000","message":"Technicaly you are correct.\n\nwe validate that the value is of that type here\nhttps://review.opendev.org/#/c/674072/10/nova/virt/hardware.py@1734\n\nnova.objects.fields.PCINUMAAffinityPolicy is an alias for the string type express as a nova enum\n\nclass PCINUMAAffinityPolicy(BaseNovaEnum):\n\n    REQUIRED \u003d \"required\"\n    LEGACY \u003d \"legacy\"\n    PREFERRED \u003d \"preferred\"\n\nALL \u003d (REQUIRED, LEGACY, PREFERRED)\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/fields.py#L716-L722\n\nBaseNovaEnum is defeined as\n\nclass BaseNovaEnum(Enum):\n    def __init__(self, **kwargs):\nsuper(BaseNovaEnum, self).__init__(valid_values\u003dself.__class__.ALL)\n\nhttps://github.com/openstack/nova/blob/56eac06561bc843dcf7497e8b7ac3027f62544c1/nova/objects/fields.py#L716-L722\n\nand the ovs enum filed is defied here\nhttps://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py#L311-L343\n\nso at runtime this is technically a python string but it is validated as a instance of the filed type.\ni could change this to string as it is a sting but then we loses the context that the sting must be a valid value of the enum defined by nova.objects.fields.PCINUMAAffinityPolicy","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f12d89cb9f2072388a8473f16b15a4124e8b0aec","unresolved":false,"context_lines":[{"line_number":2065,"context_line":"                    spec\u003d[spec],"},{"line_number":2066,"context_line":"                    request_id\u003duuidutils.generate_uuid(),"},{"line_number":2067,"context_line":"                    requester_id\u003drequester_id)"},{"line_number":2068,"context_line":"                if affinity_policy:"},{"line_number":2069,"context_line":"                    request.numa_policy \u003d affinity_policy"},{"line_number":2070,"context_line":"                pci_requests.requests.append(request)"},{"line_number":2071,"context_line":"                pci_request_id \u003d request.request_id"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_76e3b5d9","line":2068,"updated":"2019-12-02 15:29:13.000000000","message":"request.numa_policy is nullable so we can skip the conditional as it might set None to numa_policy but that is an allowed value.","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"}],"nova/notifications/objects/image.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":106,"context_line":"class ImageMetaPropsPayload(base.NotificationPayloadBase):"},{"line_number":107,"context_line":"    # Version 1.0: Initial version"},{"line_number":108,"context_line":"    # Version 1.1: Added \u0027gop\u0027, \u0027virtio\u0027 and  \u0027none\u0027 to hw_video_model field"},{"line_number":109,"context_line":"    # Version 1.2: Added hw_pci_numa_affinity_policy field"},{"line_number":110,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_7fa47db8","line":109,"updated":"2019-12-09 22:59:45.000000000","message":"nts: figure out why we need this in the notification payload","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd2d5cb31ab8d0bd120180f7c1136573de29df52","unresolved":false,"context_lines":[{"line_number":106,"context_line":"class ImageMetaPropsPayload(base.NotificationPayloadBase):"},{"line_number":107,"context_line":"    # Version 1.0: Initial version"},{"line_number":108,"context_line":"    # Version 1.1: Added \u0027gop\u0027, \u0027virtio\u0027 and  \u0027none\u0027 to hw_video_model field"},{"line_number":109,"context_line":"    # Version 1.2: Added hw_pci_numa_affinity_policy field"},{"line_number":110,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_54870a5c","line":109,"in_reply_to":"3fa7e38b_0d418e63","updated":"2019-12-11 11:44:37.000000000","message":"ok but i am the only person that has bumput this class version since it was created. i add the changes in v1.1\nalso and i know a lot of image properties have been since it was introduced that are not reflected in this.\n\nso it sound like i should keep the notification changes but i also know that there are fields missing so at present it is not a 1:1 mapping. we can file a bug for that and adress it but if we do we need to start revieing for this on every addtion of an image property.\n\nthe real quesiton however is not should the notificatin payload contain the image properties. its why we dont just use the existing image nova.objects.ImageMetaProps object so we only have 1 object to update.\n\nhttps://github.com/openstack/nova/blob/4c8f3990c61948af21aa580646122340eb3873a0/nova/objects/image_meta.py#L151\n\nim not sure the schema dict provides any useful infomation and the fields dict should be identical to the nova object version.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":106,"context_line":"class ImageMetaPropsPayload(base.NotificationPayloadBase):"},{"line_number":107,"context_line":"    # Version 1.0: Initial version"},{"line_number":108,"context_line":"    # Version 1.1: Added \u0027gop\u0027, \u0027virtio\u0027 and  \u0027none\u0027 to hw_video_model field"},{"line_number":109,"context_line":"    # Version 1.2: Added hw_pci_numa_affinity_policy field"},{"line_number":110,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_86456346","line":109,"in_reply_to":"3fa7e38b_7fa47db8","updated":"2019-12-10 22:48:56.000000000","message":"im going to adress the other issue and we can come back to this.\n\nin theory i think we are ment to keep these in a 1:1 mapping as we discussed on irc so im going to keep this for now but if gibi is around tommorw lets get his input.\n\nlongterm we might want to consider if there is a better way to do this.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c1d98642d8a4f30e4f345da82f064614512454e6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"class ImageMetaPropsPayload(base.NotificationPayloadBase):"},{"line_number":107,"context_line":"    # Version 1.0: Initial version"},{"line_number":108,"context_line":"    # Version 1.1: Added \u0027gop\u0027, \u0027virtio\u0027 and  \u0027none\u0027 to hw_video_model field"},{"line_number":109,"context_line":"    # Version 1.2: Added hw_pci_numa_affinity_policy field"},{"line_number":110,"context_line":"    VERSION \u003d \u00271.2\u0027"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    SCHEMA \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_0d418e63","line":109,"in_reply_to":"3fa7e38b_86456346","updated":"2019-12-11 07:55:06.000000000","message":"From the beginning of the existence of this Payload class it tried to be in 1:1 relationship with ImageMeta. I tried to challenge that from the data duplication perspective [1] but it seems that ImageMeta known by nova can diverge from the image props known by glance. So it is not a clear data duplication any more. E.g. this data is the copy of the image props from glance at the time the instance was created while those image props might be changed in glance after the instance creation. \n\nSo based on the history of this I would add the new ImageMeta fields to this payload.\n\n[1] https://review.opendev.org/#/c/482629/10/nova/notifications/objects/request_spec.py@41","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"}],"nova/objects/image_meta.py":[{"author":{"_account_id":16881,"name":"Munish","email":"mm6021@att.com","username":"munish.mehan@att.com"},"change_message_id":"05845fa00d6e9456db56d50b113f239ac12d0d44","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            primitive.pop(\u0027hw_pci_numa_affinity_policy\u0027, None)"},{"line_number":186,"context_line":"        if target_version \u003c (1, 24):"},{"line_number":187,"context_line":"            primitive.pop(\u0027hw_mem_encryption\u0027, None)"},{"line_number":188,"context_line":"        if target_version \u003c (1, 23):"},{"line_number":189,"context_line":"            primitive.pop(\u0027hw_pmu\u0027, None)"},{"line_number":190,"context_line":"        # NOTE(sean-k-mooney): unlike other nova object we version this object"},{"line_number":191,"context_line":"        # when composed object are updated."}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_62620fdc","line":188,"updated":"2019-11-12 19:14:58.000000000","message":"It would be better if we could have this commit for pci numa affinity and keep the encryption and monitor flags in a different commit.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73820b0f6d8fd8572c178812a281672a3e2551bb","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            primitive.pop(\u0027hw_pci_numa_affinity_policy\u0027, None)"},{"line_number":186,"context_line":"        if target_version \u003c (1, 24):"},{"line_number":187,"context_line":"            primitive.pop(\u0027hw_mem_encryption\u0027, None)"},{"line_number":188,"context_line":"        if target_version \u003c (1, 23):"},{"line_number":189,"context_line":"            primitive.pop(\u0027hw_pmu\u0027, None)"},{"line_number":190,"context_line":"        # NOTE(sean-k-mooney): unlike other nova object we version this object"},{"line_number":191,"context_line":"        # when composed object are updated."}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d852cb68","line":188,"in_reply_to":"3fa7e38b_62620fdc","updated":"2019-11-13 11:30:06.000000000","message":"they are in a different commit.\n\nare you comparing against base when you do a diff\ni had to rebase between 3 and 4 because the sev memory encyption was added in a different commit that had merged in the interim which caused a merge conflict.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"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\u0027 field"},{"line_number":176,"context_line":"    # Version 1.24: Added \u0027hw_mem_encryption\u0027 field"},{"line_number":177,"context_line":"    # Version 1.25: Added \u0027 hw_pci_numa_affinity_policy\u0027 field"},{"line_number":178,"context_line":"    VERSION \u003d \u00271.25\u0027"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_fcc24d02","line":177,"range":{"start_line":177,"start_character":27,"end_line":177,"end_character":28},"updated":"2019-11-28 08:49:52.000000000","message":"Remove the leading space?","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"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\u0027 field"},{"line_number":176,"context_line":"    # Version 1.24: Added \u0027hw_mem_encryption\u0027 field"},{"line_number":177,"context_line":"    # Version 1.25: Added \u0027 hw_pci_numa_affinity_policy\u0027 field"},{"line_number":178,"context_line":"    VERSION \u003d \u00271.25\u0027"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_d4c87676","line":177,"range":{"start_line":177,"start_character":27,"end_line":177,"end_character":28},"in_reply_to":"3fa7e38b_0fbb6a0f","updated":"2019-11-29 16:52:10.000000000","message":"Done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"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\u0027 field"},{"line_number":176,"context_line":"    # Version 1.24: Added \u0027hw_mem_encryption\u0027 field"},{"line_number":177,"context_line":"    # Version 1.25: Added \u0027 hw_pci_numa_affinity_policy\u0027 field"},{"line_number":178,"context_line":"    VERSION \u003d \u00271.25\u0027"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_0fbb6a0f","line":177,"range":{"start_line":177,"start_character":27,"end_line":177,"end_character":28},"in_reply_to":"3fa7e38b_fcc24d02","updated":"2019-11-28 14:21:28.000000000","message":"ya i will good spot","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"}],"nova/pci/request.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9d38678f6e400243b4c18ef2dbb6d3fba352e881","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    return aliases"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def _translate_alias_to_requests(alias_spec, affinity_policy\u003dNone):"},{"line_number":152,"context_line":"    \"\"\"Generate complete pci requests from pci aliases in extra_spec.\"\"\""},{"line_number":153,"context_line":"    pci_aliases \u003d _get_alias_from_config()"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_986689bb","line":151,"updated":"2019-08-28 12:09:03.000000000","message":"Probably just ignorance on my part, but thy is this needed?","commit_id":"2a5f50f809463acb0ea7203c9dc085a4fdb515cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc65d3b1d66c2205e0eb78601fb4d9677184ae87","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    return aliases"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def _translate_alias_to_requests(alias_spec, affinity_policy\u003dNone):"},{"line_number":152,"context_line":"    \"\"\"Generate complete pci requests from pci aliases in extra_spec.\"\"\""},{"line_number":153,"context_line":"    pci_aliases \u003d _get_alias_from_config()"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_d8c40144","line":151,"in_reply_to":"7faddb67_382c3549","updated":"2019-08-28 12:24:33.000000000","message":"yep this if for flavour based pass though via  the alias.\n\nso we prefert teh extra spec value if set and fall back to the alais value if not.\n\nso by defualt no change in behavior and you can opt in to the new behavior by updating the flavor/image so there is not upgrade impact","commit_id":"2a5f50f809463acb0ea7203c9dc085a4fdb515cb"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"1653c2311f39e5aa2b640a815b2c651ca3e6d08b","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    return aliases"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"def _translate_alias_to_requests(alias_spec, affinity_policy\u003dNone):"},{"line_number":152,"context_line":"    \"\"\"Generate complete pci requests from pci aliases in extra_spec.\"\"\""},{"line_number":153,"context_line":"    pci_aliases \u003d _get_alias_from_config()"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_382c3549","line":151,"in_reply_to":"7faddb67_986689bb","updated":"2019-08-28 12:11:36.000000000","message":"Ah, misunderstood this to be the alias in the config file. Yeah, this makes sense.","commit_id":"2a5f50f809463acb0ea7203c9dc085a4fdb515cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10270084e6f8ffd200ab062b58f804f1b071e760","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        count \u003d int(count)"},{"line_number":162,"context_line":"        numa_policy, spec \u003d pci_aliases[name]"},{"line_number":163,"context_line":"        policy \u003d affinity_policy or numa_policy"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # NOTE(gibi): InstancePCIRequest has a requester_id field that could"},{"line_number":166,"context_line":"        # be filled with the flavor.flavorid but currently there is no special"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_8b82f5a4","line":163,"range":{"start_line":163,"start_character":8,"end_line":163,"end_character":47},"updated":"2019-11-07 17:41:21.000000000","message":"this is where the fallback happens for pci requests created by flavour alias.\n\nif both affinity_policy and numa_policy are None then policy will be none and we will implicitly fallback to legacy.\n\nso we use the affinity_policy if set, then fallback to the policy in the alias, then fall back to none which results in the legacy policy.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f12d89cb9f2072388a8473f16b15a4124e8b0aec","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            raise exception.PciRequestAliasNotDefined(alias\u003dname)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        count \u003d int(count)"},{"line_number":162,"context_line":"        numa_policy, spec \u003d pci_aliases[name]"},{"line_number":163,"context_line":"        policy \u003d affinity_policy or numa_policy"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # NOTE(gibi): InstancePCIRequest has a requester_id field that could"},{"line_number":166,"context_line":"        # be filled with the flavor.flavorid but currently there is no special"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_d61389b6","line":163,"range":{"start_line":162,"start_character":1,"end_line":163,"end_character":47},"updated":"2019-12-02 15:29:13.000000000","message":"Does this mean that the numa policy from the config is overwritten by the config from the flavor or image?\n\nIf yes then we might have a problem. Overwriting config done my the admin in the config is OK from the flavor as flavor is also adminy thing. But allowing to overwrite the admin config from a user define image meta seems wrong.\n\nI think the spec specified the expected behavior[1] as it is implemented above so my comment just to confirm that we are not overlooked this change in the spec review.\n\n[1] https://review.opendev.org/#/c/683174/7/specs/ussuri/approved/vm-scoped-sriov-numa-affinity.rst@70","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f0d8fb34291918ee122533e5e37febe39fc5916","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            raise exception.PciRequestAliasNotDefined(alias\u003dname)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        count \u003d int(count)"},{"line_number":162,"context_line":"        numa_policy, spec \u003d pci_aliases[name]"},{"line_number":163,"context_line":"        policy \u003d affinity_policy or numa_policy"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        # NOTE(gibi): InstancePCIRequest has a requester_id field that could"},{"line_number":166,"context_line":"        # be filled with the flavor.flavorid but currently there is no special"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_1dc13c4f","line":163,"range":{"start_line":162,"start_character":1,"end_line":163,"end_character":47},"in_reply_to":"3fa7e38b_d61389b6","updated":"2019-12-02 19:45:12.000000000","message":"yes this is intentional, im not sure if others over looked it but i thought about this at some length.\n\nthe original spec only as in back in queens only allowed flavour and image extra properties but during the impemetion that was replaced with the alias approach.\n\nthe config done by the admin in the alias will only apply to alias based passthough and never applied to neutron sriov port since it does not use an alias.\n\nso if we did not make the flavor and image override the config we would be in a situation where if you requested a VF via an alias it would have one behaviour but if we requested the same vf via a neutron port the image and flavour would have precedence.\n\ni strongly considered deprecating support for expressing a numa_ploicy in the alais entirely but felt that was not required if the flavor or image took precedence.\n\nif we think its a problem then i think we should revisit removing support for the config option and only support the flavour and image approach.","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        does not report NUMA information."},{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # we set the numa_affinity policy to preferred allow the PCI device"},{"line_number":505,"context_line":"        # to be selected form any numa node."},{"line_number":506,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":507,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_dc9f5100","line":504,"range":{"start_line":504,"start_character":55,"end_line":504,"end_character":61},"updated":"2019-11-28 08:49:52.000000000","message":"s/allow/to allow/","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        does not report NUMA information."},{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # we set the numa_affinity policy to preferred allow the PCI device"},{"line_number":505,"context_line":"        # to be selected form any numa node."},{"line_number":506,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":507,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_74c5025c","line":504,"range":{"start_line":504,"start_character":55,"end_line":504,"end_character":61},"in_reply_to":"3fa7e38b_2fb8a60f","updated":"2019-11-29 16:52:10.000000000","message":"Done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        does not report NUMA information."},{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # we set the numa_affinity policy to preferred allow the PCI device"},{"line_number":505,"context_line":"        # to be selected form any numa node."},{"line_number":506,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":507,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_2fb8a60f","line":504,"range":{"start_line":504,"start_character":55,"end_line":504,"end_character":61},"in_reply_to":"3fa7e38b_dc9f5100","updated":"2019-11-28 14:21:28.000000000","message":"yep ill do that","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # we set the numa_affinity policy to preferred allow the PCI device"},{"line_number":505,"context_line":"        # to be selected form any numa node."},{"line_number":506,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":507,"context_line":"            {"},{"line_number":508,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_9c81d9a3","line":505,"range":{"start_line":505,"start_character":25,"end_line":505,"end_character":29},"updated":"2019-11-28 08:49:52.000000000","message":"s/form/from/","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # we set the numa_affinity policy to preferred allow the PCI device"},{"line_number":505,"context_line":"        # to be selected form any numa node."},{"line_number":506,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":507,"context_line":"            {"},{"line_number":508,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_ef37eeae","line":505,"range":{"start_line":505,"start_character":25,"end_line":505,"end_character":29},"in_reply_to":"3fa7e38b_9c81d9a3","updated":"2019-11-28 14:21:28.000000000","message":"yes","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        \"\"\""},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        # we set the numa_affinity policy to preferred allow the PCI device"},{"line_number":505,"context_line":"        # to be selected form any numa node."},{"line_number":506,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":507,"context_line":"            {"},{"line_number":508,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_94c2fe52","line":505,"range":{"start_line":505,"start_character":25,"end_line":505,"end_character":29},"in_reply_to":"3fa7e38b_ef37eeae","updated":"2019-11-29 16:52:10.000000000","message":"Done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                                         kB_mem\u003d15740000)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        # the required policy requires a PCI device to both report a NUMA"},{"line_number":527,"context_line":"        # and for the gust cpus and ram to be affinitized to the same"},{"line_number":528,"context_line":"        # NUMA node so we create 1 pci device in the first NUMA node."},{"line_number":529,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d0)"},{"line_number":530,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_1e4b96b1","line":527,"range":{"start_line":527,"start_character":22,"end_line":527,"end_character":26},"updated":"2019-11-28 17:03:53.000000000","message":"guest","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                                         kB_mem\u003d15740000)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        # the required policy requires a PCI device to both report a NUMA"},{"line_number":527,"context_line":"        # and for the gust cpus and ram to be affinitized to the same"},{"line_number":528,"context_line":"        # NUMA node so we create 1 pci device in the first NUMA node."},{"line_number":529,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d0)"},{"line_number":530,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_349d4a6c","line":527,"range":{"start_line":527,"start_character":22,"end_line":527,"end_character":26},"in_reply_to":"3fa7e38b_1e4b96b1","updated":"2019-11-29 16:52:10.000000000","message":"Done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":531,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        # boot one instance with no PCI device to \"fill up\" NUMA node 0"},{"line_number":534,"context_line":"        extra_spec \u003d {"},{"line_number":535,"context_line":"            \u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":536,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_5ed6eec6","line":533,"range":{"start_line":533,"start_character":0,"end_line":533,"end_character":71},"updated":"2019-11-28 17:03:53.000000000","message":"Thought we shouldn\u0027t rely on this? ^_^ Seriously though, couldn\u0027t we just disable \"host\" cores 0-3 and avoid the need to do this?","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"360da14e1d6a9a4b9d4b6057b3a700a950fc4d7c","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":531,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        # boot one instance with no PCI device to \"fill up\" NUMA node 0"},{"line_number":534,"context_line":"        extra_spec \u003d {"},{"line_number":535,"context_line":"            \u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":536,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_99524012","line":533,"range":{"start_line":533,"start_character":0,"end_line":533,"end_character":71},"in_reply_to":"3fa7e38b_5ed6eec6","updated":"2019-11-28 17:18:06.000000000","message":"ill try and use the cpu_dedicate_set to achive that not sure if we have enough of the code functional in the test to make that work but we will see.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":530,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":531,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        # boot one instance with no PCI device to \"fill up\" NUMA node 0"},{"line_number":534,"context_line":"        extra_spec \u003d {"},{"line_number":535,"context_line":"            \u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":536,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_54a246af","line":533,"range":{"start_line":533,"start_character":0,"end_line":533,"end_character":71},"in_reply_to":"3fa7e38b_99524012","updated":"2019-11-29 16:52:10.000000000","message":"Done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"315fa2ceb960ad3881d49256091a5871902e8e0e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    # The order of the filters is required to make the assertion that the"},{"line_number":32,"context_line":"    # PciPassthroughFilter is invoked in _run_build_test pass in the"},{"line_number":33,"context_line":"    # numa affinity tests otherwise the NUMATopologyFilter will eliminate"},{"line_number":34,"context_line":"    # all hosts before we execute the PciPassthroughFilter."},{"line_number":35,"context_line":"    ADDITIONAL_FILTERS \u003d [\u0027PciPassthroughFilter\u0027, \u0027NUMATopologyFilter\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c4c44544","line":34,"updated":"2019-11-29 17:01:44.000000000","message":"I wonder if we should override this in the class where it\u0027s actually used and include this note there? I know it\u0027s duplication but at least the comment would live near the test","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"315fa2ceb960ad3881d49256091a5871902e8e0e","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            \u0027hw:pci_numa_affinity_policy\u0027: \"required\""},{"line_number":536,"context_line":"        }"},{"line_number":537,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":538,"context_line":"        # the second will fail as the only cpus and memory available is on"},{"line_number":539,"context_line":"        # NUMA node 1 and the only PCI device available is on NUMA node 0"},{"line_number":540,"context_line":"        self._run_build_test(flavor_id, end_status\u003d\u0027ERROR\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_64d6b1f5","line":538,"range":{"start_line":538,"start_character":10,"end_line":538,"end_character":20},"updated":"2019-11-29 17:01:44.000000000","message":"s/the second/this/ (I assume this was a reference to your previous use of a filler VM","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2562c6b82d41ba0327695cc8faf52c70c7ee9cad","unresolved":false,"context_lines":[{"line_number":535,"context_line":"            \u0027hw:pci_numa_affinity_policy\u0027: \"required\""},{"line_number":536,"context_line":"        }"},{"line_number":537,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":538,"context_line":"        # the second will fail as the only cpus and memory available is on"},{"line_number":539,"context_line":"        # NUMA node 1 and the only PCI device available is on NUMA node 0"},{"line_number":540,"context_line":"        self._run_build_test(flavor_id, end_status\u003d\u0027ERROR\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_644471b9","line":538,"range":{"start_line":538,"start_character":10,"end_line":538,"end_character":20},"in_reply_to":"3fa7e38b_64d6b1f5","updated":"2019-11-29 17:12:15.000000000","message":"ya it was","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f12d89cb9f2072388a8473f16b15a4124e8b0aec","unresolved":false,"context_lines":[{"line_number":494,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_required(self):"},{"line_number":495,"context_line":"        \"\"\"Validate behavior of \u0027required\u0027 PCI NUMA affinity policy."},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        This test ensures that it *is* possible to allocate CPU and memory"},{"line_number":498,"context_line":"        resources from one NUMA node and a PCI device from another *if*"},{"line_number":499,"context_line":"        the SR-IOV NUMA affinity policy is set to legacy and the device"},{"line_number":500,"context_line":"        does not report NUMA information."},{"line_number":501,"context_line":"        \"\"\""},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        # we set the numa_affinity policy to preferred to allow the PCI device"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_96b75186","line":500,"range":{"start_line":497,"start_character":1,"end_line":500,"end_character":41},"updated":"2019-12-02 15:29:13.000000000","message":"This seems like a copy paste from above.","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f0d8fb34291918ee122533e5e37febe39fc5916","unresolved":false,"context_lines":[{"line_number":494,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_required(self):"},{"line_number":495,"context_line":"        \"\"\"Validate behavior of \u0027required\u0027 PCI NUMA affinity policy."},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        This test ensures that it *is* possible to allocate CPU and memory"},{"line_number":498,"context_line":"        resources from one NUMA node and a PCI device from another *if*"},{"line_number":499,"context_line":"        the SR-IOV NUMA affinity policy is set to legacy and the device"},{"line_number":500,"context_line":"        does not report NUMA information."},{"line_number":501,"context_line":"        \"\"\""},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        # we set the numa_affinity policy to preferred to allow the PCI device"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_b87276af","line":500,"range":{"start_line":497,"start_character":1,"end_line":500,"end_character":41},"in_reply_to":"3fa7e38b_96b75186","updated":"2019-12-02 19:45:12.000000000","message":"a right ill fix this.","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3da4972035b4138234f21507731cbaa928c98ad","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        super(_PCIServersTestBase, self).setUp()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        self.compute_started \u003d False"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        # Mock the \u0027PciPassthroughFilter\u0027 filter, as most tests need to inspect"},{"line_number":43,"context_line":"        # this"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_6a6e2865","line":40,"range":{"start_line":40,"start_character":4,"end_line":40,"end_character":36},"updated":"2019-12-05 23:16:28.000000000","message":"so comptue service should not be started","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3da4972035b4138234f21507731cbaa928c98ad","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _run_build_test(self, flavor_id, end_status\u003d\u0027ACTIVE\u0027):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if not self.compute_started:"},{"line_number":55,"context_line":"            self.compute \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027test_compute0\u0027)"},{"line_number":56,"context_line":"            self.compute_started \u003d True"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # Create server"},{"line_number":59,"context_line":"        good_server \u003d self._build_server(flavor_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_ca92bc4a","line":56,"range":{"start_line":54,"start_character":6,"end_line":56,"end_character":39},"updated":"2019-12-05 23:16:28.000000000","message":"and they will be started on the first invocation or _run_build_test","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb231383749b9360a84ef918bbb539ee2d8d71a2","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            \u0027product_id\u0027: fakelibvirt.PCI_PROD_ID,"},{"line_number":414,"context_line":"        }"},{"line_number":415,"context_line":"    )]"},{"line_number":416,"context_line":"    # we set the numa_affinity policy to required to ensure it by default"},{"line_number":417,"context_line":"    # strict affinity between pci devices and the guest cpu and memory"},{"line_number":418,"context_line":"    # will be enforced"},{"line_number":419,"context_line":"    PCI_ALIAS \u003d [jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_bd6b13ee","line":416,"range":{"start_line":416,"start_character":59,"end_line":416,"end_character":73},"updated":"2019-12-05 18:05:45.000000000","message":"drop this or move to the end of the sentence. It reads weird with it here","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3da4972035b4138234f21507731cbaa928c98ad","unresolved":false,"context_lines":[{"line_number":413,"context_line":"            \u0027product_id\u0027: fakelibvirt.PCI_PROD_ID,"},{"line_number":414,"context_line":"        }"},{"line_number":415,"context_line":"    )]"},{"line_number":416,"context_line":"    # we set the numa_affinity policy to required to ensure it by default"},{"line_number":417,"context_line":"    # strict affinity between pci devices and the guest cpu and memory"},{"line_number":418,"context_line":"    # will be enforced"},{"line_number":419,"context_line":"    PCI_ALIAS \u003d [jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_4f533e3b","line":416,"range":{"start_line":416,"start_character":59,"end_line":416,"end_character":73},"in_reply_to":"3fa7e38b_bd6b13ee","updated":"2019-12-05 23:16:28.000000000","message":"ya i think this was a copy paste error or i later reworte part of this i just removed it.","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb231383749b9360a84ef918bbb539ee2d8d71a2","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        # we set the numa_affinity policy to preferred to allow the PCI device"},{"line_number":503,"context_line":"        # to be selected from any numa node."},{"line_number":504,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":505,"context_line":"            {"},{"line_number":506,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"},{"line_number":507,"context_line":"                \u0027product_id\u0027: fakelibvirt.PCI_PROD_ID,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_bbf9d882","line":504,"updated":"2019-12-05 18:05:45.000000000","message":"Any chance you could move this to a separate class so we\u0027re not overriding our override like this? I\u0027m actually surprised this even works since by time we get here the nova-compute \"service\" has already started. I guess it\u0027s because most of the fields remain unchanged, so the PCI manager doesn\u0027t have to rescan devices, and we extract the configuration directly each time rather than using a cached value. Just because it does work though doesn\u0027t mean it\u0027s correct\n\nSee \u0027PCIServersWithRequiredNUMATest\u0027 above with it\u0027s use of \u0027END_STATUS\u0027","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3da4972035b4138234f21507731cbaa928c98ad","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        # we set the numa_affinity policy to preferred to allow the PCI device"},{"line_number":503,"context_line":"        # to be selected from any numa node."},{"line_number":504,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":505,"context_line":"            {"},{"line_number":506,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"},{"line_number":507,"context_line":"                \u0027product_id\u0027: fakelibvirt.PCI_PROD_ID,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_8f0b7629","line":504,"in_reply_to":"3fa7e38b_bbf9d882","updated":"2019-12-05 23:16:28.000000000","message":"oh we do we not override _setup_compute_service  in the inheritance tree.\n\ni wrote this after i wrote around the same time i was writhing the other functional test in test_numa_server.py where the compute service is not start until you call _run_build_test\n\nalthough we declare that the compute service is not started in the setup function of _PCIServersTestBase on line 40\n\nhttps://review.opendev.org/#/c/674072/12/nova/tests/functional/libvirt/test_pci_sriov_servers.py@40\n\nand we have code in _run_build_test to start the compute service.\n\nhttps://review.opendev.org/#/c/674072/12/nova/tests/functional/libvirt/test_pci_sriov_servers.py@54\n\nso when i wrote this i specificity intended the service to no be start at this point based on that info. if its started at this point im pretty sure all the other tests that inherit form  _PCIServersTestBase are wrong too as they would have two compute service running not 1 which would invalidate some of there assumptions.\n\nif i set \"self.compute_started \u003d True\" these test fail so im pretty sure this is correct.","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb231383749b9360a84ef918bbb539ee2d8d71a2","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":519,"context_line":"                                         cpu_cores\u003d2, cpu_threads\u003d2,"},{"line_number":520,"context_line":"                                         kB_mem\u003d15740000)"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # the required policy requires a PCI device to both report a NUMA"},{"line_number":523,"context_line":"        # and for the guest cpus and ram to be affinitized to the same"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_3bede8b7","line":520,"updated":"2019-12-05 18:05:45.000000000","message":"unrelated: man, we need to standardize this somewhere. These exact lines have been duplicated all over the shop","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f3da4972035b4138234f21507731cbaa928c98ad","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":519,"context_line":"                                         cpu_cores\u003d2, cpu_threads\u003d2,"},{"line_number":520,"context_line":"                                         kB_mem\u003d15740000)"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        # the required policy requires a PCI device to both report a NUMA"},{"line_number":523,"context_line":"        # and for the guest cpus and ram to be affinitized to the same"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_ea5538fa","line":520,"in_reply_to":"3fa7e38b_3bede8b7","updated":"2019-12-05 23:16:28.000000000","message":"well ya we copy paste it and tweek it slighly in each test to give the toplogy we want. we should also stop calling it cpu_nodes as that is very confusing term for numa_nodes.","commit_id":"6172db10f42cfa935e5ec476094e8c4d429400eb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"class PCIServersWithSRIOVAffinityPoliciesTest(_PCIServersTestBase):"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    # The order of the filters is required to make the assertion that the"},{"line_number":405,"context_line":"    # PciPassthroughFilter is invoked in _run_build_test pass in the"},{"line_number":406,"context_line":"    # numa affinity tests otherwise the NUMATopologyFilter will eliminate"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_df7b31f1","line":403,"updated":"2019-12-09 22:59:45.000000000","message":"I feel like there are several permutations not accounted for here. Probably some of them are redundant/implicit and some are covered by previous tests (which I didn\u0027t look for).\n\nVarious combinations of flavor/image specifying the policies are probably unnecessary; I\u0027m convinced by the unit tests that the desired value comes out the other end.\n\nThere are presumably pre-existing tests where the flavor/image prop is unset and we need to fall back to whatever\u0027s set in the alias (or the default).\n\nSo below I noted a few of the others I think may not be covered. Possibly not exhaustive.\n\nIn addition to those, all of the same scenarios where the policy isn\u0027t set in the alias. (I guess we probably don\u0027t need *all* of them; but there should be at least one or two.)","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"class PCIServersWithSRIOVAffinityPoliciesTest(_PCIServersTestBase):"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    # The order of the filters is required to make the assertion that the"},{"line_number":405,"context_line":"    # PciPassthroughFilter is invoked in _run_build_test pass in the"},{"line_number":406,"context_line":"    # numa affinity tests otherwise the NUMATopologyFilter will eliminate"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_067f3317","line":403,"in_reply_to":"3fa7e38b_df7b31f1","updated":"2019-12-10 22:48:56.000000000","message":"after reading the comment below i kind of feel like copy and pasting the tests with all the minor tweaks is not thr right way to go so i might need to think about refactoring these a little maybe using the ddt decorator or something similar.\ni dont really mind working on that but woudl it be ok to do in a follow up patch.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":437,"context_line":"                                         cpu_cores\u003d2, cpu_threads\u003d2,"},{"line_number":438,"context_line":"                                         kB_mem\u003d15740000)"},{"line_number":439,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d0)"},{"line_number":440,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":441,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":442,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_7f555d51","line":439,"range":{"start_line":439,"start_character":71,"end_line":439,"end_character":72},"updated":"2019-12-09 22:59:45.000000000","message":"Other permutations: if a) the device is on numa_node 1, and b) the -1 thing (\"no information\") -- both cases should still succeed, right?","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":437,"context_line":"                                         cpu_cores\u003d2, cpu_threads\u003d2,"},{"line_number":438,"context_line":"                                         kB_mem\u003d15740000)"},{"line_number":439,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d0)"},{"line_number":440,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":441,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":442,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_865ec310","line":439,"range":{"start_line":439,"start_character":71,"end_line":439,"end_character":72},"in_reply_to":"3fa7e38b_7f555d51","updated":"2019-12-10 22:48:56.000000000","message":"i tried to test only cases that would not work if the poicy was broken.  e.g. if we used the required or legacy polciy in this case it would fail.\n\ni can test all 3 but i might need to refactor these tests.\ni kind of want to do that in a follow up patch but ill see what i can do.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        # boot one with a PCI device, which should succeed thanks to the"},{"line_number":455,"context_line":"        # use of the PCI policy"},{"line_number":456,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":457,"context_line":"        self._run_build_test(flavor_id)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_legacy(self):"},{"line_number":460,"context_line":"        \"\"\"Validate behavior of \u0027legacy\u0027 PCI NUMA affinity policy."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_ff486db4","line":457,"range":{"start_line":457,"start_character":7,"end_line":457,"end_character":39},"updated":"2019-12-09 22:59:45.000000000","message":"Does it not make sense to confirm that the device landed on the expected numa node? Or is that not in the purview of the test?","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        # boot one with a PCI device, which should succeed thanks to the"},{"line_number":455,"context_line":"        # use of the PCI policy"},{"line_number":456,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":457,"context_line":"        self._run_build_test(flavor_id)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_legacy(self):"},{"line_number":460,"context_line":"        \"\"\"Validate behavior of \u0027legacy\u0027 PCI NUMA affinity policy."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_f670610b","line":457,"range":{"start_line":457,"start_character":7,"end_line":457,"end_character":39},"in_reply_to":"3fa7e38b_c696fb94","updated":"2019-12-12 20:28:38.000000000","message":"\u003e i did consider it out of scope because there was not easy way to\n \u003e determine that without inspecting the db or xml.\n\nAck, that\u0027s kinda what I figured, good enough for me.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        # boot one with a PCI device, which should succeed thanks to the"},{"line_number":455,"context_line":"        # use of the PCI policy"},{"line_number":456,"context_line":"        flavor_id \u003d self._create_flavor(extra_spec\u003dextra_spec)"},{"line_number":457,"context_line":"        self._run_build_test(flavor_id)"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_legacy(self):"},{"line_number":460,"context_line":"        \"\"\"Validate behavior of \u0027legacy\u0027 PCI NUMA affinity policy."}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_c696fb94","line":457,"range":{"start_line":457,"start_character":7,"end_line":457,"end_character":39},"in_reply_to":"3fa7e38b_ff486db4","updated":"2019-12-10 22:48:56.000000000","message":"i did consider it out of scope because there was not easy way to determine that without inspecting the db or xml.\ni was going to say maybe we coudl use the new server toplogy api\n\nhttps://docs.openstack.org/api-ref/compute/?expanded\u003dshow-server-topology-detail#show-server-topology\n\nhowever while that does allow me to inspect some of the host mapping to validate things like cpu pinning it does not contain the pci device info.\n\ni might be able to create a spy/wrapper mock for the xml generation or the device claim. failing that i might be able to get the info from the db. i assume this is using sqlite ill think about it but im not sure if its needed.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        # affinity or if no NUMA info is available so we set the NUMA"},{"line_number":473,"context_line":"        # node for this device to -1 which is the sentinel value use by the"},{"line_number":474,"context_line":"        # Linux kernel for a device with no NUMA affinity."},{"line_number":475,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d-1)"},{"line_number":476,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":477,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":478,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_bfc4350f","line":475,"range":{"start_line":475,"start_character":71,"end_line":475,"end_character":73},"updated":"2019-12-09 22:59:45.000000000","message":"Other permutations\n- if this is 0 (we fail, right?)\n- if this is 1 (succeed?)","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        # affinity or if no NUMA info is available so we set the NUMA"},{"line_number":473,"context_line":"        # node for this device to -1 which is the sentinel value use by the"},{"line_number":474,"context_line":"        # Linux kernel for a device with no NUMA affinity."},{"line_number":475,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d-1)"},{"line_number":476,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":477,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":478,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_462d2b44","line":475,"range":{"start_line":475,"start_character":71,"end_line":475,"end_character":73},"in_reply_to":"3fa7e38b_bfc4350f","updated":"2019-12-10 22:48:56.000000000","message":"0 would fail becasue there is numa info but we cant select cpus and a pci device on the same numa node.\n\n1 would succeed \n\nand -1 test the unique thing that makes legacy difffernt then required. it allows numa affinity to be ignored if and only if there is no numa info for the device.\n\ni can add the two other cases","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":499,"context_line":"        \"\"\""},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        # we set the numa_affinity policy to preferred to allow the PCI device"},{"line_number":502,"context_line":"        # to be selected from any numa node."},{"line_number":503,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":504,"context_line":"            {"},{"line_number":505,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_5fd501b6","line":502,"updated":"2019-12-09 22:59:45.000000000","message":"...so we can prove the flavor overrides it","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":499,"context_line":"        \"\"\""},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        # we set the numa_affinity policy to preferred to allow the PCI device"},{"line_number":502,"context_line":"        # to be selected from any numa node."},{"line_number":503,"context_line":"        alias \u003d [jsonutils.dumps("},{"line_number":504,"context_line":"            {"},{"line_number":505,"context_line":"                \u0027vendor_id\u0027: fakelibvirt.PCI_VEND_ID,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_0623b359","line":502,"in_reply_to":"3fa7e38b_5fd501b6","updated":"2019-12-10 22:48:56.000000000","message":"ya ill add this","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                \u0027product_id\u0027: fakelibvirt.PCI_PROD_ID,"},{"line_number":507,"context_line":"                \u0027name\u0027: self.ALIAS_NAME,"},{"line_number":508,"context_line":"                \u0027device_type\u0027: fields.PciDeviceType.STANDARD,"},{"line_number":509,"context_line":"                \u0027numa_policy\u0027: fields.PCINUMAAffinityPolicy.PREFERRED,"},{"line_number":510,"context_line":"            }"},{"line_number":511,"context_line":"        )]"},{"line_number":512,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_3fd845ee","line":509,"range":{"start_line":509,"start_character":60,"end_line":509,"end_character":69},"updated":"2019-12-09 22:59:45.000000000","message":"✔","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        # the required policy requires a PCI device to both report a NUMA"},{"line_number":522,"context_line":"        # and for the guest cpus and ram to be affinitized to the same"},{"line_number":523,"context_line":"        # NUMA node so we create 1 pci device in the first NUMA node."},{"line_number":524,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d0)"},{"line_number":525,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":526,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_ffddcddd","line":524,"range":{"start_line":524,"start_character":71,"end_line":524,"end_character":72},"updated":"2019-12-09 22:59:45.000000000","message":"permutations for -1 (which should also fail) and 1 (which should succeed)","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        # the required policy requires a PCI device to both report a NUMA"},{"line_number":522,"context_line":"        # and for the guest cpus and ram to be affinitized to the same"},{"line_number":523,"context_line":"        # NUMA node so we create 1 pci device in the first NUMA node."},{"line_number":524,"context_line":"        pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pci\u003d1, numa_node\u003d0)"},{"line_number":525,"context_line":"        fake_connection \u003d self._get_connection(host_info, pci_info)"},{"line_number":526,"context_line":"        self.mock_conn.return_value \u003d fake_connection"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_06d8934f","line":524,"range":{"start_line":524,"start_character":71,"end_line":524,"end_character":72},"in_reply_to":"3fa7e38b_ffddcddd","updated":"2019-12-10 22:48:56.000000000","message":"yes -1 is a good test case as it assert the differentce between required and legacy so i should definetly add that.\n\nand 1 also makes sense as i should check the succcess case.\nthis is implcitly tested in other way but i might as well test it here also.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":401,"context_line":"    end_status \u003d \u0027ERROR\u0027"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"@ddt.ddt"},{"line_number":405,"context_line":"class PCIServersWithSRIOVAffinityPoliciesTest(_PCIServersTestBase):"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    # The order of the filters is required to make the assertion that the"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_7656b160","line":404,"range":{"start_line":404,"start_character":5,"end_line":404,"end_character":8},"updated":"2019-12-12 20:28:38.000000000","message":"Nice, we went from three test cases to nine with a net reduction in LOC ++\n\nStill missing one of the combinations I mentioned: where the alias has *no* policy stated.\n\nI\u0027m fine if that comes later though.","commit_id":"8c7224172641c6194582ca4cf7ce11e907df50aa"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    # NOTE(sean-k-mooney): i could just apply the ddt decorators"},{"line_number":432,"context_line":"    # to this function for the most part but i have chosen to"},{"line_number":433,"context_line":"    # keep one top level function per policy to make documenting"},{"line_number":434,"context_line":"    # the test cases simpler."},{"line_number":435,"context_line":"    def _test_policy(self, pci_numa_node, status, policy):"},{"line_number":436,"context_line":"        host_info \u003d fakelibvirt.HostInfo(cpu_nodes\u003d2, cpu_sockets\u003d1,"},{"line_number":437,"context_line":"                                         cpu_cores\u003d2, cpu_threads\u003d2,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_d6a205ad","line":434,"range":{"start_line":433,"start_character":6,"end_line":434,"end_character":29},"updated":"2019-12-12 20:28:38.000000000","message":"That is one significant limitation of ddt: figuring out which permutation is which when you fail. It\u0027s possible to influence the name of the generated test cases, but as of right now that\u0027s more trouble than it\u0027s worth -- see [1] for example.\n\n[1] https://review.opendev.org/#/c/692205/","commit_id":"8c7224172641c6194582ca4cf7ce11e907df50aa"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        self._test_policy(pci_numa_node, status, \u0027preferred\u0027)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    @ddt.unpack  # unpacks each sub-tuple e.g. *(pci_numa_node, status)"},{"line_number":471,"context_line":"    # the legacy policy allow a PCI device to be used if it has NUMA"},{"line_number":472,"context_line":"    # affinity or if no NUMA info is available so we set the NUMA"},{"line_number":473,"context_line":"    # node for this device to -1 which is the sentinel value use by the"},{"line_number":474,"context_line":"    # Linux kernel for a device with no NUMA affinity."}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_96fd6d6e","line":471,"range":{"start_line":471,"start_character":24,"end_line":471,"end_character":29},"updated":"2019-12-12 20:28:38.000000000","message":"allows","commit_id":"8c7224172641c6194582ca4cf7ce11e907df50aa"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    @ddt.unpack  # unpacks each sub-tuple e.g. *(pci_numa_node, status)"},{"line_number":471,"context_line":"    # the legacy policy allow a PCI device to be used if it has NUMA"},{"line_number":472,"context_line":"    # affinity or if no NUMA info is available so we set the NUMA"},{"line_number":473,"context_line":"    # node for this device to -1 which is the sentinel value use by the"},{"line_number":474,"context_line":"    # Linux kernel for a device with no NUMA affinity."},{"line_number":475,"context_line":"    @ddt.data((-1, \u0027ACTIVE\u0027), (0, \u0027ERROR\u0027), (1, \u0027ACTIVE\u0027))"},{"line_number":476,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_legacy("},{"line_number":477,"context_line":"            self, pci_numa_node, status):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_163e5d25","line":474,"range":{"start_line":472,"start_character":47,"end_line":474,"end_character":54},"updated":"2019-12-12 20:28:38.000000000","message":"This is referring to the -1 in the first dataset, right? And that applies to all of your test methods? So, kind of a weird place for this comment.\n\nPerhaps it makes sense to roll a description of the -1/0/1 into a class docstring?","commit_id":"8c7224172641c6194582ca4cf7ce11e907df50aa"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":485,"context_line":"        self._test_policy(pci_numa_node, status, \u0027legacy\u0027)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    @ddt.unpack  # unpacks each sub-tuple e.g. *(pci_numa_node, status)"},{"line_number":488,"context_line":"    # The required policy requires a PCI device to both report a NUMA"},{"line_number":489,"context_line":"    # and for the guest cpus and ram to be affinitized to the same"},{"line_number":490,"context_line":"    # NUMA node so we create 1 pci device in the first NUMA node."},{"line_number":491,"context_line":"    @ddt.data((-1, \u0027ERROR\u0027), (0, \u0027ERROR\u0027), (1, \u0027ACTIVE\u0027))"},{"line_number":492,"context_line":"    def test_create_server_with_sriov_numa_affinity_policy_required("},{"line_number":493,"context_line":"            self, pci_numa_node, status):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_960b2d7a","line":490,"range":{"start_line":488,"start_character":0,"end_line":490,"end_character":65},"updated":"2019-12-12 20:28:38.000000000","message":"and, while I get why you\u0027re putting these comments here (near the ddt data), it might feel less weird as a method docstring?","commit_id":"8c7224172641c6194582ca4cf7ce11e907df50aa"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":1361,"context_line":"                    \u0027nova_object.name\u0027: \u0027ImageMetaPropsPayload\u0027,"},{"line_number":1362,"context_line":"                    \u0027nova_object.namespace\u0027: \u0027nova\u0027,"},{"line_number":1363,"context_line":"                    \u0027nova_object.version\u0027: u\u00271.2\u0027"},{"line_number":1364,"context_line":"                                           u\u0027\u0027},"},{"line_number":1365,"context_line":"                \u0027image.size\u0027: 58145823,"},{"line_number":1366,"context_line":"                \u0027image.tags\u0027: [],"},{"line_number":1367,"context_line":"                \u0027scheduler_hints\u0027: {\u0027_nova_check_type\u0027: [\u0027rebuild\u0027]},"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_cbcd4db8","line":1364,"range":{"start_line":1364,"start_character":43,"end_line":1364,"end_character":46},"updated":"2019-11-07 16:53:38.000000000","message":"?","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10270084e6f8ffd200ab062b58f804f1b071e760","unresolved":false,"context_lines":[{"line_number":1361,"context_line":"                    \u0027nova_object.name\u0027: \u0027ImageMetaPropsPayload\u0027,"},{"line_number":1362,"context_line":"                    \u0027nova_object.namespace\u0027: \u0027nova\u0027,"},{"line_number":1363,"context_line":"                    \u0027nova_object.version\u0027: u\u00271.2\u0027"},{"line_number":1364,"context_line":"                                           u\u0027\u0027},"},{"line_number":1365,"context_line":"                \u0027image.size\u0027: 58145823,"},{"line_number":1366,"context_line":"                \u0027image.tags\u0027: [],"},{"line_number":1367,"context_line":"                \u0027scheduler_hints\u0027: {\u0027_nova_check_type\u0027: [\u0027rebuild\u0027]},"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_6b73f9e9","line":1364,"range":{"start_line":1364,"start_character":43,"end_line":1364,"end_character":46},"in_reply_to":"3fa7e38b_cbcd4db8","updated":"2019-11-07 17:41:21.000000000","message":"ya that is just a typo\nwhat actually happening is python it concatenating the Unicode string \u00271.2\u0027 with the empty string.\n\ni probably hit return by accident and my editor inserted this","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"}],"nova/tests/unit/pci/test_request.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc65d3b1d66c2205e0eb78601fb4d9677184ae87","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        flavor \u003d {\u0027extra_specs\u0027: {\"pci_passthrough:alias\":"},{"line_number":447,"context_line":"                                  \"QuicAssist:3, IntelNIC: 1\"}}"},{"line_number":448,"context_line":"        policy \u003d fields.PCINUMAAffinityPolicy.PREFERRED"},{"line_number":449,"context_line":"        request.get_pci_requests_from_flavor(flavor, affinity_policy\u003dpolicy)"},{"line_number":450,"context_line":"        mock_translate.assert_called_with(mock.ANY, affinity_policy\u003dpolicy)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_ecd39fd2","line":449,"range":{"start_line":449,"start_character":7,"end_line":449,"end_character":76},"updated":"2019-08-28 12:24:33.000000000","message":"mock_translate should have a valid return value before calling this e.g. mock_translate.return_value \u003d []","commit_id":"2a5f50f809463acb0ea7203c9dc085a4fdb515cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10270084e6f8ffd200ab062b58f804f1b071e760","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from nova.tests.unit.api.openstack import fakes"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_fake_alias1 \u003d \"\"\"{"},{"line_number":33,"context_line":"               \"name\": \"QuicAssist\","},{"line_number":34,"context_line":"               \"capability_type\": \"pci\","},{"line_number":35,"context_line":"               \"product_id\": \"4443\","},{"line_number":36,"context_line":"               \"vendor_id\": \"8086\","},{"line_number":37,"context_line":"               \"device_type\": \"type-PCI\","},{"line_number":38,"context_line":"               \"numa_policy\": \"legacy\""},{"line_number":39,"context_line":"               }\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"_fake_alias11 \u003d \"\"\"{"},{"line_number":42,"context_line":"               \"name\": \"QuicAssist\","}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_2b56612c","line":39,"range":{"start_line":32,"start_character":0,"end_line":39,"end_character":19},"updated":"2019-11-07 17:41:21.000000000","message":"this alias has the affinity policy expcitly set","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10270084e6f8ffd200ab062b58f804f1b071e760","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        self.assertRaises(exception.PciInvalidAlias,"},{"line_number":177,"context_line":"            request._get_alias_from_config)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_invalid_numa_policy(self):"},{"line_number":180,"context_line":"        self.flags(alias\u003d["},{"line_number":181,"context_line":"            \"\"\"{"},{"line_number":182,"context_line":"                \"name\": \"xxx\","},{"line_number":183,"context_line":"                \"capability_type\": \"pci\","},{"line_number":184,"context_line":"                \"product_id\": \"1111\","},{"line_number":185,"context_line":"                \"vendor_id\": \"8086\","},{"line_number":186,"context_line":"                \"device_type\": \"NIC\","},{"line_number":187,"context_line":"                \"numa_policy\": \"derp\""},{"line_number":188,"context_line":"                }\"\"\"],"},{"line_number":189,"context_line":"                   group\u003d\u0027pci\u0027)"},{"line_number":190,"context_line":"        self.assertRaises(exception.PciInvalidAlias,"},{"line_number":191,"context_line":"            request._get_alias_from_config)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_conflicting_device_type(self):"},{"line_number":194,"context_line":"        \"\"\"Check behavior when device_type conflicts occur.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0e013305","line":191,"range":{"start_line":179,"start_character":4,"end_line":191,"end_character":43},"updated":"2019-11-07 17:41:21.000000000","message":"we have a test for invalide policies here and conflictin policne on line 215 but it looks like we dont have a test for valid polices set in the alias so i could add one for that.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"10270084e6f8ffd200ab062b58f804f1b071e760","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                          \"QuicAssistX : 3\")"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    def test_alias_2_request_affintiy_policy(self):"},{"line_number":273,"context_line":"        self.flags(alias\u003d[_fake_alias1, _fake_alias3], group\u003d\u0027pci\u0027)"},{"line_number":274,"context_line":"        policy \u003d fields.PCINUMAAffinityPolicy.PREFERRED"},{"line_number":275,"context_line":"        expect_request \u003d ["},{"line_number":276,"context_line":"            {\u0027count\u0027: 3,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_2b2bc195","line":273,"range":{"start_line":273,"start_character":26,"end_line":273,"end_character":38},"updated":"2019-11-07 17:41:21.000000000","message":"so here since this is expclcitly requesting legacy via the alias and we are setting prefreed in the flavor we are asserting that the flavor extra spec has preference over the alias.","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        self.assertRaises(exception.PciInvalidAlias,"},{"line_number":191,"context_line":"            request._get_alias_from_config)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_valid_numa_policy(self):"},{"line_number":194,"context_line":"        for policy in fields.PCINUMAAffinityPolicy.ALL:"},{"line_number":195,"context_line":"            self.flags(alias\u003d["},{"line_number":196,"context_line":"                \"\"\"{"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_33ba16e1","line":193,"range":{"start_line":193,"start_character":8,"end_line":193,"end_character":30},"updated":"2019-11-13 20:40:08.000000000","message":"This tests _get_alias_from_config() with all possible policies - this is fine, but not strictly related to this patch, as that code was already in place. Were we missing this test coverage before? Should we maybe stick this in a separate tiny patch before the main one?","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"55c4feb0765ded7db4ce4c022c41fcc8747052f1","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        self.assertRaises(exception.PciInvalidAlias,"},{"line_number":191,"context_line":"            request._get_alias_from_config)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_valid_numa_policy(self):"},{"line_number":194,"context_line":"        for policy in fields.PCINUMAAffinityPolicy.ALL:"},{"line_number":195,"context_line":"            self.flags(alias\u003d["},{"line_number":196,"context_line":"                \"\"\"{"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_9fb18b47","line":193,"range":{"start_line":193,"start_character":8,"end_line":193,"end_character":30},"in_reply_to":"3fa7e38b_33ba16e1","updated":"2019-11-14 01:47:25.000000000","message":"this was a test that erric pointed out was missing\ni guess i could do that if i pull this out i want to fix 1 other thing i noticed.\n\neverywhere we do \"device_type\": \"NIC\", in this file is wrong\n\nit is not one of the 3 valid values so the\ntest_invalid_numa_policy function above would also raise an exception  if change derp to a valid policy.\n\ni was going to add another patch for the \"NIC\" fix when i add the func tests.","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":313,"context_line":"             }, ]"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        requests \u003d request._translate_alias_to_requests("},{"line_number":316,"context_line":"            \"QuicAssist : 3, IntelNIC: 1\", affinity_policy\u003dpolicy)"},{"line_number":317,"context_line":"        self.assertEqual(set([p[\u0027count\u0027] for p in requests]), set([1, 3]))"},{"line_number":318,"context_line":"        self._verify_result(expect_request, requests)"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_139a7a61","line":316,"range":{"start_line":316,"start_character":13,"end_line":316,"end_character":23},"updated":"2019-11-13 20:40:08.000000000","message":"I know it doesn\u0027t actually matter it tests, but this should be QuickAssist","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"55c4feb0765ded7db4ce4c022c41fcc8747052f1","unresolved":false,"context_lines":[{"line_number":313,"context_line":"             }, ]"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        requests \u003d request._translate_alias_to_requests("},{"line_number":316,"context_line":"            \"QuicAssist : 3, IntelNIC: 1\", affinity_policy\u003dpolicy)"},{"line_number":317,"context_line":"        self.assertEqual(set([p[\u0027count\u0027] for p in requests]), set([1, 3]))"},{"line_number":318,"context_line":"        self._verify_result(expect_request, requests)"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_df906399","line":316,"range":{"start_line":316,"start_character":13,"end_line":316,"end_character":23},"in_reply_to":"3fa7e38b_139a7a61","updated":"2019-11-14 01:47:25.000000000","message":"ya it should be ill fix that here and then elsewere in the \"NIC\" fix patch","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cfa38543313f2e120c80e3e14fae530221816a98","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                \"capability_type\": \"pci\","},{"line_number":216,"context_line":"                \"product_id\": \"1111\","},{"line_number":217,"context_line":"                \"vendor_id\": \"8086\","},{"line_number":218,"context_line":"                \"device_type\": \"NIC\""},{"line_number":219,"context_line":"                }\"\"\","},{"line_number":220,"context_line":"            \"\"\"{"},{"line_number":221,"context_line":"                \"name\": \"xxx\","}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_1a37424e","line":218,"range":{"start_line":218,"start_character":16,"end_line":218,"end_character":36},"updated":"2019-11-26 21:50:45.000000000","message":"this is the invalid data i referred to \n\ndevice_type\u003dNIC is not valid so tests that\nare not checking for that should use valid data.\n\nso ill try to fix this up in a follow up patch and ill address the misspelling of QuickAssist as part of that.","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9eeb374529271048a4dc0774fafae4edcd114283","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                          request._translate_alias_to_requests,"},{"line_number":287,"context_line":"                          \"QuicAssistX : 3\")"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_alias_2_request_affintiy_policy(self):"},{"line_number":290,"context_line":"        # _fake_alias1 requests the legacy policy and _fake_alias3"},{"line_number":291,"context_line":"        # has no numa_policy set so it will default to legacy."},{"line_number":292,"context_line":"        self.flags(alias\u003d[_fake_alias1, _fake_alias3], group\u003d\u0027pci\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_21e219d6","line":289,"range":{"start_line":289,"start_character":29,"end_line":289,"end_character":37},"updated":"2019-11-26 18:27:11.000000000","message":"affinity","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9eeb374529271048a4dc0774fafae4edcd114283","unresolved":false,"context_lines":[{"line_number":299,"context_line":"             \u0027spec\u0027: [{\u0027vendor_id\u0027: \u00278086\u0027, \u0027product_id\u0027: \u00274443\u0027,"},{"line_number":300,"context_line":"                       \u0027dev_type\u0027: \u0027type-PCI\u0027,"},{"line_number":301,"context_line":"                       \u0027capability_type\u0027: \u0027pci\u0027}],"},{"line_number":302,"context_line":"             \u0027alias_name\u0027: \u0027QuicAssist\u0027,"},{"line_number":303,"context_line":"             \u0027numa_policy\u0027: policy"},{"line_number":304,"context_line":"             },"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_a1d5a9e8","line":302,"range":{"start_line":302,"start_character":28,"end_line":302,"end_character":38},"updated":"2019-11-26 18:27:11.000000000","message":"I know you didn\u0027t do this, but a follow-up to fix this after would be appreciated :)","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"cfa38543313f2e120c80e3e14fae530221816a98","unresolved":false,"context_lines":[{"line_number":299,"context_line":"             \u0027spec\u0027: [{\u0027vendor_id\u0027: \u00278086\u0027, \u0027product_id\u0027: \u00274443\u0027,"},{"line_number":300,"context_line":"                       \u0027dev_type\u0027: \u0027type-PCI\u0027,"},{"line_number":301,"context_line":"                       \u0027capability_type\u0027: \u0027pci\u0027}],"},{"line_number":302,"context_line":"             \u0027alias_name\u0027: \u0027QuicAssist\u0027,"},{"line_number":303,"context_line":"             \u0027numa_policy\u0027: policy"},{"line_number":304,"context_line":"             },"},{"line_number":305,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_5a837acc","line":302,"range":{"start_line":302,"start_character":28,"end_line":302,"end_character":38},"in_reply_to":"3fa7e38b_a1d5a9e8","updated":"2019-11-26 21:50:45.000000000","message":"there is a non 0 chance that i could have years ago but yes.\ni noticed some other issues when writing this too that i need to address mainly the use of invalid data in some of the tests which i noted an example of above. if the ordering of some of the internal check in the code was change some test that should still pass would fail as new exception would be raised.","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":4211,"context_line":"            self.assertEqual("},{"line_number":4212,"context_line":"                policy, hw.get_pci_numa_policy(flavor, image_meta))"},{"line_number":4213,"context_line":""},{"line_number":4214,"context_line":"    def test_get_pci_numa_policy_conflit(self):"},{"line_number":4215,"context_line":"        extra_specs \u003d {"},{"line_number":4216,"context_line":"            \"hw:pci_numa_affinity_policy\":"},{"line_number":4217,"context_line":"                fields.PCINUMAAffinityPolicy.LEGACY,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0b3925a2","line":4214,"range":{"start_line":4214,"start_character":33,"end_line":4214,"end_character":40},"updated":"2019-11-07 16:53:38.000000000","message":"conflict","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":4188,"context_line":""},{"line_number":4189,"context_line":"class PciNumaAffinityPolicyTest(test.NoDBTestCase):"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def test_get_pci_numa_policy_flavor(self):"},{"line_number":4192,"context_line":""},{"line_number":4193,"context_line":"        for policy in fields.PCINUMAAffinityPolicy.ALL:"},{"line_number":4194,"context_line":"            extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_73aace71","line":4191,"range":{"start_line":4191,"start_character":8,"end_line":4191,"end_character":39},"updated":"2019-11-13 20:40:08.000000000","message":"✓ policy from flavor alone","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":4200,"context_line":"            self.assertEqual("},{"line_number":4201,"context_line":"                policy, hw.get_pci_numa_policy(flavor, image_meta))"},{"line_number":4202,"context_line":""},{"line_number":4203,"context_line":"    def test_get_pci_numa_policy_image(self):"},{"line_number":4204,"context_line":"        for policy in fields.PCINUMAAffinityPolicy.ALL:"},{"line_number":4205,"context_line":"            props \u003d {"},{"line_number":4206,"context_line":"                \"hw_pci_numa_affinity_policy\": policy,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_93a50aa2","line":4203,"range":{"start_line":4203,"start_character":8,"end_line":4203,"end_character":38},"updated":"2019-11-13 20:40:08.000000000","message":"✓ policy from image alone","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":4211,"context_line":"            self.assertEqual("},{"line_number":4212,"context_line":"                policy, hw.get_pci_numa_policy(flavor, image_meta))"},{"line_number":4213,"context_line":""},{"line_number":4214,"context_line":"    def test_get_pci_numa_policy_conflict(self):"},{"line_number":4215,"context_line":"        extra_specs \u003d {"},{"line_number":4216,"context_line":"            \"hw:pci_numa_affinity_policy\":"},{"line_number":4217,"context_line":"                fields.PCINUMAAffinityPolicy.LEGACY,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_53b9d2c8","line":4214,"range":{"start_line":4214,"start_character":8,"end_line":4214,"end_character":41},"updated":"2019-11-13 20:40:08.000000000","message":"✓ policy conflict between image and flavor","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":4227,"context_line":"            exception.ImagePCINUMAPolicyForbidden, hw.get_pci_numa_policy,"},{"line_number":4228,"context_line":"            flavor, image_meta)"},{"line_number":4229,"context_line":""},{"line_number":4230,"context_line":"    def test_get_pci_numa_policy_invalid(self):"},{"line_number":4231,"context_line":"        # NOTE(sean-k-mooney): we dont need to test the image metadata"},{"line_number":4232,"context_line":"        # with invalid values as the ovo field will reject the invalid"},{"line_number":4233,"context_line":"        # enum value on assignment."}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_f3af9e7a","line":4230,"range":{"start_line":4230,"start_character":8,"end_line":4230,"end_character":40},"updated":"2019-11-13 20:40:08.000000000","message":"✓ and finally an invalid policy","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3fa7e38b_93be6aac","line":4243,"updated":"2019-11-13 20:40:08.000000000","message":"nit: we could add an invalid policy test, but from the image property (we only have flavor now)","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"55c4feb0765ded7db4ce4c022c41fcc8747052f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3fa7e38b_fff0bfff","line":4243,"in_reply_to":"3fa7e38b_93be6aac","updated":"2019-11-14 01:47:25.000000000","message":"instead of haveing a sperate test for each ill do both in this test","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":4186,"context_line":"                )"},{"line_number":4187,"context_line":""},{"line_number":4188,"context_line":""},{"line_number":4189,"context_line":"class PciNumaAffinityPolicyTest(test.NoDBTestCase):"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def test_get_pci_numa_policy_flavor(self):"},{"line_number":4192,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_9ee546a7","line":4189,"range":{"start_line":4189,"start_character":6,"end_line":4189,"end_character":13},"updated":"2019-11-28 17:03:53.000000000","message":"PCINUMA","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":4186,"context_line":"                )"},{"line_number":4187,"context_line":""},{"line_number":4188,"context_line":""},{"line_number":4189,"context_line":"class PciNumaAffinityPolicyTest(test.NoDBTestCase):"},{"line_number":4190,"context_line":""},{"line_number":4191,"context_line":"    def test_get_pci_numa_policy_flavor(self):"},{"line_number":4192,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_3486aa18","line":4189,"range":{"start_line":4189,"start_character":6,"end_line":4189,"end_character":13},"in_reply_to":"3fa7e38b_9ee546a7","updated":"2019-11-29 16:52:10.000000000","message":"its less easy to read but done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":4237,"context_line":"        self.assertRaises("},{"line_number":4238,"context_line":"            exception.InvalidPCINUMAAffinity, hw.get_pci_numa_policy,"},{"line_number":4239,"context_line":"            flavor, image_meta)"},{"line_number":4240,"context_line":"        # FIXME(sean-k-mooney): something in nova prevents using"},{"line_number":4241,"context_line":"        # self.assertRaises as a context manager requiring it to take a"},{"line_number":4242,"context_line":"        # callable. I suspect this is related to legacy code form before"},{"line_number":4243,"context_line":"        # we moved to py27 that can be removed. As a workaround use"},{"line_number":4244,"context_line":"        # self.assertRaisesRegex and pass \u0027.*\u0027 to match anything"},{"line_number":4245,"context_line":"        with self.assertRaisesRegex(ValueError, \u0027.*\u0027):"},{"line_number":4246,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_fe955ae4","line":4245,"range":{"start_line":4240,"start_character":0,"end_line":4245,"end_character":54},"updated":"2019-11-28 17:03:53.000000000","message":"You\u0027re looking for\n\n  with testtools.ExpectedException(...):\n\nI tried to fix assertRaises a year or two back and failed miserably :(","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":4237,"context_line":"        self.assertRaises("},{"line_number":4238,"context_line":"            exception.InvalidPCINUMAAffinity, hw.get_pci_numa_policy,"},{"line_number":4239,"context_line":"            flavor, image_meta)"},{"line_number":4240,"context_line":"        # FIXME(sean-k-mooney): something in nova prevents using"},{"line_number":4241,"context_line":"        # self.assertRaises as a context manager requiring it to take a"},{"line_number":4242,"context_line":"        # callable. I suspect this is related to legacy code form before"},{"line_number":4243,"context_line":"        # we moved to py27 that can be removed. As a workaround use"},{"line_number":4244,"context_line":"        # self.assertRaisesRegex and pass \u0027.*\u0027 to match anything"},{"line_number":4245,"context_line":"        with self.assertRaisesRegex(ValueError, \u0027.*\u0027):"},{"line_number":4246,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_b49e1a53","line":4245,"range":{"start_line":4240,"start_character":0,"end_line":4245,"end_character":54},"in_reply_to":"3fa7e38b_7e1dea75","updated":"2019-11-29 16:52:10.000000000","message":"ya that works we shoudl proably still fix whatever is preventing assertRaises form working.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"360da14e1d6a9a4b9d4b6057b3a700a950fc4d7c","unresolved":false,"context_lines":[{"line_number":4237,"context_line":"        self.assertRaises("},{"line_number":4238,"context_line":"            exception.InvalidPCINUMAAffinity, hw.get_pci_numa_policy,"},{"line_number":4239,"context_line":"            flavor, image_meta)"},{"line_number":4240,"context_line":"        # FIXME(sean-k-mooney): something in nova prevents using"},{"line_number":4241,"context_line":"        # self.assertRaises as a context manager requiring it to take a"},{"line_number":4242,"context_line":"        # callable. I suspect this is related to legacy code form before"},{"line_number":4243,"context_line":"        # we moved to py27 that can be removed. As a workaround use"},{"line_number":4244,"context_line":"        # self.assertRaisesRegex and pass \u0027.*\u0027 to match anything"},{"line_number":4245,"context_line":"        with self.assertRaisesRegex(ValueError, \u0027.*\u0027):"},{"line_number":4246,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_7e1dea75","line":4245,"range":{"start_line":4240,"start_character":0,"end_line":4245,"end_character":54},"in_reply_to":"3fa7e38b_fe955ae4","updated":"2019-11-28 17:18:06.000000000","message":"it works fine on other projects in openstack. i think it could be related to our use of the mock lib but that is just a guess i ll use that for now but we should be able to use assertRaises. there is defintly somting in nova that is blocking it.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"315fa2ceb960ad3881d49256091a5871902e8e0e","unresolved":false,"context_lines":[{"line_number":4224,"context_line":"                fields.PCINUMAAffinityPolicy.REQUIRED,"},{"line_number":4225,"context_line":"        }"},{"line_number":4226,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"properties\": props})"},{"line_number":4227,"context_line":"        self.assertRaises("},{"line_number":4228,"context_line":"            exception.ImagePCINUMAPolicyForbidden,"},{"line_number":4229,"context_line":"            hw.get_pci_numa_policy_constraint, flavor, image_meta)"},{"line_number":4230,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e4fb8178","line":4227,"updated":"2019-11-29 17:01:44.000000000","message":"Weird that you didn\u0027t use \u0027with testtools.ExpectedException\u0027 here too","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2562c6b82d41ba0327695cc8faf52c70c7ee9cad","unresolved":false,"context_lines":[{"line_number":4224,"context_line":"                fields.PCINUMAAffinityPolicy.REQUIRED,"},{"line_number":4225,"context_line":"        }"},{"line_number":4226,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({\"properties\": props})"},{"line_number":4227,"context_line":"        self.assertRaises("},{"line_number":4228,"context_line":"            exception.ImagePCINUMAPolicyForbidden,"},{"line_number":4229,"context_line":"            hw.get_pci_numa_policy_constraint, flavor, image_meta)"},{"line_number":4230,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_84ddedde","line":4227,"in_reply_to":"3fa7e38b_e4fb8178","updated":"2019-11-29 17:12:15.000000000","message":"its not needed in this case\nits only using it as a context manager that is broken.\nthat is why i think novas use of the mock lib is the issue.\non python3 we shoudl be able to drop that going forward.","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2562c6b82d41ba0327695cc8faf52c70c7ee9cad","unresolved":false,"context_lines":[{"line_number":4239,"context_line":"            exception.InvalidPCINUMAAffinity,"},{"line_number":4240,"context_line":"            hw.get_pci_numa_policy_constraint, flavor, image_meta)"},{"line_number":4241,"context_line":"        with testtools.ExpectedException(ValueError):"},{"line_number":4242,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_64f9d14c","line":4242,"range":{"start_line":4242,"start_character":12,"end_line":4242,"end_character":70},"updated":"2019-11-29 17:12:15.000000000","message":"i have to use the context manager here as it the assignment itself that fail and unless i want to use a lamda or some other hack to make the statement a fucntion call i need to use a context manager in this case to cache the exception in a standard way that will also detect if it is not raised.","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9803259821ed25581d95babd8de47f8372526403","unresolved":false,"context_lines":[{"line_number":4239,"context_line":"            exception.InvalidPCINUMAAffinity,"},{"line_number":4240,"context_line":"            hw.get_pci_numa_policy_constraint, flavor, image_meta)"},{"line_number":4241,"context_line":"        with testtools.ExpectedException(ValueError):"},{"line_number":4242,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_44bff55f","line":4242,"range":{"start_line":4242,"start_character":12,"end_line":4242,"end_character":70},"in_reply_to":"3fa7e38b_64f9d14c","updated":"2019-11-29 17:14:23.000000000","message":"ah, gotcha. Guess you could have called setattr but this is nicer","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":4239,"context_line":"            exception.InvalidPCINUMAAffinity,"},{"line_number":4240,"context_line":"            hw.get_pci_numa_policy_constraint, flavor, image_meta)"},{"line_number":4241,"context_line":"        with testtools.ExpectedException(ValueError):"},{"line_number":4242,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_9fe5b9dd","line":4242,"updated":"2019-12-09 22:59:45.000000000","message":"There\u0027s no test for when both flavor and image props are set to the same value.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3eb9c96c59dea565c69dad3dae92131da4b67ffe","unresolved":false,"context_lines":[{"line_number":4239,"context_line":"            exception.InvalidPCINUMAAffinity,"},{"line_number":4240,"context_line":"            hw.get_pci_numa_policy_constraint, flavor, image_meta)"},{"line_number":4241,"context_line":"        with testtools.ExpectedException(ValueError):"},{"line_number":4242,"context_line":"            image_meta.properties.hw_pci_numa_affinity_policy \u003d \"fake\""}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_c67cbb21","line":4242,"in_reply_to":"3fa7e38b_9fe5b9dd","updated":"2019-12-10 22:48:56.000000000","message":"a you are right i am missing the \"no conflict\" test ill add that now.","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5c60d515fd03c9459819b5bd6a24740328acdb15","unresolved":false,"context_lines":[{"line_number":4225,"context_line":"            }"},{"line_number":4226,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({\"properties\": props})"},{"line_number":4227,"context_line":"            self.assertEqual("},{"line_number":4228,"context_line":"                policy, hw.get_pci_numa_policy_constraint(flavor, image_meta))"},{"line_number":4229,"context_line":""},{"line_number":4230,"context_line":"    def test_get_pci_numa_policy_conflict(self):"},{"line_number":4231,"context_line":"        extra_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_16e65d14","line":4228,"updated":"2019-12-12 20:28:38.000000000","message":"✔","commit_id":"8c7224172641c6194582ca4cf7ce11e907df50aa"}],"nova/virt/hardware.py":[{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"    return emu_threads_policy"},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":""},{"line_number":1718,"context_line":"def get_pci_numa_policy(flavor, image_meta):"},{"line_number":1719,"context_line":"    \"\"\"Return pci numa affinity policy or None."},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"        :param flavor: a flavor object to read extra specs from"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_1cde4910","line":1718,"range":{"start_line":1718,"start_character":4,"end_line":1718,"end_character":23},"updated":"2019-11-28 08:49:52.000000000","message":"How about naming this as \u0027get_pci_numa_policy_constraint\u0027 since we already have those kind of names such as \u0027get_cpu_policy_constraint\u0027, \u0027get_cpu_thread_policy_constraint\u0027, and \u0027get_emulator_thread_policy_constraint\u0027.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"    return emu_threads_policy"},{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":""},{"line_number":1718,"context_line":"def get_pci_numa_policy(flavor, image_meta):"},{"line_number":1719,"context_line":"    \"\"\"Return pci numa affinity policy or None."},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"        :param flavor: a flavor object to read extra specs from"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_9e9a2611","line":1718,"range":{"start_line":1718,"start_character":4,"end_line":1718,"end_character":23},"in_reply_to":"3fa7e38b_1cde4910","updated":"2019-11-28 17:03:53.000000000","message":"++","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"817fe7460ea798f931b5ce7cf98f23952a544d51","unresolved":false,"context_lines":[{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":""},{"line_number":1718,"context_line":"def get_pci_numa_policy(flavor, image_meta):"},{"line_number":1719,"context_line":"    \"\"\"Return pci numa affinity policy or None."},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"        :param flavor: a flavor object to read extra specs from"},{"line_number":1722,"context_line":"        :param image_meta: nova.objects.ImageMeta object instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_d7abaa85","line":1719,"range":{"start_line":1719,"start_character":0,"end_line":1719,"end_character":47},"updated":"2019-11-28 08:49:52.000000000","message":"No. Two exceptions are also possible to be generated here. It might be mentioned in the \u0027:raises\u0027 section.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":""},{"line_number":1718,"context_line":"def get_pci_numa_policy(flavor, image_meta):"},{"line_number":1719,"context_line":"    \"\"\"Return pci numa affinity policy or None."},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"        :param flavor: a flavor object to read extra specs from"},{"line_number":1722,"context_line":"        :param image_meta: nova.objects.ImageMeta object instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_5e84aeb2","line":1719,"range":{"start_line":1719,"start_character":0,"end_line":1719,"end_character":47},"in_reply_to":"3fa7e38b_2f4d063b","updated":"2019-11-28 17:03:53.000000000","message":"Yup, add \u0027raises\u0027 please. You might also need to do the same for the caller","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"830a61869374e566f2650314da83c0a388426c7e","unresolved":false,"context_lines":[{"line_number":1716,"context_line":""},{"line_number":1717,"context_line":""},{"line_number":1718,"context_line":"def get_pci_numa_policy(flavor, image_meta):"},{"line_number":1719,"context_line":"    \"\"\"Return pci numa affinity policy or None."},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"        :param flavor: a flavor object to read extra specs from"},{"line_number":1722,"context_line":"        :param image_meta: nova.objects.ImageMeta object instance"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_2f4d063b","line":1719,"range":{"start_line":1719,"start_character":0,"end_line":1719,"end_character":47},"in_reply_to":"3fa7e38b_d7abaa85","updated":"2019-11-28 14:21:28.000000000","message":"this is the short summary line which normaly just explaints the sucess path but yes ill add a raises section for the exceptions.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":1719,"context_line":"    \"\"\"Return pci numa affinity policy or None."},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"        :param flavor: a flavor object to read extra specs from"},{"line_number":1722,"context_line":"        :param image_meta: nova.objects.ImageMeta object instance"},{"line_number":1723,"context_line":"    \"\"\""},{"line_number":1724,"context_line":"    flavor_policy, image_policy \u003d _get_flavor_image_meta("},{"line_number":1725,"context_line":"        \u0027pci_numa_affinity_policy\u0027, flavor, image_meta)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_1e8e36d1","line":1722,"range":{"start_line":1722,"start_character":4,"end_line":1722,"end_character":8},"updated":"2019-11-28 17:03:53.000000000","message":"nit: Drop","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"    flavor_policy, image_policy \u003d _get_flavor_image_meta("},{"line_number":1725,"context_line":"        \u0027pci_numa_affinity_policy\u0027, flavor, image_meta)"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":"    if (flavor_policy is not None and image_policy is not None and"},{"line_number":1728,"context_line":"            flavor_policy !\u003d image_policy):"},{"line_number":1729,"context_line":"        raise exception.ImagePCINUMAPolicyForbidden()"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    policy \u003d flavor_policy or image_policy"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_febeba62","line":1728,"range":{"start_line":1727,"start_character":7,"end_line":1728,"end_character":43},"updated":"2019-11-28 17:03:53.000000000","message":"nit: I know it\u0027s not exactly the same, but for our purposes this\n\n  if flavor_policy and image_policy and flavor_policy !\u003d image_policy:\n\nwould suffice","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"360da14e1d6a9a4b9d4b6057b3a700a950fc4d7c","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"    flavor_policy, image_policy \u003d _get_flavor_image_meta("},{"line_number":1725,"context_line":"        \u0027pci_numa_affinity_policy\u0027, flavor, image_meta)"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":"    if (flavor_policy is not None and image_policy is not None and"},{"line_number":1728,"context_line":"            flavor_policy !\u003d image_policy):"},{"line_number":1729,"context_line":"        raise exception.ImagePCINUMAPolicyForbidden()"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    policy \u003d flavor_policy or image_policy"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_b9229ca2","line":1728,"range":{"start_line":1727,"start_character":7,"end_line":1728,"end_character":43},"in_reply_to":"3fa7e38b_febeba62","updated":"2019-11-28 17:18:06.000000000","message":"yes i think you are right that would be sufficent.\nit would still shortcircuit if its only set in one of the two places.\n\nit might also fit on one line which is a win","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"315fa2ceb960ad3881d49256091a5871902e8e0e","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"    flavor_policy, image_policy \u003d _get_flavor_image_meta("},{"line_number":1727,"context_line":"        \u0027pci_numa_affinity_policy\u0027, flavor, image_meta)"},{"line_number":1728,"context_line":""},{"line_number":1729,"context_line":"    if (flavor_policy and image_policy and flavor_policy !\u003d image_policy):"},{"line_number":1730,"context_line":"        raise exception.ImagePCINUMAPolicyForbidden()"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"    policy \u003d flavor_policy or image_policy"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_0401fd6a","line":1729,"range":{"start_line":1729,"start_character":7,"end_line":1729,"end_character":8},"updated":"2019-11-29 17:01:44.000000000","message":"nit: not needed","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2562c6b82d41ba0327695cc8faf52c70c7ee9cad","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"    flavor_policy, image_policy \u003d _get_flavor_image_meta("},{"line_number":1727,"context_line":"        \u0027pci_numa_affinity_policy\u0027, flavor, image_meta)"},{"line_number":1728,"context_line":""},{"line_number":1729,"context_line":"    if (flavor_policy and image_policy and flavor_policy !\u003d image_policy):"},{"line_number":1730,"context_line":"        raise exception.ImagePCINUMAPolicyForbidden()"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"    policy \u003d flavor_policy or image_policy"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_e49aa111","line":1729,"range":{"start_line":1729,"start_character":7,"end_line":1729,"end_character":8},"in_reply_to":"3fa7e38b_0401fd6a","updated":"2019-11-29 17:12:15.000000000","message":"technically correct. done","commit_id":"c0c9c52531b28aa03c426c06187c634c9f95e195"}],"releasenotes/notes/sriov-numa-affinity-policy-b49858452827c727.yaml":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_199b8264","line":4,"range":{"start_line":4,"start_character":13,"end_line":4,"end_character":17},"updated":"2019-11-13 16:03:41.000000000","message":"NUMA","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_f99f864e","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":12},"updated":"2019-11-13 16:03:41.000000000","message":"PCI","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_d4bdafb1","line":4,"range":{"start_line":4,"start_character":13,"end_line":4,"end_character":17},"in_reply_to":"3fa7e38b_199b8264","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_74dabb1d","line":4,"range":{"start_line":4,"start_character":9,"end_line":4,"end_character":12},"in_reply_to":"3fa7e38b_f99f864e","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_eb5cc9f1","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":8},"updated":"2019-11-07 16:53:38.000000000","message":"consider linking this","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_ab56d1cd","line":6,"range":{"start_line":6,"start_character":48,"end_line":6,"end_character":62},"updated":"2019-11-07 16:53:38.000000000","message":"implementation","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_94ddf714","line":6,"range":{"start_line":6,"start_character":48,"end_line":6,"end_character":62},"in_reply_to":"3fa7e38b_ab56d1cd","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When pci numa affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_34e443e0","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":8},"in_reply_to":"3fa7e38b_eb5cc9f1","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_b9a90e7d","line":8,"range":{"start_line":8,"start_character":31,"end_line":8,"end_character":34},"updated":"2019-11-13 16:03:41.000000000","message":"PCI","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c6dc0449d00c072a56055703801e6cc169839d9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    to be configurable via policy. In Queens the PCI NUMA Policies"},{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_54e77fe4","line":8,"range":{"start_line":8,"start_character":31,"end_line":8,"end_character":34},"in_reply_to":"3fa7e38b_b9a90e7d","updated":"2019-11-13 16:53:10.000000000","message":"Done","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"},{"line_number":12,"context_line":"    and hw_pci_numa_affinity_policy image property."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_39af5e7e","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":55},"updated":"2019-11-13 16:03:41.000000000","message":"link (or does it happen magically)?","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"cf4676aaecb785ad75390e424125c6fe32faa97e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"},{"line_number":12,"context_line":"    and hw_pci_numa_affinity_policy image property."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_79b5d6cf","line":9,"range":{"start_line":9,"start_character":21,"end_line":9,"end_character":28},"updated":"2019-11-13 16:03:41.000000000","message":"use case","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"55c4feb0765ded7db4ce4c022c41fcc8747052f1","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    spec was finally implemented but during the implementaiton"},{"line_number":7,"context_line":"    the Flavor and image properties were removed and subsituted"},{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"},{"line_number":12,"context_line":"    and hw_pci_numa_affinity_policy image property."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_af51c0db","line":9,"range":{"start_line":9,"start_character":48,"end_line":9,"end_character":55},"in_reply_to":"3fa7e38b_39af5e7e","updated":"2019-11-14 01:47:25.000000000","message":"you have to do it manully but i alredy have locally","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    with a policy field on the pci alias. This broke the neutron"},{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"},{"line_number":12,"context_line":"    and hw_pci_numa_affinity_policy image property."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_6b70d974","line":11,"range":{"start_line":11,"start_character":20,"end_line":11,"end_character":47},"updated":"2019-11-07 16:53:38.000000000","message":"``literal`` this","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1693579c872794b4ccc4865f741b2b6969979b95","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    SR-IOV interface usecase as tracked by bug #1795920."},{"line_number":10,"context_line":"    In this release we address that gap and introduce support"},{"line_number":11,"context_line":"    for the missing hw:pci_numa_affinity_policy extra specs"},{"line_number":12,"context_line":"    and hw_pci_numa_affinity_policy image property."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_8b6d159b","line":12,"range":{"start_line":12,"start_character":8,"end_line":12,"end_character":35},"updated":"2019-11-07 16:53:38.000000000","message":"``ditto``","commit_id":"3c78ef8ada93fceec24894f78280a72b8db0411d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    When PCI NUMA affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the `PCI NUMA Policies spec`_"},{"line_number":6,"context_line":"    was finally implemented but during the implementation the Flavor and"},{"line_number":7,"context_line":"    image properties were removed and substitute with a policy field on"},{"line_number":8,"context_line":"    the PCI alias. This broke the neutron SR-IOV interface use case as"},{"line_number":9,"context_line":"    tracked by `bug #1795920`_. In this release we address that gap and"},{"line_number":10,"context_line":"    introduce support for the missing ``hw:pci_numa_affinity_policy``"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_3018cc82","line":7,"range":{"start_line":7,"start_character":38,"end_line":7,"end_character":48},"updated":"2019-11-13 20:40:08.000000000","message":"substituted","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"64936c7c7f18a57a562a327394a7523f0f5c1aa1","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    the PCI alias. This broke the neutron SR-IOV interface use case as"},{"line_number":9,"context_line":"    tracked by `bug #1795920`_. In this release we address that gap and"},{"line_number":10,"context_line":"    introduce support for the missing ``hw:pci_numa_affinity_policy``"},{"line_number":11,"context_line":"    extra specs  and ``hw_pci_numa_affinity_policy`` image property."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`PCI NUMA Policies spec` : https://specs.openstack.org/openstack/nova-specs/specs/queens/implemented/share-pci-between-numa-nodes.html"},{"line_number":14,"context_line":"    .. _`bug #1795920` : https://bugs.launchpad.net/nova/+bug/1795920"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_f011d45e","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":15},"updated":"2019-11-13 20:40:08.000000000","message":"spec","commit_id":"0926b322af926c77f6f4888fb8007af2281e010b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9eeb374529271048a4dc0774fafae4edcd114283","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When PCI NUMA affinity was first added in kilo it was intended"},{"line_number":5,"context_line":"    to be configurable via policy. In Queens the `PCI NUMA Policies spec`_"},{"line_number":6,"context_line":"    was finally implemented but during the implementation the Flavor and"},{"line_number":7,"context_line":"    image properties were removed and substituted with a policy field on"},{"line_number":8,"context_line":"    the PCI alias. This broke the neutron SR-IOV interface use case as"},{"line_number":9,"context_line":"    tracked by `bug #1795920`_. In this release we address that gap and"},{"line_number":10,"context_line":"    introduce support for the missing ``hw:pci_numa_affinity_policy``"},{"line_number":11,"context_line":"    extra spec  and ``hw_pci_numa_affinity_policy`` image property."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_01f27d9c","line":9,"range":{"start_line":4,"start_character":0,"end_line":9,"end_character":31},"updated":"2019-11-26 18:27:11.000000000","message":"I think you can drop all of this since it\u0027s not really relevant to the feature at hand. All you need to say is what you\u0027ve done, which the last sentence does","commit_id":"c4b6b34d9ab1369834c021527e082a1a3342e431"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e728cda4bfdb316da3c8c6f2e75329976c20f478","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    support `PCI NUMA Policies`_ for alias based PCI pass-through."},{"line_number":6,"context_line":"    In this release we addressed `bug #1795920`_ by introducing support"},{"line_number":7,"context_line":"    for the missing ``hw:pci_numa_affinity_policy``"},{"line_number":8,"context_line":"    extra spec  and ``hw_pci_numa_affinity_policy`` image property."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _`PCI NUMA Policies spec` : https://specs.openstack.org/openstack/nova-specs/specs/queens/implemented/share-pci-between-numa-nodes.html"},{"line_number":11,"context_line":"    .. _`bug #1795920` : https://bugs.launchpad.net/nova/+bug/1795920"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_de5e5e50","line":8,"updated":"2019-11-28 17:03:53.000000000","message":"I\u0027m pretty sure we decided this was a feature and not a bug, so I still don\u0027t think this is necessary. How about:\n\n  Added support instance-level PCI NUMA policies using the\n  ``hw:pci_numa_affinity_policy`` flavor extra spec and\n  ``hw_pci_numa_affinity_policy`` image metadata property.\n  These apply to both PCI passthrough and SR-IOV devices,\n  unlike host-level PCI NUMA policies configured via the\n  ``alias`` key of the ``[pci] alias`` config option.\n\n?","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b0d5728661e5c82675cecd2601093b14a62e8ed","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    support `PCI NUMA Policies`_ for alias based PCI pass-through."},{"line_number":6,"context_line":"    In this release we addressed `bug #1795920`_ by introducing support"},{"line_number":7,"context_line":"    for the missing ``hw:pci_numa_affinity_policy``"},{"line_number":8,"context_line":"    extra spec  and ``hw_pci_numa_affinity_policy`` image property."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _`PCI NUMA Policies spec` : https://specs.openstack.org/openstack/nova-specs/specs/queens/implemented/share-pci-between-numa-nodes.html"},{"line_number":11,"context_line":"    .. _`bug #1795920` : https://bugs.launchpad.net/nova/+bug/1795920"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_e47f0115","line":8,"in_reply_to":"3fa7e38b_392eac8c","updated":"2019-11-29 16:52:10.000000000","message":"Done","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"360da14e1d6a9a4b9d4b6057b3a700a950fc4d7c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    support `PCI NUMA Policies`_ for alias based PCI pass-through."},{"line_number":6,"context_line":"    In this release we addressed `bug #1795920`_ by introducing support"},{"line_number":7,"context_line":"    for the missing ``hw:pci_numa_affinity_policy``"},{"line_number":8,"context_line":"    extra spec  and ``hw_pci_numa_affinity_policy`` image property."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _`PCI NUMA Policies spec` : https://specs.openstack.org/openstack/nova-specs/specs/queens/implemented/share-pci-between-numa-nodes.html"},{"line_number":11,"context_line":"    .. _`bug #1795920` : https://bugs.launchpad.net/nova/+bug/1795920"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_392eac8c","line":8,"in_reply_to":"3fa7e38b_de5e5e50","updated":"2019-11-28 17:18:06.000000000","message":"we did it was filed as both which is why i linked to the spec and bug for context.\n\nbut ya im ok with what you suggested too so ill just use that with a minor tweak.","commit_id":"4580a6fa5596244a66f681abf179854c846c7656"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f12d89cb9f2072388a8473f16b15a4124e8b0aec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support instance-level PCI NUMA policies using the"},{"line_number":5,"context_line":"    ``hw:pci_numa_affinity_policy`` flavor extra spec and"},{"line_number":6,"context_line":"    ``hw_pci_numa_affinity_policy`` image metadata property."},{"line_number":7,"context_line":"    These apply to both PCI passthrough and SR-IOV devices,"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3fa7e38b_16ffe102","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":17},"updated":"2019-12-02 15:29:13.000000000","message":"nit: Added support for","commit_id":"4532f6fefb4eff053e82797152b8803e7d8fd11b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f49b1ee3a815892f50258a8792f5f6c4d5b7f118","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    ``hw_pci_numa_affinity_policy`` image metadata property."},{"line_number":7,"context_line":"    These apply to both PCI passthrough and SR-IOV devices,"},{"line_number":8,"context_line":"    unlike host-level PCI NUMA policies configured via the"},{"line_number":9,"context_line":"    ``alias`` key of the ``[pci] alias`` config option."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"3fa7e38b_1fa3099d","line":9,"updated":"2019-12-09 22:59:45.000000000","message":"could link to the spec http://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/vm-scoped-sriov-numa-affinity.html","commit_id":"561fb8dc483ce6b378350e7736f70976a693840b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b97a030bc217889310aa878a8a93e68cb2d056b3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    These apply to both PCI passthrough and SR-IOV devices,"},{"line_number":8,"context_line":"    unlike host-level PCI NUMA policies configured via the"},{"line_number":9,"context_line":"    ``alias`` key of the ``[pci] alias`` config option."},{"line_number":10,"context_line":"    See the `vm scoped sriov numa affinity`_ spec for more"},{"line_number":11,"context_line":"    info."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`vm scoped sriov numa affinity` : http://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/vm-scoped-sriov-numa-affinity.html"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_5962ecae","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":42},"updated":"2019-12-10 22:37:23.000000000","message":"wouldn\u0027t offend me if this had better capitalization","commit_id":"661ec11415e630921a716aea5d89028569e3c7a9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f882b9a0316d807afc489f071b5ce66f364368a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    These apply to both PCI passthrough and SR-IOV devices,"},{"line_number":8,"context_line":"    unlike host-level PCI NUMA policies configured via the"},{"line_number":9,"context_line":"    ``alias`` key of the ``[pci] alias`` config option."},{"line_number":10,"context_line":"    See the `vm scoped sriov numa affinity`_ spec for more"},{"line_number":11,"context_line":"    info."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`vm scoped sriov numa affinity` : http://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/vm-scoped-sriov-numa-affinity.html"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_b993e05b","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":42},"in_reply_to":"3fa7e38b_5962ecae","updated":"2019-12-10 22:51:41.000000000","message":"sure i can make it title case.","commit_id":"661ec11415e630921a716aea5d89028569e3c7a9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b97a030bc217889310aa878a8a93e68cb2d056b3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    See the `vm scoped sriov numa affinity`_ spec for more"},{"line_number":11,"context_line":"    info."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`vm scoped sriov numa affinity` : http://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/vm-scoped-sriov-numa-affinity.html"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_794fa834","line":13,"range":{"start_line":13,"start_character":39,"end_line":13,"end_character":40},"updated":"2019-12-10 22:37:23.000000000","message":"nts: make sure this renders right with this space in here","commit_id":"661ec11415e630921a716aea5d89028569e3c7a9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7f882b9a0316d807afc489f071b5ce66f364368a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    See the `vm scoped sriov numa affinity`_ spec for more"},{"line_number":11,"context_line":"    info."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    .. _`vm scoped sriov numa affinity` : http://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/vm-scoped-sriov-numa-affinity.html"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3fa7e38b_19823400","line":13,"range":{"start_line":13,"start_character":39,"end_line":13,"end_character":40},"in_reply_to":"3fa7e38b_794fa834","updated":"2019-12-10 22:51:41.000000000","message":"i put it in http://rst.ninjs.org/ before i uploaded but ya ill check the output of the docs job and fix it if need when i update this tomorrow","commit_id":"661ec11415e630921a716aea5d89028569e3c7a9"}]}
