)]}'
{"tempest_lib/auth.py":[{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"6305e5404e605915f35d75bad8ec32b7327678c2","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            auth_url, disable_ssl_certificate_validation\u003dself.dsvm,"},{"line_number":266,"context_line":"            ca_certs\u003dself.ca_certs, trace_requests\u003dself.trace_requests)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _auth_params(self, scope\u003dNone):"},{"line_number":269,"context_line":"        \"\"\"Auth parameters to be passed to the token request"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        All fields available in Credentials are passed to the token request."}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_70adbf2f","line":268,"updated":"2015-07-29 21:33:17.000000000","message":"scope parameter for the V2Auth seems strange to appear here since it won\u0027t be used. I know the base abstract class defines it, but could we not have it at all in the v2 method definitions?","commit_id":"f008302c9cc7107f2b44a58f3565b5952774fadc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"129508252f21427f2f7d14fd5bcd7bdfdd006896","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            auth_url, disable_ssl_certificate_validation\u003dself.dsvm,"},{"line_number":266,"context_line":"            ca_certs\u003dself.ca_certs, trace_requests\u003dself.trace_requests)"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _auth_params(self, scope\u003dNone):"},{"line_number":269,"context_line":"        \"\"\"Auth parameters to be passed to the token request"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        All fields available in Credentials are passed to the token request."}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_a450915f","line":268,"in_reply_to":"3a50d1a3_70adbf2f","updated":"2015-08-04 21:39:00.000000000","message":"Yes, I agree, however not having the parameter here would make code more complicated - as consumers of auth provider pass though the scope parameter without knowing whether auth version is v2 or v3.","commit_id":"f008302c9cc7107f2b44a58f3565b5952774fadc"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"05706760de5b1fcbc64323995909d659b2dd310e","unresolved":false,"context_lines":[{"line_number":363,"context_line":"            password\u003dself.credentials.password,"},{"line_number":364,"context_line":"            user_domain_id\u003dself.credentials.user_domain_id,"},{"line_number":365,"context_line":"            user_domain_name\u003dself.credentials.user_domain_name,"},{"line_number":366,"context_line":"            domain_id\u003dself.credentials.domain_id,"},{"line_number":367,"context_line":"            domain_name\u003dself.credentials.domain_name,"},{"line_number":368,"context_line":"            auth_data\u003dTrue)"},{"line_number":369,"context_line":"        if scope !\u003d \u0027domain\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_1018fb1c","line":366,"updated":"2015-07-29 21:21:42.000000000","message":"domain_id, domain_name should be filled only if the scope is domain. You need them in  if clause, otherwise both project and domain details will be filled","commit_id":"f008302c9cc7107f2b44a58f3565b5952774fadc"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"6305e5404e605915f35d75bad8ec32b7327678c2","unresolved":false,"context_lines":[{"line_number":363,"context_line":"            password\u003dself.credentials.password,"},{"line_number":364,"context_line":"            user_domain_id\u003dself.credentials.user_domain_id,"},{"line_number":365,"context_line":"            user_domain_name\u003dself.credentials.user_domain_name,"},{"line_number":366,"context_line":"            domain_id\u003dself.credentials.domain_id,"},{"line_number":367,"context_line":"            domain_name\u003dself.credentials.domain_name,"},{"line_number":368,"context_line":"            auth_data\u003dTrue)"},{"line_number":369,"context_line":"        if scope !\u003d \u0027domain\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_706a9f1b","line":366,"in_reply_to":"3a50d1a3_1018fb1c","updated":"2015-07-29 21:33:17.000000000","message":"agreed with Haneef","commit_id":"f008302c9cc7107f2b44a58f3565b5952774fadc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"129508252f21427f2f7d14fd5bcd7bdfdd006896","unresolved":false,"context_lines":[{"line_number":363,"context_line":"            password\u003dself.credentials.password,"},{"line_number":364,"context_line":"            user_domain_id\u003dself.credentials.user_domain_id,"},{"line_number":365,"context_line":"            user_domain_name\u003dself.credentials.user_domain_name,"},{"line_number":366,"context_line":"            domain_id\u003dself.credentials.domain_id,"},{"line_number":367,"context_line":"            domain_name\u003dself.credentials.domain_name,"},{"line_number":368,"context_line":"            auth_data\u003dTrue)"},{"line_number":369,"context_line":"        if scope !\u003d \u0027domain\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_04c86521","line":366,"in_reply_to":"3a50d1a3_706a9f1b","updated":"2015-08-04 21:39:00.000000000","message":"Done","commit_id":"f008302c9cc7107f2b44a58f3565b5952774fadc"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b7acb0d853e5d7cc356240fc023f5e2144e8bd18","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            user_domain_id\u003dself.credentials.user_domain_id,"},{"line_number":365,"context_line":"            user_domain_name\u003dself.credentials.user_domain_name,"},{"line_number":366,"context_line":"            auth_data\u003dTrue)"},{"line_number":367,"context_line":"        if scope is None or scope \u003d\u003d \u0027domain\u0027:"},{"line_number":368,"context_line":"            auth_params.update(dict("},{"line_number":369,"context_line":"                domain_id\u003dself.credentials.domain_id,"},{"line_number":370,"context_line":"                domain_name\u003dself.credentials.domain_name))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_47617fd2","line":367,"updated":"2015-09-10 05:32:40.000000000","message":"if scope \u003d\u003d \u0027domain\u0027:\n\nno need to check for None as scope is default to \u0027project\u0027","commit_id":"f963bfab20101bb9b4d4d57bcca098a6e527f5f5"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"b04f70fa22f6d28dd70ce6c1d1a90572e7fe15fd","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            user_domain_id\u003dself.credentials.user_domain_id,"},{"line_number":365,"context_line":"            user_domain_name\u003dself.credentials.user_domain_name,"},{"line_number":366,"context_line":"            auth_data\u003dTrue)"},{"line_number":367,"context_line":"        if scope is None or scope \u003d\u003d \u0027domain\u0027:"},{"line_number":368,"context_line":"            auth_params.update(dict("},{"line_number":369,"context_line":"                domain_id\u003dself.credentials.domain_id,"},{"line_number":370,"context_line":"                domain_name\u003dself.credentials.domain_name))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_3d5b1788","line":367,"in_reply_to":"da20952f_47617fd2","updated":"2015-09-10 23:55:41.000000000","message":"Done","commit_id":"f963bfab20101bb9b4d4d57bcca098a6e527f5f5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b7acb0d853e5d7cc356240fc023f5e2144e8bd18","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            auth_params.update(dict("},{"line_number":369,"context_line":"                domain_id\u003dself.credentials.domain_id,"},{"line_number":370,"context_line":"                domain_name\u003dself.credentials.domain_name))"},{"line_number":371,"context_line":"        if scope is None or scope \u003d\u003d \u0027project\u0027:"},{"line_number":372,"context_line":"            auth_params.update(dict("},{"line_number":373,"context_line":"                project_id\u003dself.credentials.project_id,"},{"line_number":374,"context_line":"                project_name\u003dself.credentials.project_name,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_87aeb7e5","line":371,"updated":"2015-09-10 05:32:40.000000000","message":"same as above. Furthermore, if scope is None, you may want to raise an exception as usually indicates a misconfiguration somewhere.","commit_id":"f963bfab20101bb9b4d4d57bcca098a6e527f5f5"},{"author":{"_account_id":15640,"name":"Roxana Gherle","email":"roxana.gherle@hpe.com","username":"roxana-gherle"},"change_message_id":"b04f70fa22f6d28dd70ce6c1d1a90572e7fe15fd","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            auth_params.update(dict("},{"line_number":369,"context_line":"                domain_id\u003dself.credentials.domain_id,"},{"line_number":370,"context_line":"                domain_name\u003dself.credentials.domain_name))"},{"line_number":371,"context_line":"        if scope is None or scope \u003d\u003d \u0027project\u0027:"},{"line_number":372,"context_line":"            auth_params.update(dict("},{"line_number":373,"context_line":"                project_id\u003dself.credentials.project_id,"},{"line_number":374,"context_line":"                project_name\u003dself.credentials.project_name,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_1d56535e","line":371,"in_reply_to":"da20952f_87aeb7e5","updated":"2015-09-10 23:55:41.000000000","message":"I think scope might be None here in a valid case because it picks up the default value \u0027None\u0027 from the parent abstract class, so changing the default to \u0027project\u0027 in this function was actually not taking effect. I changed the default to None like in the parent function definition and made the code change it to project if it arrives here as a None value.","commit_id":"f963bfab20101bb9b4d4d57bcca098a6e527f5f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a0067e64e4bb8b47e137a3311e9f1b43bc3ec970","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return isinstance(credentials, Credentials) and credentials.is_valid()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @property"},{"line_number":92,"context_line":"    def auth_data(self):"},{"line_number":93,"context_line":"        \"\"\"Auth data for default scope\"\"\""},{"line_number":94,"context_line":"        return self.get_auth()"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_1d275cb7","line":92,"updated":"2015-09-28 05:11:13.000000000","message":"do we need this now?","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1d61ad116bad473c0a2036d3b01205154c58524b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return isinstance(credentials, Credentials) and credentials.is_valid()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @property"},{"line_number":92,"context_line":"    def auth_data(self):"},{"line_number":93,"context_line":"        \"\"\"Auth data for default scope\"\"\""},{"line_number":94,"context_line":"        return self.get_auth()"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_28925358","line":92,"in_reply_to":"9a1a9d01_05cf51b4","updated":"2015-10-02 06:45:13.000000000","message":"ok","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6523aa11e6d154e1b61f7b02e3a1c386381c0934","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return isinstance(credentials, Credentials) and credentials.is_valid()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @property"},{"line_number":92,"context_line":"    def auth_data(self):"},{"line_number":93,"context_line":"        \"\"\"Auth data for default scope\"\"\""},{"line_number":94,"context_line":"        return self.get_auth()"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_05cf51b4","line":92,"in_reply_to":"9a1a9d01_1d275cb7","updated":"2015-10-01 16:37:43.000000000","message":"it\u0027s not used within tempest-lib, but I would not drop it unless really needed","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a0067e64e4bb8b47e137a3311e9f1b43bc3ec970","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        \"\"\""},{"line_number":372,"context_line":"        # default scope to \u0027project\u0027 for KeystoneV3AuthProvider"},{"line_number":373,"context_line":"        if not scope:"},{"line_number":374,"context_line":"            scope \u003d \u0027project\u0027"},{"line_number":375,"context_line":"        auth_params \u003d dict("},{"line_number":376,"context_line":"            user_id\u003dself.credentials.user_id,"},{"line_number":377,"context_line":"            username\u003dself.credentials.username,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_bdabd0d5","line":374,"updated":"2015-09-28 05:11:13.000000000","message":"I think default should be \"unscoped\" and may be we can pass all cred param here and let token client to decide what all needs to be included in token request based on \u0027scope param\u0027.\nThis way we can support \"unscoped\" scope also.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1d61ad116bad473c0a2036d3b01205154c58524b","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        \"\"\""},{"line_number":372,"context_line":"        # default scope to \u0027project\u0027 for KeystoneV3AuthProvider"},{"line_number":373,"context_line":"        if not scope:"},{"line_number":374,"context_line":"            scope \u003d \u0027project\u0027"},{"line_number":375,"context_line":"        auth_params \u003d dict("},{"line_number":376,"context_line":"            user_id\u003dself.credentials.user_id,"},{"line_number":377,"context_line":"            username\u003dself.credentials.username,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_88b59fd1","line":374,"in_reply_to":"9a1a9d01_05a0b1a4","updated":"2015-10-02 06:45:13.000000000","message":"yea, I agree with backward compatible consideration and we should keep \u0027project\u0027 as default.  \n\nAllowing string value \"unscoped\"  looks good for me. Which gives flexibility to request un-scoped token also if needed.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6523aa11e6d154e1b61f7b02e3a1c386381c0934","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        \"\"\""},{"line_number":372,"context_line":"        # default scope to \u0027project\u0027 for KeystoneV3AuthProvider"},{"line_number":373,"context_line":"        if not scope:"},{"line_number":374,"context_line":"            scope \u003d \u0027project\u0027"},{"line_number":375,"context_line":"        auth_params \u003d dict("},{"line_number":376,"context_line":"            user_id\u003dself.credentials.user_id,"},{"line_number":377,"context_line":"            username\u003dself.credentials.username,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_05a0b1a4","line":374,"in_reply_to":"9a1a9d01_076ff02b","updated":"2015-10-01 16:37:43.000000000","message":"Having the default scope set to  \u0027project\u0027 is deliberate to avoid affecting all tempest-lib clients with backward incompatible changes.\nBesides I\u0027d rather have scope \u003d None on the parameters meaning \"use library default\".\n\nIf we need to support un-scoped tokens, we can do that, but I would add a third string value \"unscoped\" for that.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"fbec424a9ed56b24e05adb19ff00112f5601c159","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        \"\"\""},{"line_number":372,"context_line":"        # default scope to \u0027project\u0027 for KeystoneV3AuthProvider"},{"line_number":373,"context_line":"        if not scope:"},{"line_number":374,"context_line":"            scope \u003d \u0027project\u0027"},{"line_number":375,"context_line":"        auth_params \u003d dict("},{"line_number":376,"context_line":"            user_id\u003dself.credentials.user_id,"},{"line_number":377,"context_line":"            username\u003dself.credentials.username,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_076ff02b","line":374,"in_reply_to":"9a1a9d01_bdabd0d5","updated":"2015-09-28 17:02:23.000000000","message":"There are only a few operations unscoped token can perform. i.e.\n\n . rescope to a scoped token\n . list projects user can access\n . change user password\n . list groups user is a member of\n . ec2 credential management\n\nIf we are testing any of them, then yes unscoped token would be helpful. However, besides rescoping, a scoped token can do the above as well. Question is do we care to test the above scenarios.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"}],"tempest_lib/services/identity/v3/token_client.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a0067e64e4bb8b47e137a3311e9f1b43bc3ec970","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            elif user_domain_name is not None:"},{"line_number":93,"context_line":"                _domain \u003d dict(name\u003duser_domain_name)"},{"line_number":94,"context_line":"            if _domain:"},{"line_number":95,"context_line":"                id_obj[\u0027password\u0027][\u0027user\u0027][\u0027domain\u0027] \u003d _domain"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if (project_id or project_name):"},{"line_number":98,"context_line":"            _project \u003d dict()"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_5a071a1c","line":95,"updated":"2015-09-28 05:11:13.000000000","message":"Here \"unscoped\" scope cna be choosen base on auth_scope arg.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1d61ad116bad473c0a2036d3b01205154c58524b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            if _domain:"},{"line_number":95,"context_line":"                id_obj[\u0027password\u0027][\u0027user\u0027][\u0027domain\u0027] \u003d _domain"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if (project_id or project_name):"},{"line_number":98,"context_line":"            _project \u003d dict()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"            if project_id:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_48d0e7c9","line":97,"updated":"2015-10-02 06:45:13.000000000","message":"based on support of \"unscoped\" we need to populate \u0027scope\u0027 in request based on string like \u0027project\u0027, \u0027unscoped\u0027 etc","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a0067e64e4bb8b47e137a3311e9f1b43bc3ec970","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                \u0027Unexpected status code {0}\u0027.format(resp.status))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        return resp, json.loads(resp_body)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def get_token(self, **kwargs):"},{"line_number":149,"context_line":"        \"\"\"Returns (token id, token data) for supplied credentials\"\"\""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_fa15ce48","line":147,"updated":"2015-09-28 05:11:13.000000000","message":"How about getting auth scope in this method also which can be used for \"unscoped\" also. because user using token client directly can have flexibility of \"unscoped\" token also","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1d61ad116bad473c0a2036d3b01205154c58524b","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                \u0027Unexpected status code {0}\u0027.format(resp.status))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        return resp, json.loads(resp_body)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def get_token(self, **kwargs):"},{"line_number":149,"context_line":"        \"\"\"Returns (token id, token data) for supplied credentials\"\"\""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_48e787ac","line":147,"in_reply_to":"9a1a9d01_0a78bef7","updated":"2015-10-02 06:45:13.000000000","message":"yea with current usage right. but if someone start using this directly then  we should provide support for \"unscoped\" also as in auth.\n\nBut m also not fully sure about that usage so leaving this call on you. May be when if there is any request then we can support.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b7da74cf332ae49ec5658ce8b20d0ec6851e39cd","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                \u0027Unexpected status code {0}\u0027.format(resp.status))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        return resp, json.loads(resp_body)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def get_token(self, **kwargs):"},{"line_number":149,"context_line":"        \"\"\"Returns (token id, token data) for supplied credentials\"\"\""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_0e550dc5","line":147,"in_reply_to":"9a1a9d01_48e787ac","updated":"2015-10-02 12:06:56.000000000","message":"So I changed this quite a bit to address your comment. I moved the logic that selects the parameters from the auth provider down into the token client. The scope parameter for v3 is passed along with the auth parameters. In case of v2 it\u0027s not passed, and the v2 token client is unchanged.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"6523aa11e6d154e1b61f7b02e3a1c386381c0934","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                \u0027Unexpected status code {0}\u0027.format(resp.status))"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        return resp, json.loads(resp_body)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def get_token(self, **kwargs):"},{"line_number":149,"context_line":"        \"\"\"Returns (token id, token data) for supplied credentials\"\"\""},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_0a78bef7","line":147,"in_reply_to":"9a1a9d01_fa15ce48","updated":"2015-10-01 16:37:43.000000000","message":"My assumption here was that the only user using token client directly is the set of token tests - and those tests would want to have full control on what they pass into the get_token call.","commit_id":"f4cd0ff98d0c4754e9ccf0fcbd493793d3a92fad"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"51b2da02a0b85e3f580b63ea2f714248e74b3ca6","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        return resp, json.loads(resp_body)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def get_token(self, **kwargs):"},{"line_number":158,"context_line":"        \"\"\"Returns (token id, token data) for supplied credentials\"\"\""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        auth_data \u003d kwargs.pop(\u0027auth_data\u0027, False)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a1a9d01_6e79292f","line":157,"updated":"2015-10-02 12:11:04.000000000","message":"Note that I did not add a scope parameter here as it can already be provided and it will be passed through to self.auth.","commit_id":"b181d877eb6807bc39ea178764caae3b8687e843"}]}
