)]}'
{"nova/exception.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b34efeea9c9c35454594e236665ad68f13d2d0f3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    # to pass it in as a parameter. Otherwise we get a cyclic import of"},{"line_number":83,"context_line":"    # nova.notifier.api -\u003e nova.utils -\u003e nova.exception :("},{"line_number":84,"context_line":"    def inner(f):"},{"line_number":85,"context_line":"        def wrapped(self, context, *args, **kw):"},{"line_number":86,"context_line":"            # Don\u0027t store self or context in the payload, it now seems to"},{"line_number":87,"context_line":"            # contain confidential information."},{"line_number":88,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Ftgw%3D","line":85,"updated":"2013-01-08 23:23:25.000000000","message":"I have a couple of concerns here.  The most minor one is that this now forces us to use this decorator only on instance or class methods; is there anywhere where this is not the case?\n\nThe second concern is that, if I recall correctly, the get_context_from_function_and_args() function was created because the decorator was used on some methods where context had to be searched for, which argues that, for those methods, it is not the first non-self argument to the method.  This means that, for those methods, this could result in a notify still containing the context, but missing the first argument to the method, which may be rather useful.\n\nAlso, it\u0027s worth pointing out that there are no other consumers of get_context_from_function_and_args().  (It is used in nova/openstack/common/notifier/api.py, but the version used is of course from nova/openstack/common/context.py.)  Given that, this patch should probably also remove the function, assuming my two concerns above aren\u0027t a factor…","commit_id":"4d34d82779d8380fc498761e22fa1427c41ea822"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"78b39c35d6d164a5d74e1edcfa756b4e83e5dbd6","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    # to pass it in as a parameter. Otherwise we get a cyclic import of"},{"line_number":83,"context_line":"    # nova.notifier.api -\u003e nova.utils -\u003e nova.exception :("},{"line_number":84,"context_line":"    def inner(f):"},{"line_number":85,"context_line":"        def wrapped(self, context, *args, **kw):"},{"line_number":86,"context_line":"            # Don\u0027t store self or context in the payload, it now seems to"},{"line_number":87,"context_line":"            # contain confidential information."},{"line_number":88,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FteQ%3D","line":85,"in_reply_to":"AAAAM3%2F%2Ftgw%3D","updated":"2013-01-08 23:57:50.000000000","message":"Yeah, I had those concerns too. I missed the extra wrap_exceptions, but have removed them in a subsequent patch (they did nothing since they had no notifiers specified). I also removed the context search (a copy lives in Oslo Context, so people can use that)\n\nThe only remaining calls are in methods.","commit_id":"4d34d82779d8380fc498761e22fa1427c41ea822"},{"author":{"_account_id":4992,"name":"malini-k-bhandaru","email":"malini.k.bhandaru@intel.com","username":"malini-k-bhandaru"},"change_message_id":"678125e81eeb123f917ae4ebf4eb9213e953c134","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            except Exception, e:"},{"line_number":91,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":92,"context_line":"                    if notifier:"},{"line_number":93,"context_line":"                        payload \u003d dict(args\u003dargs, exception\u003de)"},{"line_number":94,"context_line":"                        payload.update(kw)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"                        # Use a temp vars so we don\u0027t shadow"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fta8%3D","line":93,"updated":"2013-01-09 00:39:51.000000000","message":"Should we not check if notifier\u003d\u003dNone before attempting \"notifier.Error\" and notifier.notify to be on the safe side given it is a general function.\n\nAlso might there be a use case where there is something in the context useful for debugging .. but I guess if that occurs folks can enrich this wrapper to to pass along all things but passwords.","commit_id":"289aeaf2040317648754b673c9eacd798efd8ae0"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"6068bbd2979c286e675e9b100b7613d6c03524e7","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            except Exception, e:"},{"line_number":91,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":92,"context_line":"                    if notifier:"},{"line_number":93,"context_line":"                        payload \u003d dict(args\u003dargs, exception\u003de)"},{"line_number":94,"context_line":"                        payload.update(kw)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"                        # Use a temp vars so we don\u0027t shadow"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fse8%3D","line":93,"in_reply_to":"AAAAM3%2F%2Fta8%3D","updated":"2013-01-09 10:51:24.000000000","message":"I don\u0027t understand the question here.  The code is checking for notifier !\u003d None on line 92.  An extra indent could be saved if immediately after \u0027except Exception, e\u0027 was simply \u0027if not notifier: raise\u0027, though.  Like so:\n\nhttp://paste.openstack.org/show/29056/\n\nBut that cleanup doesn\u0027t need to happen in this patch IMO","commit_id":"289aeaf2040317648754b673c9eacd798efd8ae0"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"bad61865e4359d12651d6a880bc4fb41e6d3fada","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            except Exception, e:"},{"line_number":91,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":92,"context_line":"                    if notifier:"},{"line_number":93,"context_line":"                        payload \u003d dict(args\u003dargs, exception\u003de)"},{"line_number":94,"context_line":"                        payload.update(kw)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"                        # Use a temp vars so we don\u0027t shadow"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Frgo%3D","line":93,"in_reply_to":"AAAAM3%2F%2Fta8%3D","updated":"2013-01-09 19:40:38.000000000","message":"I looked at putting it before the \u0027return inner\u0027 but it gets messy. Six of one, half-dozen of another I figured.","commit_id":"289aeaf2040317648754b673c9eacd798efd8ae0"}]}
