)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"714e0574df8ddb4747d6a8bf2ac197157ed0869a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update test_port_list_filter_by_ip pass conditions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently this test fails if matching ports are returned from more than"},{"line_number":10,"context_line":"one tenant. This isn\u0027t really an error. This patchset updates the pass"},{"line_number":11,"context_line":"assertions to only check that the created port is in the list of ports"},{"line_number":12,"context_line":"returned, and that every port returned has a matching fixed IP."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_da6599b0","line":10,"range":{"start_line":9,"start_character":10,"end_line":10,"end_character":10},"updated":"2019-08-16 06:09:05.000000000","message":"Is it proper for an non-admin tenant to get ports from other tenant?","commit_id":"7799c947457af97e1d006245a164a2c38b436688"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"9c21f814053d6d0ca4de346fb1721fad7d5df185","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update test_port_list_filter_by_ip pass conditions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently this test fails if matching ports are returned from more than"},{"line_number":10,"context_line":"one tenant. This isn\u0027t really an error. This patchset updates the pass"},{"line_number":11,"context_line":"assertions to only check that the created port is in the list of ports"},{"line_number":12,"context_line":"returned, and that every port returned has a matching fixed IP."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_d119ec87","line":10,"range":{"start_line":9,"start_character":10,"end_line":10,"end_character":10},"in_reply_to":"7faddb67_7adca517","updated":"2019-08-18 03:08:25.000000000","message":"I did retest this with a user account that had _member_ only in multiple projects, and the API response did only return ports from the currently scoped project, so my guess was wrong. However, an account with the admin role would still be able all the ports. I updated the commit message accordingly.","commit_id":"7799c947457af97e1d006245a164a2c38b436688"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"adb4aa2dc46d5f2ce241cd34777cac6bf6abcc3f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update test_port_list_filter_by_ip pass conditions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently this test fails if matching ports are returned from more than"},{"line_number":10,"context_line":"one tenant. This isn\u0027t really an error. This patchset updates the pass"},{"line_number":11,"context_line":"assertions to only check that the created port is in the list of ports"},{"line_number":12,"context_line":"returned, and that every port returned has a matching fixed IP."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_7adca517","line":10,"range":{"start_line":9,"start_character":10,"end_line":10,"end_character":10},"in_reply_to":"7faddb67_da6599b0","updated":"2019-08-16 06:35:51.000000000","message":"For a non-admin, it could be proper if the user account had a role assigned in multiple tenants. In the case when we actually ran into an issue, it happened to be an account which had the admin role.","commit_id":"7799c947457af97e1d006245a164a2c38b436688"},{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"678972b5b483860b432949d3d7ae2ec943814910","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update test_port_list_filter_by_ip pass conditions"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently this test fails if matching ports are returned from more than"},{"line_number":10,"context_line":"one tenant. This isn\u0027t really an error. This patchset updates the pass"},{"line_number":11,"context_line":"assertions to only check that the created port is in the list of ports"},{"line_number":12,"context_line":"returned, and that every port returned has a matching fixed IP."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_51241cc6","line":10,"range":{"start_line":9,"start_character":10,"end_line":10,"end_character":10},"in_reply_to":"7faddb67_da6599b0","updated":"2019-08-18 03:02:53.000000000","message":"It al depends on the downstream RBAC rules in place when running the API tests.  We are seeing that we need to run primary  user as admin due to our changes in RBAC rules and the need to still test the APIs.  We are thinking of submitting a spec to split the credit manager so the primary and alt user can have their own roles assigned for dynamic creds and grouped  apart in preprovision creds so you can change your usr roles according to the RBAC implementation both upstream and downstream. Primary could be admin and Alt be member when testing thing like transfers and private images.\n\nThis is independent from Phil\u0027s [change but would like and feedback before we submit the spec.  We will also bring it up on IRC office hours.  \n\nThank in advance for any input.","commit_id":"7799c947457af97e1d006245a164a2c38b436688"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"df84f1a1284621714acc18d54b4b2ef1dda2e4b3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"port is in the list of ports returned, and that every port returned"},{"line_number":11,"context_line":"has a matching fixed IP."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The check that all the ports in the response are from a single tenant"},{"line_number":14,"context_line":"is retained, so this test is expected to sometimes fail if run with"},{"line_number":15,"context_line":"admin credentials."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ia20af71d031504aa08fc0ea92fd35cbc408edba3"},{"line_number":18,"context_line":"Partial-Bug: #1840401"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"3fa7e38b_15f89a47","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":18},"updated":"2019-12-12 15:03:44.000000000","message":"this can be fixed in separate patch as mentioned in my reply to previous PS comment.","commit_id":"0ff7e3d7204cb5df539f470e759738957ef0c70b"}],"tempest/api/network/base.py":[{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"fff8c5e09938c9a416feb0c4c6e895e7dfddcb4a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":49,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027alt\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # Default to ipv4."},{"line_number":52,"context_line":"    _ip_version \u003d 4"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_44ff8365","line":49,"range":{"start_line":49,"start_character":30,"end_line":49,"end_character":35},"updated":"2019-09-02 22:11:05.000000000","message":"this will provide alt cred to all network test.  Should you just do this in the port class only? if you want to talk on Tuesday reach out to me","commit_id":"763933a5a5533ee79b20f396f6a2fa0767c9dc73"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"ecbed24c069e66480dadf8528a7f0e54c0b8aec8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":49,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027alt\u0027]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    # Default to ipv4."},{"line_number":52,"context_line":"    _ip_version \u003d 4"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_fe886c6b","line":49,"range":{"start_line":49,"start_character":30,"end_line":49,"end_character":35},"in_reply_to":"7faddb67_44ff8365","updated":"2019-09-03 22:16:00.000000000","message":"Maybe. If there is value in the tests to confirm that Neutron list API calls only return things belonging to the current tenant, more tests could be added for all other resource types. Curious to get other opinions.","commit_id":"763933a5a5533ee79b20f396f6a2fa0767c9dc73"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"36da42fd412b08ce9ed66138e2e91008f480fbea","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        network_name \u003d network_name or data_utils.rand_name("},{"line_number":103,"context_line":"            cls.__name__ + \u0027-test-network\u0027)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if not client:"},{"line_number":106,"context_line":"            client \u003d cls.networks_client"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        body \u003d client.create_network(name\u003dnetwork_name, **kwargs)"},{"line_number":109,"context_line":"        network \u003d body[\u0027network\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_b54fea90","line":106,"range":{"start_line":105,"start_character":0,"end_line":106,"end_character":40},"updated":"2019-09-19 15:06:51.000000000","message":"I think the common way to integrate alt_client is to do it in setup_clients. Like here f.e.:\n\nhttps://review.opendev.org/gitweb?p\u003dopenstack/tempest.git;a\u003dblob;f\u003dtempest/api/volume/test_volume_transfers.py;h\u003d4cdf8981e4af98f5d131b09b079b00e6ed311dd8;hb\u003dHEAD#l31","commit_id":"763933a5a5533ee79b20f396f6a2fa0767c9dc73"}],"tempest/api/network/test_ports.py":[{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"552cb6b070aead571c8b473799eed5a2bc1e09ef","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        # Check that we got the desired port"},{"line_number":186,"context_line":"        ports \u003d port_list[\u0027ports\u0027]"},{"line_number":187,"context_line":"        tenant_ids \u003d set([port[\u0027tenant_id\u0027] for port in ports])"},{"line_number":188,"context_line":"        self.assertEqual(len(tenant_ids), 1,"},{"line_number":189,"context_line":"                         \u0027Ports from multiple tenants are in the list resp\u0027)"},{"line_number":190,"context_line":"        port_ids \u003d [port[\u0027id\u0027] for port in ports]"},{"line_number":191,"context_line":"        fixed_ips \u003d [port[\u0027fixed_ips\u0027] for port in ports]"},{"line_number":192,"context_line":"        port_ips \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7e7ebc6a","side":"PARENT","line":189,"range":{"start_line":188,"start_character":0,"end_line":189,"end_character":76},"updated":"2019-08-19 14:30:18.000000000","message":"Why only in this test vs. the other port list tests?","commit_id":"ce682d0312f092018536ee69f2aa18998e1cd31d"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"552cb6b070aead571c8b473799eed5a2bc1e09ef","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":197,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":198,"context_line":"        self.assertIn(port_1_fixed_ip, port_ips)"},{"line_number":199,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_de457045","side":"PARENT","line":198,"range":{"start_line":198,"start_character":8,"end_line":198,"end_character":48},"updated":"2019-08-19 14:30:18.000000000","message":"I think this asserts that the desired IP address is is in any of the ports returned, not in every port returned. 1. This can lead to false pass (if the API didn\u0027t filter correctly and returned extra ports), and 2. The check is redundant if the port_1[\u0027port\u0027][\u0027id\u0027] is in port_ids.","commit_id":"ce682d0312f092018536ee69f2aa18998e1cd31d"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"552cb6b070aead571c8b473799eed5a2bc1e09ef","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":197,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":198,"context_line":"        self.assertIn(port_1_fixed_ip, port_ips)"},{"line_number":199,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless("}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_9e4cd876","side":"PARENT","line":199,"range":{"start_line":199,"start_character":8,"end_line":199,"end_character":50},"updated":"2019-08-19 14:30:18.000000000","message":"I think this asserts that the created network is in any of the ports returned, not in every port returned - the check is redundant if the port_1[\u0027port\u0027][\u0027id\u0027] is in port_ids.","commit_id":"ce682d0312f092018536ee69f2aa18998e1cd31d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4479e753fb735369e35f46f91f171c8bf12e4701","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        # Check that we got the desired port"},{"line_number":186,"context_line":"        ports \u003d port_list[\u0027ports\u0027]"},{"line_number":187,"context_line":"        tenant_ids \u003d set([port[\u0027tenant_id\u0027] for port in ports])"},{"line_number":188,"context_line":"        self.assertEqual(len(tenant_ids), 1,"},{"line_number":189,"context_line":"                         \u0027Ports from multiple tenants are in the list resp\u0027)"},{"line_number":190,"context_line":"        port_ids \u003d [port[\u0027id\u0027] for port in ports]"},{"line_number":191,"context_line":"        fixed_ips \u003d [port[\u0027fixed_ips\u0027] for port in ports]"},{"line_number":192,"context_line":"        port_ips \u003d []"},{"line_number":193,"context_line":"        for addr in fixed_ips:"},{"line_number":194,"context_line":"            port_ips.extend([port[\u0027ip_address\u0027] for port in addr])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":197,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":198,"context_line":"        self.assertIn(port_1_fixed_ip, port_ips)"},{"line_number":199,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless("}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_6fcccc33","side":"PARENT","line":199,"range":{"start_line":188,"start_character":0,"end_line":199,"end_character":50},"updated":"2019-08-19 08:51:26.000000000","message":"all these asserts are good as tests use non-admin cred. In term of pre-provisioned cred also where same tenants can have resources from other tests but these tests check assertIn not assertEqual so there is no problem in that case also.","commit_id":"ce682d0312f092018536ee69f2aa18998e1cd31d"},{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"f45e4ab3001c37e29d11b0d42389407ed2471cd1","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        # Check that we got the desired port"},{"line_number":186,"context_line":"        ports \u003d port_list[\u0027ports\u0027]"},{"line_number":187,"context_line":"        tenant_ids \u003d set([port[\u0027tenant_id\u0027] for port in ports])"},{"line_number":188,"context_line":"        self.assertEqual(len(tenant_ids), 1,"},{"line_number":189,"context_line":"                         \u0027Ports from multiple tenants are in the list resp\u0027)"},{"line_number":190,"context_line":"        port_ids \u003d [port[\u0027id\u0027] for port in ports]"},{"line_number":191,"context_line":"        fixed_ips \u003d [port[\u0027fixed_ips\u0027] for port in ports]"},{"line_number":192,"context_line":"        port_ips \u003d []"},{"line_number":193,"context_line":"        for addr in fixed_ips:"},{"line_number":194,"context_line":"            port_ips.extend([port[\u0027ip_address\u0027] for port in addr])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":197,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":198,"context_line":"        self.assertIn(port_1_fixed_ip, port_ips)"},{"line_number":199,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless("}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7142116b","side":"PARENT","line":199,"range":{"start_line":188,"start_character":0,"end_line":199,"end_character":50},"in_reply_to":"7faddb67_6fcccc33","updated":"2019-08-23 12:02:17.000000000","message":"the name f the test is test_port_list_filter_by_ip, should we have 2 tests one call test_port_list_filter_by_ip that does not care the creds are admin and one called test_port_list_filter_by_ip_non_admin that will run if the creds are non_admin and then we can support downstream CI that have different creds?\n\nAlso we can improve the available creds by splitting the cred primary and alt coming from different collections.\n\nlet me know what you think","commit_id":"ce682d0312f092018536ee69f2aa18998e1cd31d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a0540342a03a6d2815df3996ae5f63c8e51e10e8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        # Check that we got the desired port"},{"line_number":186,"context_line":"        ports \u003d port_list[\u0027ports\u0027]"},{"line_number":187,"context_line":"        tenant_ids \u003d set([port[\u0027tenant_id\u0027] for port in ports])"},{"line_number":188,"context_line":"        self.assertEqual(len(tenant_ids), 1,"},{"line_number":189,"context_line":"                         \u0027Ports from multiple tenants are in the list resp\u0027)"},{"line_number":190,"context_line":"        port_ids \u003d [port[\u0027id\u0027] for port in ports]"},{"line_number":191,"context_line":"        fixed_ips \u003d [port[\u0027fixed_ips\u0027] for port in ports]"},{"line_number":192,"context_line":"        port_ips \u003d []"},{"line_number":193,"context_line":"        for addr in fixed_ips:"},{"line_number":194,"context_line":"            port_ips.extend([port[\u0027ip_address\u0027] for port in addr])"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":197,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":198,"context_line":"        self.assertIn(port_1_fixed_ip, port_ips)"},{"line_number":199,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"},{"line_number":202,"context_line":"    @testtools.skipUnless("}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_f5f13e6b","side":"PARENT","line":199,"range":{"start_line":188,"start_character":0,"end_line":199,"end_character":50},"in_reply_to":"7faddb67_7142116b","updated":"2019-12-12 15:02:49.000000000","message":"actually, single-tenant ports assert is part of filter IP functionality. if any non-admin able to get other tenant ports then it should fail.\n\nBut i agree on Doug proposal to separate thes two asserts. \n- remove the tenant assert from this test and add new test \u0027test_port_list_filter_tenant_isoloation\u0027 which can check noth admin and non-admin user.","commit_id":"ce682d0312f092018536ee69f2aa18998e1cd31d"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"0426aeb1e9f74ea7c0ed5964968a2124d6ad63e2","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":201,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":202,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":203,"context_line":"        # Check that every port has a fixed_ip that matches the query"},{"line_number":204,"context_line":"        for addr in fixed_ips:"},{"line_number":205,"context_line":"            port_ips \u003d [port[\u0027ip_address\u0027] for port in addr]"},{"line_number":206,"context_line":"            self.assertIn(port_1_fixed_ip, port_ips,"},{"line_number":207,"context_line":"                          \u0027Port not matching IP filter found\u0027)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"},{"line_number":210,"context_line":"    @testtools.skipUnless("}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_b5ddaa14","line":207,"range":{"start_line":203,"start_character":0,"end_line":207,"end_character":62},"updated":"2019-11-12 07:57:04.000000000","message":"Sorry I don\u0027t catch what\u0027s the difference between this and the previous code:)\nCan you give an example?","commit_id":"0ff7e3d7204cb5df539f470e759738957ef0c70b"},{"author":{"_account_id":28719,"name":"Phil Sphicas","email":"phil.sphicas@att.com","username":"ps3910"},"change_message_id":"7b04d7fdeb65487523955108e85ba831d207aa9b","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        port_net_ids \u003d [port[\u0027network_id\u0027] for port in ports]"},{"line_number":201,"context_line":"        self.assertIn(port_1[\u0027port\u0027][\u0027id\u0027], port_ids)"},{"line_number":202,"context_line":"        self.assertIn(network[\u0027id\u0027], port_net_ids)"},{"line_number":203,"context_line":"        # Check that every port has a fixed_ip that matches the query"},{"line_number":204,"context_line":"        for addr in fixed_ips:"},{"line_number":205,"context_line":"            port_ips \u003d [port[\u0027ip_address\u0027] for port in addr]"},{"line_number":206,"context_line":"            self.assertIn(port_1_fixed_ip, port_ips,"},{"line_number":207,"context_line":"                          \u0027Port not matching IP filter found\u0027)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    @decorators.idempotent_id(\u002779895408-85d5-460d-94e7-9531c5fd9123\u0027)"},{"line_number":210,"context_line":"    @testtools.skipUnless("}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_2d0e008c","line":207,"range":{"start_line":203,"start_character":0,"end_line":207,"end_character":62},"in_reply_to":"3fa7e38b_b5ddaa14","updated":"2019-11-18 19:26:20.000000000","message":"Done","commit_id":"0ff7e3d7204cb5df539f470e759738957ef0c70b"}]}
