)]}'
{"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4e5ee722b677617b62f2a47f978cd657a330d08d","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        \u0027name\u0027: \u0027private-network\u0027,"},{"line_number":1286,"context_line":"        \u0027admin_state_up\u0027: True,"},{"line_number":1287,"context_line":"        \u0027tenant_id\u0027: tenant_id,"},{"line_number":1288,"context_line":"        \u0027id\u0027: \u00271b70879f-fd00-411e-8ea9-143e7820e61d\u0027,"},{"line_number":1289,"context_line":"        \u0027shared\u0027: False,"},{"line_number":1290,"context_line":"        \u0027provider:physical_network\u0027: \u0027physnet2\u0027,"},{"line_number":1291,"context_line":"        \"provider:network_type\": \"vlan\","}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_219a9513","line":1288,"range":{"start_line":1288,"start_character":15,"end_line":1288,"end_character":52},"updated":"2019-02-25 18:34:29.000000000","message":"curious why we don\u0027t use sentinels for these","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        \u0027name\u0027: \u0027private-network\u0027,"},{"line_number":1286,"context_line":"        \u0027admin_state_up\u0027: True,"},{"line_number":1287,"context_line":"        \u0027tenant_id\u0027: tenant_id,"},{"line_number":1288,"context_line":"        \u0027id\u0027: \u00271b70879f-fd00-411e-8ea9-143e7820e61d\u0027,"},{"line_number":1289,"context_line":"        \u0027shared\u0027: False,"},{"line_number":1290,"context_line":"        \u0027provider:physical_network\u0027: \u0027physnet2\u0027,"},{"line_number":1291,"context_line":"        \"provider:network_type\": \"vlan\","}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_91486ab3","line":1288,"range":{"start_line":1288,"start_character":15,"end_line":1288,"end_character":52},"in_reply_to":"9fdfeff1_219a9513","updated":"2019-02-25 22:05:04.000000000","message":"agreed it would be nice to do that...","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        \u0027name\u0027: \u0027private-network\u0027,"},{"line_number":1286,"context_line":"        \u0027admin_state_up\u0027: True,"},{"line_number":1287,"context_line":"        \u0027tenant_id\u0027: tenant_id,"},{"line_number":1288,"context_line":"        \u0027id\u0027: \u00271b70879f-fd00-411e-8ea9-143e7820e61d\u0027,"},{"line_number":1289,"context_line":"        \u0027shared\u0027: False,"},{"line_number":1290,"context_line":"        \u0027provider:physical_network\u0027: \u0027physnet2\u0027,"},{"line_number":1291,"context_line":"        \"provider:network_type\": \"vlan\","}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_24d92c82","line":1288,"range":{"start_line":1288,"start_character":15,"end_line":1288,"end_character":52},"in_reply_to":"9fdfeff1_91486ab3","updated":"2019-02-26 16:16:31.000000000","message":"I can change this to uuids.network_2 but I don\u0027t see why this would help. This is the only place this uuid is written down.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"        self.test \u003d test"},{"line_number":1389,"context_line":"        # The fixture allows port update so we need to deepcopy the class"},{"line_number":1390,"context_line":"        # variables to avoid test case interference."},{"line_number":1391,"context_line":"        self._ports \u003d {"},{"line_number":1392,"context_line":"            NeutronFixture.port_1[\u0027id\u0027]: copy.deepcopy(NeutronFixture.port_1),"},{"line_number":1393,"context_line":"            NeutronFixture.port_with_resource_request[\u0027id\u0027]:"},{"line_number":1394,"context_line":"                copy.deepcopy(NeutronFixture.port_with_resource_request)"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_441b3ec9","line":1391,"updated":"2019-02-24 01:02:27.000000000","message":"You might want to copy your comment from the test about why port_with_sriov_resource_request isn\u0027t added here (because it\u0027s in network2 which would lead to ambiguous network errors in some tests).","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"        self.test \u003d test"},{"line_number":1389,"context_line":"        # The fixture allows port update so we need to deepcopy the class"},{"line_number":1390,"context_line":"        # variables to avoid test case interference."},{"line_number":1391,"context_line":"        self._ports \u003d {"},{"line_number":1392,"context_line":"            NeutronFixture.port_1[\u0027id\u0027]: copy.deepcopy(NeutronFixture.port_1),"},{"line_number":1393,"context_line":"            NeutronFixture.port_with_resource_request[\u0027id\u0027]:"},{"line_number":1394,"context_line":"                copy.deepcopy(NeutronFixture.port_with_resource_request)"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_c8adee84","line":1391,"in_reply_to":"9fdfeff1_441b3ec9","updated":"2019-02-25 16:59:44.000000000","message":"Done in a fup","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4c797dd0090222f1ed634277694388ef6c7bc1a9","unresolved":false,"context_lines":[{"line_number":5605,"context_line":"        server \u003d self._wait_for_state_change(self.admin_api, server, \u0027ACTIVE\u0027)"},{"line_number":5606,"context_line":""},{"line_number":5607,"context_line":"        ovs_port \u003d self.neutron.show_port(ovs_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":5608,"context_line":"        sriov_port \u003d self.neutron.show_port(sriov_port[\u0027id\u0027])[\u0027port\u0027]"},{"line_number":5609,"context_line":""},{"line_number":5610,"context_line":"        allocations \u003d self.placement_api.get("},{"line_number":5611,"context_line":"            \u0027/allocations/%s\u0027 % server[\u0027id\u0027]).body[\u0027allocations\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"3f79a3b5_079f81b2","line":5608,"range":{"start_line":5608,"start_character":44,"end_line":5608,"end_character":54},"updated":"2018-12-17 15:12:44.000000000","message":"NOTE to the reader: this is not a real SRIOV port as the vnic_type is not set properly. I should change this test to talk about two arbitrary ports. This does not change the original intention of the test. Real SRIOV port would work here too, iff there would be PCI devices reported by the virt driver and there would not be more than on PF on the same physnet on the same compute. The two PF on the same physnet on the same compute case is handled later in this series [1].\n\n[1] https://review.openstack.org/#/c/623543","commit_id":"882cb7fdb44d7a1eebd7df1c03bd445a5672d01e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5701,"context_line":"    def setUp(self):"},{"line_number":5702,"context_line":"        # enable PciPassthroughFilter to support SRIOV before the base class"},{"line_number":5703,"context_line":"        # starts the scheduler"},{"line_number":5704,"context_line":"        self.flags(enabled_filters\u003d["},{"line_number":5705,"context_line":"            \"RetryFilter\","},{"line_number":5706,"context_line":"            \"AvailabilityZoneFilter\","},{"line_number":5707,"context_line":"            \"ComputeFilter\","},{"line_number":5708,"context_line":"            \"ComputeCapabilitiesFilter\","},{"line_number":5709,"context_line":"            \"ImagePropertiesFilter\","},{"line_number":5710,"context_line":"            \"ServerGroupAntiAffinityFilter\","},{"line_number":5711,"context_line":"            \"ServerGroupAffinityFilter\","},{"line_number":5712,"context_line":"            \"PciPassthroughFilter\","},{"line_number":5713,"context_line":"        ],"},{"line_number":5714,"context_line":"            group\u003d\u0027filter_scheduler\u0027)"},{"line_number":5715,"context_line":""},{"line_number":5716,"context_line":"        # Set passthrough_whitelist before the base class starts the compute"},{"line_number":5717,"context_line":"        # node to match with the PCI devices reported by the"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_24471abf","line":5714,"range":{"start_line":5704,"start_character":8,"end_line":5714,"end_character":37},"updated":"2019-02-24 01:02:27.000000000","message":"Another way I\u0027ve done this is get the existing enabled_filters config value, check for the filter I need and if not in the list I append it and reset the config.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5701,"context_line":"    def setUp(self):"},{"line_number":5702,"context_line":"        # enable PciPassthroughFilter to support SRIOV before the base class"},{"line_number":5703,"context_line":"        # starts the scheduler"},{"line_number":5704,"context_line":"        self.flags(enabled_filters\u003d["},{"line_number":5705,"context_line":"            \"RetryFilter\","},{"line_number":5706,"context_line":"            \"AvailabilityZoneFilter\","},{"line_number":5707,"context_line":"            \"ComputeFilter\","},{"line_number":5708,"context_line":"            \"ComputeCapabilitiesFilter\","},{"line_number":5709,"context_line":"            \"ImagePropertiesFilter\","},{"line_number":5710,"context_line":"            \"ServerGroupAntiAffinityFilter\","},{"line_number":5711,"context_line":"            \"ServerGroupAffinityFilter\","},{"line_number":5712,"context_line":"            \"PciPassthroughFilter\","},{"line_number":5713,"context_line":"        ],"},{"line_number":5714,"context_line":"            group\u003d\u0027filter_scheduler\u0027)"},{"line_number":5715,"context_line":""},{"line_number":5716,"context_line":"        # Set passthrough_whitelist before the base class starts the compute"},{"line_number":5717,"context_line":"        # node to match with the PCI devices reported by the"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_48725e14","line":5714,"range":{"start_line":5704,"start_character":8,"end_line":5714,"end_character":37},"in_reply_to":"9fdfeff1_24471abf","updated":"2019-02-25 16:59:44.000000000","message":"Done in a fup.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5721,"context_line":"        # match based on physnet to our sriov port"},{"line_number":5722,"context_line":"        # \u0027port_with_sriov_resource_request\u0027 as the network of that port points"},{"line_number":5723,"context_line":"        # to physnet2 with the attribute \u0027provider:physical_network\u0027. Nova pci"},{"line_number":5724,"context_line":"        # handling already enforce this rule."},{"line_number":5725,"context_line":"        #"},{"line_number":5726,"context_line":"        # 0000:02:00 and 0000:03:00 are both tagged to physnet2 and therefore"},{"line_number":5727,"context_line":"        # a good match for our sriov port based on physnet. Having two PFs on"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_e41272b4","line":5724,"range":{"start_line":5724,"start_character":27,"end_line":5724,"end_character":34},"updated":"2019-02-24 01:02:27.000000000","message":"enforces","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5721,"context_line":"        # match based on physnet to our sriov port"},{"line_number":5722,"context_line":"        # \u0027port_with_sriov_resource_request\u0027 as the network of that port points"},{"line_number":5723,"context_line":"        # to physnet2 with the attribute \u0027provider:physical_network\u0027. Nova pci"},{"line_number":5724,"context_line":"        # handling already enforce this rule."},{"line_number":5725,"context_line":"        #"},{"line_number":5726,"context_line":"        # 0000:02:00 and 0000:03:00 are both tagged to physnet2 and therefore"},{"line_number":5727,"context_line":"        # a good match for our sriov port based on physnet. Having two PFs on"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_e8ea3272","line":5724,"range":{"start_line":5724,"start_character":27,"end_line":5724,"end_character":34},"in_reply_to":"9fdfeff1_e41272b4","updated":"2019-02-25 16:59:44.000000000","message":"Done in a fup","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5725,"context_line":"        #"},{"line_number":5726,"context_line":"        # 0000:02:00 and 0000:03:00 are both tagged to physnet2 and therefore"},{"line_number":5727,"context_line":"        # a good match for our sriov port based on physnet. Having two PFs on"},{"line_number":5728,"context_line":"        # the same physnet will allows us to test the placement allocation -"},{"line_number":5729,"context_line":"        # physical allocation matching based on the bandwidth allocation"},{"line_number":5730,"context_line":"        # in the future."},{"line_number":5731,"context_line":"        self.flags(passthrough_whitelist\u003d"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_041696a8","line":5728,"range":{"start_line":5728,"start_character":32,"end_line":5728,"end_character":38},"updated":"2019-02-24 01:02:27.000000000","message":"allow","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5725,"context_line":"        #"},{"line_number":5726,"context_line":"        # 0000:02:00 and 0000:03:00 are both tagged to physnet2 and therefore"},{"line_number":5727,"context_line":"        # a good match for our sriov port based on physnet. Having two PFs on"},{"line_number":5728,"context_line":"        # the same physnet will allows us to test the placement allocation -"},{"line_number":5729,"context_line":"        # physical allocation matching based on the bandwidth allocation"},{"line_number":5730,"context_line":"        # in the future."},{"line_number":5731,"context_line":"        self.flags(passthrough_whitelist\u003d"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_88036642","line":5728,"range":{"start_line":5728,"start_character":32,"end_line":5728,"end_character":38},"in_reply_to":"9fdfeff1_041696a8","updated":"2019-02-25 16:59:44.000000000","message":"Done in a fup.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5727,"context_line":"        # a good match for our sriov port based on physnet. Having two PFs on"},{"line_number":5728,"context_line":"        # the same physnet will allows us to test the placement allocation -"},{"line_number":5729,"context_line":"        # physical allocation matching based on the bandwidth allocation"},{"line_number":5730,"context_line":"        # in the future."},{"line_number":5731,"context_line":"        self.flags(passthrough_whitelist\u003d"},{"line_number":5732,"context_line":"            ["},{"line_number":5733,"context_line":"                jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_11b9da77","line":5730,"updated":"2019-02-25 22:05:04.000000000","message":"excellent code comment above explaining the fixtures and how they map to the request groups and resource providers.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5728,"context_line":"        # the same physnet will allows us to test the placement allocation -"},{"line_number":5729,"context_line":"        # physical allocation matching based on the bandwidth allocation"},{"line_number":5730,"context_line":"        # in the future."},{"line_number":5731,"context_line":"        self.flags(passthrough_whitelist\u003d"},{"line_number":5732,"context_line":"            ["},{"line_number":5733,"context_line":"                jsonutils.dumps("},{"line_number":5734,"context_line":"                    {"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_c40f2e86","line":5731,"range":{"start_line":5731,"start_character":19,"end_line":5731,"end_character":40},"updated":"2019-02-24 01:02:27.000000000","message":"nit: it might be nice to define this in FakeDriverWithPciResources so it\u0027s all defined in one place and then the test can get it from the driver class (self.compute.driver.passthrough_whitelist or whatever). Just a thought to lessen the tightly coupled nature of things (and for re-use in other test classes).","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5728,"context_line":"        # the same physnet will allows us to test the placement allocation -"},{"line_number":5729,"context_line":"        # physical allocation matching based on the bandwidth allocation"},{"line_number":5730,"context_line":"        # in the future."},{"line_number":5731,"context_line":"        self.flags(passthrough_whitelist\u003d"},{"line_number":5732,"context_line":"            ["},{"line_number":5733,"context_line":"                jsonutils.dumps("},{"line_number":5734,"context_line":"                    {"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_2836fa04","line":5731,"range":{"start_line":5731,"start_character":19,"end_line":5731,"end_character":40},"in_reply_to":"9fdfeff1_c40f2e86","updated":"2019-02-25 16:59:44.000000000","message":"That is a good point. I tried to move it there now but I failed. This config needs to be in place before the compute starts and it seems that the FakeDriver is initialized too late for this config change. So I created a fixture instead and moved the fixture next the the driver.\n\nDone in a fup.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5747,"context_line":"                            \"bus\": \"02\","},{"line_number":5748,"context_line":"                            \"slot\": \"00\","},{"line_number":5749,"context_line":"                            \"function\": \".*\"},"},{"line_number":5750,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5751,"context_line":"                    }"},{"line_number":5752,"context_line":"                ),"},{"line_number":5753,"context_line":"                jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_44425ead","line":5750,"range":{"start_line":5750,"start_character":44,"end_line":5750,"end_character":54},"updated":"2019-02-24 01:02:27.000000000","message":"You could further enforce this by setting this to self.neutron.network_2[\u0027provider:physical_network\u0027] with a \"# physnet2\" comment or something, but the note above also suffices.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5747,"context_line":"                            \"bus\": \"02\","},{"line_number":5748,"context_line":"                            \"slot\": \"00\","},{"line_number":5749,"context_line":"                            \"function\": \".*\"},"},{"line_number":5750,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5751,"context_line":"                    }"},{"line_number":5752,"context_line":"                ),"},{"line_number":5753,"context_line":"                jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_247a8c23","line":5750,"range":{"start_line":5750,"start_character":44,"end_line":5750,"end_character":54},"in_reply_to":"9fdfeff1_3495ece4","updated":"2019-02-26 16:16:31.000000000","message":"This whole thing is moved to the FakeDriver as Matt requested BUT there I have no access to the NeutronFixture so this will not be de-duplicated.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5747,"context_line":"                            \"bus\": \"02\","},{"line_number":5748,"context_line":"                            \"slot\": \"00\","},{"line_number":5749,"context_line":"                            \"function\": \".*\"},"},{"line_number":5750,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5751,"context_line":"                    }"},{"line_number":5752,"context_line":"                ),"},{"line_number":5753,"context_line":"                jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_eb846c0d","line":5750,"range":{"start_line":5750,"start_character":44,"end_line":5750,"end_character":54},"in_reply_to":"9fdfeff1_44425ead","updated":"2019-02-25 16:59:44.000000000","message":"That enforcement is in place already in NeutronFixture.network_2","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e21cd3cb6df94af55ddbc69a5b205bef24093ee4","unresolved":false,"context_lines":[{"line_number":5747,"context_line":"                            \"bus\": \"02\","},{"line_number":5748,"context_line":"                            \"slot\": \"00\","},{"line_number":5749,"context_line":"                            \"function\": \".*\"},"},{"line_number":5750,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5751,"context_line":"                    }"},{"line_number":5752,"context_line":"                ),"},{"line_number":5753,"context_line":"                jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_3495ece4","line":5750,"range":{"start_line":5750,"start_character":44,"end_line":5750,"end_character":54},"in_reply_to":"9fdfeff1_717ce6b5","updated":"2019-02-25 22:37:34.000000000","message":"\u003e I think Matt was just saying it would be useful to simply replace\n \u003e \"physnet2\" with self.neutron.network_2[\u0027provider:physical_network\u0027]\n \u003e in order to better indicate that the network_2 fixture is going to\n \u003e map to this SR-IOV PF...\n\nYup.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5747,"context_line":"                            \"bus\": \"02\","},{"line_number":5748,"context_line":"                            \"slot\": \"00\","},{"line_number":5749,"context_line":"                            \"function\": \".*\"},"},{"line_number":5750,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5751,"context_line":"                    }"},{"line_number":5752,"context_line":"                ),"},{"line_number":5753,"context_line":"                jsonutils.dumps("}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_717ce6b5","line":5750,"range":{"start_line":5750,"start_character":44,"end_line":5750,"end_character":54},"in_reply_to":"9fdfeff1_eb846c0d","updated":"2019-02-25 22:05:04.000000000","message":"I think Matt was just saying it would be useful to simply replace \"physnet2\" with self.neutron.network_2[\u0027provider:physical_network\u0027] in order to better indicate that the network_2 fixture is going to map to this SR-IOV PF...","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5757,"context_line":"                            \"bus\": \"03\","},{"line_number":5758,"context_line":"                            \"slot\": \"00\","},{"line_number":5759,"context_line":"                            \"function\": \".*\"},"},{"line_number":5760,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5761,"context_line":"                    }"},{"line_number":5762,"context_line":"                ),"},{"line_number":5763,"context_line":"            ],"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_91794ac6","line":5760,"range":{"start_line":5760,"start_character":43,"end_line":5760,"end_character":55},"updated":"2019-02-25 22:05:04.000000000","message":"same with this.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5757,"context_line":"                            \"bus\": \"03\","},{"line_number":5758,"context_line":"                            \"slot\": \"00\","},{"line_number":5759,"context_line":"                            \"function\": \".*\"},"},{"line_number":5760,"context_line":"                        \"physical_network\": \"physnet2\","},{"line_number":5761,"context_line":"                    }"},{"line_number":5762,"context_line":"                ),"},{"line_number":5763,"context_line":"            ],"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_e46fa45d","line":5760,"range":{"start_line":5760,"start_character":43,"end_line":5760,"end_character":55},"in_reply_to":"9fdfeff1_91794ac6","updated":"2019-02-26 16:16:31.000000000","message":"See above","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_64268219","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"updated":"2019-02-24 01:02:27.000000000","message":"I don\u0027t see this defined in our docs...\n\nhttps://docs.openstack.org/nova/latest/user/flavors.html\n\nAt first I thought this was hw:cpu_thread_policy or something but I guess it\u0027s the request group policy:\n\nhttps://github.com/openstack/nova/blob/c6218428e9b29a2c52808ec7d27b4b21aadc0299/releasenotes/notes/granular-extra-specs-50b26b8f63717942.yaml#L12\n\nLooks like Takashi has a patch:\n\nhttps://review.openstack.org/#/c/621494/\n\nIt would be good to have a comment about what this does and why it\u0027s needed for this test.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cec160c87df45738568ebf80e0244cf8a4194089","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_76527314","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_27e289d5","updated":"2019-02-27 11:04:12.000000000","message":"I agree with the documentation need and even with the extra warning before the a_c query is sent. \n\nI think there is no good default policy from nova perspective either. Isolate for OVS ports are bad as we mostly have one device RP per compute for OVS, the integration bridge. For SIROV both isolate and None could be meaningful in different scenarios in my mind. In a mixed OVS-SRIOV scenario placement will always isolate at least the SIROV from the OVS prots because the VNIC_TYPE trait will be different for these ports.\n\nDefining it in the port is not good either as the group policy never talks about a single group (single port) it is always talks about the relationship between more than one groups (ports). Unfortunately we don\u0027t have such entity on the Nova or Neutron API that can define such relationship. \n\nSo currently the only place we can define this is in the flavor extra_spec. It is not ideal but I have no other place to put it.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e21cd3cb6df94af55ddbc69a5b205bef24093ee4","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_748e14d2","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_31317e0c","updated":"2019-02-25 22:37:34.000000000","message":"\u003e is this going to affect other tests? or are all flavors re-created\n \u003e in a functional test\u0027s setUp() method?\n\nIt should be OK, the flavors are created per test case:\n\nhttps://github.com/openstack/nova/blob/29e5b0ad7bde210f95885656768f0480d06882c0/nova/test.py#L264","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_c4a700a8","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_5cc53c5b","updated":"2019-02-26 16:16:31.000000000","message":"Good point. BUT\n\nI think in placement we did not default the group_policy as we did not know what would be a good default. \n\nNow if I detect in nova that there are more than one request groups but no policy in the flavor then what would be a good  policy value? I think the same reasoning applies here that we don\u0027t know. But then it needs to be a failure.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_31317e0c","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_5cc53c5b","updated":"2019-02-25 22:05:04.000000000","message":"is this going to affect other tests? or are all flavors re-created in a functional test\u0027s setUp() method?","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_ebe78ce2","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_64268219","updated":"2019-02-25 16:59:44.000000000","message":"Good point. Added a note in the fup. Group policy is mandatory on the placement a_c query if there are more than one request groups in the request.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d897fb70ac23540d714bebfc4379c1ca2c4e7613","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_5f82a5c8","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_76527314","updated":"2019-03-01 13:22:39.000000000","message":"Scheduler conf option `default_group_policy`?","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58bc0cdaa15e44928f52ef13d33f43382ff7d5a4","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_27e289d5","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_c4a700a8","updated":"2019-02-26 20:35:40.000000000","message":"There\u0027s a difference between the decision not to default group_policy in placement vs. in nova. In placement, we couldn\u0027t presume to know. In nova before this, when request groups were always in one place (the flavor), and the presence of numbered groups directly mapped to needing group_policy, the same philosophy made sense. But now we\u0027re automatically numbering request groups coming from different places.\n\nSo now you might be using an old non-granular flavor you\u0027ve had around for years, you try to boot with a bandwidth-requesting port, and suddenly you have a failure that says, \u0027The \"group_policy\" parameter is required when specifying more than one \"resources{N}\" parameter.\u0027 But you actually didn\u0027t specify *any* resources{N} parameters, anywhere, even in the ports.\n\nSo if we want to keep this as a failure case, I think we should at least have a courtesy check, before we send the request to placement, that logs a warning message with a more specific explanation: \"Please go RTFM to figure out what this group_policy thing means; and then add it to your flavor, even though it doesn\u0027t make any sense in light of the error you got from placement.\"\n\nAnother option is to allow it to be specified in the binding profile with the resource request. Course, then we have to figure out what to do if it conflicts with one specified in the flavor.\n\nIn either case, there\u0027s the problem that group_policy is documented in placement as relating to numbered groups, but you\u0027re not using any, but you need it anyway. The docs would need to be updated to explain that.\n\n...or we could figure out a reasonable default for this kind of scenario, and log a warning when we use it. If we choose wrong, people either get NoValidHost or they get resources combined in ways they didn\u0027t expect; and they can add their own group_policy to fix it.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4e5ee722b677617b62f2a47f978cd657a330d08d","unresolved":false,"context_lines":[{"line_number":5771,"context_line":"        self.flavor_with_group_policy \u003d self.api.get_flavors()[1]"},{"line_number":5772,"context_line":"        self.admin_api.post_extra_spec("},{"line_number":5773,"context_line":"            self.flavor_with_group_policy[\u0027id\u0027],"},{"line_number":5774,"context_line":"            {\u0027extra_specs\u0027: {\u0027group_policy\u0027: \u0027isolate\u0027}})"},{"line_number":5775,"context_line":""},{"line_number":5776,"context_line":"        self._create_networking_rp_tree(self.compute1_rp_uuid)"},{"line_number":5777,"context_line":""}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_5cc53c5b","line":5774,"range":{"start_line":5774,"start_character":30,"end_line":5774,"end_character":42},"in_reply_to":"9fdfeff1_ebe78ce2","updated":"2019-02-25 18:34:29.000000000","message":"Oh, yeah. The operator is going to get a weird failure if they forget to add this to what could otherwise be a totally non-granular flavor; and then it\u0027s only applicable if they spawn with a port that has a bandwidth request (though it\u0027s ignored otherwise). Seems like the code ought to ensure a group_policy is in the request if resource groups are coming in from places outside of the flavor (port, image, device_profile, ...).\n\nQuestion is, what should the default group_policy be in that case?","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cfe0bd7ad951e4fb62dd226d7092c80cd32e7a8","unresolved":false,"context_lines":[{"line_number":5839,"context_line":"            ovs_bridge_rp_uuid,"},{"line_number":5840,"context_line":"            [self.CUSTOM_VNIC_TYPE_NORMAL, self.CUSTOM_PHYSNET2])"},{"line_number":5841,"context_line":""},{"line_number":5842,"context_line":"    def _create_pf_device_rp("},{"line_number":5843,"context_line":"            self, device_rp_uuid, parent_rp_uuid, inventories, traits,"},{"line_number":5844,"context_line":"            device_rp_name\u003dNone):"},{"line_number":5845,"context_line":"        if not device_rp_name:"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_047bf6f3","line":5842,"range":{"start_line":5842,"start_character":8,"end_line":5842,"end_character":28},"updated":"2019-02-24 01:02:27.000000000","message":"Comments in this method would be good.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9d8074d3ebb575e4fa6cf3deed5e9f45450a284d","unresolved":false,"context_lines":[{"line_number":5839,"context_line":"            ovs_bridge_rp_uuid,"},{"line_number":5840,"context_line":"            [self.CUSTOM_VNIC_TYPE_NORMAL, self.CUSTOM_PHYSNET2])"},{"line_number":5841,"context_line":""},{"line_number":5842,"context_line":"    def _create_pf_device_rp("},{"line_number":5843,"context_line":"            self, device_rp_uuid, parent_rp_uuid, inventories, traits,"},{"line_number":5844,"context_line":"            device_rp_name\u003dNone):"},{"line_number":5845,"context_line":"        if not device_rp_name:"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_4b4498b8","line":5842,"range":{"start_line":5842,"start_character":8,"end_line":5842,"end_character":28},"in_reply_to":"9fdfeff1_047bf6f3","updated":"2019-02-25 16:59:44.000000000","message":"Done in a fup","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5879,"context_line":""},{"line_number":5880,"context_line":"        sriov_agent_rp_uuid \u003d getattr(uuids, compute_rp_uuid + \u0027sriov agent\u0027)"},{"line_number":5881,"context_line":"        agent_rp_req \u003d {"},{"line_number":5882,"context_line":"            \"name\": \"compute0:NIC Switch agent\","},{"line_number":5883,"context_line":"            \"uuid\": sriov_agent_rp_uuid,"},{"line_number":5884,"context_line":"            \"parent_provider_uuid\": compute_rp_uuid"},{"line_number":5885,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_74185475","line":5882,"range":{"start_line":5882,"start_character":21,"end_line":5882,"end_character":29},"updated":"2019-02-25 22:05:04.000000000","message":"should this be hard-coded to compute0? or should this be parameterized to *either* be the compute_rp_uuid *or* a new parameter for the compute provider\u0027s name?","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5879,"context_line":""},{"line_number":5880,"context_line":"        sriov_agent_rp_uuid \u003d getattr(uuids, compute_rp_uuid + \u0027sriov agent\u0027)"},{"line_number":5881,"context_line":"        agent_rp_req \u003d {"},{"line_number":5882,"context_line":"            \"name\": \"compute0:NIC Switch agent\","},{"line_number":5883,"context_line":"            \"uuid\": sriov_agent_rp_uuid,"},{"line_number":5884,"context_line":"            \"parent_provider_uuid\": compute_rp_uuid"},{"line_number":5885,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_e48a44ba","line":5882,"range":{"start_line":5882,"start_character":21,"end_line":5882,"end_character":29},"in_reply_to":"9fdfeff1_74185475","updated":"2019-02-26 16:16:31.000000000","message":"Good point. I think I can default it to the compute_rp_uuid to make it unique. Done in the fup.","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5897,"context_line":"        traits \u003d [self.CUSTOM_VNIC_TYPE_DIRECT, self.CUSTOM_PHYSNET1]"},{"line_number":5898,"context_line":"        self._create_pf_device_rp("},{"line_number":5899,"context_line":"            self.sriov_pf1_rp_uuid, sriov_agent_rp_uuid, inventories, traits,"},{"line_number":5900,"context_line":"            device_rp_name\u003d\"compute0:NIC Switch agent:ens1\")"},{"line_number":5901,"context_line":""},{"line_number":5902,"context_line":"        self.sriov_pf2_rp_uuid \u003d getattr(uuids, sriov_agent_rp_uuid + \u0027PF2\u0027)"},{"line_number":5903,"context_line":"        inventories \u003d {"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_9415b83f","line":5900,"range":{"start_line":5900,"start_character":28,"end_line":5900,"end_character":36},"updated":"2019-02-25 22:05:04.000000000","message":"ditto","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5897,"context_line":"        traits \u003d [self.CUSTOM_VNIC_TYPE_DIRECT, self.CUSTOM_PHYSNET1]"},{"line_number":5898,"context_line":"        self._create_pf_device_rp("},{"line_number":5899,"context_line":"            self.sriov_pf1_rp_uuid, sriov_agent_rp_uuid, inventories, traits,"},{"line_number":5900,"context_line":"            device_rp_name\u003d\"compute0:NIC Switch agent:ens1\")"},{"line_number":5901,"context_line":""},{"line_number":5902,"context_line":"        self.sriov_pf2_rp_uuid \u003d getattr(uuids, sriov_agent_rp_uuid + \u0027PF2\u0027)"},{"line_number":5903,"context_line":"        inventories \u003d {"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_6446547e","line":5900,"range":{"start_line":5900,"start_character":28,"end_line":5900,"end_character":36},"in_reply_to":"9fdfeff1_9415b83f","updated":"2019-02-26 16:16:31.000000000","message":"Done","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5909,"context_line":"        traits \u003d [self.CUSTOM_VNIC_TYPE_DIRECT, self.CUSTOM_PHYSNET2]"},{"line_number":5910,"context_line":"        self._create_pf_device_rp("},{"line_number":5911,"context_line":"            self.sriov_pf2_rp_uuid, sriov_agent_rp_uuid, inventories, traits,"},{"line_number":5912,"context_line":"            device_rp_name\u003d\"compute0:NIC Switch agent:ens2\")"},{"line_number":5913,"context_line":""},{"line_number":5914,"context_line":"        self.sriov_pf3_rp_uuid \u003d getattr(uuids, sriov_agent_rp_uuid + \u0027PF3\u0027)"},{"line_number":5915,"context_line":"        inventories \u003d {}"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_5452f014","line":5912,"range":{"start_line":5912,"start_character":28,"end_line":5912,"end_character":36},"updated":"2019-02-25 22:05:04.000000000","message":"ditto","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5909,"context_line":"        traits \u003d [self.CUSTOM_VNIC_TYPE_DIRECT, self.CUSTOM_PHYSNET2]"},{"line_number":5910,"context_line":"        self._create_pf_device_rp("},{"line_number":5911,"context_line":"            self.sriov_pf2_rp_uuid, sriov_agent_rp_uuid, inventories, traits,"},{"line_number":5912,"context_line":"            device_rp_name\u003d\"compute0:NIC Switch agent:ens2\")"},{"line_number":5913,"context_line":""},{"line_number":5914,"context_line":"        self.sriov_pf3_rp_uuid \u003d getattr(uuids, sriov_agent_rp_uuid + \u0027PF3\u0027)"},{"line_number":5915,"context_line":"        inventories \u003d {}"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_245ccc49","line":5912,"range":{"start_line":5912,"start_character":28,"end_line":5912,"end_character":36},"in_reply_to":"9fdfeff1_5452f014","updated":"2019-02-26 16:16:31.000000000","message":"Done","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f0f2d293efe7bcda3ed8301267c4306b14cb1805","unresolved":false,"context_lines":[{"line_number":5916,"context_line":"        traits \u003d [self.CUSTOM_VNIC_TYPE_DIRECT, self.CUSTOM_PHYSNET2]"},{"line_number":5917,"context_line":"        self._create_pf_device_rp("},{"line_number":5918,"context_line":"            self.sriov_pf3_rp_uuid, sriov_agent_rp_uuid, inventories, traits,"},{"line_number":5919,"context_line":"            device_rp_name\u003d\"compute0:NIC Switch agent:ens3\")"},{"line_number":5920,"context_line":""},{"line_number":5921,"context_line":"    def _create_networking_rp_tree(self, compute_rp_uuid):"},{"line_number":5922,"context_line":"        # let\u0027s simulate what the neutron would do"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_1458e82e","line":5919,"range":{"start_line":5919,"start_character":28,"end_line":5919,"end_character":36},"updated":"2019-02-25 22:05:04.000000000","message":"ditto","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0851292e6e0388708ee8b2c96e2baf1771a58207","unresolved":false,"context_lines":[{"line_number":5916,"context_line":"        traits \u003d [self.CUSTOM_VNIC_TYPE_DIRECT, self.CUSTOM_PHYSNET2]"},{"line_number":5917,"context_line":"        self._create_pf_device_rp("},{"line_number":5918,"context_line":"            self.sriov_pf3_rp_uuid, sriov_agent_rp_uuid, inventories, traits,"},{"line_number":5919,"context_line":"            device_rp_name\u003d\"compute0:NIC Switch agent:ens3\")"},{"line_number":5920,"context_line":""},{"line_number":5921,"context_line":"    def _create_networking_rp_tree(self, compute_rp_uuid):"},{"line_number":5922,"context_line":"        # let\u0027s simulate what the neutron would do"}],"source_content_type":"text/x-python","patch_set":61,"id":"9fdfeff1_a4351cf9","line":5919,"range":{"start_line":5919,"start_character":28,"end_line":5919,"end_character":36},"in_reply_to":"9fdfeff1_1458e82e","updated":"2019-02-26 16:16:31.000000000","message":"Done","commit_id":"b0f795e512416e3934a7e2663f22998f62248cba"}]}
