)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4effa67606bdc4195048909373feb6f85c1e4cf5","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"To store policies following fields were added:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"* extra spec \u0027hw:pci_numa_affinity_policy\u0027 for flavor * metadata field"},{"line_number":14,"context_line":"  \u0027hw_pci_numa_affinity_policy\u0027 for image"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"There are 3 policies:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_7d7ce5ea","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":41},"updated":"2017-11-22 17:07:00.000000000","message":"Looks better as two bullet points I think.","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b4aa9695750de4e110e72c3e637b9c8b89decc82","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"To store policies following fields were added:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"* extra spec \u0027hw:pci_numa_affinity_policy\u0027 for flavor * metadata field"},{"line_number":14,"context_line":"  \u0027hw_pci_numa_affinity_policy\u0027 for image"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"There are 3 policies:"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_39773105","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":41},"in_reply_to":"ff82abbf_7d7ce5ea","updated":"2017-11-23 18:16:27.000000000","message":"Done","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4effa67606bdc4195048909373feb6f85c1e4cf5","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- legacy - this is the default value and it describes the current nova"},{"line_number":19,"context_line":"  behavior. Nova will boot VMs with PCI device if the PCI device is"},{"line_number":20,"context_line":"  associated with at least one NUMA nodes on which the or there is no"},{"line_number":21,"context_line":"  information about PCI-NUMA association"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_3d5f3d73","line":20,"range":{"start_line":20,"start_character":51,"end_line":20,"end_character":57},"updated":"2017-11-22 17:07:00.000000000","message":"\"the or\" should be \"the instance will be booted or\"","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4effa67606bdc4195048909373feb6f85c1e4cf5","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- legacy - this is the default value and it describes the current nova"},{"line_number":19,"context_line":"  behavior. Nova will boot VMs with PCI device if the PCI device is"},{"line_number":20,"context_line":"  associated with at least one NUMA nodes on which the or there is no"},{"line_number":21,"context_line":"  information about PCI-NUMA association"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_fd679550","line":20,"range":{"start_line":20,"start_character":36,"end_line":20,"end_character":41},"updated":"2017-11-22 17:07:00.000000000","message":"node","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b4aa9695750de4e110e72c3e637b9c8b89decc82","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- legacy - this is the default value and it describes the current nova"},{"line_number":19,"context_line":"  behavior. Nova will boot VMs with PCI device if the PCI device is"},{"line_number":20,"context_line":"  associated with at least one NUMA nodes on which the or there is no"},{"line_number":21,"context_line":"  information about PCI-NUMA association"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_f962293e","line":20,"range":{"start_line":20,"start_character":51,"end_line":20,"end_character":57},"in_reply_to":"ff82abbf_3d5f3d73","updated":"2017-11-23 18:16:27.000000000","message":"Done","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b4aa9695750de4e110e72c3e637b9c8b89decc82","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- legacy - this is the default value and it describes the current nova"},{"line_number":19,"context_line":"  behavior. Nova will boot VMs with PCI device if the PCI device is"},{"line_number":20,"context_line":"  associated with at least one NUMA nodes on which the or there is no"},{"line_number":21,"context_line":"  information about PCI-NUMA association"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_59723513","line":20,"range":{"start_line":20,"start_character":36,"end_line":20,"end_character":41},"in_reply_to":"ff82abbf_fd679550","updated":"2017-11-23 18:16:27.000000000","message":"Done","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4effa67606bdc4195048909373feb6f85c1e4cf5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  information about PCI-NUMA association"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"},{"line_number":24,"context_line":"  of the NUMA node is associated with these PCI devices."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- preferred - nova will boot VMs ignoring association of NUMA nodes and"},{"line_number":27,"context_line":"  PCI devices."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_3dd41dbd","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":18},"updated":"2017-11-22 17:07:00.000000000","message":"should be \"VM\u0027s NUMA nodes\"","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b4aa9695750de4e110e72c3e637b9c8b89decc82","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  information about PCI-NUMA association"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"},{"line_number":24,"context_line":"  of the NUMA node is associated with these PCI devices."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- preferred - nova will boot VMs ignoring association of NUMA nodes and"},{"line_number":27,"context_line":"  PCI devices."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_9968bd21","line":24,"range":{"start_line":24,"start_character":9,"end_line":24,"end_character":18},"in_reply_to":"ff82abbf_3dd41dbd","updated":"2017-11-23 18:16:27.000000000","message":"Done","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4effa67606bdc4195048909373feb6f85c1e4cf5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"},{"line_number":24,"context_line":"  of the NUMA node is associated with these PCI devices."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- preferred - nova will boot VMs ignoring association of NUMA nodes and"},{"line_number":27,"context_line":"  PCI devices."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"bp share-pci-between-numa-nodes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_bddfcdd4","line":26,"range":{"start_line":26,"start_character":33,"end_line":26,"end_character":41},"updated":"2017-11-22 17:07:00.000000000","message":"\"ignoring\" is not strictly true, at least according to the spec...it says it will attempt best-effort PCI affinity, and the PCI weigher will still have a say.","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b4aa9695750de4e110e72c3e637b9c8b89decc82","unresolved":false,"context_lines":[{"line_number":23,"context_line":"- required - nova will boot VMs with PCI devices *only* if at least one"},{"line_number":24,"context_line":"  of the NUMA node is associated with these PCI devices."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- preferred - nova will boot VMs ignoring association of NUMA nodes and"},{"line_number":27,"context_line":"  PCI devices."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"bp share-pci-between-numa-nodes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ff82abbf_d98645dc","line":26,"range":{"start_line":26,"start_character":33,"end_line":26,"end_character":41},"in_reply_to":"ff82abbf_bddfcdd4","updated":"2017-11-23 18:16:27.000000000","message":"Done","commit_id":"fea4ec90fd0c45f2951c054e4b8035108eee0b25"}],"nova/exception.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3349b69dc6334fdbef362c7cf022ec46dc3fe5cd","unresolved":false,"context_lines":[{"line_number":2013,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"class PciNumaForbidden(Forbidden):"},{"line_number":2017,"context_line":"    msg_fmt \u003d _(\"Flavor property \u0027hw:pci_numa_policy\u0027 and image property\""},{"line_number":2018,"context_line":"                \"\u0027hw_pci_numa_policy\u0027 must be equal if both of them are set. \""},{"line_number":2019,"context_line":"                \"Flavor property is \u0027%(flavor)s\u0027, Image property is \""},{"line_number":2020,"context_line":"                \"\u0027%(image)s\u0027.\")"},{"line_number":2021,"context_line":""},{"line_number":2022,"context_line":""},{"line_number":2023,"context_line":"class UnsupportedPolicyException(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_f88a7419","line":2020,"range":{"start_line":2016,"start_character":0,"end_line":2020,"end_character":31},"updated":"2016-12-09 02:22:13.000000000","message":"this seam wrong\nif a setting in a image does not match the value in the flavor the flavor always takes precendence as the operator always has the final say.\n\nalso unless you proagate this all the way to the user via the api on a nova boot the tenant will not know why it faild and the operator will not be able to prevent an enduser form causeing this exception.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2204b7ec7dfec670a74326388a19a49567a7217a","unresolved":false,"context_lines":[{"line_number":2013,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"class PciNumaForbidden(Forbidden):"},{"line_number":2017,"context_line":"    msg_fmt \u003d _(\"Flavor property \u0027hw:pci_numa_policy\u0027 and image property\""},{"line_number":2018,"context_line":"                \"\u0027hw_pci_numa_policy\u0027 must be equal if both of them are set. \""},{"line_number":2019,"context_line":"                \"Flavor property is \u0027%(flavor)s\u0027, Image property is \""},{"line_number":2020,"context_line":"                \"\u0027%(image)s\u0027.\")"},{"line_number":2021,"context_line":""},{"line_number":2022,"context_line":""},{"line_number":2023,"context_line":"class UnsupportedPolicyException(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_4618d084","line":2020,"range":{"start_line":2016,"start_character":0,"end_line":2020,"end_character":31},"in_reply_to":"3a71b18c_1b9471e0","updated":"2016-12-09 15:29:03.000000000","message":"as long as the exception is propagate to the api layer and then to the end user i am fine with this behavior.\nif it was mearly logged then the user has no way of noing why the request failed.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e5142a8d811d0e90690d0dc022bafa7bedecb9bb","unresolved":false,"context_lines":[{"line_number":2013,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"class PciNumaForbidden(Forbidden):"},{"line_number":2017,"context_line":"    msg_fmt \u003d _(\"Flavor property \u0027hw:pci_numa_policy\u0027 and image property\""},{"line_number":2018,"context_line":"                \"\u0027hw_pci_numa_policy\u0027 must be equal if both of them are set. \""},{"line_number":2019,"context_line":"                \"Flavor property is \u0027%(flavor)s\u0027, Image property is \""},{"line_number":2020,"context_line":"                \"\u0027%(image)s\u0027.\")"},{"line_number":2021,"context_line":""},{"line_number":2022,"context_line":""},{"line_number":2023,"context_line":"class UnsupportedPolicyException(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_1b9471e0","line":2020,"range":{"start_line":2016,"start_character":0,"end_line":2020,"end_character":31},"in_reply_to":"3a71b18c_602bfbeb","updated":"2016-12-09 15:03:29.000000000","message":"I\u0027m inclined to agree with Sergey here. We should fail fast if a user specifies such a policy via image properties but the operator has chosen to override them. This provides a clear signal to the user that they can\u0027t set that property in this cloud, rather than masking the mismatch and pretending everything is hunky dory :) This does need to be handled at the API layer, however","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c9e8a603cd57034d8bf4a278629f22a305bf1703","unresolved":false,"context_lines":[{"line_number":2013,"context_line":"                \"override CPU thread pinning policy set against the flavor\")"},{"line_number":2014,"context_line":""},{"line_number":2015,"context_line":""},{"line_number":2016,"context_line":"class PciNumaForbidden(Forbidden):"},{"line_number":2017,"context_line":"    msg_fmt \u003d _(\"Flavor property \u0027hw:pci_numa_policy\u0027 and image property\""},{"line_number":2018,"context_line":"                \"\u0027hw_pci_numa_policy\u0027 must be equal if both of them are set. \""},{"line_number":2019,"context_line":"                \"Flavor property is \u0027%(flavor)s\u0027, Image property is \""},{"line_number":2020,"context_line":"                \"\u0027%(image)s\u0027.\")"},{"line_number":2021,"context_line":""},{"line_number":2022,"context_line":""},{"line_number":2023,"context_line":"class UnsupportedPolicyException(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_602bfbeb","line":2020,"range":{"start_line":2016,"start_character":0,"end_line":2020,"end_character":31},"in_reply_to":"3a71b18c_f88a7419","updated":"2016-12-09 12:16:51.000000000","message":"Here you can see that we raise an exception if image_meta !\u003d flavor_meta \nhttps://github.com/openstack/nova/blob/master/nova/virt/hardware.py#L1082-L1083\n\nAs I said the patch is just a proof of concept. It it now finished. In final version I will add chaching of this exception here https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L654-L696\n\nIn this case user will get a clear message\n\n\nAlso in spec review we had a huge discussion about what we should do in case of conflict. commit #6 https://review.openstack.org/#/c/361140/","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"}],"nova/objects/fields.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8b7b50489196e80c8d29f754aa4976346e532b54","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":152,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":153,"context_line":"    SHARED \u003d \"shared\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    ALL \u003d (REQUIRED, PREFERRED, SHARED)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5da102_de17a352","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":21},"updated":"2016-10-26 19:57:59.000000000","message":"required makes sense in the context that you are requiring numa affinity between the quest and the pci device.\n\npreferred is obviously best effort we will prefer to maintain numa affinity but its ok if we cant fulfill that request as part of the placement.\n\nshared however dose not map to any placement dession in my mind so what is shared in this context? perhaps ANY would be better? that said unless the value of SHARED or ANY cause nova to take a shorter path then prefer eg to check the numa affinity of all other contrains are all ready fulfilled im not sure this third state is required.\n\nthe only other state that is not covered would be avoid but i can think of any usecase that would be impoved by reducing your performance by not have numa affinity with a pci pasthrough or sriov device.","commit_id":"6aac36b820ad82d35113cc1e8d75ab9a08262670"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3349b69dc6334fdbef362c7cf022ec46dc3fe5cd","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":152,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":153,"context_line":"    SHARED \u003d \"shared\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    ALL \u003d (REQUIRED, PREFERRED, SHARED)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_38b30ceb","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":21},"updated":"2016-12-09 02:22:13.000000000","message":"bassed on your explanation of shared i really do not think this is inturitive.\n\ncan i reaffirm my suggestiong that this should be change to ANY.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e5142a8d811d0e90690d0dc022bafa7bedecb9bb","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":152,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":153,"context_line":"    SHARED \u003d \"shared\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    ALL \u003d (REQUIRED, PREFERRED, SHARED)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_3b7dadb1","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":21},"in_reply_to":"3a71b18c_00696725","updated":"2016-12-09 15:03:29.000000000","message":"Just to refresh my knowledge, in \u0027shared\u0027 there is no correlation whatsoever between NUMA nodes and PCI devices, right? If so, \u0027shared\u0027 makes sense to me (we could probably do better, but I have no suggestions)","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"5378e0e9cb68d13ad00a466e406613431ba98edb","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":152,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":153,"context_line":"    SHARED \u003d \"shared\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    ALL \u003d (REQUIRED, PREFERRED, SHARED)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_b968e2bb","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":21},"in_reply_to":"3a71b18c_26e1149b","updated":"2016-12-09 16:32:33.000000000","message":"Stephen is right about \u0027shared\u0027 behavior. Sean, I think discussion about names should be moved to the patch with spec to have clear history","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c9e8a603cd57034d8bf4a278629f22a305bf1703","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":152,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":153,"context_line":"    SHARED \u003d \"shared\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    ALL \u003d (REQUIRED, PREFERRED, SHARED)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_00696725","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":21},"in_reply_to":"3a71b18c_38b30ceb","updated":"2016-12-09 12:16:51.000000000","message":"From the spec you can see that \u0027share\u0027 values is used to share pci devices between numa nodes\n\nhttps://review.openstack.org/#/c/361140/14/specs/ocata/approved/share-pci-between-numa-nodes.rst","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2204b7ec7dfec670a74326388a19a49567a7217a","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    REQUIRED \u003d \"required\""},{"line_number":152,"context_line":"    PREFERRED \u003d \"preferred\""},{"line_number":153,"context_line":"    SHARED \u003d \"shared\""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    ALL \u003d (REQUIRED, PREFERRED, SHARED)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_26e1149b","line":153,"range":{"start_line":153,"start_character":4,"end_line":153,"end_character":21},"in_reply_to":"3a71b18c_3b7dadb1","updated":"2016-12-09 15:29:03.000000000","message":"thanks for the link to the new spec. this is currently not approved has a spec freeze exception been granted?\nif not isnt this feature blocked form ocata?\n\nmy resoning for changeing the name is we discibeing the pci numa affinity policy. in that context required means you require pci numa afainity to the same numa node. perfer means you prefer to affinities to the same numa node. shared without reading the spec does not directly imply any behavoir.\n\na policy of any however does imply that the behavior is to chose a pci device from any numa node.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3349b69dc6334fdbef362c7cf022ec46dc3fe5cd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            self.cpu_thread_policy \u003d None"},{"line_number":76,"context_line":"            self.obj_reset_changes([\u0027cpu_thread_policy\u0027])"},{"line_number":77,"context_line":"        if \u0027pci_numa_policy\u0027 not in kwargs:"},{"line_number":78,"context_line":"            self.pci_numa_policy \u003d None"},{"line_number":79,"context_line":"            self.obj_reset_changes([\u0027pci_numa_policy\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_789e6455","line":78,"range":{"start_line":78,"start_character":35,"end_line":78,"end_character":39},"updated":"2016-12-09 02:22:13.000000000","message":"this should default to required\nto not change existing behavior.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"5378e0e9cb68d13ad00a466e406613431ba98edb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            self.cpu_thread_policy \u003d None"},{"line_number":76,"context_line":"            self.obj_reset_changes([\u0027cpu_thread_policy\u0027])"},{"line_number":77,"context_line":"        if \u0027pci_numa_policy\u0027 not in kwargs:"},{"line_number":78,"context_line":"            self.pci_numa_policy \u003d None"},{"line_number":79,"context_line":"            self.obj_reset_changes([\u0027pci_numa_policy\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_99cde6b9","line":78,"range":{"start_line":78,"start_character":35,"end_line":78,"end_character":39},"in_reply_to":"3a71b18c_016322dd","updated":"2016-12-09 16:32:33.000000000","message":"Sean, \u0027prefer\u0027 is a default behavior. This is a current nova behavior. \n\u0027required\u0027 is new behavior and it\u0027s stricter then \u0027prefer\u0027.\n\u0027shared\u0027 is too new. and it\u0027s softer then \u0027prefer\u0027","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c9e8a603cd57034d8bf4a278629f22a305bf1703","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            self.cpu_thread_policy \u003d None"},{"line_number":76,"context_line":"            self.obj_reset_changes([\u0027cpu_thread_policy\u0027])"},{"line_number":77,"context_line":"        if \u0027pci_numa_policy\u0027 not in kwargs:"},{"line_number":78,"context_line":"            self.pci_numa_policy \u003d None"},{"line_number":79,"context_line":"            self.obj_reset_changes([\u0027pci_numa_policy\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_db5be0f4","line":78,"range":{"start_line":78,"start_character":35,"end_line":78,"end_character":39},"in_reply_to":"3a71b18c_789e6455","updated":"2016-12-09 12:16:51.000000000","message":"NOTE: default behavior is \u0027preferred\u0027\n\nTwo cases:\n1) default value if this field is None\nThe empty default value means that user didn\u0027t changed this field. \n\n\u0027None\u0027 value means that user don\u0027t care about this field or he expect default behavior. \n\nNot-None value in this field will mean that user consciously change it and he actually want to see some behavior.\n\n2) default value is \u0027preferred\u0027\n\nIn this case we don\u0027t know is a used want to use \u0027preferred\u0027 behavior or it is just a default value. \n\nIt matters in this cases:\n\nflavor   image     result\n-----------------------------\nrequired   None      required\nNone     required    required\npreferred required   conflict\n\n\nif the default value of the field will be \u0027preferred\u0027, cases 2 and 3 will be equal. and we will never be able to use just image meta.\n\nany way \u0027preferred\u0027 default behavior is guaranteed by line 1210 here https://review.openstack.org/#/c/390520/3/nova/virt/hardware.py","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e5142a8d811d0e90690d0dc022bafa7bedecb9bb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            self.cpu_thread_policy \u003d None"},{"line_number":76,"context_line":"            self.obj_reset_changes([\u0027cpu_thread_policy\u0027])"},{"line_number":77,"context_line":"        if \u0027pci_numa_policy\u0027 not in kwargs:"},{"line_number":78,"context_line":"            self.pci_numa_policy \u003d None"},{"line_number":79,"context_line":"            self.obj_reset_changes([\u0027pci_numa_policy\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_46fff000","line":78,"range":{"start_line":78,"start_character":35,"end_line":78,"end_character":39},"in_reply_to":"3a71b18c_db5be0f4","updated":"2016-12-09 15:03:29.000000000","message":"As an aside, sahid is doing some work on these that will affect this. I don\u0027t have a look, but check out his recent reviews to find it","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2204b7ec7dfec670a74326388a19a49567a7217a","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            self.cpu_thread_policy \u003d None"},{"line_number":76,"context_line":"            self.obj_reset_changes([\u0027cpu_thread_policy\u0027])"},{"line_number":77,"context_line":"        if \u0027pci_numa_policy\u0027 not in kwargs:"},{"line_number":78,"context_line":"            self.pci_numa_policy \u003d None"},{"line_number":79,"context_line":"            self.obj_reset_changes([\u0027pci_numa_policy\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def __len__(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_016322dd","line":78,"range":{"start_line":78,"start_character":35,"end_line":78,"end_character":39},"in_reply_to":"3a71b18c_db5be0f4","updated":"2016-12-09 15:29:03.000000000","message":"using a default value of prefer will cause a change on behavior on upgrade. i will leave this feeback in the spec also.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"}],"nova/pci/stats.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c6df34686a8799211a7731ef31a4b0c6b68d7500","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def _filter_pools_for_numa_cells(self, pools, numa_cells, requested_count):"},{"line_number":237,"context_line":"        requested_policy \u003d (numa_cells[0].pci_numa_affinity_policy"},{"line_number":238,"context_line":"                            or fields.PciNumaAffinityPolicy.LEGACY)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        for policy in (fields.PciNumaAffinityPolicy.REQUIRED,"},{"line_number":241,"context_line":"                       fields.PciNumaAffinityPolicy.LEGACY,"},{"line_number":242,"context_line":"                       fields.PciNumaAffinityPolicy.PREFERRED):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff82abbf_92b036df","line":239,"updated":"2017-11-29 02:44:25.000000000","message":"Comments would greatly help us to read this part; something like, \"regardless of the requested policy, we at first try to use REQUIRED policy and if not available we fall back to the requested policy step by step\" ?","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f925bcb9c46be3a89b822fb931b6799b97288719","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def _filter_pools_for_numa_cells(self, pools, numa_cells, requested_count):"},{"line_number":237,"context_line":"        requested_policy \u003d (numa_cells[0].pci_numa_affinity_policy"},{"line_number":238,"context_line":"                            or fields.PciNumaAffinityPolicy.LEGACY)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        for policy in (fields.PciNumaAffinityPolicy.REQUIRED,"},{"line_number":241,"context_line":"                       fields.PciNumaAffinityPolicy.LEGACY,"},{"line_number":242,"context_line":"                       fields.PciNumaAffinityPolicy.PREFERRED):"}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_5ef73fd4","line":239,"in_reply_to":"ff82abbf_92b036df","updated":"2017-12-12 17:31:16.000000000","message":"Good call. Added now","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c6df34686a8799211a7731ef31a4b0c6b68d7500","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            if (policy \u003d\u003d requested_policy or"},{"line_number":248,"context_line":"                        self._pool_count(filtered_pools) \u003e\u003d requested_count):"},{"line_number":249,"context_line":"                return filtered_pools"},{"line_number":250,"context_line":"        return []"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _filter_non_requested_pfs(self, request, matching_pools):"},{"line_number":253,"context_line":"        # Remove SRIOV_PFs from pools, unless it has been explicitly requested"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff82abbf_92335662","line":250,"range":{"start_line":250,"start_character":8,"end_line":250,"end_character":17},"updated":"2017-11-29 02:44:25.000000000","message":"I\u0027m not sure this is needed. Why is this here?","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f925bcb9c46be3a89b822fb931b6799b97288719","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            if (policy \u003d\u003d requested_policy or"},{"line_number":248,"context_line":"                        self._pool_count(filtered_pools) \u003e\u003d requested_count):"},{"line_number":249,"context_line":"                return filtered_pools"},{"line_number":250,"context_line":"        return []"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def _filter_non_requested_pfs(self, request, matching_pools):"},{"line_number":253,"context_line":"        # Remove SRIOV_PFs from pools, unless it has been explicitly requested"}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_8bc77a64","line":250,"range":{"start_line":250,"start_character":8,"end_line":250,"end_character":17},"in_reply_to":"ff82abbf_92335662","updated":"2017-12-12 17:31:16.000000000","message":"It is needed. We use the result of this later on in _filter_non_requested_pfs, and that expects an iterable","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"}],"nova/tests/unit/pci/test_stats.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c6df34686a8799211a7731ef31a4b0c6b68d7500","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    def test_support_requests_numa_pci_numa_policy_preferred(self):"},{"line_number":189,"context_line":"        # numa node 0 has 2 devices with vendor_id \u0027v1\u0027"},{"line_number":190,"context_line":"        # numa node 1 has 1 device with vendor_id \u0027v2\u0027"},{"line_number":191,"context_line":"        # we request two devises with vendor_id \u0027v1\u0027 and \u0027v2\u0027."},{"line_number":192,"context_line":"        # pci_numa_affinity_policy is \u0027preferred\u0027 so we can ignore numa"},{"line_number":193,"context_line":"        # affinity"},{"line_number":194,"context_line":"        cells \u003d [objects.InstanceNUMACell("}],"source_content_type":"text/x-python","patch_set":16,"id":"ff82abbf_50c87c72","line":191,"range":{"start_line":191,"start_character":25,"end_line":191,"end_character":32},"updated":"2017-11-29 02:44:25.000000000","message":"devices","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f925bcb9c46be3a89b822fb931b6799b97288719","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    def test_support_requests_numa_pci_numa_policy_preferred(self):"},{"line_number":189,"context_line":"        # numa node 0 has 2 devices with vendor_id \u0027v1\u0027"},{"line_number":190,"context_line":"        # numa node 1 has 1 device with vendor_id \u0027v2\u0027"},{"line_number":191,"context_line":"        # we request two devises with vendor_id \u0027v1\u0027 and \u0027v2\u0027."},{"line_number":192,"context_line":"        # pci_numa_affinity_policy is \u0027preferred\u0027 so we can ignore numa"},{"line_number":193,"context_line":"        # affinity"},{"line_number":194,"context_line":"        cells \u003d [objects.InstanceNUMACell("}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_3e7fdb15","line":191,"range":{"start_line":191,"start_character":25,"end_line":191,"end_character":32},"in_reply_to":"ff82abbf_50c87c72","updated":"2017-12-12 17:31:16.000000000","message":"Done","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"c6df34686a8799211a7731ef31a4b0c6b68d7500","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_consume_requests_numa_pci_numa_policy_legacy_none_numa(self):"},{"line_number":282,"context_line":"        # Policy is \u0027legacy\u0027. It means that we can use devices \u0027pr0\u0027 and"},{"line_number":283,"context_line":"        # \u0027pr_node\u0027. But we have no device with vendor_id \u0027v4\u0027 in NUMA"},{"line_number":284,"context_line":"        # node \u0027999\u0027. So we have to use device without pci NUMA affinity info."},{"line_number":285,"context_line":"        self._test_consume_requests_numa_pci_numa_policy("},{"line_number":286,"context_line":"            [999], fields.PciNumaAffinityPolicy.LEGACY, [\u0027pr_none\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"ff82abbf_72d812ee","line":283,"range":{"start_line":283,"start_character":11,"end_line":283,"end_character":18},"updated":"2017-11-29 02:44:25.000000000","message":"pr_none","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f925bcb9c46be3a89b822fb931b6799b97288719","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def test_consume_requests_numa_pci_numa_policy_legacy_none_numa(self):"},{"line_number":282,"context_line":"        # Policy is \u0027legacy\u0027. It means that we can use devices \u0027pr0\u0027 and"},{"line_number":283,"context_line":"        # \u0027pr_node\u0027. But we have no device with vendor_id \u0027v4\u0027 in NUMA"},{"line_number":284,"context_line":"        # node \u0027999\u0027. So we have to use device without pci NUMA affinity info."},{"line_number":285,"context_line":"        self._test_consume_requests_numa_pci_numa_policy("},{"line_number":286,"context_line":"            [999], fields.PciNumaAffinityPolicy.LEGACY, [\u0027pr_none\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"df87a7cf_1ea777a9","line":283,"range":{"start_line":283,"start_character":11,"end_line":283,"end_character":18},"in_reply_to":"ff82abbf_72d812ee","updated":"2017-12-12 17:31:16.000000000","message":"Done","commit_id":"7be4769f0fdc7a2b80e66ca0a2ea99806b4267b0"}],"nova/virt/hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3349b69dc6334fdbef362c7cf022ec46dc3fe5cd","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        \u0027pci_numa_policy\u0027, flavor, image_meta)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    if (flavor_policy is not None and image_policy is not None and"},{"line_number":1206,"context_line":"                flavor_policy !\u003d image_policy):"},{"line_number":1207,"context_line":"        raise exception.PciNumaForbidden(flavor\u003dflavor_policy,"},{"line_number":1208,"context_line":"                                         image\u003dimage_policy)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    policy \u003d (flavor_policy or image_policy or fields.PciNumaPolicy.PREFERRED)"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_f81434a0","line":1208,"range":{"start_line":1206,"start_character":7,"end_line":1208,"end_character":60},"updated":"2016-12-09 02:22:13.000000000","message":"how will the end user be notified of this error.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c9e8a603cd57034d8bf4a278629f22a305bf1703","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        \u0027pci_numa_policy\u0027, flavor, image_meta)"},{"line_number":1204,"context_line":""},{"line_number":1205,"context_line":"    if (flavor_policy is not None and image_policy is not None and"},{"line_number":1206,"context_line":"                flavor_policy !\u003d image_policy):"},{"line_number":1207,"context_line":"        raise exception.PciNumaForbidden(flavor\u003dflavor_policy,"},{"line_number":1208,"context_line":"                                         image\u003dimage_policy)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    policy \u003d (flavor_policy or image_policy or fields.PciNumaPolicy.PREFERRED)"},{"line_number":1211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5b1c30c1","line":1208,"range":{"start_line":1206,"start_character":7,"end_line":1208,"end_character":60},"in_reply_to":"3a71b18c_f81434a0","updated":"2016-12-09 12:16:51.000000000","message":"as I said we will catch this exception in server controller and used will see error message from this exception. But this patch is not finished. is ts just a proof of concept.","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f4890b497b5eecd2270a2e6929a56aa2f32ef606","unresolved":false,"context_lines":[{"line_number":1303,"context_line":"            numa_topology \u003d _numa_get_constraints_manual("},{"line_number":1304,"context_line":"                nodes, flavor, cpu_list, mem_list)"},{"line_number":1305,"context_line":""},{"line_number":1306,"context_line":"        # We currently support same pagesize for all cells."},{"line_number":1307,"context_line":"        [setattr(c, \u0027pagesize\u0027, pagesize) for c in numa_topology.cells]"},{"line_number":1308,"context_line":""},{"line_number":1309,"context_line":"    numa_topology \u003d _add_cpu_pinning_constraint(flavor, image_meta,"},{"line_number":1310,"context_line":"                                                numa_topology)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5da102_aea25397","line":1307,"range":{"start_line":1306,"start_character":0,"end_line":1307,"end_character":71},"updated":"2016-11-01 12:38:41.000000000","message":"nit: unrelated, but fancy fixing this in a follow-up patch? We shouldn\u0027t be using list comprehensions purely for their side effects [1]\n\n[1] http://stackoverflow.com/a/5753614/613428","commit_id":"3e413e6bcdebbcf87c671e8c503d2823355cf607"}]}
