)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ef45bcf69dfc52d6b93d81ca1a1e93ed589db3a1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix missing service_catalog parameter in Client object"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Return None if service_catalog parameter does not exist"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"},{"line_number":12,"context_line":"Closes-Bug: #1508374"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa7ab95a_e93f3423","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":55},"updated":"2016-08-26 15:46:21.000000000","message":"Please add some details here about why it got broken and how service_catalog is different from other attributes like tenant_name.","commit_id":"ad8aa4aad245e2e0a964592df869ae898bdbb488"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"341a0e15a0ac7ddc98fc9fc40aae62da54b2bc91","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"service_catalog is the property and it is not initialized on object creation."},{"line_number":12,"context_line":"service_catalog tries to get value from auth_ref and raises AttributeError"},{"line_number":13,"context_line":"exception if auth_ref is not initialized. This change adds try-catch"},{"line_number":14,"context_line":"block in service_catalog property to catch this error."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa7ab95a_acc20183","line":13,"range":{"start_line":13,"start_character":41,"end_line":13,"end_character":42},"updated":"2016-08-30 12:05:09.000000000","message":"It worked before we introduced sessions, because authentication happened on client instantiation. Now, when sessions are used, auth_ref is not initialized until the first request.","commit_id":"d496302e3c896c1aa4bbb9a95f47ffd97965ab69"},{"author":{"_account_id":21465,"name":"Mikhail Nikolaenko","email":"mnikolaenko@protonmail.com","username":"mnikolaenko"},"change_message_id":"189ed678e43576be7c1edf2207e6e8d4e5bbc881","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"service_catalog is the property and it is not initialized on object creation."},{"line_number":12,"context_line":"service_catalog tries to get value from auth_ref and raises AttributeError"},{"line_number":13,"context_line":"exception if auth_ref is not initialized. This change adds try-catch"},{"line_number":14,"context_line":"block in service_catalog property to catch this error."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa7ab95a_b344194a","line":13,"range":{"start_line":13,"start_character":41,"end_line":13,"end_character":42},"in_reply_to":"fa7ab95a_acc20183","updated":"2016-08-30 13:38:55.000000000","message":"Done. Thanks!","commit_id":"d496302e3c896c1aa4bbb9a95f47ffd97965ab69"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"341a0e15a0ac7ddc98fc9fc40aae62da54b2bc91","unresolved":false,"context_lines":[{"line_number":11,"context_line":"service_catalog is the property and it is not initialized on object creation."},{"line_number":12,"context_line":"service_catalog tries to get value from auth_ref and raises AttributeError"},{"line_number":13,"context_line":"exception if auth_ref is not initialized. This change adds try-catch"},{"line_number":14,"context_line":"block in service_catalog property to catch this error."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"},{"line_number":17,"context_line":"Closes-Bug: #1508374"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa7ab95a_cc8f4573","line":14,"range":{"start_line":14,"start_character":25,"end_line":14,"end_character":33},"updated":"2016-08-30 12:05:09.000000000","message":"properly","commit_id":"d496302e3c896c1aa4bbb9a95f47ffd97965ab69"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"341a0e15a0ac7ddc98fc9fc40aae62da54b2bc91","unresolved":false,"context_lines":[{"line_number":11,"context_line":"service_catalog is the property and it is not initialized on object creation."},{"line_number":12,"context_line":"service_catalog tries to get value from auth_ref and raises AttributeError"},{"line_number":13,"context_line":"exception if auth_ref is not initialized. This change adds try-catch"},{"line_number":14,"context_line":"block in service_catalog property to catch this error."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"},{"line_number":17,"context_line":"Closes-Bug: #1508374"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa7ab95a_2cefd11e","line":14,"range":{"start_line":14,"start_character":25,"end_line":14,"end_character":36},"updated":"2016-08-30 12:05:09.000000000","message":"to properly","commit_id":"d496302e3c896c1aa4bbb9a95f47ffd97965ab69"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ca7d6d7394465854f223e0991e654911c90b923f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"service_catalog is the property and it is not initialized on object creation."},{"line_number":12,"context_line":"service_catalog tries to get value from auth_ref and raises AttributeError"},{"line_number":13,"context_line":"exception if auth_ref is not initialized. This change adds try-catch"},{"line_number":14,"context_line":"block in service_catalog property to catch this error."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"},{"line_number":17,"context_line":"Closes-Bug: #1508374"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa7ab95a_78dc3046","line":14,"range":{"start_line":14,"start_character":25,"end_line":14,"end_character":36},"in_reply_to":"fa7ab95a_2cefd11e","updated":"2016-08-30 13:30:08.000000000","message":"disregard this","commit_id":"d496302e3c896c1aa4bbb9a95f47ffd97965ab69"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ca7d6d7394465854f223e0991e654911c90b923f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"service_catalog is the property and it is not initialized on object creation."},{"line_number":12,"context_line":"service_catalog tries to get value from auth_ref and raises AttributeError"},{"line_number":13,"context_line":"exception if auth_ref is not initialized. This change adds try-catch"},{"line_number":14,"context_line":"block in service_catalog property to catch this error."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"},{"line_number":17,"context_line":"Closes-Bug: #1508374"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa7ab95a_d8e53c09","line":14,"range":{"start_line":14,"start_character":25,"end_line":14,"end_character":33},"in_reply_to":"fa7ab95a_cc8f4573","updated":"2016-08-30 13:30:08.000000000","message":"disregard this","commit_id":"d496302e3c896c1aa4bbb9a95f47ffd97965ab69"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"1c0b5f82f3892f8fb5affea69dd0de5d906dd7f8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"sessions, because authentication happened on client instantiation. Now,"},{"line_number":15,"context_line":"when sessions are used, auth_ref is not initialized until the first"},{"line_number":16,"context_line":"request. This change adds try-catch block in service_catalog property"},{"line_number":17,"context_line":"to catch this error."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I58eb888f0989241f9e5626564bd48d901b324d36"},{"line_number":20,"context_line":"Closes-Bug: #1508374"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5a74a57a_6b15b847","line":17,"updated":"2016-11-30 23:13:50.000000000","message":"So in sessions this will always be None because http_client.auth_ref is never set when using sessions. However i think this is still worth catching and returning None rather than an AttributeError.","commit_id":"b405d71a5f9562414ce6b08f7eb4556f534dd273"}],"keystoneclient/httpclient.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3e0a44ea394556efcf756f45db744ba162eaf3ce","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        self.stale_duration \u003d stale_duration or access.STALE_TOKEN_DURATION"},{"line_number":400,"context_line":"        self.stale_duration \u003d int(self.stale_duration)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        self._authenticate_client_using_session(session)"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"    def get_token(self, session, **kwargs):"},{"line_number":405,"context_line":"        return self.auth_token"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_5ec2d085","line":402,"range":{"start_line":402,"start_character":13,"end_line":402,"end_character":47},"updated":"2016-08-24 04:26:31.000000000","message":"this would mean a session is immediately authenticated on client creation. currently this is done on first request.","commit_id":"6ac255e1433c5f587b971b0c0c55a835453d6497"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2c7c6222d4c4e6bdb8abbaf102ac48dd8680edc2","unresolved":false,"context_lines":[{"line_number":445,"context_line":"    def service_catalog(self):"},{"line_number":446,"context_line":"        \"\"\"Return this client\u0027s service catalog.\"\"\""},{"line_number":447,"context_line":"        try:"},{"line_number":448,"context_line":"            service_catalog \u003d self.auth_ref.service_catalog"},{"line_number":449,"context_line":"        except AttributeError:"},{"line_number":450,"context_line":"            return None"},{"line_number":451,"context_line":"        return service_catalog"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_16bd4ab7","line":448,"range":{"start_line":448,"start_character":12,"end_line":448,"end_character":59},"updated":"2016-08-22 18:13:16.000000000","message":"could just keep this as \n\n  return self.auth_ref.service_catalog\n\nand remove line 451","commit_id":"6ac255e1433c5f587b971b0c0c55a835453d6497"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2c7c6222d4c4e6bdb8abbaf102ac48dd8680edc2","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            if isinstance(self.auth_ref, access.AccessInfo):"},{"line_number":876,"context_line":"                self._process_auth_ref()"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"    def _process_auth_ref(self):"},{"line_number":879,"context_line":"        ref \u003d self.auth_ref"},{"line_number":880,"context_line":""},{"line_number":881,"context_line":"        attrs \u003d [\u0027version\u0027, \u0027user_id\u0027, \u0027username\u0027, \u0027user_domain_id\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_b6dd56e2","line":878,"range":{"start_line":878,"start_character":8,"end_line":878,"end_character":25},"updated":"2016-08-22 18:13:16.000000000","message":"theres also no reason to have this as a separate function, combine it with _auth_client_using_session","commit_id":"6ac255e1433c5f587b971b0c0c55a835453d6497"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2c7c6222d4c4e6bdb8abbaf102ac48dd8680edc2","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            if isinstance(self.auth_ref, access.AccessInfo):"},{"line_number":876,"context_line":"                self._process_auth_ref()"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"    def _process_auth_ref(self):"},{"line_number":879,"context_line":"        ref \u003d self.auth_ref"},{"line_number":880,"context_line":""},{"line_number":881,"context_line":"        attrs \u003d [\u0027version\u0027, \u0027user_id\u0027, \u0027username\u0027, \u0027user_domain_id\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_b66f162a","line":878,"range":{"start_line":878,"start_character":8,"end_line":878,"end_character":25},"updated":"2016-08-22 18:13:16.000000000","message":"this function needs comments and documentation badly, theres a lot of cryptic reading and setting of variables without any given reasons","commit_id":"6ac255e1433c5f587b971b0c0c55a835453d6497"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3e0a44ea394556efcf756f45db744ba162eaf3ce","unresolved":false,"context_lines":[{"line_number":880,"context_line":""},{"line_number":881,"context_line":"        attrs \u003d [\u0027version\u0027, \u0027user_id\u0027, \u0027username\u0027, \u0027user_domain_id\u0027,"},{"line_number":882,"context_line":"                 \u0027domain_id\u0027, \u0027domain_name\u0027, \u0027project_id\u0027, \u0027project_name\u0027,"},{"line_number":883,"context_line":"                 \u0027project_domain_id\u0027, \u0027trust_id\u0027]"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"        for attr in attrs:"},{"line_number":886,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_7e4eac3b","line":883,"updated":"2016-08-24 04:26:31.000000000","message":"there\u0027s no reason for any of these to be used via the client object.","commit_id":"6ac255e1433c5f587b971b0c0c55a835453d6497"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2c7c6222d4c4e6bdb8abbaf102ac48dd8680edc2","unresolved":false,"context_lines":[{"line_number":882,"context_line":"                 \u0027domain_id\u0027, \u0027domain_name\u0027, \u0027project_id\u0027, \u0027project_name\u0027,"},{"line_number":883,"context_line":"                 \u0027project_domain_id\u0027, \u0027trust_id\u0027]"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"        for attr in attrs:"},{"line_number":886,"context_line":"            try:"},{"line_number":887,"context_line":"                old_attr \u003d getattr(self, attr)"},{"line_number":888,"context_line":"                setattr(self, attr, getattr(ref, attr, old_attr))"},{"line_number":889,"context_line":"            except KeyError:"},{"line_number":890,"context_line":"                pass"},{"line_number":891,"context_line":""},{"line_number":892,"context_line":"        try:"},{"line_number":893,"context_line":"            self.auth_token_from_user \u003d getattr(ref, \u0027auth_token\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_963e5a26","line":890,"range":{"start_line":885,"start_character":0,"end_line":890,"end_character":20},"updated":"2016-08-22 18:13:16.000000000","message":"add comments before this, it\u0027s not obvious what you\u0027re doing here, or in _process_auth_ref","commit_id":"6ac255e1433c5f587b971b0c0c55a835453d6497"}]}
