)]}'
{"tempest/auth.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3e7b949617208520ca213d470b50b52a83036917","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _convert_credentials(self, credentials):"},{"line_number":58,"context_line":"        # Support dict credentials for backwards compatibility"},{"line_number":59,"context_line":"        if isinstance(credentials, dict):"},{"line_number":60,"context_line":"            return get_credentials(**credentials)"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            return credentials"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_8c325af0","line":59,"updated":"2015-02-04 07:26:09.000000000","message":"I think we need to add identity version here too. Currently may be there is no case where auth provider class is instantiated with cred as dict.\n\nwe can have identity_version in  KeystoneV2AuthProvider (v2) \u0026 KeystoneV2AuthProvider (v3) class and use that in _convert_credentials method.","commit_id":"6e274cbd895f88ee2ad7bb0b047d48aa7424066f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"2721119cc93e031b531416bf381f682d18d8fb1b","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _convert_credentials(self, credentials):"},{"line_number":58,"context_line":"        # Support dict credentials for backwards compatibility"},{"line_number":59,"context_line":"        if isinstance(credentials, dict):"},{"line_number":60,"context_line":"            return get_credentials(**credentials)"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            return credentials"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_6eaa8372","line":59,"in_reply_to":"da86d52c_8c325af0","updated":"2015-02-11 22:51:55.000000000","message":"This was just a temporary workaround. So I\u0027ll try and drop it and see if it breaks anything.","commit_id":"6e274cbd895f88ee2ad7bb0b047d48aa7424066f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb7a199fbf110cb74581a9a8942522312c6d234d","unresolved":false,"context_lines":[{"line_number":447,"context_line":"    :param fill_in (boolean): obtain a token and fill in all credential"},{"line_number":448,"context_line":"           details provided by the identity service. When fill_in is not"},{"line_number":449,"context_line":"           specified, credentials are not validated. Validation can be invoked"},{"line_number":450,"context_line":"           by invoking ``is_valid()``"},{"line_number":451,"context_line":"    :param kwargs (dict): take into account only if credential_type is"},{"line_number":452,"context_line":"           not specified or None. Dict of credential key/value pairs"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_99f9f5ca","line":450,"updated":"2015-02-03 04:41:40.000000000","message":"it is necessary to add identity_version description here.","commit_id":"6e274cbd895f88ee2ad7bb0b047d48aa7424066f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c5817e54a0ff0587510f0ef40e46e3dafbd5803d","unresolved":false,"context_lines":[{"line_number":447,"context_line":"    :param fill_in (boolean): obtain a token and fill in all credential"},{"line_number":448,"context_line":"           details provided by the identity service. When fill_in is not"},{"line_number":449,"context_line":"           specified, credentials are not validated. Validation can be invoked"},{"line_number":450,"context_line":"           by invoking ``is_valid()``"},{"line_number":451,"context_line":"    :param kwargs (dict): take into account only if credential_type is"},{"line_number":452,"context_line":"           not specified or None. Dict of credential key/value pairs"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_3847fe1e","line":450,"in_reply_to":"da86d52c_99f9f5ca","updated":"2015-02-03 19:26:35.000000000","message":"Done","commit_id":"6e274cbd895f88ee2ad7bb0b047d48aa7424066f"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"1ca8051ed18bc4cb9a280dbc2bd657d18b1e4f5f","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        auth_provider_class \u003d KeystoneV3AuthProvider"},{"line_number":468,"context_line":"    else:"},{"line_number":469,"context_line":"        raise exceptions.InvalidIdentityVersion("},{"line_number":470,"context_line":"            identity_version\u003didentity_version)"},{"line_number":471,"context_line":"    creds \u003d credential_class(**kwargs)"},{"line_number":472,"context_line":"    # Fill in the credentials fields that were not specified"},{"line_number":473,"context_line":"    if fill_in:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_dd09c22d","line":470,"updated":"2015-02-02 12:22:20.000000000","message":"For future extensibility, I propose to use global const here like;\n\nIDENTITY_VERSION \u003d {\u0027v2\u0027: (KeystoneV2Credentials, KeystoneV2AuthProvider), \n                    \u0027v3\u0027: (KeystoneV3Credentials, KeystoneV3AuthProvider)}\n\nthen\n\ncred_and_auth \u003d IDENTITY_VERSION[identity_version]\nif cred_and_auth:\n    credential_class, auth_provider_class \u003d cred_and_auth\nelse:\n    raise exception\n\nFor example, the above impl. makes it easy to add the function to check supported versions as follows;\n\ndef is_supported(identity_version):\n    return identity_version in IDENTITY_VERSION","commit_id":"6e274cbd895f88ee2ad7bb0b047d48aa7424066f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"c5817e54a0ff0587510f0ef40e46e3dafbd5803d","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        auth_provider_class \u003d KeystoneV3AuthProvider"},{"line_number":468,"context_line":"    else:"},{"line_number":469,"context_line":"        raise exceptions.InvalidIdentityVersion("},{"line_number":470,"context_line":"            identity_version\u003didentity_version)"},{"line_number":471,"context_line":"    creds \u003d credential_class(**kwargs)"},{"line_number":472,"context_line":"    # Fill in the credentials fields that were not specified"},{"line_number":473,"context_line":"    if fill_in:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_585672d3","line":470,"in_reply_to":"da86d52c_dd09c22d","updated":"2015-02-03 19:26:35.000000000","message":"Good idea, thank you","commit_id":"6e274cbd895f88ee2ad7bb0b047d48aa7424066f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"00070089370eaa0f41b8f35eac0df369a27f943c","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    credential_class, auth_provider_class \u003d IDENTITY_VERSION.get("},{"line_number":467,"context_line":"        identity_version)"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    creds \u003d globals()[credential_class](**kwargs)"},{"line_number":470,"context_line":"    # Fill in the credentials fields that were not specified"},{"line_number":471,"context_line":"    if fill_in:"},{"line_number":472,"context_line":"        auth_provider \u003d globals()[auth_provider_class](creds)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_ce979cea","line":469,"updated":"2015-02-12 15:30:17.000000000","message":"Why use globals here? Couldn\u0027t you just store a pointer to the class in the IDENTITY_VERSION dict?","commit_id":"35190aa79abfcfe85bb24c332d57b6d7e1c7f4b3"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"00070089370eaa0f41b8f35eac0df369a27f943c","unresolved":false,"context_lines":[{"line_number":469,"context_line":"    creds \u003d globals()[credential_class](**kwargs)"},{"line_number":470,"context_line":"    # Fill in the credentials fields that were not specified"},{"line_number":471,"context_line":"    if fill_in:"},{"line_number":472,"context_line":"        auth_provider \u003d globals()[auth_provider_class](creds)"},{"line_number":473,"context_line":"        creds \u003d auth_provider.fill_credentials()"},{"line_number":474,"context_line":"    return creds"},{"line_number":475,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_4e048c49","line":472,"updated":"2015-02-12 15:30:17.000000000","message":"Why use globals here? Couldn\u0027t you just store a pointer to the class in the IDENTITY_VERSION dict?","commit_id":"35190aa79abfcfe85bb24c332d57b6d7e1c7f4b3"}]}
