)]}'
{"tempest/clients.py":[{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"41b373fa6ea5876834a7100c79ca6c8fe3e98cc8","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                           self.auth_url, self.tenant_name)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"            if self.auth_url_v3:"},{"line_number":226,"context_line":"                auth_version \u003d \u0027v3\u0027"},{"line_number":227,"context_line":"                client_args_v3_auth \u003d (self.config, self.username,"},{"line_number":228,"context_line":"                                       self.password, self.auth_url_v3,"},{"line_number":229,"context_line":"                                       self.tenant_name, auth_version)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2Fph4%3D","line":226,"updated":"2013-04-30 17:15:45.000000000","message":"Why to set this variable if it\u0027s not used later (only in following line)?","commit_id":"195da50925c154ce17ab3a12febdeb80c9ac69aa"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d7801ed6dea63f768f515d2c5d2ba364095628bc","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                           self.auth_url, self.tenant_name)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"            if self.auth_url_v3:"},{"line_number":226,"context_line":"                auth_version \u003d \u0027v3\u0027"},{"line_number":227,"context_line":"                client_args_v3_auth \u003d (self.config, self.username,"},{"line_number":228,"context_line":"                                       self.password, self.auth_url_v3,"},{"line_number":229,"context_line":"                                       self.tenant_name, auth_version)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2Fnr0%3D","line":226,"in_reply_to":"AAAAOn%2F%2Fph4%3D","updated":"2013-05-03 20:29:04.000000000","message":"This is to avoid a \"magic constant anti-pattern: http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Unnamed_numerical_constants\n\nso just to provide a name so that it\u0027s obvious the last argument is the auth_version.","commit_id":"195da50925c154ce17ab3a12febdeb80c9ac69aa"}],"tempest/common/rest_client.py":[{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"41b373fa6ea5876834a7100c79ca6c8fe3e98cc8","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        raise exceptions.IdentityError(\u0027Unexpected status code {0}\u0027.format("},{"line_number":179,"context_line":"            resp.status))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def identity_auth_v3(self, user, password, service, project_name):"},{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        Provides authentication using Identity API v3."},{"line_number":184,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2FphE%3D","line":181,"updated":"2013-04-30 17:15:45.000000000","message":"Why this is named identity_auth_v3 when the previous/old is named keystone_auth?\nI would also suggest keeping the same \u0027interface\u0027 as the old method has (including auth_url so this can be reused from subclasses etc).\n\nAnd maybe add optional arg domain\u003d\u0027default\u0027?","commit_id":"195da50925c154ce17ab3a12febdeb80c9ac69aa"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d7801ed6dea63f768f515d2c5d2ba364095628bc","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        raise exceptions.IdentityError(\u0027Unexpected status code {0}\u0027.format("},{"line_number":179,"context_line":"            resp.status))"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def identity_auth_v3(self, user, password, service, project_name):"},{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        Provides authentication using Identity API v3."},{"line_number":184,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2Fj5w%3D","line":181,"in_reply_to":"AAAAOn%2F%2FphE%3D","updated":"2013-05-03 20:29:04.000000000","message":"I think the previous/old function is incorrectly named. It\u0027s the identity API that we\u0027re testing and there\u0027s nothing specific to Keystone\u0027s implementation of the API that\u0027s being tested here.\n\nI\u0027ll change the arguments and add the domain_id argument.","commit_id":"195da50925c154ce17ab3a12febdeb80c9ac69aa"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"1c0dcf5ca12b91bc2a1ca3bf00db8a12322eff3d","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                token \u003d resp[\u0027x-subject-token\u0027]"},{"line_number":216,"context_line":"            except Exception, e:"},{"line_number":217,"context_line":"                print (\"Failed to obtain token using V3 authentication (auth \""},{"line_number":218,"context_line":"                       \"URL is \u0027%s\u0027) for user: %s\" % (req_url, e))"},{"line_number":219,"context_line":"                raise"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"            catalog \u003d json.loads(body)[\u0027token\u0027][\u0027catalog\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAOn%2F%2FiV8%3D","line":218,"updated":"2013-05-06 14:18:34.000000000","message":"Should we be logging here instead of printing?","commit_id":"0e8231124f3ec5b88df99acb367b018fe5552872"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"df315749398826ad9181f33716fe41e2ab250d06","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                token \u003d resp[\u0027x-subject-token\u0027]"},{"line_number":216,"context_line":"            except Exception, e:"},{"line_number":217,"context_line":"                print (\"Failed to obtain token using V3 authentication (auth \""},{"line_number":218,"context_line":"                       \"URL is \u0027%s\u0027) for user: %s\" % (req_url, e))"},{"line_number":219,"context_line":"                raise"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"            catalog \u003d json.loads(body)[\u0027token\u0027][\u0027catalog\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAOn%2F%2Fhd8%3D","line":218,"in_reply_to":"AAAAOn%2F%2FiV8%3D","updated":"2013-05-06 22:43:42.000000000","message":"Done","commit_id":"0e8231124f3ec5b88df99acb367b018fe5552872"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"1c0dcf5ca12b91bc2a1ca3bf00db8a12322eff3d","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        else:"},{"line_number":259,"context_line":"            print (\"Failed to obtain token using V3 authentication (auth \""},{"line_number":260,"context_line":"                   \"URL is \u0027%s\u0027), the response status is %s\" %"},{"line_number":261,"context_line":"                   (req_url, resp.status))"},{"line_number":262,"context_line":"            raise exceptions.AuthenticationFailure(user\u003duser,"},{"line_number":263,"context_line":"                                                   password\u003dpassword)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAOn%2F%2FiV0%3D","line":261,"updated":"2013-05-06 14:18:34.000000000","message":"ditto about logging","commit_id":"0e8231124f3ec5b88df99acb367b018fe5552872"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"df315749398826ad9181f33716fe41e2ab250d06","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        else:"},{"line_number":259,"context_line":"            print (\"Failed to obtain token using V3 authentication (auth \""},{"line_number":260,"context_line":"                   \"URL is \u0027%s\u0027), the response status is %s\" %"},{"line_number":261,"context_line":"                   (req_url, resp.status))"},{"line_number":262,"context_line":"            raise exceptions.AuthenticationFailure(user\u003duser,"},{"line_number":263,"context_line":"                                                   password\u003dpassword)"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAOn%2F%2Fhd4%3D","line":261,"in_reply_to":"AAAAOn%2F%2FiV0%3D","updated":"2013-05-06 22:43:42.000000000","message":"Done","commit_id":"0e8231124f3ec5b88df99acb367b018fe5552872"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5dcf028079168d6998bcd3cf83640844b24e7248","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.password \u003d password"},{"line_number":45,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":46,"context_line":"        self.tenant_name \u003d tenant_name"},{"line_number":47,"context_line":"        self.auth_version \u003d auth_version or \u0027v2\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.service \u003d None"},{"line_number":50,"context_line":"        self.token \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAOn%2F%2FXI4%3D","line":47,"updated":"2013-05-13 16:37:11.000000000","message":"Couldn\u0027t you just put auth_version\u003d\u0027v2\u0027 in the keyword params?","commit_id":"298a1638acc82fcf7c115cf6be2a84cd6b224ae4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8262149ae53a15187a4c465c5bbe9d0cf9f3f2b8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.password \u003d password"},{"line_number":45,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":46,"context_line":"        self.tenant_name \u003d tenant_name"},{"line_number":47,"context_line":"        self.auth_version \u003d auth_version or \u0027v2\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.service \u003d None"},{"line_number":50,"context_line":"        self.token \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAO3%2F%2F%2BSs%3D","line":47,"in_reply_to":"AAAAOn%2F%2FXI4%3D","updated":"2013-05-15 20:35:06.000000000","message":"Done","commit_id":"298a1638acc82fcf7c115cf6be2a84cd6b224ae4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5dcf028079168d6998bcd3cf83640844b24e7248","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                self.token, self.base_url \u003d ("},{"line_number":83,"context_line":"                    self.identity_auth_v3(self.user, self.password,"},{"line_number":84,"context_line":"                                          self.auth_url, self.service,"},{"line_number":85,"context_line":"                                          self.tenant_name))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            self.token, self.base_url \u003d self.basic_auth(self.user,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAOn%2F%2FXII%3D","line":85,"updated":"2013-05-13 16:37:11.000000000","message":"Could DRY up the above like so:\n\n if self.auth_version \u003d\u003d \u0027v2\u0027:\n   auth_func \u003d self.keystone_auth\n else:\n   auth_func \u003d self.identity_auth_v3\n self.token, self.base_url \u003d auth_func(self.user, self.password,\n                                       self.auth_url, self.service,\n                                       self.tenant_name)","commit_id":"298a1638acc82fcf7c115cf6be2a84cd6b224ae4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8262149ae53a15187a4c465c5bbe9d0cf9f3f2b8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                self.token, self.base_url \u003d ("},{"line_number":83,"context_line":"                    self.identity_auth_v3(self.user, self.password,"},{"line_number":84,"context_line":"                                          self.auth_url, self.service,"},{"line_number":85,"context_line":"                                          self.tenant_name))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            self.token, self.base_url \u003d self.basic_auth(self.user,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAO3%2F%2F%2BRI%3D","line":85,"in_reply_to":"AAAAOn%2F%2FXII%3D","updated":"2013-05-15 20:35:06.000000000","message":"Done","commit_id":"298a1638acc82fcf7c115cf6be2a84cd6b224ae4"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"dd5869b8ce81491d572c33b63f024b3b561cde5c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    LOG \u003d logging.getLogger(__name__)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, config, user, password, auth_url, tenant_name\u003dNone,"},{"line_number":41,"context_line":"                 auth_version\u003d\u0027v2\u0027):"},{"line_number":42,"context_line":"        self.config \u003d config"},{"line_number":43,"context_line":"        self.user \u003d user"},{"line_number":44,"context_line":"        self.password \u003d password"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAO3%2F%2F8lE%3D","line":41,"updated":"2013-05-16 14:11:46.000000000","message":"Why there is default \u0027v2\u0027 when in compute/.../servers_client.py there is default None for auth_version? Should not be the default kept same? Or use None and later if is None set to v2?","commit_id":"c6dfbc7c8a107415ece30e54afb8d8802f880295"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"dd5869b8ce81491d572c33b63f024b3b561cde5c","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                self.LOG.exception(\"Failed to obtain token using V3\""},{"line_number":217,"context_line":"                                   \" authentication (auth URL is \u0027%s\u0027)\" %"},{"line_number":218,"context_line":"                                   req_url)"},{"line_number":219,"context_line":"                raise"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"            catalog \u003d json.loads(body)[\u0027token\u0027][\u0027catalog\u0027]"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAO3%2F%2F8lk%3D","line":219,"updated":"2013-05-16 14:11:46.000000000","message":"Why you are catching key exception, logging and raising again here?\nCan you use assertIn here instead or let the exception go for itself?\nThe request should be already logged in http_obj I think.","commit_id":"c6dfbc7c8a107415ece30e54afb8d8802f880295"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"df7d099f5d522c630fb23123f4e6fe77ce36f473","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.password \u003d password"},{"line_number":45,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":46,"context_line":"        self.tenant_name \u003d tenant_name"},{"line_number":47,"context_line":"        self.auth_version \u003d auth_version or \u0027v2\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.service \u003d None"},{"line_number":50,"context_line":"        self.token \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAPH%2F%2Fvtc%3D","line":47,"updated":"2013-05-23 23:07:53.000000000","message":"why aren\u0027t we doing the default in the params? that seems less error prone.","commit_id":"a46e4289472af7ba753c6a5151a31aa241738ff5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7cf5fc0fb8634d7ad94f36758604be1655372e6d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.password \u003d password"},{"line_number":45,"context_line":"        self.auth_url \u003d auth_url"},{"line_number":46,"context_line":"        self.tenant_name \u003d tenant_name"},{"line_number":47,"context_line":"        self.auth_version \u003d auth_version or \u0027v2\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.service \u003d None"},{"line_number":50,"context_line":"        self.token \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAPH%2F%2FliE%3D","line":47,"in_reply_to":"AAAAPH%2F%2Fvtc%3D","updated":"2013-05-29 21:38:58.000000000","message":"Changed the code so that auth_version defaults in the params, and changed all the derived classes constructors to do the same.","commit_id":"a46e4289472af7ba753c6a5151a31aa241738ff5"}],"tempest/tests/compute/test_auth_token.py":[{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"89b7f42d0e9bc6d4b3f5f83fa502c3576ede549f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # an operation on the compute service."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if not self.servers_v3:"},{"line_number":43,"context_line":"            raise self.skipException(\u0027v3 auth client not configured\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Doesn\u0027t matter which compute API is used,"},{"line_number":46,"context_line":"        # picking list_servers because it\u0027s easy."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F4oI%3D","line":43,"updated":"2013-04-13 14:42:49.000000000","message":"why not use decorator?","commit_id":"571b93c6dd1959c8070460dfc69c3ff0c723afe6"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"ef0fdf34bd99dcf1c617f46cb7591df1c0869853","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # an operation on the compute service."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if not self.servers_v3:"},{"line_number":43,"context_line":"            raise self.skipException(\u0027v3 auth client not configured\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Doesn\u0027t matter which compute API is used,"},{"line_number":46,"context_line":"        # picking list_servers because it\u0027s easy."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fvn8%3D","line":43,"in_reply_to":"AAAAOn%2F%2F37c%3D","updated":"2013-04-25 06:34:10.000000000","message":"Could we check config.TempestConfig().uri_v3?","commit_id":"571b93c6dd1959c8070460dfc69c3ff0c723afe6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9b0de827027e23dd90e80a7552877521612b9a6d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # an operation on the compute service."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if not self.servers_v3:"},{"line_number":43,"context_line":"            raise self.skipException(\u0027v3 auth client not configured\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Doesn\u0027t matter which compute API is used,"},{"line_number":46,"context_line":"        # picking list_servers because it\u0027s easy."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F37c%3D","line":43,"in_reply_to":"AAAAOn%2F%2F4oI%3D","updated":"2013-04-15 20:01:15.000000000","message":"I tried using the testtools.skipIf decorator and I couldn\u0027t figure out how to access the self.servers_v3 member since there is no \"self\" available to the decorator. I could probably make a bunch of changes to use the decorator, but I think it would make this rather simple class more complicated than is necessary.","commit_id":"571b93c6dd1959c8070460dfc69c3ff0c723afe6"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"849ef3d8773f005cf61f9645a4c0310836a7218a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        # an operation on the compute service."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if not self.servers_v3:"},{"line_number":43,"context_line":"            raise self.skipException(\u0027v3 auth client not configured\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Doesn\u0027t matter which compute API is used,"},{"line_number":46,"context_line":"        # picking list_servers because it\u0027s easy."}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FuxE%3D","line":43,"in_reply_to":"AAAAOn%2F%2Fvn8%3D","updated":"2013-04-25 19:44:33.000000000","message":"Done","commit_id":"571b93c6dd1959c8070460dfc69c3ff0c723afe6"}]}
