)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"0ef1d75f02860922311c27c86631cb546e2865a6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"six.text_type"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I27101390e4f95e5c7690b1b445b7e75b8bcb9a08"},{"line_number":13,"context_line":"Closes-Bug: #128467"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAVn%2F%2Fx%2F4%3D","line":13,"updated":"2014-03-04 06:01:53.000000000","message":"Seems it\u0027s a wrong bug id, is it #1284677 ?","commit_id":"4999c7b282b29bfa95d803746442e361810c2bcf"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"fd945626ea51ac3bd081dc2f6279b4d609021daf","unresolved":false,"context_lines":[{"line_number":10,"context_line":"six.text_type"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I27101390e4f95e5c7690b1b445b7e75b8bcb9a08"},{"line_number":13,"context_line":"Closes-Bug: #128467"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAVn%2F%2FuJc%3D","line":13,"in_reply_to":"AAAAVn%2F%2Fx%2F4%3D","updated":"2014-03-04 14:24:30.000000000","message":"Done","commit_id":"4999c7b282b29bfa95d803746442e361810c2bcf"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"8e286658330d87c7aba9b720cc1ecc8596a34002","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To support Python3, unicode() calls has been replaced by"},{"line_number":10,"context_line":"six.text_type"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I27101390e4f95e5c7690b1b445b7e75b8bcb9a08"},{"line_number":13,"context_line":"Closes-Bug: #1284677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAVn%2F%2Fl6o%3D","line":11,"updated":"2014-03-05 06:35:40.000000000","message":"Do you think it will be cool if we also give a message for \"utils.exception_to_str()\" application at here?","commit_id":"023144ded0aada77051738aa53134d6e21a27c25"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"251d3fd6fb5d89c0ade22f40b99b6e5e54dd0db7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"To support Python3, unicode() calls has been replaced by"},{"line_number":10,"context_line":"six.text_type"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I27101390e4f95e5c7690b1b445b7e75b8bcb9a08"},{"line_number":13,"context_line":"Closes-Bug: #1284677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAVn%2F%2FgEY%3D","line":11,"in_reply_to":"AAAAVn%2F%2Fl6o%3D","updated":"2014-03-05 18:42:22.000000000","message":"Done","commit_id":"023144ded0aada77051738aa53134d6e21a27c25"}],"glance/api/middleware/cache.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"0ef1d75f02860922311c27c86631cb546e2865a6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            self.policy.enforce(req.context, action, {})"},{"line_number":100,"context_line":"        except exception.Forbidden as e:"},{"line_number":101,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dsix.text_type(e),"},{"line_number":102,"context_line":"                                          request\u003dreq)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def process_request(self, request):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2Fx9o%3D","line":101,"updated":"2014-03-04 06:01:53.000000000","message":"To prevent potential encoding issue, IMO leverage exception_to_str() seems is a good way to go. (need to port it from glanceclient first): https://review.openstack.org/#/c/76229/2/glanceclient/common/utils.py\n\nAny thoughts?","commit_id":"4999c7b282b29bfa95d803746442e361810c2bcf"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"11ab68077a4deed2268529dbd9c9a486e7f39716","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            self.policy.enforce(req.context, action, {})"},{"line_number":100,"context_line":"        except exception.Forbidden as e:"},{"line_number":101,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dsix.text_type(e),"},{"line_number":102,"context_line":"                                          request\u003dreq)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def process_request(self, request):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FttI%3D","line":101,"in_reply_to":"AAAAVn%2F%2Ft3Q%3D","updated":"2014-03-04 14:54:39.000000000","message":"1. IMO since we are going to make GlanceException.msg be a Message object for i18n support (your change has already based on #71398), so I think explanation value of any webob.exc.* object in API layer should be a \"e.msg\" instead of string.\n\n2. TBH I\u0027m not sure the case you mentioned, but at least I think this case can be handled by exception_to_str(): https://github.com/openstack/glance/blob/master/glance/api/v1/images.py#L1067\n\nThanks.","commit_id":"4999c7b282b29bfa95d803746442e361810c2bcf"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"aba5f4ef2d0a98aab9c627ee1c5a2e9feca3dd52","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            self.policy.enforce(req.context, action, {})"},{"line_number":100,"context_line":"        except exception.Forbidden as e:"},{"line_number":101,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dsix.text_type(e),"},{"line_number":102,"context_line":"                                          request\u003dreq)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def process_request(self, request):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2Ftb8%3D","line":101,"in_reply_to":"AAAAVn%2F%2FttI%3D","updated":"2014-03-04 15:03:34.000000000","message":"Ok, will upload a new patchset with the changes so you can take a look.\nthanks","commit_id":"4999c7b282b29bfa95d803746442e361810c2bcf"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"fd945626ea51ac3bd081dc2f6279b4d609021daf","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        try:"},{"line_number":99,"context_line":"            self.policy.enforce(req.context, action, {})"},{"line_number":100,"context_line":"        except exception.Forbidden as e:"},{"line_number":101,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dsix.text_type(e),"},{"line_number":102,"context_line":"                                          request\u003dreq)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def process_request(self, request):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2Ft3Q%3D","line":101,"in_reply_to":"AAAAVn%2F%2Fx9o%3D","updated":"2014-03-04 14:24:30.000000000","message":"You mean for all six.text_types usages? Or only when exception goes trough explanation\u003d ?\n\nSome unicode replacement were also for log messages and exception_to_str oesn\u0027t fit in that case ( at least the name)","commit_id":"4999c7b282b29bfa95d803746442e361810c2bcf"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"98e92e493b1f52c76f5dd41c24d93d70ba1abcb5","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            self.policy.enforce(req.context, action, {})"},{"line_number":98,"context_line":"        except exception.Forbidden as e:"},{"line_number":99,"context_line":"            msg \u003d utils.exception_to_str(e)"},{"line_number":100,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg,"},{"line_number":101,"context_line":"                                          request\u003dreq)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bad4c104_fb2401c8","line":99,"updated":"2014-05-01 02:16:58.000000000","message":"To support i18n for client side, I prefer to use e.msg here instead of what you did:\n\n    raise webob.exc.HTTPForbidden(explanation\u003de.msg, request\u003dreq)","commit_id":"4c619ce1d1a9a8e7748be64a8a82ae00c644fdfd"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"a389a984449945e034c410549a4cb729f6e13537","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            self.policy.enforce(req.context, action, {})"},{"line_number":98,"context_line":"        except exception.Forbidden as e:"},{"line_number":99,"context_line":"            msg \u003d utils.exception_to_str(e)"},{"line_number":100,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003dmsg,"},{"line_number":101,"context_line":"                                          request\u003dreq)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_c208c993","line":99,"in_reply_to":"bad4c104_fb2401c8","updated":"2014-05-05 13:14:30.000000000","message":"Done","commit_id":"4c619ce1d1a9a8e7748be64a8a82ae00c644fdfd"}],"glance/api/v2/image_data.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"98e92e493b1f52c76f5dd41c24d93d70ba1abcb5","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        except ValueError as e:"},{"line_number":90,"context_line":"            LOG.debug(_(\"Cannot save data for image %(id)s: %(e)s\"),"},{"line_number":91,"context_line":"                      {\u0027id\u0027: image_id, \u0027e\u0027: six.text_type(e)})"},{"line_number":92,"context_line":"            self._restore(image_repo, image)"},{"line_number":93,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003d"},{"line_number":94,"context_line":"                                           utils.exception_to_str(e))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_d9503361","line":91,"updated":"2014-05-01 02:16:58.000000000","message":"utils.exception_to_str(e) ?","commit_id":"4c619ce1d1a9a8e7748be64a8a82ae00c644fdfd"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"a389a984449945e034c410549a4cb729f6e13537","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        except ValueError as e:"},{"line_number":90,"context_line":"            LOG.debug(_(\"Cannot save data for image %(id)s: %(e)s\"),"},{"line_number":91,"context_line":"                      {\u0027id\u0027: image_id, \u0027e\u0027: six.text_type(e)})"},{"line_number":92,"context_line":"            self._restore(image_repo, image)"},{"line_number":93,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003d"},{"line_number":94,"context_line":"                                           utils.exception_to_str(e))"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_c209a9de","line":91,"in_reply_to":"9ad9bd40_d9503361","updated":"2014-05-05 13:14:30.000000000","message":"Done","commit_id":"4c619ce1d1a9a8e7748be64a8a82ae00c644fdfd"}],"glance/api/v2/tasks.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"1e3669280bc3b66e18f64c14f04b71c7e22ae54c","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for param in self._required_properties:"},{"line_number":178,"context_line":"            if param not in body:"},{"line_number":179,"context_line":"                msg \u003d _(\"Task \u0027%s\u0027 is required\") % param"},{"line_number":180,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dsix.text_type(msg))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def __init__(self, schema\u003dNone):"},{"line_number":183,"context_line":"        super(RequestDeserializer, self).__init__()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_8f8a6519","line":180,"updated":"2014-05-05 15:22:06.000000000","message":"To support client side i18n, I prefer this:\n\n    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)","commit_id":"eb9276f5c2d4950d594a72a1dca28ca83cbba21b"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"987e4b420f6feccf7f4960f60a22716614002dfc","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        for param in self._required_properties:"},{"line_number":178,"context_line":"            if param not in body:"},{"line_number":179,"context_line":"                msg \u003d _(\"Task \u0027%s\u0027 is required\") % param"},{"line_number":180,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dsix.text_type(msg))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def __init__(self, schema\u003dNone):"},{"line_number":183,"context_line":"        super(RequestDeserializer, self).__init__()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_4994d542","line":180,"in_reply_to":"9ad9bd40_8f8a6519","updated":"2014-05-05 18:40:25.000000000","message":"Done","commit_id":"eb9276f5c2d4950d594a72a1dca28ca83cbba21b"}],"glance/db/sqlalchemy/migrate_repo/versions/017_quote_encrypted_swift_credentials.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"8f1d3e068370f1bf12e077407833b4ba76c74a1a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            msg \u003d _(\"Failed to decrypt location value for image %(image_id)s\")"},{"line_number":87,"context_line":"            LOG.warn(msg % {\u0027image_id\u0027: image[\u0027id\u0027]})"},{"line_number":88,"context_line":"        except exception.BadStoreUri as e:"},{"line_number":89,"context_line":"            reason \u003d utils.exception_to_str(e)"},{"line_number":90,"context_line":"            err_msg \u003d _(\"Invalid store uri for image: %(image_id)s. \""},{"line_number":91,"context_line":"                        \"Details: %(reason)s\") % {\u0027image_id\u0027: image.id,"},{"line_number":92,"context_line":"                                                  \u0027reason\u0027: reason}"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2Bd%2B0%3D","line":89,"updated":"2014-03-26 15:37:18.000000000","message":"Generally to change migration script is not a good idea, but this straightforward little change is OK to me.","commit_id":"b973068087df2dc20581ac203d6f52724b6f1151"}],"glance/store/base.py":[{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"957def259ed41f6c0cf56767bae7bdfc55deeee1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _exception_to_unicode(exc):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return six.text_type(exc)"},{"line_number":33,"context_line":"    except UnicodeError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bhwk%3D","line":30,"updated":"2014-03-26 06:06:57.000000000","message":"if so it seems we could use exception_to_str() to replace this function.","commit_id":"d950c44498eef45fce0d87bad12cd1d7cb3c741d"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"383efb2f4ba2d6f1a7fa74407360db7631576d37","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _exception_to_unicode(exc):"},{"line_number":31,"context_line":"    try:"},{"line_number":32,"context_line":"        return six.text_type(exc)"},{"line_number":33,"context_line":"    except UnicodeError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2Bfnc%3D","line":30,"in_reply_to":"AAAAWH%2F%2Bhwk%3D","updated":"2014-03-26 12:34:15.000000000","message":"Done","commit_id":"d950c44498eef45fce0d87bad12cd1d7cb3c741d"}],"glance/tests/functional/store/test_rbd.py":[{"author":{"_account_id":11366,"name":"Espartaco Palma","email":"esparta@gmail.com","username":"esparta"},"change_message_id":"390f886ed7f07c45c8b9745fb0f21dffefcb566a","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        # and uri to ascii before passing it to librbd."},{"line_number":134,"context_line":"        store \u003d self.get_store()"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        image_id \u003d six.text_type(str(uuid.uuid4()))"},{"line_number":137,"context_line":"        image_size \u003d 300"},{"line_number":138,"context_line":"        image_data \u003d six.StringIO(\u0027X\u0027 * image_size)"},{"line_number":139,"context_line":"        image_checksum \u003d \u002741757066eaff7c4c6c965556b4d3c6c5\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_47a914de","line":136,"updated":"2014-05-06 04:29:33.000000000","message":"I think the str() call is superflous on both unicode or six.text_type functions.","commit_id":"627d5fbc1303b3f9d9b2f89acf21359437f9a928"}]}
