)]}'
{"keystoneclient/tests/unit/v3/test_auth.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"adf1061c76085fc61ce96a374eb9815eaabcbf91","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        cl \u003d client.Client(auth_url\u003dself.TEST_URL,"},{"line_number":228,"context_line":"                           token\u003dfake_token,"},{"line_number":229,"context_line":"                           interface\u003d\u0027admin\u0027)"},{"line_number":230,"context_line":"        body \u003d jsonutils.loads(self.requests_mock.last_request.body)"},{"line_number":231,"context_line":"        self.assertEqual(body[\u0027auth\u0027][\u0027identity\u0027][\u0027token\u0027][\u0027id\u0027], fake_token)"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_b8d2b45a","line":229,"updated":"2015-07-01 19:31:57.000000000","message":"auth shouldn\u0027t need to use the admin interface.","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"4e6d76fb8edb85659835103192ab6224750accd1","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        cl \u003d client.Client(auth_url\u003dself.TEST_URL,"},{"line_number":228,"context_line":"                           token\u003dfake_token,"},{"line_number":229,"context_line":"                           interface\u003d\u0027admin\u0027)"},{"line_number":230,"context_line":"        body \u003d jsonutils.loads(self.requests_mock.last_request.body)"},{"line_number":231,"context_line":"        self.assertEqual(body[\u0027auth\u0027][\u0027identity\u0027][\u0027token\u0027][\u0027id\u0027], fake_token)"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_66b48634","line":229,"in_reply_to":"ba3cc151_b8d2b45a","updated":"2015-07-01 22:59:24.000000000","message":"Done","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"adf1061c76085fc61ce96a374eb9815eaabcbf91","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                           password\u003d\u0027password\u0027,"},{"line_number":325,"context_line":"                           tenant_name\u003d\u0027exampleproject\u0027,"},{"line_number":326,"context_line":"                           auth_url\u003dself.TEST_URL,"},{"line_number":327,"context_line":"                           interface\u003d\u0027admin\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        self.assertEqual(cl.auth_token, self.TEST_TOKEN)"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_38c78497","line":327,"updated":"2015-07-01 19:31:57.000000000","message":"auth shouldn\u0027t need to use the admin interface.","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"4e6d76fb8edb85659835103192ab6224750accd1","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                           password\u003d\u0027password\u0027,"},{"line_number":325,"context_line":"                           tenant_name\u003d\u0027exampleproject\u0027,"},{"line_number":326,"context_line":"                           auth_url\u003dself.TEST_URL,"},{"line_number":327,"context_line":"                           interface\u003d\u0027admin\u0027)"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        self.assertEqual(cl.auth_token, self.TEST_TOKEN)"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_06849a5b","line":327,"in_reply_to":"ba3cc151_38c78497","updated":"2015-07-01 22:59:24.000000000","message":"Done","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"}],"keystoneclient/tests/unit/v3/utils.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9aa7245d1963ac29fabdfe23bb61f120d951470e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \"region\": \"RegionOne\","},{"line_number":103,"context_line":"            \"interface\": \"public\""},{"line_number":104,"context_line":"        }, {"},{"line_number":105,"context_line":"            \"url\": \"http://127.0.0.1:5000/v3\","},{"line_number":106,"context_line":"            \"region\": \"RegionOne\","},{"line_number":107,"context_line":"            \"interface\": \"internal\""},{"line_number":108,"context_line":"        }, {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_83d84081","line":105,"updated":"2015-07-09 23:40:35.000000000","message":"this should use TEST_PUBLIC_IDENTITY_ENDPOINT too since it\u0027s the same value.","commit_id":"e3cc2fa443b49982f4922d29fe4ddfa428c74058"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"dfc10b3f675fd4cb44241ac55ea78c96774dd873","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \"region\": \"RegionOne\","},{"line_number":103,"context_line":"            \"interface\": \"public\""},{"line_number":104,"context_line":"        }, {"},{"line_number":105,"context_line":"            \"url\": \"http://127.0.0.1:5000/v3\","},{"line_number":106,"context_line":"            \"region\": \"RegionOne\","},{"line_number":107,"context_line":"            \"interface\": \"internal\""},{"line_number":108,"context_line":"        }, {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f25c494e","line":105,"in_reply_to":"ba3cc151_83d84081","updated":"2015-07-10 19:05:34.000000000","message":"++","commit_id":"e3cc2fa443b49982f4922d29fe4ddfa428c74058"}],"keystoneclient/v3/client.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d2cb6e3ae387f17a56a722da5e3081e7852f3abe","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    version \u003d \u0027v3\u0027"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def __init__(self, **kwargs):"},{"line_number":174,"context_line":"        \"\"\"Initialize a new client for the Keystone v3 API.\"\"\""},{"line_number":175,"context_line":"        if \u0027interface\u0027 not in kwargs:"},{"line_number":176,"context_line":"            kwargs[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":177,"context_line":"        super(Client, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_cfcb621d","line":174,"updated":"2015-07-01 00:58:07.000000000","message":"May want to drop a NOTE here\n\n  #NOTE(Roxana Gherle): Keystone V3 APIs has no admin versus public distinction. They are all going through the same endpoint, which is public.","commit_id":"f08fc6ce31e8646d1999a3603726455e9cb2e59c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"adf1061c76085fc61ce96a374eb9815eaabcbf91","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        \"\"\"Initialize a new client for the Keystone v3 API.\"\"\""},{"line_number":175,"context_line":"        # NOTE(Roxana Gherle): Keystone V3 APIs has no admin versus public"},{"line_number":176,"context_line":"        # distinction. They are all going through the same endpoint,"},{"line_number":177,"context_line":"        # which is public."},{"line_number":178,"context_line":"        if \u0027interface\u0027 not in kwargs:"},{"line_number":179,"context_line":"            kwargs[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":180,"context_line":"        super(Client, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_b8bcf4dc","line":177,"updated":"2015-07-01 19:31:57.000000000","message":"This comment doesn\u0027t explain the code below. The comment seems to say that the interface should always be \u0027public\u0027, but the code below makes it the default if not specified. Which is it supposed to be?","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"4e6d76fb8edb85659835103192ab6224750accd1","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        \"\"\"Initialize a new client for the Keystone v3 API.\"\"\""},{"line_number":175,"context_line":"        # NOTE(Roxana Gherle): Keystone V3 APIs has no admin versus public"},{"line_number":176,"context_line":"        # distinction. They are all going through the same endpoint,"},{"line_number":177,"context_line":"        # which is public."},{"line_number":178,"context_line":"        if \u0027interface\u0027 not in kwargs:"},{"line_number":179,"context_line":"            kwargs[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":180,"context_line":"        super(Client, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_4c8bab68","line":177,"in_reply_to":"ba3cc151_b8bcf4dc","updated":"2015-07-01 22:59:24.000000000","message":"If not specified we want to set the endpoint type to public because Keystone httpclient sets an \u0027admin\u0027 endpoint by default which was important for v2 (as user/tenant resources were accesible only through admin endpoint), but in v3 public works for accessing all Keystone resources. So we want to make Keystone v3 to be compliant with the other services that use public endpoint by default. I tried to rephrase the comment a bit.","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"adf1061c76085fc61ce96a374eb9815eaabcbf91","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # distinction. They are all going through the same endpoint,"},{"line_number":177,"context_line":"        # which is public."},{"line_number":178,"context_line":"        if \u0027interface\u0027 not in kwargs:"},{"line_number":179,"context_line":"            kwargs[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":180,"context_line":"        super(Client, self).__init__(**kwargs)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        self.credentials \u003d credentials.CredentialManager(self._adapter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_58204848","line":179,"updated":"2015-07-01 19:31:57.000000000","message":"use setdefault intead.","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"4e6d76fb8edb85659835103192ab6224750accd1","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        # distinction. They are all going through the same endpoint,"},{"line_number":177,"context_line":"        # which is public."},{"line_number":178,"context_line":"        if \u0027interface\u0027 not in kwargs:"},{"line_number":179,"context_line":"            kwargs[\u0027interface\u0027] \u003d \u0027public\u0027"},{"line_number":180,"context_line":"        super(Client, self).__init__(**kwargs)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        self.credentials \u003d credentials.CredentialManager(self._adapter)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_2e8c1ed9","line":179,"in_reply_to":"ba3cc151_58204848","updated":"2015-07-01 22:59:24.000000000","message":"Done","commit_id":"09e17245662b11cf83980f802ca743d6f050395f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9aa7245d1963ac29fabdfe23bb61f120d951470e","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def __init__(self, **kwargs):"},{"line_number":174,"context_line":"        \"\"\"Initialize a new client for the Keystone v3 API.\"\"\""},{"line_number":175,"context_line":"        # NOTE(Roxana Gherle): Keystone V3 APIs has no admin versus public"},{"line_number":176,"context_line":"        # distinction. They are both going through the same endpoint, so"},{"line_number":177,"context_line":"        # set a public default here instead of picking up an admin default in"},{"line_number":178,"context_line":"        # httpclient.HTTPClient"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_036190a8","line":175,"updated":"2015-07-09 23:40:35.000000000","message":"The python API needs to be developed against the Identity API and not the keystone implementation, so this should be \"Identity V3 API\". keystone is only one implementation of the API.","commit_id":"e3cc2fa443b49982f4922d29fe4ddfa428c74058"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"dfc10b3f675fd4cb44241ac55ea78c96774dd873","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def __init__(self, **kwargs):"},{"line_number":174,"context_line":"        \"\"\"Initialize a new client for the Keystone v3 API.\"\"\""},{"line_number":175,"context_line":"        # NOTE(Roxana Gherle): Keystone V3 APIs has no admin versus public"},{"line_number":176,"context_line":"        # distinction. They are both going through the same endpoint, so"},{"line_number":177,"context_line":"        # set a public default here instead of picking up an admin default in"},{"line_number":178,"context_line":"        # httpclient.HTTPClient"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f2ae892e","line":175,"in_reply_to":"ba3cc151_036190a8","updated":"2015-07-10 19:05:34.000000000","message":"++","commit_id":"e3cc2fa443b49982f4922d29fe4ddfa428c74058"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"7dea99b068beb459ef4fb5c98c3dd776d24e81f4","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def __init__(self, **kwargs):"},{"line_number":174,"context_line":"        \"\"\"Initialize a new client for the Keystone v3 API.\"\"\""},{"line_number":175,"context_line":"        # NOTE(Roxana Gherle): Keystone V3 APIs has no admin versus public"},{"line_number":176,"context_line":"        # distinction. They are both going through the same endpoint, so"},{"line_number":177,"context_line":"        # set a public default here instead of picking up an admin default in"},{"line_number":178,"context_line":"        # httpclient.HTTPClient"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_978048f9","line":175,"in_reply_to":"ba3cc151_f2ae892e","updated":"2015-07-10 21:11:46.000000000","message":"You mean Keystone is not the only one?! Shocking. :)","commit_id":"e3cc2fa443b49982f4922d29fe4ddfa428c74058"}]}
