)]}'
{"designateclient/auth.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"27f4aec64373e545deff8d1851f44d3620dcf24a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from six.moves.urllib.parse import urlparse"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class KeystoneAuth(AuthBase):"},{"line_number":24,"context_line":"    def __init__(self, auth_url, username\u003dNone, password\u003dNone, tenant_id\u003dNone,"},{"line_number":25,"context_line":"                 tenant_name\u003dNone, token\u003dNone, service_type\u003dNone,"},{"line_number":26,"context_line":"                 endpoint_type\u003dNone, region_name\u003dNone, sudo_tenant_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_2132f110","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":27},"updated":"2016-05-09 01:58:47.000000000","message":"why is this a requests AuthBase? trust the keystoneauth it\u0027ll do the requests handling internally.","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"27f4aec64373e545deff8d1851f44d3620dcf24a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                 tenant_name\u003dNone, token\u003dNone, service_type\u003dNone,"},{"line_number":26,"context_line":"                 endpoint_type\u003dNone, region_name\u003dNone, sudo_tenant_id\u003dNone,"},{"line_number":27,"context_line":"                 project_id\u003dNone, project_name\u003dNone, domain_id\u003dNone,"},{"line_number":28,"context_line":"                 project_domain_id\u003dNone, user_domain_id\u003dNone):"},{"line_number":29,"context_line":"        self.auth_url \u003d str(auth_url).rstrip(\u0027/\u0027)"},{"line_number":30,"context_line":"        self.username \u003d username"},{"line_number":31,"context_line":"        self.password \u003d password"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_c12b2593","line":28,"range":{"start_line":28,"start_character":60,"end_line":28,"end_character":62},"updated":"2016-05-09 01:58:47.000000000","message":"you\u0027re kind of missing the point of keystoneauth being an auth abstraction layer - if i want to do federated auth here how do i fit that into these options? \n\nYou\u0027re also missing at least trust_id - not that you should add it here, but if you let keystoneauth handle this stuff for you you won\u0027t have to continually update with keystone options in future.","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.token \u003d token"},{"line_number":38,"context_line":"        self.sudo_tenant_id \u003d sudo_tenant_id"},{"line_number":39,"context_line":"        # NOTE(clenimar): deprecated parameters for backwards compatibility"},{"line_number":40,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":41,"context_line":"        self.tenant_name \u003d tenant_name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if (not username and not password) and not token:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_38ab561f","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":34},"updated":"2016-05-07 05:15:12.000000000","message":"maybe consider issuing a warning if tenant_id or tenant_name is used? (just a minor comment)","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.refresh_auth()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def __call__(self, request):"},{"line_number":56,"context_line":"        if not self.token:"},{"line_number":57,"context_line":"            self.refresh_auth()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        request.headers[\u0027X-Auth-Token\u0027] \u003d self.token"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        if self.sudo_tenant_id:"},{"line_number":62,"context_line":"            request.headers[\u0027X-Designate-Sudo-Tenant-ID\u0027] \u003d self.sudo_tenant_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_182db2a7","line":59,"range":{"start_line":56,"start_character":7,"end_line":59,"end_character":52},"updated":"2016-05-07 05:15:12.000000000","message":"i am wondering why this is needed at all, keystoneauth should handle reauthenticating under the covers, ideally the developer should not need to know anything about tokens or catalogs. see: https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/session.py#L376-L386","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return request"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def get_ksauth(self):"},{"line_number":67,"context_line":"        verify \u003d urlparse(self.auth_url).scheme \u003d\u003d \u0027https\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        auth \u003d generic.Password(username\u003dself.username,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_3894f6e0","line":66,"range":{"start_line":66,"start_character":8,"end_line":66,"end_character":18},"updated":"2016-05-07 05:15:12.000000000","message":"maybe call this get_keystone_session() instead, if we\u0027re already renaming it","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return keystone_session.Session(auth\u003dauth, verify\u003dverify)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_endpoints(self, service_type\u003dNone, endpoint_type\u003dNone,"},{"line_number":82,"context_line":"                      region_name\u003dNone):"},{"line_number":83,"context_line":"        return self.service_catalog.get_endpoints("},{"line_number":84,"context_line":"            service_type\u003dservice_type,"},{"line_number":85,"context_line":"            endpoint_type\u003dendpoint_type,"},{"line_number":86,"context_line":"            region_name\u003dregion_name)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def get_url(self, service_type\u003dNone, endpoint_type\u003dNone, region_name\u003dNone):"},{"line_number":89,"context_line":"        service_type \u003d service_type or self.service_type"},{"line_number":90,"context_line":"        endpoint_type \u003d endpoint_type or self.endpoint_type"},{"line_number":91,"context_line":"        region_name \u003d region_name or self.region_name"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        endpoints \u003d self.get_endpoints(service_type, endpoint_type,"},{"line_number":94,"context_line":"                                       region_name)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        url \u003d endpoints[service_type][0][endpoint_type]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # NOTE(kiall): The Version 1 API is the only API that has ever included"},{"line_number":99,"context_line":"        #              the version number in the endpoint. Thus, it\u0027s safe to"},{"line_number":100,"context_line":"        #              simply remove it if present."},{"line_number":101,"context_line":"        url \u003d url.rstrip(\u0027/\u0027)"},{"line_number":102,"context_line":"        if url.endswith(\u0027/v1\u0027):"},{"line_number":103,"context_line":"            url \u003d url[:-3]"},{"line_number":104,"context_line":"        return url"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def refresh_auth(self):"},{"line_number":107,"context_line":"        ks \u003d self.get_ksauth()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_78183e85","line":104,"range":{"start_line":81,"start_character":0,"end_line":104,"end_character":18},"updated":"2016-05-07 05:15:12.000000000","message":"i don\u0027t understand why these exist, they are not used anywhere in the code base","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def refresh_auth(self):"},{"line_number":107,"context_line":"        ks \u003d self.get_ksauth()"},{"line_number":108,"context_line":"        self.token \u003d ks.get_token()"},{"line_number":109,"context_line":"        self.service_catalog \u003d ks.service_catalog"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_98408258","line":108,"range":{"start_line":108,"start_character":21,"end_line":108,"end_character":35},"updated":"2016-05-07 05:15:12.000000000","message":"i don\u0027t think you want to use this, it takes an auth plugin as a parameter, and further, it looks like it\u0027s deprecated: https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/session.py#L655-L658","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def refresh_auth(self):"},{"line_number":107,"context_line":"        ks \u003d self.get_ksauth()"},{"line_number":108,"context_line":"        self.token \u003d ks.get_token()"},{"line_number":109,"context_line":"        self.service_catalog \u003d ks.service_catalog"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_581d7a72","line":109,"range":{"start_line":109,"start_character":8,"end_line":109,"end_character":28},"updated":"2016-05-07 05:15:12.000000000","message":"seems like the only reason designate keeps the service_catalog around is to get it\u0027s endpoints and URLs, which it in turn does nothing with :)","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"52325a3bf00be3a28e0e880d4c8f4cbdd982793f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def refresh_auth(self):"},{"line_number":107,"context_line":"        ks \u003d self.get_ksauth()"},{"line_number":108,"context_line":"        self.token \u003d ks.get_token()"},{"line_number":109,"context_line":"        self.service_catalog \u003d ks.service_catalog"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_f8254ec2","line":109,"range":{"start_line":109,"start_character":31,"end_line":109,"end_character":49},"updated":"2016-05-07 05:15:12.000000000","message":"theres no property named that AFAICT","commit_id":"f9421a4fd59ec52533cd6c42642c419287ef10de"}]}
