)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"ddd3fd5802fc08779ac55f22cd3f4287b7385988","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Log a message when image object not found in swift"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should log when a request for an image object in swift returns a 404."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I27a970840cf448196245ba1e58523b9e0b1495f5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2Fuoo%3D","line":10,"updated":"2013-09-20 13:41:26.000000000","message":"It would be good if the bug number is attached.","commit_id":"dfa21c1140790fb916bdbfa1a6edb9840079ecd0"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"a3c0e4f9423c511d8338b5a831ad27b340f4e60f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Log a message when image object not found in swift"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should log when a request for an image object in swift returns a 404."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I27a970840cf448196245ba1e58523b9e0b1495f5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAS3%2F%2FulE%3D","line":10,"in_reply_to":"AAAAS3%2F%2Fuoo%3D","updated":"2013-09-20 13:58:11.000000000","message":"Yes, missed that -- thanks.","commit_id":"dfa21c1140790fb916bdbfa1a6edb9840079ecd0"}],"glance/store/swift.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"e3b03623fa9e997f04162588c21bb8a49c65ebb0","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FuiY%3D","line":282,"updated":"2013-09-20 14:09:03.000000000","message":"Maybe picky, but do you think it\u0027s better to add the location.get_uri() in the message? Given the the old message was trying to say \"Swift could not find image ***at URI***\".","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"da25596ddb40122d07f92d9eb783d402bab2314c","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Ff%2FI%3D","line":282,"in_reply_to":"AAAAS3%2F%2FgC8%3D","updated":"2013-09-25 16:57:51.000000000","message":"Done","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"f61683539b24a979399681cca480d33f3e631bb7","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FgC8%3D","line":282,"in_reply_to":"AAAAS3%2F%2FgFE%3D","updated":"2013-09-25 16:39:27.000000000","message":"The object will be the image id, so this message will not leak any new information if transmitted to the user. The glance container is not known by users, so I didn\u0027t necessarily want to (potentially) transmit that. In my case the UUID (object name/image id) was enough to understand/debug the issue.","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"},{"author":{"_account_id":8759,"name":"Arnaud Legendre","email":"arnaudleg@gmail.com","username":"arnaud"},"change_message_id":"d8b6fc9c511140ec458ffd057ad22443fcab74a9","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FgFE%3D","line":282,"in_reply_to":"AAAAS3%2F%2Fs6U%3D","updated":"2013-09-25 16:20:52.000000000","message":"I would add the container in the message (location.container)\n\"Swift could not find object %s in container %s.\"","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"60995408c0e26ad8647acbfc033eaed72429ebce","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2Fs6U%3D","line":282,"in_reply_to":"AAAAS3%2F%2FuHg%3D","updated":"2013-09-20 23:43:01.000000000","message":"Oops, forgot the creds :) Thinking a better way since I prefer to tell the admin more info when there is a problem.","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"},{"author":{"_account_id":6493,"name":"John Bresnahan","email":"john@bresnahan.me","username":"jbresnah"},"change_message_id":"668d83890d4a041502ab6477e95ab3786ccae675","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FtMQ%3D","line":282,"in_reply_to":"AAAAS3%2F%2FuHg%3D","updated":"2013-09-20 21:09:44.000000000","message":"That is a good call Stuart.  I like using the URI in the message but we would defeinitely need to make sure the creds are scrubbed.  perhaps we could just log the URI and create the error object without it.","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"},{"author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"change_message_id":"cbb98ce76f8d545e01f2e5c712560c8fe9fae653","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    resp_chunk_size\u003dself.CHUNKSIZE)"},{"line_number":280,"context_line":"        except swiftclient.ClientException as e:"},{"line_number":281,"context_line":"            if e.http_status \u003d\u003d httplib.NOT_FOUND:"},{"line_number":282,"context_line":"                msg \u003d _(\"Swift could not find object %s.\" % location.obj)"},{"line_number":283,"context_line":"                LOG.warn(msg)"},{"line_number":284,"context_line":"                raise exception.NotFound(msg)"},{"line_number":285,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FuHg%3D","line":282,"in_reply_to":"AAAAS3%2F%2FuiY%3D","updated":"2013-09-20 15:51:43.000000000","message":"Would using get_uri() print out the administrator credentials in plain text (and possibly return them to the user)?\n\n    def get_uri(self):\n        auth_or_store_url \u003d self.auth_or_store_url\n        if auth_or_store_url.startswith(\u0027http://\u0027):\n            auth_or_store_url \u003d auth_or_store_url[len(\u0027http://\u0027):]\n        elif auth_or_store_url.startswith(\u0027https://\u0027):\n            auth_or_store_url \u003d auth_or_store_url[len(\u0027https://\u0027):]\n\n        credstring \u003d self._get_credstring()\n        auth_or_store_url \u003d auth_or_store_url.strip(\u0027/\u0027)\n        container \u003d self.container.strip(\u0027/\u0027)\n        obj \u003d self.obj.strip(\u0027/\u0027)\n\n        return \u0027%s://%s%s/%s/%s\u0027 % (self.scheme, credstring, auth_or_store_url,\n                                    container, obj)\n\n    def _get_credstring(self):\n        if self.user and self.key:\n            return \u0027%s:%s@\u0027 % (urllib.quote(self.user), urllib.quote(self.key))\n        return \u0027\u0027","commit_id":"48052ee8ebc61b6b354c2694e5bd88840b7184a4"}]}
