)]}'
{"glance/registry/api/v1/images.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"2a27eae018bd142a3a9e44e3a03e0d2832ca22ee","unresolved":false,"context_lines":[{"line_number":317,"context_line":"            return exc.HTTPNotFound()"},{"line_number":318,"context_line":"        except exception.NotFound:"},{"line_number":319,"context_line":"            msg \u003d _(\"Image %(id)s not found for user %(user)s\")"},{"line_number":320,"context_line":"            args \u003d {\u0027user\u0027: req.context.user, \u0027id\u0027: id}"},{"line_number":321,"context_line":"            LOG.debug(msg % args)"},{"line_number":322,"context_line":"            return exc.HTTPNotFound()"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FmD4%3D","line":320,"updated":"2012-08-28 21:40:31.000000000","message":"The \u0027tenant\u0027 actually matters a lot more than the \u0027user\u0027, but both pieces of info are useful. However, you should actually be able to depend on the log formatter already logging that context-specific data. You should double-check that, though.","commit_id":"34a3b113a4c3a3b2328107925f37c87fb6688bae"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"c668ed12305a9c336fad28696449bdce0a333bf5","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        images \u003d self._get_images(req.context, **params)"},{"line_number":117,"context_line":"        image_dicts \u003d [make_image_dict(i) for i in images]"},{"line_number":118,"context_line":"        LOG.info(_(\"Returning image list\"))"},{"line_number":119,"context_line":"        return dict(images\u003dimage_dicts)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _get_query_params(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fkvs%3D","line":118,"updated":"2012-08-30 03:33:14.000000000","message":"Let\u0027s use \u0027Returning detailed image list\u0027 just to be obvious.","commit_id":"53ce1baaae2345ca1281e711d1c98970bb0417b3"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0e90c7fad4191e9822bf283492ab8f642df763ab","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        images \u003d self._get_images(req.context, **params)"},{"line_number":117,"context_line":"        image_dicts \u003d [make_image_dict(i) for i in images]"},{"line_number":118,"context_line":"        LOG.info(_(\"Returning image list\"))"},{"line_number":119,"context_line":"        return dict(images\u003dimage_dicts)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _get_query_params(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALH%2F%2Fkgc%3D","line":118,"in_reply_to":"AAAALH%2F%2Fkvs%3D","updated":"2012-08-30 13:59:24.000000000","message":"No problem, I\u0027ll change.  Had considered this, but the funcName is available in the context (though it\u0027s not currently included in the log message), so I didn\u0027t want to be redundant.","commit_id":"53ce1baaae2345ca1281e711d1c98970bb0417b3"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"e24e7472fe27402ed06f5c35c82f2cc3fae2e97f","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        if image_id and not utils.is_uuid_like(image_id):"},{"line_number":342,"context_line":"            msg \u003d _(\"Rejecting image creation request for invalid image \""},{"line_number":343,"context_line":"                    \"id \u0027%(bad_id)s\u0027\")"},{"line_number":344,"context_line":"            LOG.error(msg % {\u0027bad_id\u0027: image_id})"},{"line_number":345,"context_line":"            msg \u003d _(\"Invalid image id format\")"},{"line_number":346,"context_line":"            return exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FjEc%3D","line":344,"updated":"2012-08-31 19:02:13.000000000","message":"This shouldn\u0027t be an ERROR. It\u0027s a user-level mistake that operators don\u0027t need to be concerned about.","commit_id":"6fe117bc749a62bd8b88e2c35f42dbc2936c926b"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"e24e7472fe27402ed06f5c35c82f2cc3fae2e97f","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            return exc.HTTPBadRequest(msg)"},{"line_number":398,"context_line":"        except exception.NotFound:"},{"line_number":399,"context_line":"            msg \u003d _(\"Image %(id)s not found\")"},{"line_number":400,"context_line":"            LOG.debug(msg % {\u0027id\u0027: id})"},{"line_number":401,"context_line":"            raise exc.HTTPNotFound(body\u003d\u0027Image not found\u0027,"},{"line_number":402,"context_line":"                               request\u003dreq,"},{"line_number":403,"context_line":"                               content_type\u003d\u0027text/plain\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FjEU%3D","line":400,"updated":"2012-08-31 19:02:13.000000000","message":"Is there a reason this is DEBUG when everything similar is INFO?","commit_id":"6fe117bc749a62bd8b88e2c35f42dbc2936c926b"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a5a020096b035d337bccc2c02741579852b22662","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            return exc.HTTPBadRequest(msg)"},{"line_number":398,"context_line":"        except exception.NotFound:"},{"line_number":399,"context_line":"            msg \u003d _(\"Image %(id)s not found\")"},{"line_number":400,"context_line":"            LOG.debug(msg % {\u0027id\u0027: id})"},{"line_number":401,"context_line":"            raise exc.HTTPNotFound(body\u003d\u0027Image not found\u0027,"},{"line_number":402,"context_line":"                               request\u003dreq,"},{"line_number":403,"context_line":"                               content_type\u003d\u0027text/plain\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FjDI%3D","line":400,"in_reply_to":"AAAALH%2F%2FjEU%3D","updated":"2012-08-31 19:15:56.000000000","message":"Nope, just missed this when I changed the levels ... good eye!","commit_id":"6fe117bc749a62bd8b88e2c35f42dbc2936c926b"}],"glance/registry/api/v1/members.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"e24e7472fe27402ed06f5c35c82f2cc3fae2e97f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            # Malformed entity..."},{"line_number":105,"context_line":"            msg \u003d _(\"Invalid membership association specified for \""},{"line_number":106,"context_line":"                    \"image %(id)s\")"},{"line_number":107,"context_line":"            LOG.error(msg % {\u0027id\u0027: image_id})"},{"line_number":108,"context_line":"            msg \u003d _(\"Invalid membership association: %s\") % e"},{"line_number":109,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FjEQ%3D","line":107,"updated":"2012-08-31 19:02:13.000000000","message":"This is a user-level error, let\u0027s log at INFO.","commit_id":"6fe117bc749a62bd8b88e2c35f42dbc2936c926b"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"e24e7472fe27402ed06f5c35c82f2cc3fae2e97f","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                # Malformed entity..."},{"line_number":121,"context_line":"                msg \u003d _(\"Invalid membership association specified for \""},{"line_number":122,"context_line":"                        \"image %(id)s\")"},{"line_number":123,"context_line":"                LOG.error(msg % {\u0027id\u0027: image_id})"},{"line_number":124,"context_line":"                msg \u003d _(\"Invalid membership association: %s\") % e"},{"line_number":125,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FjEM%3D","line":123,"updated":"2012-08-31 19:02:13.000000000","message":"This is a user-level error, let\u0027s log at INFO.","commit_id":"6fe117bc749a62bd8b88e2c35f42dbc2936c926b"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"e24e7472fe27402ed06f5c35c82f2cc3fae2e97f","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                # Malformed entity..."},{"line_number":221,"context_line":"                msg \u003d _(\"Invalid membership association specified for \""},{"line_number":222,"context_line":"                        \"image %(id)s\")"},{"line_number":223,"context_line":"                LOG.error(msg % {\u0027id\u0027: image_id})"},{"line_number":224,"context_line":"                msg \u003d _(\"Invalid membership association: %s\") % e"},{"line_number":225,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FjEI%3D","line":223,"updated":"2012-08-31 19:02:13.000000000","message":"This is a user-level error, let\u0027s log at INFO.","commit_id":"6fe117bc749a62bd8b88e2c35f42dbc2936c926b"}]}
