)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Created a new class SRIOVNumaAffinity to be responsible for two new test"},{"line_number":10,"context_line":"methods: test_sriov_affinity_preferred and test_sriov_affinity_required."},{"line_number":11,"context_line":"The test methods rely on a provided sr-iov nic to execute numa affinity"},{"line_number":12,"context_line":"with the numa policy set as either preferred or required via the flavor."},{"line_number":13,"context_line":"Each method determines the numa node associated with the nic, creates"},{"line_number":14,"context_line":"the relevant network and ports, and updates the compute’s"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_e2aa0a6b","line":11,"range":{"start_line":11,"start_character":63,"end_line":11,"end_character":71},"updated":"2020-01-24 20:11:04.000000000","message":"nit: missing \"tests\" after \"affinity\"?","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"with the numa policy set as either preferred or required via the flavor."},{"line_number":13,"context_line":"Each method determines the numa node associated with the nic, creates"},{"line_number":14,"context_line":"the relevant network and ports, and updates the compute’s"},{"line_number":15,"context_line":"cpu_dedicated_set comprised of pCPU’s from two NUMA Nodes. One node"},{"line_number":16,"context_line":"should have affinity with the nic and the other should not. The"},{"line_number":17,"context_line":"preferred method should expect both instances to deploy with the first"},{"line_number":18,"context_line":"instance prioritizing the pCPUs with nic affinity over the other"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_c264ae4f","line":15,"range":{"start_line":15,"start_character":47,"end_line":15,"end_character":51},"updated":"2020-01-24 20:11:04.000000000","message":"nit: either NUMA all over, or numa all over, but not both ;) (I prefer the former in all caps)","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"instance prioritizing the pCPUs with nic affinity over the other"},{"line_number":19,"context_line":"available pCPUs. The required method should see the first instance land"},{"line_number":20,"context_line":"on pCPUs with numa/nic affinity, whilte the second should fail to"},{"line_number":21,"context_line":"deploy.  These methods are designed to test [1]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Updated config.py to accept parameters to interact with the sr-iov"},{"line_number":24,"context_line":"agent. \u0027config_path\u0027 and \u0027restart_command\u0027 are used in the same fashion"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_826a3615","line":21,"range":{"start_line":21,"start_character":7,"end_line":21,"end_character":9},"updated":"2020-01-24 20:11:04.000000000","message":"nit: extra space","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"deploy.  These methods are designed to test [1]"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Updated config.py to accept parameters to interact with the sr-iov"},{"line_number":24,"context_line":"agent. \u0027config_path\u0027 and \u0027restart_command\u0027 are used in the same fashion"},{"line_number":25,"context_line":"as whitebox-nova-compute. The \u0027sriov_physnet\u0027 parameter should be the"},{"line_number":26,"context_line":"physnet associated with the sr-iov nic that will be leveraged in the"},{"line_number":27,"context_line":"test. While not introduced in the commit; network.port_vnic_type,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_e2544a58","line":24,"updated":"2020-01-24 20:11:04.000000000","message":"You sould start be mentioning the new section name, then follow with the options that it contains.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"agent. \u0027config_path\u0027 and \u0027restart_command\u0027 are used in the same fashion"},{"line_number":25,"context_line":"as whitebox-nova-compute. The \u0027sriov_physnet\u0027 parameter should be the"},{"line_number":26,"context_line":"physnet associated with the sr-iov nic that will be leveraged in the"},{"line_number":27,"context_line":"test. While not introduced in the commit; network.port_vnic_type,"},{"line_number":28,"context_line":"network_feature_enabled.provider_net_base_segmentation_id, and"},{"line_number":29,"context_line":"network.project_network_cidr all need to be set to execute the tests."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Lastly the method get_nic_cpu_affinity was added to the class NUMAClient"},{"line_number":32,"context_line":"in services.client. Given a net device, the method returns the numa node"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_7c0fa1d3","line":29,"range":{"start_line":27,"start_character":6,"end_line":29,"end_character":69},"updated":"2020-01-24 20:11:04.000000000","message":"Oh I see what you mean - you\u0027re using the existing Tempest options. Mind rephrasing? \"while not introduced in the commit\" sounds like those options just sort of appear by magic.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"}],"whitebox_tempest_plugin/api/compute/test_cpu_pinning.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from tempest.common import compute"},{"line_number":33,"context_line":"from tempest.common import utils"},{"line_number":34,"context_line":"from tempest import config"},{"line_number":35,"context_line":"from tempest.exceptions import BuildErrorException"},{"line_number":36,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from whitebox_tempest_plugin.api.compute import base"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_45d3e837","line":35,"updated":"2020-01-24 20:11:04.000000000","message":"nit: I\u0027d rather\n\n  from tempest import exceptions as tempest_exc\n\nAnd then use that as tempest_exc.BuildErrorException","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from tempest.common import compute"},{"line_number":33,"context_line":"from tempest.common import utils"},{"line_number":34,"context_line":"from tempest import config"},{"line_number":35,"context_line":"from tempest.exceptions import BuildErrorException"},{"line_number":36,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from whitebox_tempest_plugin.api.compute import base"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_d0592435","line":35,"in_reply_to":"3fa7e38b_45d3e837","updated":"2020-05-26 18:35:14.000000000","message":"i kind of wish we could just use tempest libs and not tempest directly but ya both ways work.\n\nthere is a school of tought that you should only import modules not classes or functions which would favor artoms approch. i dont really mind importing calles but i would be fine with the refactor.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7cdf51826e5b11799a6763e51d6f96380e6185a1","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":738,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":739,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":740,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_295cbbee","line":737,"updated":"2020-01-21 21:41:39.000000000","message":"will change this var name to vcpu_ceiling","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":738,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":739,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":740,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_75b0ad8c","line":737,"in_reply_to":"1fa4df85_3063d8de","updated":"2020-05-26 19:47:53.000000000","message":"I can keep as max_vcpu_count if that makes more sense.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":738,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":739,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":740,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_3063d8de","line":737,"in_reply_to":"3fa7e38b_295cbbee","updated":"2020-05-26 18:35:14.000000000","message":"i kind of prefer the current name but both work i guess.\n\nthat said you are relying on people knowing what the math ceil function is to understand what vcpu_ceiling means so i think its a less descriptive name.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"    def _get_nic_name(self, hv):"},{"line_number":760,"context_line":"        \"\"\"Given a physnet that is associated to physical sriov nic, search"},{"line_number":761,"context_line":"        the provided compute nodes sr-iov agent\u0027s ini for the mapping.  Match"},{"line_number":762,"context_line":"        the first instance of the mapping and return the associated net device"},{"line_number":763,"context_line":"        name"},{"line_number":764,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_dcd5751b","line":761,"range":{"start_line":761,"start_character":29,"end_line":761,"end_character":34},"updated":"2020-01-24 20:11:04.000000000","message":"nit: node\u0027s","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":758,"context_line":""},{"line_number":759,"context_line":"    def _get_nic_name(self, hv):"},{"line_number":760,"context_line":"        \"\"\"Given a physnet that is associated to physical sriov nic, search"},{"line_number":761,"context_line":"        the provided compute nodes sr-iov agent\u0027s ini for the mapping.  Match"},{"line_number":762,"context_line":"        the first instance of the mapping and return the associated net device"},{"line_number":763,"context_line":"        name"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        :param hv: Hypervisor hostname or ip"},{"line_number":766,"context_line":"        :return str: A nic device name that matches the physnet."}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_30b8b828","line":763,"range":{"start_line":761,"start_character":72,"end_line":763,"end_character":12},"updated":"2020-05-26 18:35:14.000000000","message":"so match the first instance is fragile as there is no requirement for only one nic to be attached to a physnet.\nits common for multiple and this funciton could retrun the wrong nic.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":774,"context_line":"            if physnet in mapping:"},{"line_number":775,"context_line":"                return physical_mapping.split(\u0027:\u0027)[1]"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def _get_intf_elem_type(self, port):"},{"line_number":778,"context_line":"        \"\"\"Return expected domain xml interface type basec on port vnic_type"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"        :param port: dictionary with port details"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2260220d","line":777,"range":{"start_line":777,"start_character":8,"end_line":777,"end_character":27},"updated":"2020-01-24 20:11:04.000000000","message":"Spell it out please, this ain\u0027t C ;)","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":774,"context_line":"            if physnet in mapping:"},{"line_number":775,"context_line":"                return physical_mapping.split(\u0027:\u0027)[1]"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def _get_intf_elem_type(self, port):"},{"line_number":778,"context_line":"        \"\"\"Return expected domain xml interface type basec on port vnic_type"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"        :param port: dictionary with port details"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_9503c10f","line":777,"range":{"start_line":777,"start_character":8,"end_line":777,"end_character":27},"in_reply_to":"1fa4df85_b07d886f","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":774,"context_line":"            if physnet in mapping:"},{"line_number":775,"context_line":"                return physical_mapping.split(\u0027:\u0027)[1]"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"    def _get_intf_elem_type(self, port):"},{"line_number":778,"context_line":"        \"\"\"Return expected domain xml interface type basec on port vnic_type"},{"line_number":779,"context_line":""},{"line_number":780,"context_line":"        :param port: dictionary with port details"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_b07d886f","line":777,"range":{"start_line":777,"start_character":8,"end_line":777,"end_character":27},"in_reply_to":"3fa7e38b_2260220d","updated":"2020-05-26 18:35:14.000000000","message":"+1","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        \"\"\"Create an IPv4 L2 vlan network and subnet.  Physical network"},{"line_number":791,"context_line":"        provider comes from sriov_physnet provided in tempest config"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        :return net, subnet: A tupele thatcontains two dictionaries"},{"line_number":794,"context_line":"        describing, one describing the network and one describing"},{"line_number":795,"context_line":"        the associated subnet"},{"line_number":796,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_829f96f4","line":793,"range":{"start_line":793,"start_character":38,"end_line":793,"end_character":50},"updated":"2020-01-24 20:11:04.000000000","message":"\"that contains\"","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        \"\"\"Create an IPv4 L2 vlan network and subnet.  Physical network"},{"line_number":791,"context_line":"        provider comes from sriov_physnet provided in tempest config"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        :return net, subnet: A tupele thatcontains two dictionaries"},{"line_number":794,"context_line":"        describing, one describing the network and one describing"},{"line_number":795,"context_line":"        the associated subnet"},{"line_number":796,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a2009236","line":793,"range":{"start_line":793,"start_character":31,"end_line":793,"end_character":37},"updated":"2020-01-24 20:11:04.000000000","message":"\"tuple\"","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":790,"context_line":"        \"\"\"Create an IPv4 L2 vlan network and subnet.  Physical network"},{"line_number":791,"context_line":"        provider comes from sriov_physnet provided in tempest config"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        :return net, subnet: A tupele thatcontains two dictionaries"},{"line_number":794,"context_line":"        describing, one describing the network and one describing"},{"line_number":795,"context_line":"        the associated subnet"},{"line_number":796,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_d0026709","line":793,"range":{"start_line":793,"start_character":31,"end_line":793,"end_character":37},"in_reply_to":"3fa7e38b_a2009236","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        provider comes from sriov_physnet provided in tempest config"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        :return net, subnet: A tupele thatcontains two dictionaries"},{"line_number":794,"context_line":"        describing, one describing the network and one describing"},{"line_number":795,"context_line":"        the associated subnet"},{"line_number":796,"context_line":"        \"\"\""},{"line_number":797,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_62f61a61","line":794,"range":{"start_line":794,"start_character":8,"end_line":794,"end_character":18},"updated":"2020-01-24 20:11:04.000000000","message":"extra word","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":791,"context_line":"        provider comes from sriov_physnet provided in tempest config"},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"        :return net, subnet: A tupele thatcontains two dictionaries"},{"line_number":794,"context_line":"        describing, one describing the network and one describing"},{"line_number":795,"context_line":"        the associated subnet"},{"line_number":796,"context_line":"        \"\"\""},{"line_number":797,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_30080327","line":794,"range":{"start_line":794,"start_character":8,"end_line":794,"end_character":18},"in_reply_to":"3fa7e38b_62f61a61","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":799,"context_line":"            CONF.network_feature_enabled.provider_net_base_segmentation_id"},{"line_number":800,"context_line":"        physical_net \u003d CONF.whitebox_sriov_agent.sriov_physnet"},{"line_number":801,"context_line":"        net_dict \u003d {"},{"line_number":802,"context_line":"                \u0027shared\u0027: True,"},{"line_number":803,"context_line":"                \u0027provider:network_type\u0027: \u0027vlan\u0027,"},{"line_number":804,"context_line":"                \u0027provider:physical_network\u0027: physical_net,"},{"line_number":805,"context_line":"                \u0027provider:segmentation_id\u0027: vlan_id"},{"line_number":806,"context_line":"            }"},{"line_number":807,"context_line":"        net \u003d self.networks_client.create_network(name\u003dname_net,"},{"line_number":808,"context_line":"                                                  **net_dict)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e2976ae9","line":805,"range":{"start_line":802,"start_character":0,"end_line":805,"end_character":51},"updated":"2020-01-24 20:11:04.000000000","message":"nit: extra indent","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":810,"context_line":"                        net[\u0027network\u0027][\u0027id\u0027])"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"        subnet \u003d self.subnets_client.create_subnet("},{"line_number":813,"context_line":"                        network_id\u003dnet[\u0027network\u0027][\u0027id\u0027],"},{"line_number":814,"context_line":"                        cidr\u003dCONF.network.project_network_cidr,"},{"line_number":815,"context_line":"                        ip_version\u003d4)"},{"line_number":816,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet,"},{"line_number":817,"context_line":"                        subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":818,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a285f2af","line":815,"range":{"start_line":813,"start_character":0,"end_line":815,"end_character":37},"updated":"2020-01-24 20:11:04.000000000","message":"nit: should be 1 indent level here","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":814,"context_line":"                        cidr\u003dCONF.network.project_network_cidr,"},{"line_number":815,"context_line":"                        ip_version\u003d4)"},{"line_number":816,"context_line":"        self.addCleanup(self.subnets_client.delete_subnet,"},{"line_number":817,"context_line":"                        subnet[\u0027subnet\u0027][\u0027id\u0027])"},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        return net, subnet"},{"line_number":820,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_628b7ac0","line":817,"updated":"2020-01-24 20:11:04.000000000","message":"Ditto","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"de6e0b63ecb91fe85d8eee3be3b65516902d506f","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                        port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":832,"context_line":"        return port"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    def _create_cpu_dedi_list(self, topo, node):"},{"line_number":835,"context_line":"        \"\"\"Get the pCPUs from the provided topology list\u0027s for numa node. The"},{"line_number":836,"context_line":"        node is assumed to be the Numa Node with affinity to the sr-iov nic"},{"line_number":837,"context_line":"        that will be tested.  Method will append pCPUs from another numa node"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_458a081a","line":834,"updated":"2020-01-24 20:11:04.000000000","message":"So, I get what you\u0027re trying to do, but this method is rather unscrutable. I\u0027m thinking at this level of complexity, we need data structures to model the host topology, for example:\n\n  class HostCell:\n\n    def __init__(self):\n      self.cell_id \u003d 0 # NUMA cell 0\n      self.cpus \u003d [0, 1, 2]\n      self.nics \u003d \u003csomething to describe the nic\u003e\n\n  class HostTopology:\n\n    def __inti__(self):\n      self.cells \u003d [HostCell(), HostCell(), HostCell()]\n\nWith something like ^^, we could have methods to pull out the specific cell that a NIC is affined to, the number of CPUs in that cell, and their IDs.\n\nIn order to progress quicker, we don\u0027t need to convert the other tests to these new data structures right away, start by having the SRIOV tests use them, then convert the other tests as our leisure.","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7cdf51826e5b11799a6763e51d6f96380e6185a1","unresolved":false,"context_lines":[{"line_number":850,"context_line":"        :return cpu_str: all pCPUs to reveal to instances formatted so it can"},{"line_number":851,"context_line":"        be added to the respective nova.conf"},{"line_number":852,"context_line":"        \"\"\""},{"line_number":853,"context_line":"        vcpus \u003d min(self.max_vcpu_count, len(topo[node]))"},{"line_number":854,"context_line":"        all_nic_numa_cpus \u003d topo.pop(node)"},{"line_number":855,"context_line":"        # Get all pCPUs from another NUMA node from the host topology"},{"line_number":856,"context_line":"        other_numa_pcpus \u003d topo.get(list(topo.keys())[0])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_09577fcb","line":853,"updated":"2020-01-21 21:41:39.000000000","message":"See comment on line 737","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":"        return vcpus, nic_numa_cpus, non_affinity_cpus, cpu_str"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def _get_port_xml_intf(self, server_id, port, intf_type):"},{"line_number":865,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":866,"context_line":"        and interface type."},{"line_number":867,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_704ab027","line":864,"range":{"start_line":864,"start_character":22,"end_line":864,"end_character":26},"updated":"2020-05-26 18:35:14.000000000","message":"intf?\n\ninterface? interfaces?","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":"        return vcpus, nic_numa_cpus, non_affinity_cpus, cpu_str"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def _get_port_xml_intf(self, server_id, port, intf_type):"},{"line_number":865,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":866,"context_line":"        and interface type."},{"line_number":867,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_b57fe5a9","line":864,"range":{"start_line":864,"start_character":22,"end_line":864,"end_character":26},"in_reply_to":"1fa4df85_704ab027","updated":"2020-05-26 19:47:53.000000000","message":"interface, I will update accordingly","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        return vcpus, nic_numa_cpus, non_affinity_cpus, cpu_str"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def _get_port_xml_intf(self, server_id, port, intf_type):"},{"line_number":865,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":866,"context_line":"        and interface type."},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        :param server_id: str, id of the instance to analyze"},{"line_number":869,"context_line":"        :param port: dictionary describing port to find"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_906e4c94","line":866,"range":{"start_line":865,"start_character":62,"end_line":866,"end_character":27},"updated":"2020-05-26 18:35:14.000000000","message":"note that technically we can have multiple ports with the same mac in a vm so this might break in the future.\n\ncan you add a code comment to that effect","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        return vcpus, nic_numa_cpus, non_affinity_cpus, cpu_str"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def _get_port_xml_intf(self, server_id, port, intf_type):"},{"line_number":865,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":866,"context_line":"        and interface type."},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        :param server_id: str, id of the instance to analyze"},{"line_number":869,"context_line":"        :param port: dictionary describing port to find"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_958e21ce","line":866,"range":{"start_line":865,"start_character":62,"end_line":866,"end_character":27},"in_reply_to":"1fa4df85_906e4c94","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"c4316a6f473ebd33773949f531402baa896a38dd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":789,"context_line":"                         \"NUMA topology doesn\u0027t match\")"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":795,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_da98c81c","line":792,"range":{"start_line":792,"start_character":6,"end_line":792,"end_character":23},"updated":"2020-05-26 18:35:14.000000000","message":"this should proably be moved to a different module since it not really realted to cpu pinning.\nyou just using that to give the vm a numa toplogy file","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":789,"context_line":"                         \"NUMA topology doesn\u0027t match\")"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":795,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_55f489cf","line":792,"range":{"start_line":792,"start_character":6,"end_line":792,"end_character":23},"in_reply_to":"ff570b3c_da98c81c","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":792,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":795,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":796,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":797,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":798,"context_line":"                 \u0027hw:pci_numa_affinity_policy\u0027: \u0027preferred\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_1aa36051","line":795,"range":{"start_line":795,"start_character":16,"end_line":795,"end_character":45},"updated":"2020-05-26 18:35:14.000000000","message":"it would be cleaner to use hw:numa_nodes\u003d1\n\nsince this test case should not really be related to cpu pinning but rahter numa affintiy between the vm and the sriov device.\n\nlater\n----\n\nok i see you are using cpu pinnig to prevent over subsription.\n\ni guess this is ok enoguht you are actully testing more then is strictly requried.\n\ne.g. this test can fail if there is a bug in cpu pinning or in sriov numa affinity. instead of only when tere is a bug in sriov numa affintiy","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":792,"context_line":"class SRIOVNumaAffinity(BasePinningTest):"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"    max_vcpu_count \u003d 4"},{"line_number":795,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":796,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":797,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":798,"context_line":"                 \u0027hw:pci_numa_affinity_policy\u0027: \u0027preferred\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_95c5815e","line":795,"range":{"start_line":795,"start_character":16,"end_line":795,"end_character":45},"in_reply_to":"ff570b3c_1aa36051","updated":"2020-05-26 19:47:53.000000000","message":"To keep it isolated to strictly NUMA affinity test do you have any other suggestions for \u0027filling\u0027 a NUMA node with nic affinity and requiring the second to schedule on another node?","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":832,"context_line":"        :return str: the xml interface type."},{"line_number":833,"context_line":"        \"\"\""},{"line_number":834,"context_line":"        vnic_type \u003d port[\u0027port\u0027][\u0027binding:vnic_type\u0027]"},{"line_number":835,"context_line":"        if vnic_type \u003d\u003d \u0027direct\u0027:"},{"line_number":836,"context_line":"            return \u0027hostdev\u0027"},{"line_number":837,"context_line":"        elif vnic_type \u003d\u003d \u0027macvtap\u0027:"},{"line_number":838,"context_line":"            return \u0027direct\u0027"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"    def _create_sriov_net(self):"},{"line_number":841,"context_line":"        \"\"\"Create an IPv4 L2 vlan network and subnet.  Physical network"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_ba9194f4","line":838,"range":{"start_line":835,"start_character":7,"end_line":838,"end_character":27},"updated":"2020-05-26 18:35:14.000000000","message":"this confuses people alot but this is correct","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":832,"context_line":"        :return str: the xml interface type."},{"line_number":833,"context_line":"        \"\"\""},{"line_number":834,"context_line":"        vnic_type \u003d port[\u0027port\u0027][\u0027binding:vnic_type\u0027]"},{"line_number":835,"context_line":"        if vnic_type \u003d\u003d \u0027direct\u0027:"},{"line_number":836,"context_line":"            return \u0027hostdev\u0027"},{"line_number":837,"context_line":"        elif vnic_type \u003d\u003d \u0027macvtap\u0027:"},{"line_number":838,"context_line":"            return \u0027direct\u0027"},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"    def _create_sriov_net(self):"},{"line_number":841,"context_line":"        \"\"\"Create an IPv4 L2 vlan network and subnet.  Physical network"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_959aa16b","line":838,"range":{"start_line":835,"start_character":7,"end_line":838,"end_character":27},"in_reply_to":"ff570b3c_ba9194f4","updated":"2020-05-26 19:47:53.000000000","message":"I will add a note to help clarify what is happening.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        variable max_vcpu_count."},{"line_number":920,"context_line":"        2. Identify pCPUs from the list that have affinity with the SR-IOV port"},{"line_number":921,"context_line":"        that will be used in the test."},{"line_number":922,"context_line":"        3. Create a flavor with preferred NUMA policy. The flavor vcpu size"},{"line_number":923,"context_line":"        will be equal to the number of pCPUs used per NUMA node. This should"},{"line_number":924,"context_line":"        result in every instance created \u0027filling\u0027 a NUMA node."},{"line_number":925,"context_line":"        4. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":926,"context_line":"        5. Validate both instances are deployed, with the first instance should"},{"line_number":927,"context_line":"        pinned to NUMA node with SR-IOV affinity and the second should land"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_ba7fd4a9","line":924,"range":{"start_line":922,"start_character":6,"end_line":924,"end_character":63},"updated":"2020-05-26 18:35:14.000000000","message":"note this is relying on the fact that the flavor use hw:cpu_policy\u003ddedicated","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":919,"context_line":"        variable max_vcpu_count."},{"line_number":920,"context_line":"        2. Identify pCPUs from the list that have affinity with the SR-IOV port"},{"line_number":921,"context_line":"        that will be used in the test."},{"line_number":922,"context_line":"        3. Create a flavor with preferred NUMA policy. The flavor vcpu size"},{"line_number":923,"context_line":"        will be equal to the number of pCPUs used per NUMA node. This should"},{"line_number":924,"context_line":"        result in every instance created \u0027filling\u0027 a NUMA node."},{"line_number":925,"context_line":"        4. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":926,"context_line":"        5. Validate both instances are deployed, with the first instance should"},{"line_number":927,"context_line":"        pinned to NUMA node with SR-IOV affinity and the second should land"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d58d3932","line":924,"range":{"start_line":922,"start_character":6,"end_line":924,"end_character":63},"in_reply_to":"ff570b3c_ba7fd4a9","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        will be equal to the number of pCPUs used per NUMA node. This should"},{"line_number":924,"context_line":"        result in every instance created \u0027filling\u0027 a NUMA node."},{"line_number":925,"context_line":"        4. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":926,"context_line":"        5. Validate both instances are deployed, with the first instance should"},{"line_number":927,"context_line":"        pinned to NUMA node with SR-IOV affinity and the second should land"},{"line_number":928,"context_line":"        on a NUMA without SR-IOV affinity"},{"line_number":929,"context_line":"        6. Validate xml description of SR-IOV interface is correct for both"},{"line_number":930,"context_line":"        servers"},{"line_number":931,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_3a458471","line":928,"range":{"start_line":926,"start_character":10,"end_line":928,"end_character":41},"updated":"2020-05-26 18:35:14.000000000","message":"you should not assume the first instance will have numa affintiy. right now the first instance would land on numa node 0 if the nic is on numa node 1 this test would fail.\n\nin the futreu we likely will change nova to guarentee that but its not guarenteed today that the first vm will land on the numa node with affinity.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        will be equal to the number of pCPUs used per NUMA node. This should"},{"line_number":924,"context_line":"        result in every instance created \u0027filling\u0027 a NUMA node."},{"line_number":925,"context_line":"        4. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":926,"context_line":"        5. Validate both instances are deployed, with the first instance should"},{"line_number":927,"context_line":"        pinned to NUMA node with SR-IOV affinity and the second should land"},{"line_number":928,"context_line":"        on a NUMA without SR-IOV affinity"},{"line_number":929,"context_line":"        6. Validate xml description of SR-IOV interface is correct for both"},{"line_number":930,"context_line":"        servers"},{"line_number":931,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_757c2d20","line":928,"range":{"start_line":926,"start_character":10,"end_line":928,"end_character":41},"in_reply_to":"ff570b3c_3a458471","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":937,"context_line":"            raise self.skipException(\u0027Host needs at least 2 NUMA nodes to \u0027"},{"line_number":938,"context_line":"                                     \u0027validate affinity\u0027)"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"        if len(self._get_cpus_per_node(topo.values())) !\u003d 1:"},{"line_number":941,"context_line":"            raise self.skipException(\u0027NUMA nodes must have same number of \u0027"},{"line_number":942,"context_line":"                                     \u0027CPUs\u0027)"},{"line_number":943,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_3a3aa4e6","line":940,"range":{"start_line":940,"start_character":56,"end_line":940,"end_character":60},"updated":"2020-05-26 18:35:14.000000000","message":"where is this 1 coming from and what does it mean","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":937,"context_line":"            raise self.skipException(\u0027Host needs at least 2 NUMA nodes to \u0027"},{"line_number":938,"context_line":"                                     \u0027validate affinity\u0027)"},{"line_number":939,"context_line":""},{"line_number":940,"context_line":"        if len(self._get_cpus_per_node(topo.values())) !\u003d 1:"},{"line_number":941,"context_line":"            raise self.skipException(\u0027NUMA nodes must have same number of \u0027"},{"line_number":942,"context_line":"                                     \u0027CPUs\u0027)"},{"line_number":943,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_35e635ea","line":940,"range":{"start_line":940,"start_character":56,"end_line":940,"end_character":60},"in_reply_to":"ff570b3c_3a3aa4e6","updated":"2020-05-26 19:47:53.000000000","message":"I will add a note clarifying, but it is creating a list of pCPUs per NUMA node, applying a set, and failing if the set is not equal to 1, i.e. making sure the pCPU count per NUMA is the same for every node.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":967,"context_line":"            )"},{"line_number":968,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":969,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":"            # Server A should pin to pCPUs of the NUMA node with affinity to"},{"line_number":972,"context_line":"            # SR-IOV nic"},{"line_number":973,"context_line":"            self.assertEqual(cpu_pins_a, set(cpus_with_nic_affinity), \u0027Server \u0027"},{"line_number":974,"context_line":"                             \u0027%s pCPUs expected to be %s but instead are %s\u0027"},{"line_number":975,"context_line":"                             % (server_a[\u0027id\u0027], cpus_with_nic_affinity,"},{"line_number":976,"context_line":"                                cpu_pins_a))"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"            # Server A should \u0027fill\u0027 available pCPUs of NUMA node with SR-IOV"},{"line_number":979,"context_line":"            # affinity but Server B should still be pinned to another NUMA node"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_fa182c85","line":976,"range":{"start_line":970,"start_character":0,"end_line":976,"end_character":44},"updated":"2020-05-26 18:35:14.000000000","message":"this is only true if the nice is on numa node 0\n\nyou should comment out this check and add a todo to renable it after nova guarantees that","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":967,"context_line":"            )"},{"line_number":968,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":969,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":"            # Server A should pin to pCPUs of the NUMA node with affinity to"},{"line_number":972,"context_line":"            # SR-IOV nic"},{"line_number":973,"context_line":"            self.assertEqual(cpu_pins_a, set(cpus_with_nic_affinity), \u0027Server \u0027"},{"line_number":974,"context_line":"                             \u0027%s pCPUs expected to be %s but instead are %s\u0027"},{"line_number":975,"context_line":"                             % (server_a[\u0027id\u0027], cpus_with_nic_affinity,"},{"line_number":976,"context_line":"                                cpu_pins_a))"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"            # Server A should \u0027fill\u0027 available pCPUs of NUMA node with SR-IOV"},{"line_number":979,"context_line":"            # affinity but Server B should still be pinned to another NUMA node"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_15eb31b0","line":976,"range":{"start_line":970,"start_character":0,"end_line":976,"end_character":44},"in_reply_to":"ff570b3c_fa182c85","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":975,"context_line":"                             % (server_a[\u0027id\u0027], cpus_with_nic_affinity,"},{"line_number":976,"context_line":"                                cpu_pins_a))"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"            # Server A should \u0027fill\u0027 available pCPUs of NUMA node with SR-IOV"},{"line_number":979,"context_line":"            # affinity but Server B should still be pinned to another NUMA node"},{"line_number":980,"context_line":"            self.assertTrue(cpu_pins_b.issubset("},{"line_number":981,"context_line":"                            set(cpu_dedicated_list)),"},{"line_number":982,"context_line":"                            \u0027Expected pCPUs for server %s \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_352115a1","line":979,"range":{"start_line":978,"start_character":12,"end_line":979,"end_character":79},"updated":"2020-05-26 18:35:14.000000000","message":"again this is not really correct. \nif it lands on the same numa ndoe because of how you created the flavor yes it should but if the nic is move to numa node 1 it will not pass. although in that case it would fail at the previous check and not get here.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":975,"context_line":"                             % (server_a[\u0027id\u0027], cpus_with_nic_affinity,"},{"line_number":976,"context_line":"                                cpu_pins_a))"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"            # Server A should \u0027fill\u0027 available pCPUs of NUMA node with SR-IOV"},{"line_number":979,"context_line":"            # affinity but Server B should still be pinned to another NUMA node"},{"line_number":980,"context_line":"            self.assertTrue(cpu_pins_b.issubset("},{"line_number":981,"context_line":"                            set(cpu_dedicated_list)),"},{"line_number":982,"context_line":"                            \u0027Expected pCPUs for server %s \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_75cf0d57","line":979,"range":{"start_line":978,"start_character":12,"end_line":979,"end_character":79},"in_reply_to":"ff570b3c_352115a1","updated":"2020-05-26 19:47:53.000000000","message":"Done","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":977,"context_line":""},{"line_number":978,"context_line":"            # Server A should \u0027fill\u0027 available pCPUs of NUMA node with SR-IOV"},{"line_number":979,"context_line":"            # affinity but Server B should still be pinned to another NUMA node"},{"line_number":980,"context_line":"            self.assertTrue(cpu_pins_b.issubset("},{"line_number":981,"context_line":"                            set(cpu_dedicated_list)),"},{"line_number":982,"context_line":"                            \u0027Expected pCPUs for server %s \u0027"},{"line_number":983,"context_line":"                            \u0027to be subset of %s but instead are %s\u0027 %"},{"line_number":984,"context_line":"                            (server_b[\u0027id\u0027], cpu_dedicated_list, cpu_pins_b))"},{"line_number":985,"context_line":""},{"line_number":986,"context_line":"            # Validate servers A and B have correct sr-iov interface"},{"line_number":987,"context_line":"            # information in the xml. Its type and vlan should be accurate."}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_b53405e0","line":984,"range":{"start_line":980,"start_character":11,"end_line":984,"end_character":77},"updated":"2020-05-26 18:35:14.000000000","message":"this assert that server b is pinned to a subset of the dedicated cpu btu it does not asert that it it is on the numa node that is seperate form the sriov nic or that it does not over lap with server a so its not really doing what the comment says its doing.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":977,"context_line":""},{"line_number":978,"context_line":"            # Server A should \u0027fill\u0027 available pCPUs of NUMA node with SR-IOV"},{"line_number":979,"context_line":"            # affinity but Server B should still be pinned to another NUMA node"},{"line_number":980,"context_line":"            self.assertTrue(cpu_pins_b.issubset("},{"line_number":981,"context_line":"                            set(cpu_dedicated_list)),"},{"line_number":982,"context_line":"                            \u0027Expected pCPUs for server %s \u0027"},{"line_number":983,"context_line":"                            \u0027to be subset of %s but instead are %s\u0027 %"},{"line_number":984,"context_line":"                            (server_b[\u0027id\u0027], cpu_dedicated_list, cpu_pins_b))"},{"line_number":985,"context_line":""},{"line_number":986,"context_line":"            # Validate servers A and B have correct sr-iov interface"},{"line_number":987,"context_line":"            # information in the xml. Its type and vlan should be accurate."}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_15ee9187","line":984,"range":{"start_line":980,"start_character":11,"end_line":984,"end_character":77},"in_reply_to":"ff570b3c_b53405e0","updated":"2020-05-26 19:47:53.000000000","message":"Until nova guarantees NUMA affinity when the resource(s) are available, I will simply check both servers are up and are a subset of the dedicated policy and they are disjointed to one another.  Once the guarantee is enabled I will uncomment the previous checks and update the second instance check to be a subset of pCPUs from a NUMA node that does not have nic affinity.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"            self.delete_server(server_a[\u0027id\u0027])"},{"line_number":1009,"context_line":"            self.delete_server(server_b[\u0027id\u0027])"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    def test_sriov_affinity_required(self):"},{"line_number":1012,"context_line":"        \"\"\"Validate instance will not schedule to NUMA without nic affinity"},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_155b312e","line":1011,"range":{"start_line":1011,"start_character":8,"end_line":1011,"end_character":36},"updated":"2020-05-26 18:35:14.000000000","message":"this one is correct as the require policy will guarentee that the vm will land on the numa node with the sriov device.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"}],"whitebox_tempest_plugin/api/compute/test_sriov.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ee49ea92ef175f8cba7cff2605d96a02d8e3a325","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.port_b \u003d self._create_sriov_port(network)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _get_expected_xml_interface_type(self, port):"},{"line_number":66,"context_line":"        \"\"\"Return expected domain xml interface type basec on port vnic_type"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        :param port: dictionary with port details"},{"line_number":69,"context_line":"        :return str: the xml interface type."}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_c80294b4","line":66,"range":{"start_line":66,"start_character":53,"end_line":66,"end_character":58},"updated":"2020-05-28 14:52:17.000000000","message":"\"based\"","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"eae98b21e68fc663d458d222962eba63c1914b96","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.port_b \u003d self._create_sriov_port(network)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _get_expected_xml_interface_type(self, port):"},{"line_number":66,"context_line":"        \"\"\"Return expected domain xml interface type basec on port vnic_type"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        :param port: dictionary with port details"},{"line_number":69,"context_line":"        :return str: the xml interface type."}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_3b9f1c04","line":66,"range":{"start_line":66,"start_character":53,"end_line":66,"end_character":58},"in_reply_to":"ff570b3c_c80294b4","updated":"2020-05-28 15:21:30.000000000","message":"Done","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ee49ea92ef175f8cba7cff2605d96a02d8e3a325","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"},{"line_number":106,"context_line":"        vlan_id \u003d \\"},{"line_number":107,"context_line":"            CONF.network_feature_enabled.provider_net_base_segmentation_id"},{"line_number":108,"context_line":"        physical_net \u003d CONF.whitebox_hardware.sriov_physnet"},{"line_number":109,"context_line":"        net_dict \u003d {"},{"line_number":110,"context_line":"            \u0027shared\u0027: True,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_e82af87b","line":107,"range":{"start_line":107,"start_character":41,"end_line":107,"end_character":74},"updated":"2020-05-28 14:52:17.000000000","message":"Don\u0027t we need a skipCheck for this as well then?\n\n\u003clater\u003e I guess not, tempest doesn\u0027t do one [1]\n\n[1] https://opendev.org/openstack/tempest/src/branch/master/tempest/scenario/test_minbw_allocation_placement.py#L107","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"eae98b21e68fc663d458d222962eba63c1914b96","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        \"\"\""},{"line_number":105,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"},{"line_number":106,"context_line":"        vlan_id \u003d \\"},{"line_number":107,"context_line":"            CONF.network_feature_enabled.provider_net_base_segmentation_id"},{"line_number":108,"context_line":"        physical_net \u003d CONF.whitebox_hardware.sriov_physnet"},{"line_number":109,"context_line":"        net_dict \u003d {"},{"line_number":110,"context_line":"            \u0027shared\u0027: True,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_7bb1948f","line":107,"range":{"start_line":107,"start_character":41,"end_line":107,"end_character":74},"in_reply_to":"ff570b3c_e82af87b","updated":"2020-05-28 15:21:30.000000000","message":"I can still add one, for extra stability","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ee49ea92ef175f8cba7cff2605d96a02d8e3a325","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                        port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":143,"context_line":"        return port"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def _get_xml_interface_device(self, server_id, port, interface_type):"},{"line_number":146,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":147,"context_line":"        and interface type. It is technically possible to have multiple ports"},{"line_number":148,"context_line":"        with the same MAC address in an instance, so method functionality may"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_681c2813","line":145,"range":{"start_line":145,"start_character":27,"end_line":145,"end_character":33},"updated":"2020-05-28 14:52:17.000000000","message":"nit: devices, since you\u0027re returning a list","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"eae98b21e68fc663d458d222962eba63c1914b96","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                        port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":143,"context_line":"        return port"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def _get_xml_interface_device(self, server_id, port, interface_type):"},{"line_number":146,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":147,"context_line":"        and interface type. It is technically possible to have multiple ports"},{"line_number":148,"context_line":"        with the same MAC address in an instance, so method functionality may"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_9ba62853","line":145,"range":{"start_line":145,"start_character":27,"end_line":145,"end_character":33},"in_reply_to":"ff570b3c_681c2813","updated":"2020-05-28 15:21:30.000000000","message":"Done","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dd5aca75b8f72ac4f8ee126e9b25d9f589b0f062","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        )"},{"line_number":163,"context_line":"        return interface_list"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _create_cpu_dedicated_list(self, topo, vcpu_count):"},{"line_number":166,"context_line":"        \"\"\"Returns a list of acceptable pCPU\u0027s from every NUMA node found"},{"line_number":167,"context_line":"        in the param topo. List will be used to set cpu_dedicated_set in"},{"line_number":168,"context_line":"        nova.conf."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :param topo: A dict of CPUs of each NUMA node found on the host."},{"line_number":171,"context_line":"        :param vcpu_count: The number of CPUs to use from each NUMA node"},{"line_number":172,"context_line":"        :return list: A list comprised of slices of each NUMA node\u0027s CPUs."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        return [cpu for cpu_list in list(topo.values()) for cpu in"},{"line_number":175,"context_line":"                cpu_list[:vcpu_count]]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_sriov_affinity_preferred(self):"},{"line_number":178,"context_line":"        \"\"\"Validate instance will schedule to NUMA without nic affinity"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_1b9cd85b","line":175,"range":{"start_line":165,"start_character":0,"end_line":175,"end_character":38},"updated":"2020-05-28 15:34:11.000000000","message":"This would get simplified.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7333c65c5413665823e37c5ee2444563b7b9ea0f","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        )"},{"line_number":163,"context_line":"        return interface_list"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def _create_cpu_dedicated_list(self, topo, vcpu_count):"},{"line_number":166,"context_line":"        \"\"\"Returns a list of acceptable pCPU\u0027s from every NUMA node found"},{"line_number":167,"context_line":"        in the param topo. List will be used to set cpu_dedicated_set in"},{"line_number":168,"context_line":"        nova.conf."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        :param topo: A dict of CPUs of each NUMA node found on the host."},{"line_number":171,"context_line":"        :param vcpu_count: The number of CPUs to use from each NUMA node"},{"line_number":172,"context_line":"        :return list: A list comprised of slices of each NUMA node\u0027s CPUs."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        return [cpu for cpu_list in list(topo.values()) for cpu in"},{"line_number":175,"context_line":"                cpu_list[:vcpu_count]]"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_sriov_affinity_preferred(self):"},{"line_number":178,"context_line":"        \"\"\"Validate instance will schedule to NUMA without nic affinity"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_1e8686dc","line":175,"range":{"start_line":165,"start_character":0,"end_line":175,"end_character":38},"in_reply_to":"ff570b3c_1b9cd85b","updated":"2020-05-28 15:46:25.000000000","message":"ack","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dd5aca75b8f72ac4f8ee126e9b25d9f589b0f062","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        \"\"\"Validate instance will schedule to NUMA without nic affinity"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":181,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":182,"context_line":"        variable max_vcpu_count."},{"line_number":183,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":184,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":185,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_3ea54a05","line":182,"range":{"start_line":181,"start_character":49,"end_line":182,"end_character":31},"updated":"2020-05-28 15:34:11.000000000","message":"Why?","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7333c65c5413665823e37c5ee2444563b7b9ea0f","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        \"\"\"Validate instance will schedule to NUMA without nic affinity"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":181,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":182,"context_line":"        variable max_vcpu_count."},{"line_number":183,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":184,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":185,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_fe05927b","line":182,"range":{"start_line":181,"start_character":49,"end_line":182,"end_character":31},"in_reply_to":"ff570b3c_3ea54a05","updated":"2020-05-28 15:46:25.000000000","message":"Maybe it is not a concern, but I\u0027ve been using different hardware for these tests that can range from a couple of cpus per NUMA to 16+ per node. I was using the ceiling as a way to keep the instance deployment somewhat consistent regardless of NUMA topology. If the vCPU flavor size being relatively large relative to other flavors in the test suites is not a problem, this approach can be removed.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"12c5e4adc2790378b057fd71cf2e2701c07e7e7f","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        \"\"\"Validate instance will schedule to NUMA without nic affinity"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":181,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":182,"context_line":"        variable max_vcpu_count."},{"line_number":183,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":184,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":185,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_3e46ea7d","line":182,"range":{"start_line":181,"start_character":49,"end_line":182,"end_character":31},"in_reply_to":"ff570b3c_fe05927b","updated":"2020-05-28 15:50:20.000000000","message":"Ah, I get your reasoning. Still, we run all the tests in serial, so I don\u0027t see why we can\u0027t just set all CPUs in a NUMA node to be PCPUs, and make a flavor with that many CPUs to fill it.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dd5aca75b8f72ac4f8ee126e9b25d9f589b0f062","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":181,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":182,"context_line":"        variable max_vcpu_count."},{"line_number":183,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":184,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":185,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"},{"line_number":186,"context_line":"        every instance created \u0027filling\u0027 a NUMA node."},{"line_number":187,"context_line":"        3. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":188,"context_line":"        4. Validate both instances are deployed"},{"line_number":189,"context_line":"        5. Validate xml description of SR-IOV interface is correct for both"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_fe83d254","line":186,"range":{"start_line":183,"start_character":0,"end_line":186,"end_character":53},"updated":"2020-05-28 15:34:11.000000000","message":"Why not just use the number of CPUs per NUMA node and not bother with the max thing?","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7333c65c5413665823e37c5ee2444563b7b9ea0f","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":181,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":182,"context_line":"        variable max_vcpu_count."},{"line_number":183,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":184,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":185,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"},{"line_number":186,"context_line":"        every instance created \u0027filling\u0027 a NUMA node."},{"line_number":187,"context_line":"        3. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":188,"context_line":"        4. Validate both instances are deployed"},{"line_number":189,"context_line":"        5. Validate xml description of SR-IOV interface is correct for both"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_3e00aa67","line":186,"range":{"start_line":183,"start_character":0,"end_line":186,"end_character":53},"in_reply_to":"ff570b3c_fe83d254","updated":"2020-05-28 15:46:25.000000000","message":"See response to L182.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dd5aca75b8f72ac4f8ee126e9b25d9f589b0f062","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        5. Validate xml description of SR-IOV interface is correct for both"},{"line_number":190,"context_line":"        servers"},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        host \u003d [self.get_ctlplane_address(host) for host in"},{"line_number":193,"context_line":"                self.list_compute_hosts()][0]"},{"line_number":194,"context_line":"        numaclient \u003d clients.NUMAClient(host)"},{"line_number":195,"context_line":"        topo \u003d numaclient.get_host_topology()"},{"line_number":196,"context_line":"        if len(topo) \u003c 2:"},{"line_number":197,"context_line":"            raise self.skipException(\u0027Host needs at least 2 NUMA nodes to \u0027"},{"line_number":198,"context_line":"                                     \u0027validate affinity\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # In order to make sure the pCPU count per NUMA node is the same for"},{"line_number":201,"context_line":"        # every node create a list of the pCPU count for every NUMA node, apply"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_fb892426","line":198,"range":{"start_line":192,"start_character":0,"end_line":198,"end_character":57},"updated":"2020-05-28 15:34:11.000000000","message":"This would get simplified.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7333c65c5413665823e37c5ee2444563b7b9ea0f","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        5. Validate xml description of SR-IOV interface is correct for both"},{"line_number":190,"context_line":"        servers"},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        host \u003d [self.get_ctlplane_address(host) for host in"},{"line_number":193,"context_line":"                self.list_compute_hosts()][0]"},{"line_number":194,"context_line":"        numaclient \u003d clients.NUMAClient(host)"},{"line_number":195,"context_line":"        topo \u003d numaclient.get_host_topology()"},{"line_number":196,"context_line":"        if len(topo) \u003c 2:"},{"line_number":197,"context_line":"            raise self.skipException(\u0027Host needs at least 2 NUMA nodes to \u0027"},{"line_number":198,"context_line":"                                     \u0027validate affinity\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # In order to make sure the pCPU count per NUMA node is the same for"},{"line_number":201,"context_line":"        # every node create a list of the pCPU count for every NUMA node, apply"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_9eee16b2","line":198,"range":{"start_line":192,"start_character":0,"end_line":198,"end_character":57},"in_reply_to":"ff570b3c_fb892426","updated":"2020-05-28 15:46:25.000000000","message":"ack","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dd5aca75b8f72ac4f8ee126e9b25d9f589b0f062","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            raise self.skipException(\u0027Host needs at least 2 NUMA nodes to \u0027"},{"line_number":198,"context_line":"                                     \u0027validate affinity\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # In order to make sure the pCPU count per NUMA node is the same for"},{"line_number":201,"context_line":"        # every node create a list of the pCPU count for every NUMA node, apply"},{"line_number":202,"context_line":"        # a set on the list, and fail if the set length is not equal to one."},{"line_number":203,"context_line":"        if len(self._get_cpus_per_node(topo.values())) !\u003d 1:"},{"line_number":204,"context_line":"            raise self.skipException(\u0027NUMA nodes must have same number of \u0027"},{"line_number":205,"context_line":"                                     \u0027CPUs\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Create cpu_dedicated_list to be used when updating cpu_dedicated_set"},{"line_number":208,"context_line":"        # on the compute host"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_9b72a848","line":205,"range":{"start_line":200,"start_character":0,"end_line":205,"end_character":44},"updated":"2020-05-28 15:34:11.000000000","message":"We can just get rid of this and assume we\u0027ll always have symmetrical topologies.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7333c65c5413665823e37c5ee2444563b7b9ea0f","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            raise self.skipException(\u0027Host needs at least 2 NUMA nodes to \u0027"},{"line_number":198,"context_line":"                                     \u0027validate affinity\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # In order to make sure the pCPU count per NUMA node is the same for"},{"line_number":201,"context_line":"        # every node create a list of the pCPU count for every NUMA node, apply"},{"line_number":202,"context_line":"        # a set on the list, and fail if the set length is not equal to one."},{"line_number":203,"context_line":"        if len(self._get_cpus_per_node(topo.values())) !\u003d 1:"},{"line_number":204,"context_line":"            raise self.skipException(\u0027NUMA nodes must have same number of \u0027"},{"line_number":205,"context_line":"                                     \u0027CPUs\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        # Create cpu_dedicated_list to be used when updating cpu_dedicated_set"},{"line_number":208,"context_line":"        # on the compute host"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_bef31a9e","line":205,"range":{"start_line":200,"start_character":0,"end_line":205,"end_character":44},"in_reply_to":"ff570b3c_9b72a848","updated":"2020-05-28 15:46:25.000000000","message":"ack","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"dd5aca75b8f72ac4f8ee126e9b25d9f589b0f062","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        \"\"\"Validate instance will not schedule to NUMA without nic affinity"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":295,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":296,"context_line":"        variable max_vcpu_count."},{"line_number":297,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":298,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":299,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"},{"line_number":300,"context_line":"        every instance created \u0027filling\u0027 a NUMA node."},{"line_number":301,"context_line":"        3. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":302,"context_line":"        4. Validate only the first instance is created successfully, second"},{"line_number":303,"context_line":"        should fail to deploy"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_fed2b233","line":300,"range":{"start_line":295,"start_character":48,"end_line":300,"end_character":53},"updated":"2020-05-28 15:34:11.000000000","message":"Ditto about the max stuff","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"7333c65c5413665823e37c5ee2444563b7b9ea0f","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        \"\"\"Validate instance will not schedule to NUMA without nic affinity"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        1. Create a list of pCPUs coming from every available NUMA on the host."},{"line_number":295,"context_line":"        The number of pCPUs used from each node should never exceed the class"},{"line_number":296,"context_line":"        variable max_vcpu_count."},{"line_number":297,"context_line":"        2. Create a flavor with preferred NUMA policy and"},{"line_number":298,"context_line":"        hw:cpu_policy\u003ddedicated. The flavor vcpu size will be equal to the"},{"line_number":299,"context_line":"        number of dedicated pCPUs used per NUMA node. This should result in"},{"line_number":300,"context_line":"        every instance created \u0027filling\u0027 a NUMA node."},{"line_number":301,"context_line":"        3. Launch two instances that incorporate the policy and the sr-iov port"},{"line_number":302,"context_line":"        4. Validate only the first instance is created successfully, second"},{"line_number":303,"context_line":"        should fail to deploy"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_1e032675","line":300,"range":{"start_line":295,"start_character":48,"end_line":300,"end_character":53},"in_reply_to":"ff570b3c_fed2b233","updated":"2020-05-28 15:46:25.000000000","message":"See response to L182.","commit_id":"bba6980ee57f564e013fef0ce7b425c37b5bcdae"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"83357e49c012b0d89dd73579c932b90d333cc1a6","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def skip_checks(cls):"},{"line_number":50,"context_line":"        super(SRIOVNumaAffinity, cls).skip_checks()"},{"line_number":51,"context_line":"        # if (CONF.whitebox.max_compute_nodes !\u003d 1):"},{"line_number":52,"context_line":"        #     raise cls.skipException(\u0027Exactly 1 compute node required.\u0027)"},{"line_number":53,"context_line":"        if (CONF.network.port_vnic_type not in [\u0027direct\u0027, \u0027macvtap\u0027]):"},{"line_number":54,"context_line":"            raise cls.skipException(\u0027Tests are designed for vnic types \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"46bc30ee_95b5551f","line":51,"updated":"2020-12-14 20:19:06.000000000","message":"nit: remove this entirely I guess?","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"61ba45ed48d313500ac0144014fd23fe1963a07b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def skip_checks(cls):"},{"line_number":50,"context_line":"        super(SRIOVNumaAffinity, cls).skip_checks()"},{"line_number":51,"context_line":"        # if (CONF.whitebox.max_compute_nodes !\u003d 1):"},{"line_number":52,"context_line":"        #     raise cls.skipException(\u0027Exactly 1 compute node required.\u0027)"},{"line_number":53,"context_line":"        if (CONF.network.port_vnic_type not in [\u0027direct\u0027, \u0027macvtap\u0027]):"},{"line_number":54,"context_line":"            raise cls.skipException(\u0027Tests are designed for vnic types \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"8ac69bcd_a2fd9767","line":51,"in_reply_to":"46bc30ee_95b5551f","updated":"2020-12-14 21:17:23.000000000","message":"Done","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"83357e49c012b0d89dd73579c932b90d333cc1a6","unresolved":true,"context_lines":[{"line_number":74,"context_line":"        cls.networks_client \u003d cls.os_admin.networks_client"},{"line_number":75,"context_line":"        cls.subnets_client \u003d cls.os_admin.subnets_client"},{"line_number":76,"context_line":"        cls.ports_client \u003d cls.os_admin.ports_client"},{"line_number":77,"context_line":"        # cls.agg_client \u003d cls.os_admin.aggregates_client"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def setUp(self):"},{"line_number":80,"context_line":"        super(SRIOVNumaAffinity, self).setUp()"}],"source_content_type":"text/x-python","patch_set":9,"id":"fe8591d0_382f9816","line":77,"updated":"2020-12-14 20:19:06.000000000","message":"nit: useless comment?","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"3aa0a8a9a161b851e6159a3546a58ef770781e9c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        cls.networks_client \u003d cls.os_admin.networks_client"},{"line_number":75,"context_line":"        cls.subnets_client \u003d cls.os_admin.subnets_client"},{"line_number":76,"context_line":"        cls.ports_client \u003d cls.os_admin.ports_client"},{"line_number":77,"context_line":"        # cls.agg_client \u003d cls.os_admin.aggregates_client"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def setUp(self):"},{"line_number":80,"context_line":"        super(SRIOVNumaAffinity, self).setUp()"}],"source_content_type":"text/x-python","patch_set":9,"id":"0e7b99f7_b2d30b34","line":77,"in_reply_to":"fe8591d0_382f9816","updated":"2020-12-16 02:27:33.000000000","message":"Done","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"83357e49c012b0d89dd73579c932b90d333cc1a6","unresolved":true,"context_lines":[{"line_number":89,"context_line":"        :return str: the xml interface type."},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":"        vnic_type \u003d port[\u0027port\u0027][\u0027binding:vnic_type\u0027]"},{"line_number":92,"context_line":"        # NOTE: SR-IOV Port binding vnic type has been known to cause confusion"},{"line_number":93,"context_line":"        # when mapping the value to the underlying instance XML. A vnic_type"},{"line_number":94,"context_line":"        # that is direct is a \u0027hostdev\u0027 or Host device assignment that is"},{"line_number":95,"context_line":"        # is passing the device directly from the host to the guest. A"}],"source_content_type":"text/x-python","patch_set":9,"id":"a9a60c46_c6ee6095","line":92,"updated":"2020-12-14 20:19:06.000000000","message":"This might feel verbose to someone like Sean, but I like it. Good stuff :)","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"61ba45ed48d313500ac0144014fd23fe1963a07b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        :return str: the xml interface type."},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":"        vnic_type \u003d port[\u0027port\u0027][\u0027binding:vnic_type\u0027]"},{"line_number":92,"context_line":"        # NOTE: SR-IOV Port binding vnic type has been known to cause confusion"},{"line_number":93,"context_line":"        # when mapping the value to the underlying instance XML. A vnic_type"},{"line_number":94,"context_line":"        # that is direct is a \u0027hostdev\u0027 or Host device assignment that is"},{"line_number":95,"context_line":"        # is passing the device directly from the host to the guest. A"}],"source_content_type":"text/x-python","patch_set":9,"id":"8eaaa4b5_32cc5372","line":92,"in_reply_to":"a9a60c46_c6ee6095","updated":"2020-12-14 21:17:23.000000000","message":"Done","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"83357e49c012b0d89dd73579c932b90d333cc1a6","unresolved":true,"context_lines":[{"line_number":101,"context_line":"        elif vnic_type \u003d\u003d \u0027macvtap\u0027:"},{"line_number":102,"context_line":"            return \u0027direct\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def get_source_pci_addr_from_xml_element(self, xml_element):"},{"line_number":105,"context_line":"        \"\"\"Return the source host pci address from the provided xml element"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        :param xml_element: Etree XML element describing a hostdev device"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f359e53_2ad3d5af","line":104,"updated":"2020-12-14 20:19:06.000000000","message":"nit: starts this with an _ to make it consistent with the other _get_expected_blah()?","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"61ba45ed48d313500ac0144014fd23fe1963a07b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        elif vnic_type \u003d\u003d \u0027macvtap\u0027:"},{"line_number":102,"context_line":"            return \u0027direct\u0027"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def get_source_pci_addr_from_xml_element(self, xml_element):"},{"line_number":105,"context_line":"        \"\"\"Return the source host pci address from the provided xml element"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        :param xml_element: Etree XML element describing a hostdev device"}],"source_content_type":"text/x-python","patch_set":9,"id":"98f4c9fd_14456aa0","line":104,"in_reply_to":"7f359e53_2ad3d5af","updated":"2020-12-14 21:17:23.000000000","message":"Done","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"83357e49c012b0d89dd73579c932b90d333cc1a6","unresolved":true,"context_lines":[{"line_number":147,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027]"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        return net, subnet"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _create_sriov_port(self, net):"},{"line_number":153,"context_line":"        \"\"\"Create an sr-iov port with a vnic_type provided by tempest config"}],"source_content_type":"text/x-python","patch_set":9,"id":"78f1e36d_4d152f12","line":150,"updated":"2020-12-14 20:19:06.000000000","message":"nit: this return the subnet as well in the tuple, but the only place where this is called (L81) immediately discards the subnet. Is the returning the subnet still necessary?","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"61ba45ed48d313500ac0144014fd23fe1963a07b","unresolved":true,"context_lines":[{"line_number":147,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027]"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        return net, subnet"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _create_sriov_port(self, net):"},{"line_number":153,"context_line":"        \"\"\"Create an sr-iov port with a vnic_type provided by tempest config"}],"source_content_type":"text/x-python","patch_set":9,"id":"b6ccd28f_2fb7e0f3","line":150,"in_reply_to":"78f1e36d_4d152f12","updated":"2020-12-14 21:17:23.000000000","message":"Nope its not needed, I can always readd it if there comes a time.","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"3aa0a8a9a161b851e6159a3546a58ef770781e9c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            subnet[\u0027subnet\u0027][\u0027id\u0027]"},{"line_number":148,"context_line":"        )"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        return net, subnet"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def _create_sriov_port(self, net):"},{"line_number":153,"context_line":"        \"\"\"Create an sr-iov port with a vnic_type provided by tempest config"}],"source_content_type":"text/x-python","patch_set":9,"id":"bffcf70e_de9318df","line":150,"in_reply_to":"b6ccd28f_2fb7e0f3","updated":"2020-12-16 02:27:33.000000000","message":"Done","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Tests for CPU pinning and CPU thread pinning policies."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Based on tests for the Intel NFV CI."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For more information, refer to:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- https://wiki.openstack.org/wiki/ThirdPartySystems/Intel_NFV_CI"},{"line_number":24,"context_line":"- https://github.com/openstack/intel-nfv-ci-tests"},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from tempest import config"},{"line_number":28,"context_line":"from tempest import exceptions as tempest_exc"}],"source_content_type":"text/x-python","patch_set":10,"id":"bdf33364_f74f5726","line":25,"range":{"start_line":17,"start_character":0,"end_line":25,"end_character":3},"updated":"2021-01-15 16:39:48.000000000","message":"Uh, I think you forgot to remove this after a copy-paste.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"33909cd4710f3ba70352e71a6e37f4e75869247f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Tests for CPU pinning and CPU thread pinning policies."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Based on tests for the Intel NFV CI."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For more information, refer to:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- https://wiki.openstack.org/wiki/ThirdPartySystems/Intel_NFV_CI"},{"line_number":24,"context_line":"- https://github.com/openstack/intel-nfv-ci-tests"},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from tempest import config"},{"line_number":28,"context_line":"from tempest import exceptions as tempest_exc"}],"source_content_type":"text/x-python","patch_set":10,"id":"6256d5fe_8ef37dd7","line":25,"range":{"start_line":17,"start_character":0,"end_line":25,"end_character":3},"in_reply_to":"bdf33364_f74f5726","updated":"2021-01-15 16:52:13.000000000","message":"Done","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ed8166708c0684022e1880ec96a6da60c26c5bb","unresolved":true,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class SRIOVNumaAffinity(base.BaseWhiteboxComputeTest):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":44,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":45,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":46,"context_line":"                 \u0027hw:pci_numa_affinity_policy\u0027: \u0027preferred\u0027}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"ca83078e_e5de4ed3","line":46,"range":{"start_line":43,"start_character":4,"end_line":46,"end_character":60},"updated":"2021-01-13 15:37:06.000000000","message":"not these are relying on implcit numa toplogies form hw:cpu_policy\n\nwe could make that explcit by added hw:numa_nodes\u003d1 but its strictly not needed","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94a70649043534d48abaeacfe397aee79ff4c419","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class SRIOVNumaAffinity(base.BaseWhiteboxComputeTest):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    required \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":44,"context_line":"                \u0027hw:pci_numa_affinity_policy\u0027: \u0027required\u0027}"},{"line_number":45,"context_line":"    preferred \u003d {\u0027hw:cpu_policy\u0027: \u0027dedicated\u0027,"},{"line_number":46,"context_line":"                 \u0027hw:pci_numa_affinity_policy\u0027: \u0027preferred\u0027}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"b5c10dcc_6f24d752","line":46,"range":{"start_line":43,"start_character":4,"end_line":46,"end_character":60},"in_reply_to":"ca83078e_e5de4ed3","updated":"2021-01-13 15:55:06.000000000","message":"Ack","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ed8166708c0684022e1880ec96a6da60c26c5bb","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"},{"line_number":123,"context_line":"        vlan_id \u003d \\"},{"line_number":124,"context_line":"            CONF.network_feature_enabled.provider_net_base_segmentation_id"},{"line_number":125,"context_line":"        physical_net \u003d CONF.whitebox_hardware.sriov_physnet"},{"line_number":126,"context_line":"        net_dict \u003d {"},{"line_number":127,"context_line":"            \u0027shared\u0027: True,"},{"line_number":128,"context_line":"            \u0027provider:network_type\u0027: \u0027vlan\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"d4370bc6_520f03be","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":59},"updated":"2021-01-13 15:37:06.000000000","message":"this limits us to testing with a singel physnet but i guess that is ok for now.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94a70649043534d48abaeacfe397aee79ff4c419","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"},{"line_number":123,"context_line":"        vlan_id \u003d \\"},{"line_number":124,"context_line":"            CONF.network_feature_enabled.provider_net_base_segmentation_id"},{"line_number":125,"context_line":"        physical_net \u003d CONF.whitebox_hardware.sriov_physnet"},{"line_number":126,"context_line":"        net_dict \u003d {"},{"line_number":127,"context_line":"            \u0027shared\u0027: True,"},{"line_number":128,"context_line":"            \u0027provider:network_type\u0027: \u0027vlan\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"edb79c68_cb619356","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":59},"in_reply_to":"d4370bc6_520f03be","updated":"2021-01-13 15:55:06.000000000","message":"Ack, I have a couple other functional/integration tests I am in the process of adding to WB.  But I\u0027m hoping afterwards to add more scenario style tests some of which would leverage multi-nic deployments for the guest(s). I can revisit the approach then if thats ok.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        name_net \u003d data_utils.rand_name(self.__class__.__name__)"},{"line_number":123,"context_line":"        vlan_id \u003d \\"},{"line_number":124,"context_line":"            CONF.network_feature_enabled.provider_net_base_segmentation_id"},{"line_number":125,"context_line":"        physical_net \u003d CONF.whitebox_hardware.sriov_physnet"},{"line_number":126,"context_line":"        net_dict \u003d {"},{"line_number":127,"context_line":"            \u0027shared\u0027: True,"},{"line_number":128,"context_line":"            \u0027provider:network_type\u0027: \u0027vlan\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"41c4df02_5f5f6c7c","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":59},"in_reply_to":"edb79c68_cb619356","updated":"2021-01-15 16:39:48.000000000","message":"Yeah, I\u0027m not sure trying to future proof this too much is worth it. Since as far as we know we (Red Hat) are the only users of whitebox, we can change the nature of the sriov_physnet config option as necessary in the future without concern to impact.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ed8166708c0684022e1880ec96a6da60c26c5bb","unresolved":true,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _get_xml_interface_devices(self, server_id, port, interface_type):"},{"line_number":163,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":164,"context_line":"        and interface type. It is technically possible to have multiple ports"},{"line_number":165,"context_line":"        with the same MAC address in an instance, so method functionality may"},{"line_number":166,"context_line":"        break in the future."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        :param server_id: str, id of the instance to analyze"},{"line_number":169,"context_line":"        :param port: dictionary describing port to find"}],"source_content_type":"text/x-python","patch_set":10,"id":"747ee32e_15043658","line":166,"range":{"start_line":164,"start_character":28,"end_line":166,"end_character":28},"updated":"2021-01-13 15:37:06.000000000","message":"if we want to support driect-physical at some point it also does not have a mac\nin the xml and you would have to match on the pci address via the port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027pci_slot\u0027]","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94a70649043534d48abaeacfe397aee79ff4c419","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def _get_xml_interface_devices(self, server_id, port, interface_type):"},{"line_number":163,"context_line":"        \"\"\"Returns xml interface element that matches provided port mac"},{"line_number":164,"context_line":"        and interface type. It is technically possible to have multiple ports"},{"line_number":165,"context_line":"        with the same MAC address in an instance, so method functionality may"},{"line_number":166,"context_line":"        break in the future."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        :param server_id: str, id of the instance to analyze"},{"line_number":169,"context_line":"        :param port: dictionary describing port to find"}],"source_content_type":"text/x-python","patch_set":10,"id":"e6a8b90f_9b36b0eb","line":166,"range":{"start_line":164,"start_character":28,"end_line":166,"end_character":28},"in_reply_to":"747ee32e_15043658","updated":"2021-01-13 15:55:06.000000000","message":"Ack","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":true,"context_lines":[{"line_number":205,"context_line":"                                             \u0027nova-compute\u0027,"},{"line_number":206,"context_line":"                                             self.os_admin.services_client)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        with whitebox_utils.multicontext("},{"line_number":209,"context_line":"            host_sm.config_options((\u0027compute\u0027, \u0027cpu_dedicated_set\u0027,"},{"line_number":210,"context_line":"                                   cpu_dedicated_str))):"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"6c6e3fcf_9452b7e2","line":208,"updated":"2021-01-15 16:39:48.000000000","message":"You don\u0027t need multicontext here, there\u0027s a single host service manager.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"33909cd4710f3ba70352e71a6e37f4e75869247f","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                                             \u0027nova-compute\u0027,"},{"line_number":206,"context_line":"                                             self.os_admin.services_client)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        with whitebox_utils.multicontext("},{"line_number":209,"context_line":"            host_sm.config_options((\u0027compute\u0027, \u0027cpu_dedicated_set\u0027,"},{"line_number":210,"context_line":"                                   cpu_dedicated_str))):"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"f5bef604_60fde7a6","line":208,"in_reply_to":"6c6e3fcf_9452b7e2","updated":"2021-01-15 16:52:13.000000000","message":"Done","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":true,"context_lines":[{"line_number":210,"context_line":"                                   cpu_dedicated_str))):"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            flavor \u003d self.create_flavor("},{"line_number":213,"context_line":"                vcpus\u003dlen(CONF.whitebox_hardware.cpu_topology[\u00270\u0027]),"},{"line_number":214,"context_line":"                extra_specs\u003dself.preferred"},{"line_number":215,"context_line":"            )"},{"line_number":216,"context_line":"            server_a \u003d self.create_test_server("}],"source_content_type":"text/x-python","patch_set":10,"id":"e006f773_98af9baf","line":213,"updated":"2021-01-15 16:39:48.000000000","message":"Note to self: this will get pinned to the first NUMA node.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ed8166708c0684022e1880ec96a6da60c26c5bb","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":229,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"            # TODO(jparker): Until Nova guarantees NUMA affinity when the"},{"line_number":232,"context_line":"            # policy is preferred, gathering pCPUs with nic affinity and"},{"line_number":233,"context_line":"            # validating the instance has NUMA affinity will remain commented"},{"line_number":234,"context_line":"            # out. A basic cpu pin check wil be conducted instead."},{"line_number":235,"context_line":"            # pci_address \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"585bb982_c83b9f37","line":232,"range":{"start_line":231,"start_character":29,"end_line":232,"end_character":34},"updated":"2021-01-13 15:37:06.000000000","message":"it will never guarentee it it will alwasy be best effort.\nthat said we should sort in the futrue to ensure it when its a valid option.\n\nwhen we do i would prefer this to be asserted in a sperate test rather then in this one directly.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"33909cd4710f3ba70352e71a6e37f4e75869247f","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":229,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"            # TODO(jparker): Until Nova guarantees NUMA affinity when the"},{"line_number":232,"context_line":"            # policy is preferred, gathering pCPUs with nic affinity and"},{"line_number":233,"context_line":"            # validating the instance has NUMA affinity will remain commented"},{"line_number":234,"context_line":"            # out. A basic cpu pin check wil be conducted instead."},{"line_number":235,"context_line":"            # pci_address \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"8c661230_feeef70a","line":232,"range":{"start_line":231,"start_character":29,"end_line":232,"end_character":34},"in_reply_to":"4e13c808_3a7fcd1a","updated":"2021-01-15 16:52:13.000000000","message":"It tests it in the sense that the server_a should fill all pCPU\u0027s of NUMA node 0 and server_b will still deploy even though the preferred NUMA node has been filled by server_a.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94a70649043534d48abaeacfe397aee79ff4c419","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":229,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"            # TODO(jparker): Until Nova guarantees NUMA affinity when the"},{"line_number":232,"context_line":"            # policy is preferred, gathering pCPUs with nic affinity and"},{"line_number":233,"context_line":"            # validating the instance has NUMA affinity will remain commented"},{"line_number":234,"context_line":"            # out. A basic cpu pin check wil be conducted instead."},{"line_number":235,"context_line":"            # pci_address \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"c59942fd_5ea14886","line":232,"range":{"start_line":231,"start_character":29,"end_line":232,"end_character":34},"in_reply_to":"585bb982_c83b9f37","updated":"2021-01-13 15:55:06.000000000","message":"Ack, I\u0027ll simply remove this comment block and it can be properly addressed as a separate testscase when it is a valid option.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"53f17eae5cc499368e67c9da4c70e312d6a16232","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":229,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"            # TODO(jparker): Until Nova guarantees NUMA affinity when the"},{"line_number":232,"context_line":"            # policy is preferred, gathering pCPUs with nic affinity and"},{"line_number":233,"context_line":"            # validating the instance has NUMA affinity will remain commented"},{"line_number":234,"context_line":"            # out. A basic cpu pin check wil be conducted instead."},{"line_number":235,"context_line":"            # pci_address \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"fc234a8e_97fbc9e2","line":232,"range":{"start_line":231,"start_character":29,"end_line":232,"end_character":34},"in_reply_to":"8c661230_feeef70a","updated":"2021-01-15 17:02:07.000000000","message":"This assumes that there are PCI devices on NUMA node 0 and 1... There could be NUMA nodes 3 and 4, with PCI devices there and nothing on 0 and 1, and these tests would still pass, so I\u0027m not sure what we\u0027re actually validating...\n\nWould it make more sense to add config option describing the NUMA affinity of the deployment\u0027s PCI devices (assuming all compute hosts have the same)? With that information, we could make more intelligent tests...","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":true,"context_lines":[{"line_number":228,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":229,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"            # TODO(jparker): Until Nova guarantees NUMA affinity when the"},{"line_number":232,"context_line":"            # policy is preferred, gathering pCPUs with nic affinity and"},{"line_number":233,"context_line":"            # validating the instance has NUMA affinity will remain commented"},{"line_number":234,"context_line":"            # out. A basic cpu pin check wil be conducted instead."},{"line_number":235,"context_line":"            # pci_address \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"4e13c808_3a7fcd1a","line":232,"range":{"start_line":231,"start_character":29,"end_line":232,"end_character":34},"in_reply_to":"c59942fd_5ea14886","updated":"2021-01-15 16:39:48.000000000","message":"So this isn\u0027t actually testing NUMA affinity at all, but rather just SRIOV ports? Why not rename the test method, remove the `preferred` policy bit, and remove this comment altogether?","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"33c80e201e6ebc273cab8a40dead61666b4f7d7f","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":229,"context_line":"            cpu_pins_b \u003d self.get_pinning_as_set(server_b[\u0027id\u0027])"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"            # TODO(jparker): Until Nova guarantees NUMA affinity when the"},{"line_number":232,"context_line":"            # policy is preferred, gathering pCPUs with nic affinity and"},{"line_number":233,"context_line":"            # validating the instance has NUMA affinity will remain commented"},{"line_number":234,"context_line":"            # out. A basic cpu pin check wil be conducted instead."},{"line_number":235,"context_line":"            # pci_address \u003d \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"c1f7bf7e_c1640810","line":232,"range":{"start_line":231,"start_character":29,"end_line":232,"end_character":34},"in_reply_to":"fc234a8e_97fbc9e2","updated":"2021-01-15 23:34:35.000000000","message":"Based on IRC discussion, new config parameter will be introduced to map physnet to NUMA affinity.  pCPU\u0027s will be gathered based around this mapping instead of NUMA 0.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":true,"context_lines":[{"line_number":315,"context_line":"        host_sm \u003d clients.NovaServiceManager(host, \u0027nova-compute\u0027,"},{"line_number":316,"context_line":"                                             self.os_admin.services_client)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        with whitebox_utils.multicontext("},{"line_number":319,"context_line":"            host_sm.config_options((\u0027compute\u0027, \u0027cpu_dedicated_set\u0027,"},{"line_number":320,"context_line":"                                   cpu_dedicated_str))):"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5e85605e_29168c4c","line":318,"updated":"2021-01-15 16:39:48.000000000","message":"Ditto re:multicontext","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"33909cd4710f3ba70352e71a6e37f4e75869247f","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        host_sm \u003d clients.NovaServiceManager(host, \u0027nova-compute\u0027,"},{"line_number":316,"context_line":"                                             self.os_admin.services_client)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        with whitebox_utils.multicontext("},{"line_number":319,"context_line":"            host_sm.config_options((\u0027compute\u0027, \u0027cpu_dedicated_set\u0027,"},{"line_number":320,"context_line":"                                   cpu_dedicated_str))):"},{"line_number":321,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"38610185_7b9f4e70","line":318,"in_reply_to":"5e85605e_29168c4c","updated":"2021-01-15 16:52:13.000000000","message":"Done","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"801a96f7e9d968e5e2c4b2054ccc49adc6feb86a","unresolved":true,"context_lines":[{"line_number":367,"context_line":"            numa_node \u003d \\"},{"line_number":368,"context_line":"                numaclient.get_numa_affinity_from_pci_address(pci_address)"},{"line_number":369,"context_line":"            cpus_with_nic_affinity \u003d \\"},{"line_number":370,"context_line":"                CONF.whitebox_hardware.cpu_topology[\u0027%s\u0027 % numa_node]"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":373,"context_line":"            self.assertEqual(cpu_pins_a, set(cpus_with_nic_affinity),"}],"source_content_type":"text/x-python","patch_set":10,"id":"bafcc1e7_4d59078a","line":370,"updated":"2021-01-15 16:39:48.000000000","message":"nit: or just str(numa_node)? :)","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"33909cd4710f3ba70352e71a6e37f4e75869247f","unresolved":false,"context_lines":[{"line_number":367,"context_line":"            numa_node \u003d \\"},{"line_number":368,"context_line":"                numaclient.get_numa_affinity_from_pci_address(pci_address)"},{"line_number":369,"context_line":"            cpus_with_nic_affinity \u003d \\"},{"line_number":370,"context_line":"                CONF.whitebox_hardware.cpu_topology[\u0027%s\u0027 % numa_node]"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"            cpu_pins_a \u003d self.get_pinning_as_set(server_a[\u0027id\u0027])"},{"line_number":373,"context_line":"            self.assertEqual(cpu_pins_a, set(cpus_with_nic_affinity),"}],"source_content_type":"text/x-python","patch_set":10,"id":"93b10721_b29b4f18","line":370,"in_reply_to":"bafcc1e7_4d59078a","updated":"2021-01-15 16:52:13.000000000","message":"doh, thanks much simpler.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ed8166708c0684022e1880ec96a6da60c26c5bb","unresolved":true,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"            # NOTE(jparker) At this point we have to manually delete the"},{"line_number":380,"context_line":"            # server before the config_option() context manager reverts"},{"line_number":381,"context_line":"            # any config changes it made. This is Nova bug 1836945."},{"line_number":382,"context_line":"            self.delete_server(server_a[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"e86cccef_6d0e94cc","line":381,"range":{"start_line":381,"start_character":42,"end_line":381,"end_character":67},"updated":"2021-01-13 15:37:06.000000000","message":"yes and no\nyou are not allowed to adjust the cpu config option if vms are on the host.\nthat said we can protect against that to  some degree but it will never be a suported\noperation so even when that bug is resolved you should still delete the server now.","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94a70649043534d48abaeacfe397aee79ff4c419","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"            # NOTE(jparker) At this point we have to manually delete the"},{"line_number":380,"context_line":"            # server before the config_option() context manager reverts"},{"line_number":381,"context_line":"            # any config changes it made. This is Nova bug 1836945."},{"line_number":382,"context_line":"            self.delete_server(server_a[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"ef5113ed_b2e3c5c7","line":381,"range":{"start_line":381,"start_character":42,"end_line":381,"end_character":67},"in_reply_to":"e86cccef_6d0e94cc","updated":"2021-01-13 15:55:06.000000000","message":"Ack","commit_id":"5945c55e7fee80c144ae910c3366768f73efef84"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9a9167268ab94e0e4acd7b6e1fc6c21867957d15","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Tests for CPU pinning and CPU thread pinning policies."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Based on tests for the Intel NFV CI."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For more information, refer to:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- https://wiki.openstack.org/wiki/ThirdPartySystems/Intel_NFV_CI"},{"line_number":24,"context_line":"- https://github.com/openstack/intel-nfv-ci-tests"},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from tempest import config"},{"line_number":28,"context_line":"from tempest import exceptions as tempest_exc"}],"source_content_type":"text/x-python","patch_set":12,"id":"33fd3f78_b1f28708","line":25,"range":{"start_line":17,"start_character":0,"end_line":25,"end_character":3},"updated":"2021-01-18 19:51:32.000000000","message":"Uh, this comment is still here :)","commit_id":"d7a797b6e66f2327b737dc3fd8553388127ec7e7"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b36c095bf7a294c12c538fc61544c7cbbb0a9b47","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"\"\"\"Tests for CPU pinning and CPU thread pinning policies."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Based on tests for the Intel NFV CI."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"For more information, refer to:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- https://wiki.openstack.org/wiki/ThirdPartySystems/Intel_NFV_CI"},{"line_number":24,"context_line":"- https://github.com/openstack/intel-nfv-ci-tests"},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from tempest import config"},{"line_number":28,"context_line":"from tempest import exceptions as tempest_exc"}],"source_content_type":"text/x-python","patch_set":12,"id":"07952c6a_00a0cd75","line":25,"range":{"start_line":17,"start_character":0,"end_line":25,"end_character":3},"in_reply_to":"33fd3f78_b1f28708","updated":"2021-01-18 19:56:40.000000000","message":"Ugh, sorry I\u0027m not sure how this is still here.","commit_id":"d7a797b6e66f2327b737dc3fd8553388127ec7e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"66dff9718af89e2673ee3055dbb730699a5226d0","unresolved":true,"context_lines":[{"line_number":183,"context_line":"        second_node \u003d list(filter(lambda x: x !\u003d affinity_node, numa_nodes))[0]"},{"line_number":184,"context_line":"        # Create a cpu_dedicated_set comprised of the PCPU\u0027s of both NUMA Nodes"},{"line_number":185,"context_line":"        cpu_dedicated_set \u003d \\"},{"line_number":186,"context_line":"            CONF.whitebox_hardware.cpu_topology[affinity_node] + \\"},{"line_number":187,"context_line":"            CONF.whitebox_hardware.cpu_topology[second_node]"},{"line_number":188,"context_line":"        cpu_dedicated_str \u003d self._get_cpu_spec(cpu_dedicated_set)"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"4f9c78bf_279f4af0","line":186,"updated":"2021-01-25 20:28:26.000000000","message":"I\u0027m kinda wondering if this is necessary... You\u0027re effectively making all host CPUs available to pin on. Isn\u0027t the same thing achieved by just not setting it at all?","commit_id":"d224fb0c21cd55fa1435469615d03d7bb4a92469"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"cd02e69ab49ccd010207301d56a15a08e10fcf65","unresolved":true,"context_lines":[{"line_number":183,"context_line":"        second_node \u003d list(filter(lambda x: x !\u003d affinity_node, numa_nodes))[0]"},{"line_number":184,"context_line":"        # Create a cpu_dedicated_set comprised of the PCPU\u0027s of both NUMA Nodes"},{"line_number":185,"context_line":"        cpu_dedicated_set \u003d \\"},{"line_number":186,"context_line":"            CONF.whitebox_hardware.cpu_topology[affinity_node] + \\"},{"line_number":187,"context_line":"            CONF.whitebox_hardware.cpu_topology[second_node]"},{"line_number":188,"context_line":"        cpu_dedicated_str \u003d self._get_cpu_spec(cpu_dedicated_set)"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"97697a16_a54e4706","line":186,"in_reply_to":"4f9c78bf_279f4af0","updated":"2021-01-25 20:51:07.000000000","message":"Correct I am setting all cpus from the Node with affinity and another Node without. I believe 17+ is not going to supporting pinning instances without explicitly setting cpu_dedicated_set.  So to future proof the test I believe it should remain to explicitly set the parameter.  An alternative would be to simply set all host pCPUs as dedicated and since the vcpu size is enough to fill the NUMA Node with affinity then it could still effectively test preferred when the second VM is deployed, wdyt?","commit_id":"d224fb0c21cd55fa1435469615d03d7bb4a92469"}],"whitebox_tempest_plugin/api/compute/test_vgpu.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"83357e49c012b0d89dd73579c932b90d333cc1a6","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        bus \u003d pci_addr_element.get(\u0027bus\u0027).replace(\u00270x\u0027, \u0027\u0027)"},{"line_number":79,"context_line":"        slot \u003d pci_addr_element.get(\u0027slot\u0027).replace(\u00270x\u0027, \u0027\u0027)"},{"line_number":80,"context_line":"        func \u003d pci_addr_element.get(\u0027function\u0027).replace(\u00270x\u0027, \u0027\u0027)"},{"line_number":81,"context_line":"        pci_address \u003d base.get_pci_address(domain, bus, slot, func)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # Validate the vendor id is present in the output"},{"line_number":84,"context_line":"        cmd \u003d \"cat /sys/bus/pci/devices/%s/vendor\" % pci_address"}],"source_content_type":"text/x-python","patch_set":9,"id":"aea547a7_cb0eae2e","line":81,"updated":"2020-12-14 20:19:06.000000000","message":"You moved this to utils, not base. CI didn\u0027t pick it up because the VGPU tests don\u0027t run upstream.","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"61ba45ed48d313500ac0144014fd23fe1963a07b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        bus \u003d pci_addr_element.get(\u0027bus\u0027).replace(\u00270x\u0027, \u0027\u0027)"},{"line_number":79,"context_line":"        slot \u003d pci_addr_element.get(\u0027slot\u0027).replace(\u00270x\u0027, \u0027\u0027)"},{"line_number":80,"context_line":"        func \u003d pci_addr_element.get(\u0027function\u0027).replace(\u00270x\u0027, \u0027\u0027)"},{"line_number":81,"context_line":"        pci_address \u003d base.get_pci_address(domain, bus, slot, func)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # Validate the vendor id is present in the output"},{"line_number":84,"context_line":"        cmd \u003d \"cat /sys/bus/pci/devices/%s/vendor\" % pci_address"}],"source_content_type":"text/x-python","patch_set":9,"id":"9bbef139_2cffde66","line":81,"in_reply_to":"aea547a7_cb0eae2e","updated":"2020-12-14 21:17:23.000000000","message":"Done","commit_id":"a2563453c98f8a5c0c4aebcb534f9e5c9790bbf4"}],"whitebox_tempest_plugin/config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        help\u003d\u0027The vendor id of the underlying vgpu hardware of the compute. \u0027"},{"line_number":144,"context_line":"             \u0027An example with Nvidia would be 10de\u0027),"},{"line_number":145,"context_line":"    cfg.IntOpt("},{"line_number":146,"context_line":"        \u0027numa_node_with_affinity_to_nic\u0027,"},{"line_number":147,"context_line":"        default\u003dNone,"},{"line_number":148,"context_line":"        help\u003d\u0027The NUMA node id that has affinity with the nic port \u0027"},{"line_number":149,"context_line":"             \u0027used during testing.\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d579b993","line":146,"range":{"start_line":146,"start_character":9,"end_line":146,"end_character":39},"updated":"2020-05-26 18:35:14.000000000","message":"im not really sure you should be passing this as a config option. you should be able to figure this out by looking at the numa affinity fo the device you whitelisted in teh pci white list.\n\nso it fells like we should not need this since you would have had to already config the pci whitelist in the nova config.\n\nwe could keep this but it feels error prone.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        help\u003d\u0027The vendor id of the underlying vgpu hardware of the compute. \u0027"},{"line_number":144,"context_line":"             \u0027An example with Nvidia would be 10de\u0027),"},{"line_number":145,"context_line":"    cfg.IntOpt("},{"line_number":146,"context_line":"        \u0027numa_node_with_affinity_to_nic\u0027,"},{"line_number":147,"context_line":"        default\u003dNone,"},{"line_number":148,"context_line":"        help\u003d\u0027The NUMA node id that has affinity with the nic port \u0027"},{"line_number":149,"context_line":"             \u0027used during testing.\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_50e2d702","line":146,"range":{"start_line":146,"start_character":9,"end_line":146,"end_character":39},"in_reply_to":"ff570b3c_d579b993","updated":"2020-05-26 19:47:53.000000000","message":"So as you mentioned earlier that multiple nics can be associated to a physnet, if this and the sriov_physnet parameters were to be dropped what would be the best course of action for selecting the desired physnet/interface to use when testing?  I.e. if the deployment has multiple nics mapped to a single physnet, without passing any tempest.conf values whats the best way to filter down to the nic that should be tested?","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"46a2485748d15a13e1e6a9d53ff53cab2879ef68","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        help\u003d\u0027The NUMA node id that has affinity with the nic port \u0027"},{"line_number":149,"context_line":"             \u0027used during testing.\u0027),"},{"line_number":150,"context_line":"    cfg.StrOpt("},{"line_number":151,"context_line":"        \u0027sriov_physnet\u0027,"},{"line_number":152,"context_line":"        default\u003dNone,"},{"line_number":153,"context_line":"        help\u003d\u0027The physnet to use when creating sr-iov ports\u0027),"},{"line_number":154,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_7596ed96","line":151,"range":{"start_line":151,"start_character":9,"end_line":151,"end_character":22},"updated":"2020-05-26 18:35:14.000000000","message":"again this si also somethign you would have set in the pciwhitelist and configured in your deployment tool at when you deployed openstack.\nwe could include this but we should not have to as we should have this info else where in the job config.\n\nhow do you expect this to be set in the jobs configuration.","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"53c4c0f27c6c8055f57f0b782e99637a9204769f","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        help\u003d\u0027The NUMA node id that has affinity with the nic port \u0027"},{"line_number":149,"context_line":"             \u0027used during testing.\u0027),"},{"line_number":150,"context_line":"    cfg.StrOpt("},{"line_number":151,"context_line":"        \u0027sriov_physnet\u0027,"},{"line_number":152,"context_line":"        default\u003dNone,"},{"line_number":153,"context_line":"        help\u003d\u0027The physnet to use when creating sr-iov ports\u0027),"},{"line_number":154,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d008a7da","line":151,"range":{"start_line":151,"start_character":9,"end_line":151,"end_character":22},"in_reply_to":"ff570b3c_7596ed96","updated":"2020-05-26 19:47:53.000000000","message":"If the deployment only has one physnet to sr-iov nic mapping I can search the respective pciwhitelist/deployment mappings and avoid needing to pass this.  Maybe I could add a skip check for deployments that have multiple physnet to sriov mappings?  Or use the first found physnet to sriov nic mapping?","commit_id":"2ba670f50b327fd340c4c2a00fbb74a045aa590b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9a9167268ab94e0e4acd7b6e1fc6c21867957d15","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        \u0027sriov_physnet\u0027,"},{"line_number":196,"context_line":"        default\u003dNone,"},{"line_number":197,"context_line":"        help\u003d\u0027The physnet to use when creating sr-iov ports\u0027),"},{"line_number":198,"context_line":"    cfg.Opt("},{"line_number":199,"context_line":"        \u0027physnet_numa_affinity_map\u0027,"},{"line_number":200,"context_line":"        type\u003dtypes.Dict(types.String()),"},{"line_number":201,"context_line":"        help\u003d\u0027An affinity mapping of physnets to their respective NUMA Node. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"902d75a6_4ffe69c4","line":198,"updated":"2021-01-18 19:51:32.000000000","message":"This is both future-looking and limiting. Future-looking because it\u0027s a dict that support multiple physnets while the previous option is a single physnet name, and limiting it rules out having the same physnet on multiple NICs. I thought we concluded in gmeet that we\u0027d have a single integer here as well?","commit_id":"d7a797b6e66f2327b737dc3fd8553388127ec7e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ab093424d39a3fba860e0cb227ce9a63f64b72bc","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        \u0027sriov_physnet\u0027,"},{"line_number":196,"context_line":"        default\u003dNone,"},{"line_number":197,"context_line":"        help\u003d\u0027The physnet to use when creating sr-iov ports\u0027),"},{"line_number":198,"context_line":"    cfg.Opt("},{"line_number":199,"context_line":"        \u0027physnet_numa_affinity_map\u0027,"},{"line_number":200,"context_line":"        type\u003dtypes.Dict(types.String()),"},{"line_number":201,"context_line":"        help\u003d\u0027An affinity mapping of physnets to their respective NUMA Node. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"385b18ab_20bdcb00","line":198,"in_reply_to":"2fb53ddf_782c9189","updated":"2021-01-18 20:11:00.000000000","message":"I think are choices are either:\n\n1. dead stupid, physnet_numa_affinity \u003d \u003cinteger\u003e. This makes the most assumptions, has the least flexibility, but is the easiest.\n\n2. covers everything: physnet_numa_affities \u003d {\u003cphysnet name\u003e: \u003clist of numa nodes\u003e, ... }. most flexible and future proff, \n\nI was saying 1 on our call, I\u0027m not opposed to 2 either. Anything in between tries to get the best of both and ends up with the worse instead. Also, nothing\u0027s stopping from doing 1 now, then deprecating it and replacing it with 2 down the road.","commit_id":"d7a797b6e66f2327b737dc3fd8553388127ec7e7"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"717d1a1737d7d04f3d9bfd26916e96b72e93ee2e","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        \u0027sriov_physnet\u0027,"},{"line_number":196,"context_line":"        default\u003dNone,"},{"line_number":197,"context_line":"        help\u003d\u0027The physnet to use when creating sr-iov ports\u0027),"},{"line_number":198,"context_line":"    cfg.Opt("},{"line_number":199,"context_line":"        \u0027physnet_numa_affinity_map\u0027,"},{"line_number":200,"context_line":"        type\u003dtypes.Dict(types.String()),"},{"line_number":201,"context_line":"        help\u003d\u0027An affinity mapping of physnets to their respective NUMA Node. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"fd28a63f_50c21ca8","line":198,"in_reply_to":"385b18ab_20bdcb00","updated":"2021-01-18 20:38:35.000000000","message":"Yup makes sense I\u0027ll do 1 now, we can cross the bridge for 2 if/when we get there.","commit_id":"d7a797b6e66f2327b737dc3fd8553388127ec7e7"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"b36c095bf7a294c12c538fc61544c7cbbb0a9b47","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        \u0027sriov_physnet\u0027,"},{"line_number":196,"context_line":"        default\u003dNone,"},{"line_number":197,"context_line":"        help\u003d\u0027The physnet to use when creating sr-iov ports\u0027),"},{"line_number":198,"context_line":"    cfg.Opt("},{"line_number":199,"context_line":"        \u0027physnet_numa_affinity_map\u0027,"},{"line_number":200,"context_line":"        type\u003dtypes.Dict(types.String()),"},{"line_number":201,"context_line":"        help\u003d\u0027An affinity mapping of physnets to their respective NUMA Node. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"2fb53ddf_782c9189","line":198,"in_reply_to":"902d75a6_4ffe69c4","updated":"2021-01-18 19:56:40.000000000","message":"Maybe I misunderstood but I though the value of each dict is an int versus a list of ints if there are multi-numa nics. Did you have something in mind like just physnet_numa_affinity \u003d 0 for now?","commit_id":"d7a797b6e66f2327b737dc3fd8553388127ec7e7"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"66dff9718af89e2673ee3055dbb730699a5226d0","unresolved":true,"context_lines":[{"line_number":208,"context_line":"    cfg.IntOpt("},{"line_number":209,"context_line":"        \u0027physnet_numa_affinity\u0027,"},{"line_number":210,"context_line":"        default\u003dNone,"},{"line_number":211,"context_line":"        help\u003d\"A one to one affinity mapping of the parameter sriov_phsynet to \""},{"line_number":212,"context_line":"        \"its underlying NIC\u0027s NUMA Node. A physnet mapping of one to many \""},{"line_number":213,"context_line":"        \"NUMAs is not supported with this parameter\")"},{"line_number":214,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"6a908521_9c1eba7d","line":211,"range":{"start_line":211,"start_character":36,"end_line":211,"end_character":43},"updated":"2021-01-25 20:28:26.000000000","message":"nit: kinda weird to refer to an IntOpt as a mapping - should be rephrased to something like \"the NUMA node affinity of the NIC connected to the physnet defined in ``sriov_physnet`` config option.\"","commit_id":"d224fb0c21cd55fa1435469615d03d7bb4a92469"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"cd02e69ab49ccd010207301d56a15a08e10fcf65","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    cfg.IntOpt("},{"line_number":209,"context_line":"        \u0027physnet_numa_affinity\u0027,"},{"line_number":210,"context_line":"        default\u003dNone,"},{"line_number":211,"context_line":"        help\u003d\"A one to one affinity mapping of the parameter sriov_phsynet to \""},{"line_number":212,"context_line":"        \"its underlying NIC\u0027s NUMA Node. A physnet mapping of one to many \""},{"line_number":213,"context_line":"        \"NUMAs is not supported with this parameter\")"},{"line_number":214,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"b532cc15_5488f9bf","line":211,"range":{"start_line":211,"start_character":36,"end_line":211,"end_character":43},"in_reply_to":"6a908521_9c1eba7d","updated":"2021-01-25 20:51:07.000000000","message":"Done","commit_id":"d224fb0c21cd55fa1435469615d03d7bb4a92469"}]}
