)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Samantha Blanco \u003csamantha.blanco@att.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-05-03 17:10:59 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor identity tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Consolidates identity v2 and v3 base classes into one file and"},{"line_number":10,"context_line":"refactors necessary identity tests as a result of this change."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f044301_d803200d","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":23},"updated":"2017-05-04 12:56:25.000000000","message":"Can we change this title to something like \"Consolidates rbac_base for v2 and v3 identity\"","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"}],"patrole_tempest_plugin/tests/api/identity/rbac_base.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"81e89453d55cf2eb47f490de904758ea03f3a371","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        super(BaseIdentityV2RbacTest, cls).resource_cleanup()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @classmethod"},{"line_number":127,"context_line":"    def setup_test_endpoint(cls, service\u003dNone):"},{"line_number":128,"context_line":"        \"\"\"Creates a service and an endpoint for test.\"\"\""},{"line_number":129,"context_line":"        interface \u003d \u0027public\u0027"},{"line_number":130,"context_line":"        url \u003d data_utils.rand_url()"},{"line_number":131,"context_line":"        region_name \u003d data_utils.rand_name(\u0027region\u0027)"},{"line_number":132,"context_line":"        # Endpoint creation requires a service"},{"line_number":133,"context_line":"        if service is None:"},{"line_number":134,"context_line":"            service \u003d cls.setup_test_service()"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        endpoint \u003d cls.endpoints_client.create_endpoint("},{"line_number":137,"context_line":"            service_id\u003dservice[\u0027id\u0027],"},{"line_number":138,"context_line":"            region\u003dregion_name,"},{"line_number":139,"context_line":"            interface\u003dinterface,"},{"line_number":140,"context_line":"            publicurl\u003durl)[\u0027endpoint\u0027]"},{"line_number":141,"context_line":"        cls.endpoints.append(endpoint)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return endpoint"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @classmethod"},{"line_number":146,"context_line":"    def setup_test_service(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_26db177e","line":143,"range":{"start_line":126,"start_character":0,"end_line":143,"end_character":23},"updated":"2017-05-02 14:52:37.000000000","message":"This is common between both versions and plus you put the clean up for endpoints in the base identity class, so I think this should go there.\n\nThe decentralization between setup and clean up is a bit confusing.","commit_id":"9d710cea52cc30d85b3a748bc54bbe3481f1e436"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"e4718b4c4115ca4e87ca03bfd2aef579f96c5d69","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        super(BaseIdentityV2RbacTest, cls).resource_cleanup()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @classmethod"},{"line_number":127,"context_line":"    def setup_test_endpoint(cls, service\u003dNone):"},{"line_number":128,"context_line":"        \"\"\"Creates a service and an endpoint for test.\"\"\""},{"line_number":129,"context_line":"        interface \u003d \u0027public\u0027"},{"line_number":130,"context_line":"        url \u003d data_utils.rand_url()"},{"line_number":131,"context_line":"        region_name \u003d data_utils.rand_name(\u0027region\u0027)"},{"line_number":132,"context_line":"        # Endpoint creation requires a service"},{"line_number":133,"context_line":"        if service is None:"},{"line_number":134,"context_line":"            service \u003d cls.setup_test_service()"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        endpoint \u003d cls.endpoints_client.create_endpoint("},{"line_number":137,"context_line":"            service_id\u003dservice[\u0027id\u0027],"},{"line_number":138,"context_line":"            region\u003dregion_name,"},{"line_number":139,"context_line":"            interface\u003dinterface,"},{"line_number":140,"context_line":"            publicurl\u003durl)[\u0027endpoint\u0027]"},{"line_number":141,"context_line":"        cls.endpoints.append(endpoint)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return endpoint"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @classmethod"},{"line_number":146,"context_line":"    def setup_test_service(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_90bb3dc3","line":143,"range":{"start_line":126,"start_character":0,"end_line":143,"end_character":23},"in_reply_to":"5ff73747_26db177e","updated":"2017-05-02 18:58:36.000000000","message":"I\u0027m not disagreeing with you here or with the service method below, however:\n1. Arguments/dict keys are different depending on the version of Keystone being used.\n2. The Tempest identity base class does something similar (centralizes cleanup for users while putting creation somewhere else), so there is a precedent for this.\n\nI changed some things to allow switching based on the identity version, but I think that way is a lot messier and more error prone than what\u0027s here.","commit_id":"9d710cea52cc30d85b3a748bc54bbe3481f1e436"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"81e89453d55cf2eb47f490de904758ea03f3a371","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        return endpoint"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    @classmethod"},{"line_number":146,"context_line":"    def setup_test_service(cls):"},{"line_number":147,"context_line":"        \"\"\"Setup a test service.\"\"\""},{"line_number":148,"context_line":"        name \u003d data_utils.rand_name(\u0027service\u0027)"},{"line_number":149,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type\u0027)"},{"line_number":150,"context_line":"        desc \u003d data_utils.rand_name(\u0027description\u0027)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        service \u003d cls.services_client.create_service("},{"line_number":153,"context_line":"            name\u003dname,"},{"line_number":154,"context_line":"            type\u003dserv_type,"},{"line_number":155,"context_line":"            description\u003ddesc)[\u0027OS-KSADM:service\u0027]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        cls.services.append(service)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        return service"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @classmethod"},{"line_number":162,"context_line":"    def setup_test_tenant(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_06d81b7d","line":159,"range":{"start_line":145,"start_character":0,"end_line":159,"end_character":22},"updated":"2017-05-02 14:52:37.000000000","message":"See above.","commit_id":"9d710cea52cc30d85b3a748bc54bbe3481f1e436"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"81e89453d55cf2eb47f490de904758ea03f3a371","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return service"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @classmethod"},{"line_number":162,"context_line":"    def setup_test_tenant(cls):"},{"line_number":163,"context_line":"        \"\"\"Set up a test tenant.\"\"\""},{"line_number":164,"context_line":"        name \u003d data_utils.rand_name(\u0027test_tenant\u0027)"},{"line_number":165,"context_line":"        tenant \u003d cls.tenants_client.create_tenant("}],"source_content_type":"text/x-python","patch_set":3,"id":"5ff73747_c6e1132d","line":162,"updated":"2017-05-02 14:52:37.000000000","message":"This one is fine, and the clean up for it is in the v2 class which is right.","commit_id":"9d710cea52cc30d85b3a748bc54bbe3481f1e436"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        super(BaseIdentityRbacTest, cls).resource_cleanup()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    @classmethod"},{"line_number":76,"context_line":"    def setup_test_endpoint(cls, version, service\u003dNone):"},{"line_number":77,"context_line":"        \"\"\"Creates a service and an endpoint for test.\"\"\""},{"line_number":78,"context_line":"        interface \u003d \u0027public\u0027"},{"line_number":79,"context_line":"        url \u003d data_utils.rand_url()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_1847484e","line":76,"range":{"start_line":76,"start_character":33,"end_line":76,"end_character":40},"updated":"2017-05-04 12:56:25.000000000","message":"Can use cls.identity_version instead.","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            \u0027region\u0027: region_name,"},{"line_number":87,"context_line":"            \u0027interface\u0027: interface"},{"line_number":88,"context_line":"        }"},{"line_number":89,"context_line":"        if version is 2:"},{"line_number":90,"context_line":"            params[\u0027publicurl\u0027] \u003d url"},{"line_number":91,"context_line":"        elif version is 3:"},{"line_number":92,"context_line":"            params[\u0027url\u0027] \u003d url"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_f84c9c77","line":89,"range":{"start_line":89,"start_character":11,"end_line":89,"end_character":18},"updated":"2017-05-04 12:56:25.000000000","message":"cls.identity_version","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        }"},{"line_number":89,"context_line":"        if version is 2:"},{"line_number":90,"context_line":"            params[\u0027publicurl\u0027] \u003d url"},{"line_number":91,"context_line":"        elif version is 3:"},{"line_number":92,"context_line":"            params[\u0027url\u0027] \u003d url"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            LOG.debug(\"Keystone version is invalid.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_78408c36","line":91,"range":{"start_line":91,"start_character":13,"end_line":91,"end_character":20},"updated":"2017-05-04 12:56:25.000000000","message":"cls.identity_version","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return role"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @classmethod"},{"line_number":113,"context_line":"    def setup_test_service(cls, version):"},{"line_number":114,"context_line":"        \"\"\"Setup a test service.\"\"\""},{"line_number":115,"context_line":"        name \u003d data_utils.rand_name(\u0027service\u0027)"},{"line_number":116,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_f8837c55","line":113,"range":{"start_line":113,"start_character":32,"end_line":113,"end_character":39},"updated":"2017-05-04 12:56:25.000000000","message":"See above","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            type\u003dserv_type,"},{"line_number":122,"context_line":"            description\u003ddesc)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if version is 2:"},{"line_number":125,"context_line":"            service \u003d service[\u0027OS-KSADM:service\u0027]"},{"line_number":126,"context_line":"        elif version is 3:"},{"line_number":127,"context_line":"            service \u003d service[\u0027service\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_b87df46f","line":124,"range":{"start_line":124,"start_character":11,"end_line":124,"end_character":18},"updated":"2017-05-04 12:56:25.000000000","message":"Ditto","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if version is 2:"},{"line_number":125,"context_line":"            service \u003d service[\u0027OS-KSADM:service\u0027]"},{"line_number":126,"context_line":"        elif version is 3:"},{"line_number":127,"context_line":"            service \u003d service[\u0027service\u0027]"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            LOG.debug(\"Keystone version is invalid.\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_9882384f","line":126,"range":{"start_line":126,"start_character":13,"end_line":126,"end_character":20},"updated":"2017-05-04 12:56:25.000000000","message":"Ditto","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"72f38bd75f45e3d82542421dfa3beb078b1be5ba","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class BaseIdentityV2AdminRbacTest(BaseIdentityRbacTest):"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    identity_version \u003d \u0027v2\u0027"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f044301_98a918e1","line":154,"updated":"2017-05-04 12:56:25.000000000","message":"What happened to the docstring here from: https://review.openstack.org/#/c/461837/9/patrole_tempest_plugin/tests/api/identity/v2/rbac_base.py","commit_id":"ac4dc2376df2d2030361c04b02c950093d45ea7c"}]}
