)]}'
{"neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"68af80636b9dff38ff98c2635e08d1af9c2880aa","unresolved":false,"context_lines":[{"line_number":974,"context_line":"        except Exception as e:"},{"line_number":975,"context_line":"            LOG.exception(_LE(\"Unable to get port details for \""},{"line_number":976,"context_line":"                              \"%(devices)s: %(e)s\"),"},{"line_number":977,"context_line":"                          {\u0027devices\u0027: devices, \u0027e\u0027: e})"},{"line_number":978,"context_line":"            # resync is needed"},{"line_number":979,"context_line":"            return True"},{"line_number":980,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_eebfaacd","line":977,"updated":"2015-10-23 13:15:23.000000000","message":"Armando, shouldn\u0027t we register an error that resulted in full resync on a level that is higher than debug? I think yes. I agree though that the exception should not be included into the message, because it\u0027s already reported by LOG.exception. I guess we should also remove \u0027as e\u0027 from line 974 because we don\u0027t need the exception object anywhere.","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"535d7ebcb4e5638ee70197d467cc3db2b66fba0b","unresolved":false,"context_lines":[{"line_number":974,"context_line":"        except Exception as e:"},{"line_number":975,"context_line":"            LOG.exception(_LE(\"Unable to get port details for \""},{"line_number":976,"context_line":"                              \"%(devices)s: %(e)s\"),"},{"line_number":977,"context_line":"                          {\u0027devices\u0027: devices, \u0027e\u0027: e})"},{"line_number":978,"context_line":"            # resync is needed"},{"line_number":979,"context_line":"            return True"},{"line_number":980,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_f9058410","line":977,"updated":"2015-10-21 16:54:32.000000000","message":"we\u0027re logging the error in the debug message, so exception is not appropriate as is. Not 100% sure this really has to move from where it is.\n\nFamiliarize yourself with [1] to determine the appropriate log level.\n\n[1] http://docs.openstack.org/developer/neutron/devref/effective_neutron.html#translation-and-logging","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"30bfc6ddffc7ac6d6b6511b1e61425728fb0c0f1","unresolved":false,"context_lines":[{"line_number":974,"context_line":"        except Exception as e:"},{"line_number":975,"context_line":"            LOG.exception(_LE(\"Unable to get port details for \""},{"line_number":976,"context_line":"                              \"%(devices)s: %(e)s\"),"},{"line_number":977,"context_line":"                          {\u0027devices\u0027: devices, \u0027e\u0027: e})"},{"line_number":978,"context_line":"            # resync is needed"},{"line_number":979,"context_line":"            return True"},{"line_number":980,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_57cbb11e","line":977,"in_reply_to":"3a29b11f_7e4a5e29","updated":"2015-10-25 13:09:00.000000000","message":"thx for the comment.","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0bb2e445198b38e207242f197c0d3d66a04e068b","unresolved":false,"context_lines":[{"line_number":974,"context_line":"        except Exception as e:"},{"line_number":975,"context_line":"            LOG.exception(_LE(\"Unable to get port details for \""},{"line_number":976,"context_line":"                              \"%(devices)s: %(e)s\"),"},{"line_number":977,"context_line":"                          {\u0027devices\u0027: devices, \u0027e\u0027: e})"},{"line_number":978,"context_line":"            # resync is needed"},{"line_number":979,"context_line":"            return True"},{"line_number":980,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_7e4a5e29","line":977,"in_reply_to":"3a29b11f_eebfaacd","updated":"2015-10-23 17:25:13.000000000","message":"Agreed. I was not 100% sure, but the 1% is enough to make me think we might want to tell that something is wrong (even if temporarily).","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"68af80636b9dff38ff98c2635e08d1af9c2880aa","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"                                                             self.agent_id,"},{"line_number":1033,"context_line":"                                                             cfg.CONF.host)"},{"line_number":1034,"context_line":"            except Exception as e:"},{"line_number":1035,"context_line":"                LOG.exception(_LE(\"port_removed failed for %(device)s: %(e)s\"),"},{"line_number":1036,"context_line":"                              {\u0027device\u0027: device, \u0027e\u0027: e})"},{"line_number":1037,"context_line":"                resync \u003d True"},{"line_number":1038,"context_line":"            if details and details[\u0027exists\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_8eb2b604","line":1035,"updated":"2015-10-23 13:15:23.000000000","message":"Since this message is now user visible and translatable, let\u0027s stop referring to method names. Instead, let\u0027s say smth like \u0027Error occurred while removing port %(devices)s\u0027. Also, please avoid passing exception to LOG.exception because it\u0027s already implicitly logged by it. Since now we don\u0027t need \u0027e\u0027, the exception object, please also clean it up.","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"30bfc6ddffc7ac6d6b6511b1e61425728fb0c0f1","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"                                                             self.agent_id,"},{"line_number":1033,"context_line":"                                                             cfg.CONF.host)"},{"line_number":1034,"context_line":"            except Exception as e:"},{"line_number":1035,"context_line":"                LOG.exception(_LE(\"port_removed failed for %(device)s: %(e)s\"),"},{"line_number":1036,"context_line":"                              {\u0027device\u0027: device, \u0027e\u0027: e})"},{"line_number":1037,"context_line":"                resync \u003d True"},{"line_number":1038,"context_line":"            if details and details[\u0027exists\u0027]:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_17d539b8","line":1035,"in_reply_to":"3a29b11f_8eb2b604","updated":"2015-10-25 13:09:00.000000000","message":"Done, thx for the comment.","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"}],"neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_linuxbridge_neutron_agent.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"68af80636b9dff38ff98c2635e08d1af9c2880aa","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                mock.patch.object(agent.sg_agent,"},{"line_number":167,"context_line":"                                  \"remove_devices_filter\") as fn_rdf:"},{"line_number":168,"context_line":"            fn_udd.side_effect \u003d Exception()"},{"line_number":169,"context_line":"            attrs_to_mock \u003d dict("},{"line_number":170,"context_line":"                [(a, mock.DEFAULT) for a in [\u0027debug\u0027, \u0027exception\u0027]])"},{"line_number":171,"context_line":"            with mock.patch.multiple(linuxbridge_neutron_agent.LOG,"},{"line_number":172,"context_line":"                                     **attrs_to_mock) as log:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_aeb532ed","line":169,"updated":"2015-10-23 13:15:23.000000000","message":"Validating the number of log calls is an anti-pattern, so instead of modifying the test to pass the check, remove the check on the log calls.","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"30bfc6ddffc7ac6d6b6511b1e61425728fb0c0f1","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                mock.patch.object(agent.sg_agent,"},{"line_number":167,"context_line":"                                  \"remove_devices_filter\") as fn_rdf:"},{"line_number":168,"context_line":"            fn_udd.side_effect \u003d Exception()"},{"line_number":169,"context_line":"            attrs_to_mock \u003d dict("},{"line_number":170,"context_line":"                [(a, mock.DEFAULT) for a in [\u0027debug\u0027, \u0027exception\u0027]])"},{"line_number":171,"context_line":"            with mock.patch.multiple(linuxbridge_neutron_agent.LOG,"},{"line_number":172,"context_line":"                                     **attrs_to_mock) as log:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_b7da45e8","line":169,"in_reply_to":"3a29b11f_aeb532ed","updated":"2015-10-25 13:09:00.000000000","message":"Done, thx for the comment.","commit_id":"e25c64b42068ed8afd55f9cdb1384401cf1a4f98"}]}
