)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"2542a0d2ddc735dc3ff2fcfe8f60f51aebdb46d3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove dependency on admin creds"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch changethe way how refstack-client gets keystone service id."},{"line_number":10,"context_line":"Now non-admin creds should be enought for that."},{"line_number":11,"context_line":"This patch adds support for Keystone API V3."},{"line_number":12,"context_line":"Keystone API version selected from tempest.conf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_b050650c","line":9,"updated":"2015-09-17 16:08:39.000000000","message":"nit: s/changethe way how/changes the way/","commit_id":"9322856d5fb8efcc483fcdacb0fd01ca07f2c829"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"4c38394e3757ce49a12e4230eb47ba2886a5f563","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove dependency on admin creds"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch changethe way how refstack-client gets keystone service id."},{"line_number":10,"context_line":"Now non-admin creds should be enought for that."},{"line_number":11,"context_line":"This patch adds support for Keystone API V3."},{"line_number":12,"context_line":"Keystone API version selected from tempest.conf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_1053513a","line":9,"in_reply_to":"ba15a1d1_b050650c","updated":"2015-09-17 16:22:28.000000000","message":"Done","commit_id":"9322856d5fb8efcc483fcdacb0fd01ca07f2c829"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"2542a0d2ddc735dc3ff2fcfe8f60f51aebdb46d3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Keystone API version selected from tempest.conf"},{"line_number":13,"context_line":"Section: \u0027identity-feature-enabled\u0027, key: \u0027api_v3\u0027"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I1f9edffba88cf99c39b2c8b99f792088d35dbd2e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_6d119a5c","line":15,"updated":"2015-09-17 16:08:39.000000000","message":"add Closes-Bug: #1495671","commit_id":"9322856d5fb8efcc483fcdacb0fd01ca07f2c829"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"4c38394e3757ce49a12e4230eb47ba2886a5f563","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Keystone API version selected from tempest.conf"},{"line_number":13,"context_line":"Section: \u0027identity-feature-enabled\u0027, key: \u0027api_v3\u0027"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I1f9edffba88cf99c39b2c8b99f792088d35dbd2e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ba15a1d1_b034e5fb","line":15,"in_reply_to":"ba15a1d1_6d119a5c","updated":"2015-09-17 16:22:28.000000000","message":"Done","commit_id":"9322856d5fb8efcc483fcdacb0fd01ca07f2c829"}],"refstack_client/refstack_client.py":[{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"17af3c08d9e57e134690a019450063d7d2d16e10","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                                         \u0027tenant_name\u0027)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            args.update(auth_args)"},{"line_number":146,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":147,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":148,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":149,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_186aec1a","line":146,"updated":"2015-09-16 07:25:48.000000000","message":"I know Catherine was keen on using the actualy identity service id where possible as many environments have a v3 endpoint even while auth_version is specified as v2. Perhaps we should try using v3 if uri_v3 is set in the conf. If we get a keystoneclient exception, then try with the v2 endpoint. Thoughts?","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"b23552a10cff1c0d6970ba6d0b055eaece9c2bac","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                                         \u0027tenant_name\u0027)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            args.update(auth_args)"},{"line_number":146,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":147,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":148,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":149,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_eb73a47e","line":146,"in_reply_to":"ba15a1d1_186aec1a","updated":"2015-09-16 07:45:52.000000000","message":"I prefer using v3 over v2 because the ID field returned with v3 is the ID of the keystone service which is unique.  Whereas the ID with v2 is the ID of one of the 3 endpoints whichever being returned as the first item in the returned dictionary.  The first item returned is not guarantee to be the same item all the time. We can check if uri_v3 is set and identity-feature-enabled.api_v3\u003dtrue","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"a281307fb6a8abe6f637fda675c39c1dea02eedd","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                                         \u0027tenant_name\u0027)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            args.update(auth_args)"},{"line_number":146,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":147,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":148,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":149,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_200f6038","line":146,"in_reply_to":"ba15a1d1_5d14c79e","updated":"2015-09-16 16:24:49.000000000","message":"Thank YOU!","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"ef6588917e6e1955b01c1cc4d28e717ae5c760ee","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                                         \u0027tenant_name\u0027)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            args.update(auth_args)"},{"line_number":146,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":147,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":148,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":149,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_5d14c79e","line":146,"in_reply_to":"ba15a1d1_eb73a47e","updated":"2015-09-16 15:17:46.000000000","message":"Sounds reasonable","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"ea536a2e5d2e1bde93af4b3840759f98c24f7be4","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            args.update(auth_args)"},{"line_number":146,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":147,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":148,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":149,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"},{"line_number":150,"context_line":"                for service in token.serviceCatalog:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_834c3d9f","line":147,"updated":"2015-09-16 15:14:34.000000000","message":"I would suggest using uri in both cases, rather than have a uri_v3 conf setting only used when auth_version is 3 and a uri setting only used when auth_version is 2.0. If you do that, this line would move out of the if/elif block.","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"a281307fb6a8abe6f637fda675c39c1dea02eedd","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"            args.update(auth_args)"},{"line_number":146,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":147,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":148,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":149,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"},{"line_number":150,"context_line":"                for service in token.serviceCatalog:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_80b98c7b","line":147,"in_reply_to":"ba15a1d1_834c3d9f","updated":"2015-09-16 16:24:49.000000000","message":"I believe Tempest\u0027s intention is to use uri for v2 and uri_v3 for v3.  auth_version is just to tell Tempest which API version to be used for authentication for API TESTS.  For an environment that have auth_version\u003dv2, uri_v3 is set and api_v3 \u003d true (v3 enabled), we still can use v3 to get the service id.  So the checking should be first on the combination of uri_v3 and api_v3 regardless of auth_version, this will ensure that we will always use v3 to fetch keystone service id whenever it is possible.","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"17af3c08d9e57e134690a019450063d7d2d16e10","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027:"},{"line_number":152,"context_line":"                        return service[\u0027endpoints\u0027][0][\u0027id\u0027]"},{"line_number":153,"context_line":"            elif auth_version \u003d\u003d \u0027v3\u0027:"},{"line_number":154,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri_v3\u0027)"},{"line_number":155,"context_line":"                client \u003d ksclient3.Client(**args)"},{"line_number":156,"context_line":"                token \u003d client.auth_ref"},{"line_number":157,"context_line":"                for service in token[\u0027catalog\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_585ce4ec","line":154,"updated":"2015-09-16 07:25:48.000000000","message":"We should check if conf_file.has_option(\u0027identity\u0027, \u0027domain_name\u0027). If domain_name is set in the tempest.conf, we should set:\n\nargs[\u0027project_domain_name\u0027] \u003d conf.get(\u0027identity\u0027, \u0027domain_name\u0027)\n\nargs[\u0027user_domain_name\u0027] \u003d conf.get(\u0027identity\u0027, \u0027domain_name\u0027)\n\nSeems that client.project_domain_id and client.user_domain_id are set to \u0027default\u0027 when nothing is passed in for the project and user domain IDs/names. So we need to be sure to handle when the domain happens to not be \u0027default\u0027.","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"ea536a2e5d2e1bde93af4b3840759f98c24f7be4","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027:"},{"line_number":152,"context_line":"                        return service[\u0027endpoints\u0027][0][\u0027id\u0027]"},{"line_number":153,"context_line":"            elif auth_version \u003d\u003d \u0027v3\u0027:"},{"line_number":154,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri_v3\u0027)"},{"line_number":155,"context_line":"                client \u003d ksclient3.Client(**args)"},{"line_number":156,"context_line":"                token \u003d client.auth_ref"},{"line_number":157,"context_line":"                for service in token[\u0027catalog\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_48eba478","line":154,"in_reply_to":"ba15a1d1_585ce4ec","updated":"2015-09-16 15:14:34.000000000","message":"++ Definitely need to support non-default domain names/ids. But note that project and user domain information need to come from separate conf settings, since these may need to be different. Also, need to support the possibility of the conf specifying ids instead of names. Should support either.","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"ef6588917e6e1955b01c1cc4d28e717ae5c760ee","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027:"},{"line_number":152,"context_line":"                        return service[\u0027endpoints\u0027][0][\u0027id\u0027]"},{"line_number":153,"context_line":"            elif auth_version \u003d\u003d \u0027v3\u0027:"},{"line_number":154,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri_v3\u0027)"},{"line_number":155,"context_line":"                client \u003d ksclient3.Client(**args)"},{"line_number":156,"context_line":"                token \u003d client.auth_ref"},{"line_number":157,"context_line":"                for service in token[\u0027catalog\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_7d9c2b0f","line":154,"in_reply_to":"ba15a1d1_585ce4ec","updated":"2015-09-16 15:17:46.000000000","message":"Good point! Also we should handle non-default region.","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"ea536a2e5d2e1bde93af4b3840759f98c24f7be4","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            elif auth_version \u003d\u003d \u0027v3\u0027:"},{"line_number":154,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri_v3\u0027)"},{"line_number":155,"context_line":"                client \u003d ksclient3.Client(**args)"},{"line_number":156,"context_line":"                token \u003d client.auth_ref"},{"line_number":157,"context_line":"                for service in token[\u0027catalog\u0027]:"},{"line_number":158,"context_line":"                    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027:"},{"line_number":159,"context_line":"                        return service[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_23ca114f","line":156,"updated":"2015-09-16 15:14:34.000000000","message":"auth_args aren\u0027t being passed here, so I can\u0027t see how this would work. Don\u0027t you need to call authenticate(**auth_args) ?","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"ef6588917e6e1955b01c1cc4d28e717ae5c760ee","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            elif auth_version \u003d\u003d \u0027v3\u0027:"},{"line_number":154,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri_v3\u0027)"},{"line_number":155,"context_line":"                client \u003d ksclient3.Client(**args)"},{"line_number":156,"context_line":"                token \u003d client.auth_ref"},{"line_number":157,"context_line":"                for service in token[\u0027catalog\u0027]:"},{"line_number":158,"context_line":"                    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027:"},{"line_number":159,"context_line":"                        return service[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_d901c407","line":156,"in_reply_to":"ba15a1d1_23ca114f","updated":"2015-09-16 15:17:46.000000000","message":"args includes auth_args. separate call for V3 is not needed","commit_id":"f3408ef3bdc3834b82144c3806d4d6a5ca361a61"},{"author":{"_account_id":10526,"name":"Catherine Diep","email":"cdiep@us.ibm.com","username":"cdiep"},"change_message_id":"3ad9802f856a3b41d38f309e6f76ec6645c5c77e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            # Prefer Keystone V3 API if it is enabled"},{"line_number":131,"context_line":"            auth_version \u003d ("},{"line_number":132,"context_line":"                \u0027v3\u0027 if (conf_file.has_option(\u0027identity-feature-enabled\u0027,"},{"line_number":133,"context_line":"                                              \u0027api_v3\u0027)"},{"line_number":134,"context_line":"                         and conf_file.get(\u0027identity-feature-enabled\u0027,"},{"line_number":135,"context_line":"                                           \u0027api_v3\u0027))"},{"line_number":136,"context_line":"                else \u0027v2\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_a4713daa","line":133,"updated":"2015-09-16 19:07:59.000000000","message":"should we also check for conf_file.has_option(\u0027identity\u0027, \u0027uri_v3\u0027) and it is not empty?","commit_id":"6485594ff8e666cb3652731402357b698a1bb221"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"b04ed65b189a1ecaad5037255a769cfecb2f9538","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            # Prefer Keystone V3 API if it is enabled"},{"line_number":131,"context_line":"            auth_version \u003d ("},{"line_number":132,"context_line":"                \u0027v3\u0027 if (conf_file.has_option(\u0027identity-feature-enabled\u0027,"},{"line_number":133,"context_line":"                                              \u0027api_v3\u0027)"},{"line_number":134,"context_line":"                         and conf_file.get(\u0027identity-feature-enabled\u0027,"},{"line_number":135,"context_line":"                                           \u0027api_v3\u0027))"},{"line_number":136,"context_line":"                else \u0027v2\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_9f01c908","line":133,"in_reply_to":"ba15a1d1_a4713daa","updated":"2015-09-17 10:13:36.000000000","message":"Let it be so. Any way, it is temporary hot fix.","commit_id":"6485594ff8e666cb3652731402357b698a1bb221"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"2542a0d2ddc735dc3ff2fcfe8f60f51aebdb46d3","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                                                \u0027domain_name\u0027)"},{"line_number":165,"context_line":"                    args[\u0027user_domain_name\u0027] \u003d conf_file.get(\u0027identity\u0027,"},{"line_number":166,"context_line":"                                                             \u0027domain_name\u0027)"},{"line_number":167,"context_line":"                if conf_file.has_option(\u0027identity\u0027, \u0027region_name\u0027):"},{"line_number":168,"context_line":"                    args[\u0027region_name\u0027] \u003d conf_file.get(\u0027identity\u0027,"},{"line_number":169,"context_line":"                                                        \u0027region_name\u0027)"},{"line_number":170,"context_line":"                client \u003d ksclient3.Client(**args)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_6d9e7a08","line":167,"updated":"2015-09-17 16:08:39.000000000","message":"should this be \"region\" instead of \"region_name\"? I thought that \"region\" was already used by other things but I could be wrong.","commit_id":"9322856d5fb8efcc483fcdacb0fd01ca07f2c829"},{"author":{"_account_id":9377,"name":"Sergey Slipushenko","email":"slipushenko@gmail.com","username":"sslypushenko"},"change_message_id":"4c38394e3757ce49a12e4230eb47ba2886a5f563","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                                                \u0027domain_name\u0027)"},{"line_number":165,"context_line":"                    args[\u0027user_domain_name\u0027] \u003d conf_file.get(\u0027identity\u0027,"},{"line_number":166,"context_line":"                                                             \u0027domain_name\u0027)"},{"line_number":167,"context_line":"                if conf_file.has_option(\u0027identity\u0027, \u0027region_name\u0027):"},{"line_number":168,"context_line":"                    args[\u0027region_name\u0027] \u003d conf_file.get(\u0027identity\u0027,"},{"line_number":169,"context_line":"                                                        \u0027region_name\u0027)"},{"line_number":170,"context_line":"                client \u003d ksclient3.Client(**args)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_101b51cb","line":167,"in_reply_to":"ba15a1d1_6d9e7a08","updated":"2015-09-17 16:22:28.000000000","message":"You are right. Thx.","commit_id":"9322856d5fb8efcc483fcdacb0fd01ca07f2c829"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e61c4143296ba6db9d1bf9f610604abbfd0f7cd6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            if auth_version \u003d\u003d \u0027v2\u0027:"},{"line_number":154,"context_line":"                args[\u0027auth_url\u0027] \u003d conf_file.get(\u0027identity\u0027, \u0027uri\u0027)"},{"line_number":155,"context_line":"                client \u003d ksclient2.Client(**args)"},{"line_number":156,"context_line":"                token \u003d client.tokens.authenticate(**auth_args)"},{"line_number":157,"context_line":"                for service in token.serviceCatalog:"},{"line_number":158,"context_line":"                    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027:"},{"line_number":159,"context_line":"                        return service[\u0027endpoints\u0027][0][\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_17fd7c6d","line":156,"updated":"2015-09-17 22:55:38.000000000","message":"this doesn\u0027t appear to work. I had to replace this line and the next with the following:\n\n                token \u003d client.auth_ref\n                for service in token[\u0027serviceCatalog\u0027]:","commit_id":"ecba34b7ddb58c5caece3daafb229867c1f0ce7e"}]}
