)]}'
{"neutron/pecan_wsgi/hooks/notifier.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"50ed542c07ae8f9d26a4ca1264b52846091762ab","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                # NOTE(kevinbenton): an original resource might not exist in"},{"line_number":128,"context_line":"                # custom controller cases (e.g. put to /add_router_interface)"},{"line_number":129,"context_line":"                try:"},{"line_number":130,"context_line":"                    orig \u003d state.request.context.get(\u0027original_resources\u0027)[0]"},{"line_number":131,"context_line":"                except TypeError:"},{"line_number":132,"context_line":"                    pass"},{"line_number":133,"context_line":"            elif action \u003d\u003d \u0027delete\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_27ab558b","line":130,"updated":"2016-03-15 13:54:20.000000000","message":"could this ever return None then None[0] will lead to a different exception","commit_id":"09a110ee48c9594afcde17088f0e1a94293846dd"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"a8192ca391b761bc3c8b6f1b6f814e8a170dc9e2","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                # NOTE(kevinbenton): an original resource might not exist in"},{"line_number":128,"context_line":"                # custom controller cases (e.g. put to /add_router_interface)"},{"line_number":129,"context_line":"                try:"},{"line_number":130,"context_line":"                    orig \u003d state.request.context.get(\u0027original_resources\u0027)[0]"},{"line_number":131,"context_line":"                except TypeError:"},{"line_number":132,"context_line":"                    pass"},{"line_number":133,"context_line":"            elif action \u003d\u003d \u0027delete\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_69da4aeb","line":130,"in_reply_to":"1af94dfe_27ab558b","updated":"2016-04-02 07:51:48.000000000","message":"just tested it out in the python interpreter and None[0] raises TypeError","commit_id":"09a110ee48c9594afcde17088f0e1a94293846dd"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e35740152b46e6156ef509adb956bf24a606a0a0","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                try:"},{"line_number":130,"context_line":"                    orig \u003d state.request.context.get(\u0027original_resources\u0027)[0]"},{"line_number":131,"context_line":"                except TypeError:"},{"line_number":132,"context_line":"                    pass"},{"line_number":133,"context_line":"            elif action \u003d\u003d \u0027delete\u0027:"},{"line_number":134,"context_line":"                # NOTE(kevinbenton): the nova notifier is a bit strange because"},{"line_number":135,"context_line":"                # it expects the original to be in the last argument on a"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_fa5745c8","line":132,"updated":"2016-04-04 07:55:11.000000000","message":"nit: I am not sure which is better to depend on TypeError or check original_resources is empty as the coding pattern.","commit_id":"b16bd1bb6c1407b4efa595695dff15ac277018e2"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"8ce01bc6b395aacc9437d0711e34df7e6f0e487d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                try:"},{"line_number":130,"context_line":"                    orig \u003d state.request.context.get(\u0027original_resources\u0027)[0]"},{"line_number":131,"context_line":"                except TypeError:"},{"line_number":132,"context_line":"                    pass"},{"line_number":133,"context_line":"            elif action \u003d\u003d \u0027delete\u0027:"},{"line_number":134,"context_line":"                # NOTE(kevinbenton): the nova notifier is a bit strange because"},{"line_number":135,"context_line":"                # it expects the original to be in the last argument on a"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_03a46db7","line":132,"in_reply_to":"9a061dce_fa5745c8","updated":"2016-04-07 20:16:00.000000000","message":"me either, though i will admit the latter is clearer than the former.  So would have to say I do have an opinion that doing an if check on it is more readable.","commit_id":"b16bd1bb6c1407b4efa595695dff15ac277018e2"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d60823afcc9a43fcee87acc8a41329d76a710cf3","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def after(self, state):"},{"line_number":84,"context_line":"        # if the after hook is executed the request completed successfully and"},{"line_number":85,"context_line":"        # therefore notifications must be sent"},{"line_number":86,"context_line":"        resource_name \u003d state.request.context.get(\u0027resource\u0027)"},{"line_number":87,"context_line":"        collection_name \u003d state.request.context.get(\u0027collection\u0027)"},{"line_number":88,"context_line":"        neutron_context \u003d state.request.context.get(\u0027neutron_context\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_4469dc8a","line":85,"updated":"2016-04-13 14:04:05.000000000","message":"So it seems this comment I added was wrong ;)\n\nwould you remove it, please?","commit_id":"f34632ac277e96f9a23f448e02db006acee8905f"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"f4570bc4dae01d79969d7ebf83a8afa646bb5e16","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def after(self, state):"},{"line_number":84,"context_line":"        # if the after hook is executed the request completed successfully and"},{"line_number":85,"context_line":"        # therefore notifications must be sent"},{"line_number":86,"context_line":"        resource_name \u003d state.request.context.get(\u0027resource\u0027)"},{"line_number":87,"context_line":"        collection_name \u003d state.request.context.get(\u0027collection\u0027)"},{"line_number":88,"context_line":"        neutron_context \u003d state.request.context.get(\u0027neutron_context\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_55c9b177","line":85,"in_reply_to":"5a18252c_4469dc8a","updated":"2016-04-18 04:49:02.000000000","message":"+1 for removal.","commit_id":"f34632ac277e96f9a23f448e02db006acee8905f"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"6f044a0e9511e5c68bc79f0e418720f15b2c272f","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self._notify_dhcp_agent("},{"line_number":121,"context_line":"                neutron_context, resource_name,"},{"line_number":122,"context_line":"                action, resources)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        if cfg.CONF.notify_nova_on_port_data_changes:"},{"line_number":125,"context_line":"            orig \u003d {}"},{"line_number":126,"context_line":"            if action \u003d\u003d \u0027update\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_afbbcee3","side":"PARENT","line":123,"updated":"2016-04-29 21:38:34.000000000","message":"unrelated whitespace change","commit_id":"2e19107fe2b7740d750aa39d28e2377a63c9dcfe"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ac6d5b722a8b61d30350e3983bceff5d8a2a313","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            return"},{"line_number":95,"context_line":"        if state.response.status_int \u003e 300:"},{"line_number":96,"context_line":"            LOG.debug(\"No notification will be sent due to unsuccessful \""},{"line_number":97,"context_line":"                      \"status code: %s\" % state.response.status_int)"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if action \u003d\u003d \u0027delete\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_06641ae3","line":97,"range":{"start_line":97,"start_character":39,"end_line":97,"end_character":41},"updated":"2016-05-09 08:20:22.000000000","message":"nit: Use a comma instead.","commit_id":"a3ef234b06d9d54f192ec9f9f2331a80f9b02138"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc2d00844299f13fc6ae7aaea292cc4274535ac9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            return"},{"line_number":95,"context_line":"        if state.response.status_int \u003e 300:"},{"line_number":96,"context_line":"            LOG.debug(\"No notification will be sent due to unsuccessful \""},{"line_number":97,"context_line":"                      \"status code: %s\" % state.response.status_int)"},{"line_number":98,"context_line":"            return"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        if action \u003d\u003d \u0027delete\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dab17558_a6e9ce1c","line":97,"range":{"start_line":97,"start_character":39,"end_line":97,"end_character":41},"in_reply_to":"dab17558_06641ae3","updated":"2016-05-09 08:21:40.000000000","message":"Done","commit_id":"a3ef234b06d9d54f192ec9f9f2331a80f9b02138"}]}
