)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"af0e70994e4ceab3a79866ff5d50a31a9dd2ca36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     3a6d47c1 (Merge \"Remove redundant default value None for dict.get\")"},{"line_number":2,"context_line":"Author:     root \u003cvinod.kumar.boppanna@cern.ch\u003e"},{"line_number":3,"context_line":"AuthorDate: 2014-02-24 01:47:21 +0100"},{"line_number":4,"context_line":"Commit:     vinodkumarboppanna \u003cvinod.kumar.boppanna@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-03-02 01:04:55 +0100"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAVn%2F%2F0cw%3D","line":2,"updated":"2014-03-03 23:24:21.000000000","message":"you might want to address the author as well","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4b9736b7c987a9f93a14428a2d86207349a24509","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds to Keystone to convert V2 endpoints to V3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The Domain Quota Management Driver uses the V3 Authentication Token."},{"line_number":10,"context_line":"Also, it tries to contact Keystone for getting list of projects in a"},{"line_number":11,"context_line":"domain using V3 API like /v3/projects?domain_id\u003d\u003cid\u003e. But the"},{"line_number":12,"context_line":"keystone v3/client.py default uses V2 API and hence code changed"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAVn%2F%2FGGA%3D","line":9,"updated":"2014-03-09 22:06:59.000000000","message":"what\u0027s the domain quota management driver?","commit_id":"f18bb82e5e51a8358d9cd126f3050346ad2fbe81"}],"keystoneclient/v3/client.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"cc227c841ed2c6b0f3432a2c1e338e09a589f10a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            self._process_management_url(kwargs.get(\u0027region_name\u0027))"},{"line_number":122,"context_line":"            self.domain_name \u003d self.auth_ref.domain_name"},{"line_number":123,"context_line":"            self.domain_id \u003d self.auth_ref.domain_id"},{"line_number":124,"context_line":"        if hasattr(self, \u0027_management_url\u0027):"},{"line_number":125,"context_line":"            if self._management_url is not None:"},{"line_number":126,"context_line":"                temp \u003d self._management_url"},{"line_number":127,"context_line":"                self._management_url \u003d temp.replace(\"/v2.0\", \"/v3\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2FsWM%3D","line":124,"updated":"2014-03-01 00:22:30.000000000","message":"looks like there is a loophole in there where hasattr(self, \u0027_management_url\u0027):  is true but _management_url is None.  I think what you mean is:\n\nif hasattr(self, \u0027_management_url\u0027) and self._management_url is not None:\n    temp \u003d self._management_url\nelse:\n    temp \u003d self.management_url\nself.management_url \u003d temp.replace(\"/v2.0\", \"/v3\")","commit_id":"bccb5e5c2f960ce08e5be79b316d0e7e13018dbf"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"864518a521593ef807ffa4e97a4f557e4a77d82f","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        if (hasattr(self, \u0027_management_url\u0027) and"},{"line_number":129,"context_line":"                self._management_url is not None):"},{"line_number":130,"context_line":"            temp \u003d self._management_url"},{"line_number":131,"context_line":"            self._management_url \u003d temp.replace(\"/v2.0\", \"/v3\")"},{"line_number":132,"context_line":"        elif (hasattr(self, \u0027management_url\u0027) and"},{"line_number":133,"context_line":"                self.management_url is not None):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVX%2F%2Fpl0%3D","line":130,"updated":"2014-03-01 23:57:38.000000000","message":"temp is unnecessary in both of these calls.  replace makes a copy.  Even for debugging, you can see the before and after state.  If there is another iteration, drop the temp","commit_id":"0618748ee08c72886ee61a945fbe0d3d5345178c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3f2db814df3ff367b2a54f66c4873fa77b4183e9","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            self.domain_name \u003d self.auth_ref.domain_name"},{"line_number":126,"context_line":"            self.domain_id \u003d self.auth_ref.domain_id"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        if (hasattr(self, \u0027_management_url\u0027) and"},{"line_number":129,"context_line":"                self._management_url is not None):"},{"line_number":130,"context_line":"            self._management_url \u003d self._management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":131,"context_line":"        elif (hasattr(self, \u0027management_url\u0027) and"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F0gw%3D","line":128,"updated":"2014-03-03 23:20:34.000000000","message":"can be written as just getattr(self, \u0027_management_url\u0027, None)","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"af0e70994e4ceab3a79866ff5d50a31a9dd2ca36","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            self.domain_name \u003d self.auth_ref.domain_name"},{"line_number":126,"context_line":"            self.domain_id \u003d self.auth_ref.domain_id"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        if (hasattr(self, \u0027_management_url\u0027) and"},{"line_number":129,"context_line":"                self._management_url is not None):"},{"line_number":130,"context_line":"            self._management_url \u003d self._management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":131,"context_line":"        elif (hasattr(self, \u0027management_url\u0027) and"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F0dI%3D","line":128,"in_reply_to":"AAAAVn%2F%2F0gw%3D","updated":"2014-03-03 23:24:21.000000000","message":"Actually i\u0027d be interested to know the case where _management_url is not defined. It should always be available and you can just do: \n\nif self._management_url: \n    self._management_url \u003d self._management_url.replace(\u0027/v2.0\u0027, \u0027/v3\u0027)\n\nand i think we need a great big log message there - but we can add that later because i don\u0027t know what else to recommend for the moment.","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3f2db814df3ff367b2a54f66c4873fa77b4183e9","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        if (hasattr(self, \u0027_management_url\u0027) and"},{"line_number":129,"context_line":"                self._management_url is not None):"},{"line_number":130,"context_line":"            self._management_url \u003d self._management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":131,"context_line":"        elif (hasattr(self, \u0027management_url\u0027) and"},{"line_number":132,"context_line":"                self.management_url is not None):"},{"line_number":133,"context_line":"            self.management_url \u003d self.management_url.replace(\"/v2.0\", \"/v3\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F0gg%3D","line":130,"updated":"2014-03-03 23:20:34.000000000","message":"use \u0027 for strings","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3f2db814df3ff367b2a54f66c4873fa77b4183e9","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        if (hasattr(self, \u0027_management_url\u0027) and"},{"line_number":129,"context_line":"                self._management_url is not None):"},{"line_number":130,"context_line":"            self._management_url \u003d self._management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":131,"context_line":"        elif (hasattr(self, \u0027management_url\u0027) and"},{"line_number":132,"context_line":"                self.management_url is not None):"},{"line_number":133,"context_line":"            self.management_url \u003d self.management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":134,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F0fM%3D","line":131,"updated":"2014-03-03 23:20:34.000000000","message":"i don\u0027t think you should be setting this one. \u0027management_url\u0027 is either the URL that has been force set by a user or the above _management_url.\n\nWhen getting a URL from the service catalog we are only setting _management_url","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3f2db814df3ff367b2a54f66c4873fa77b4183e9","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        elif (hasattr(self, \u0027management_url\u0027) and"},{"line_number":132,"context_line":"                self.management_url is not None):"},{"line_number":133,"context_line":"            self.management_url \u003d self.management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            pass"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_raw_token_from_identity_service(self, auth_url, user_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F0hk%3D","line":134,"updated":"2014-03-03 23:20:34.000000000","message":"there\u0027s no need for this else","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4cbb75fa8cb175b0dd6abc58739972b066c23fd7","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                self.management_url is not None):"},{"line_number":133,"context_line":"            self.management_url \u003d self.management_url.replace(\"/v2.0\", \"/v3\")"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            pass"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_raw_token_from_identity_service(self, auth_url, user_id\u003dNone,"},{"line_number":138,"context_line":"                                            username\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAVn%2F%2F0hU%3D","line":135,"updated":"2014-03-03 23:17:18.000000000","message":"the else: pass can be removed","commit_id":"33e95eec4aee84e83c0b0c778ddf897390e312a9"}]}
