)]}'
{"neutron/db/securitygroups_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d8c28b3ce2d968b0bce45f8bd6e64bcbc68bed76","unresolved":false,"context_lines":[{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        valid_groups \u003d set("},{"line_number":897,"context_line":"            g.id for g in sg_objs"},{"line_number":898,"context_line":"            if (context.is_admin not tenant_id or g.tenant_id \u003d\u003d tenant_id"},{"line_number":899,"context_line":"                or sg_obj.SecurityGroup.is_shared_with_tenant("},{"line_number":900,"context_line":"                    context, g.id, tenant_id))"},{"line_number":901,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_15b8cce2","line":898,"range":{"start_line":898,"start_character":32,"end_line":898,"end_character":33},"updated":"2020-08-06 08:31:39.000000000","message":"\u0027 or\u0027","commit_id":"59f35a2c857e257c16b4a5a047180d545583613b"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"cb85ab476e65e15b93005d21076d88896f2bce7f","unresolved":false,"context_lines":[{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        valid_groups \u003d set("},{"line_number":897,"context_line":"            g.id for g in sg_objs"},{"line_number":898,"context_line":"            if (context.is_admin not tenant_id or g.tenant_id \u003d\u003d tenant_id"},{"line_number":899,"context_line":"                or sg_obj.SecurityGroup.is_shared_with_tenant("},{"line_number":900,"context_line":"                    context, g.id, tenant_id))"},{"line_number":901,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_3827c566","line":898,"range":{"start_line":898,"start_character":32,"end_line":898,"end_character":33},"in_reply_to":"9f560f44_15b8cce2","updated":"2020-08-06 09:22:12.000000000","message":"oh, miss it，thanks.","commit_id":"59f35a2c857e257c16b4a5a047180d545583613b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f37682c4af038664320a9bcb8f0b359e8d4bb87a","unresolved":false,"context_lines":[{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        valid_groups \u003d set("},{"line_number":897,"context_line":"            g.id for g in sg_objs"},{"line_number":898,"context_line":"            if (context.is_admin or not tenant_id or g.tenant_id \u003d\u003d tenant_id"},{"line_number":899,"context_line":"                or sg_obj.SecurityGroup.is_shared_with_tenant("},{"line_number":900,"context_line":"                    context, g.id, tenant_id))"},{"line_number":901,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_bbed8ab8","line":898,"updated":"2020-08-06 15:23:36.000000000","message":"I don\u0027t know if we should allow this.\n\nOf course the admin should be able to use this SG, but could be used in a port not belonging to the SG user. That could be a problem.\n\nApart from this, you should:\n- Document it\n- Implement valid UTs testing with several users (admin and non-admin), creating and updating ports.","commit_id":"602988367f7f144e929412fbce38fa67222d0993"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"8c78ff0765f927a59f11f4d16411a8dd13fd627d","unresolved":false,"context_lines":[{"line_number":895,"context_line":""},{"line_number":896,"context_line":"        valid_groups \u003d set("},{"line_number":897,"context_line":"            g.id for g in sg_objs"},{"line_number":898,"context_line":"            if (context.is_admin or not tenant_id or g.tenant_id \u003d\u003d tenant_id"},{"line_number":899,"context_line":"                or sg_obj.SecurityGroup.is_shared_with_tenant("},{"line_number":900,"context_line":"                    context, g.id, tenant_id))"},{"line_number":901,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_fe57cc56","line":898,"in_reply_to":"9f560f44_bbed8ab8","updated":"2020-08-10 07:07:35.000000000","message":"Done","commit_id":"602988367f7f144e929412fbce38fa67222d0993"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"eb07533a05aee225b2c6c0751ad9246e59964948","unresolved":false,"context_lines":[{"line_number":896,"context_line":"        valid_groups \u003d set("},{"line_number":897,"context_line":"            g.id for g in sg_objs"},{"line_number":898,"context_line":"            if (context.is_admin or not tenant_id or g.tenant_id \u003d\u003d tenant_id"},{"line_number":899,"context_line":"                or sg_obj.SecurityGroup.is_shared_with_tenant("},{"line_number":900,"context_line":"                    context, g.id, tenant_id))"},{"line_number":901,"context_line":"        )"},{"line_number":902,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_69f7b18c","line":899,"updated":"2020-08-06 12:57:51.000000000","message":"pep8: W503 line break before binary operator","commit_id":"602988367f7f144e929412fbce38fa67222d0993"}],"neutron/tests/unit/extensions/test_portsecurity.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0d26bff3ae0e85ad94c256156bd102896a35cdde","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                   port_security_enabled\u003dFalse)"},{"line_number":331,"context_line":"        net \u003d self.deserialize(\u0027json\u0027, res)"},{"line_number":332,"context_line":"        self._create_subnet(\u0027json\u0027, net[\u0027network\u0027][\u0027id\u0027], \u002710.0.0.0/24\u0027,"},{"line_number":333,"context_line":"                                  set_context\u003dTrue, tenant_id\u003d\u0027demo_tenant\u0027)"},{"line_number":334,"context_line":"        security_group \u003d self.deserialize("},{"line_number":335,"context_line":"            \u0027json\u0027, self._create_security_group(self.fmt, \u0027asdf\u0027, \u0027asdf\u0027,"},{"line_number":336,"context_line":"                                                tenant_id\u003d\u0027other_tenant\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_206c829a","line":333,"updated":"2020-08-10 10:55:22.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"8f213c3c317c74b1dd9d4d3a34be71631ee61ded"}],"neutron/tests/unit/extensions/test_securitygroup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0d26bff3ae0e85ad94c256156bd102896a35cdde","unresolved":false,"context_lines":[{"line_number":806,"context_line":"        res \u003d self._create_security_group(self.fmt, \u0027webservers\u0027, \u0027webservers\u0027,"},{"line_number":807,"context_line":"                                          tenant_id\u003d\u0027other_tenant\u0027)"},{"line_number":808,"context_line":"        sg1 \u003d self.deserialize(self.fmt, res)"},{"line_number":809,"context_line":"        sgs \u003d  plugin._get_security_groups_on_port("},{"line_number":810,"context_line":"            neutron_context,"},{"line_number":811,"context_line":"            {\u0027port\u0027: {\u0027security_groups\u0027: [sg1[\u0027security_group\u0027][\u0027id\u0027]],"},{"line_number":812,"context_line":"                      \u0027tenant_id\u0027: \u0027tenant\u0027}}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_0067beb8","line":809,"updated":"2020-08-10 10:55:22.000000000","message":"pep8: E222 multiple spaces after operator","commit_id":"8f213c3c317c74b1dd9d4d3a34be71631ee61ded"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0d26bff3ae0e85ad94c256156bd102896a35cdde","unresolved":false,"context_lines":[{"line_number":810,"context_line":"            neutron_context,"},{"line_number":811,"context_line":"            {\u0027port\u0027: {\u0027security_groups\u0027: [sg1[\u0027security_group\u0027][\u0027id\u0027]],"},{"line_number":812,"context_line":"                      \u0027tenant_id\u0027: \u0027tenant\u0027}}"},{"line_number":813,"context_line":"            )"},{"line_number":814,"context_line":"        sg1_id \u003d sg1[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":815,"context_line":"        self.assertEqual(sg1_id, sgs[0].id)"},{"line_number":816,"context_line":"        self.assertEqual(\u0027other_tenant\u0027, sgs[0].project_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_60079acb","line":813,"updated":"2020-08-10 10:55:22.000000000","message":"pep8: E123 closing bracket does not match indentation of opening bracket\u0027s line","commit_id":"8f213c3c317c74b1dd9d4d3a34be71631ee61ded"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"fcc43a3b369d736012f675485b3ab23c515d9477","unresolved":false,"context_lines":[{"line_number":810,"context_line":"            neutron_context,"},{"line_number":811,"context_line":"            {\u0027port\u0027: {\u0027security_groups\u0027: [sg1[\u0027security_group\u0027][\u0027id\u0027]],"},{"line_number":812,"context_line":"                      \u0027tenant_id\u0027: \u0027tenant\u0027}}"},{"line_number":813,"context_line":"            )"},{"line_number":814,"context_line":"        sg1_id \u003d sg1[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":815,"context_line":"        self.assertEqual(sg1_id, sgs[0].id)"},{"line_number":816,"context_line":"        self.assertEqual(\u0027other_tenant\u0027, sgs[0].project_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_accc0989","line":813,"updated":"2020-08-10 14:42:12.000000000","message":"pep8: E123 closing bracket does not match indentation of opening bracket\u0027s line","commit_id":"cc7425ee6008c88993ad271d89c355ce285e6a3b"}]}
