)]}'
{"neutron/agent/linux/bridge_lib.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"861528b83808a9e9b88779c9a3d3cef6a0faf27e","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_utils import excutils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":24,"context_line":"from neutron.privileged.agent.linux import ip_lib as priv_ip_lib"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_7035a644","line":21,"updated":"2020-06-05 17:12:50.000000000","message":"pep8: F401 \u0027oslo_utils.excutils\u0027 imported but unused","commit_id":"687457f0f2b339a9dcd7f94ac807cf25357a8dfc"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"d3b4a2b14f16cef75c13d79e809f456fe33a498f","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def catch_exceptions(function):"},{"line_number":37,"context_line":"    \"\"\" Catch bridge command exceptions and mimic $? output\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @functools.wraps(function)"},{"line_number":40,"context_line":"    def decorated_function(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_b09c2c6b","line":37,"updated":"2020-06-09 16:03:24.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"fe54702b3ba857f974cac2359cb6b8be91281ad6"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def585ecc6fc7efef7e7b20e3c23ea192f9cd6c9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            function(self, *args, **kwargs)"},{"line_number":43,"context_line":"            return 0"},{"line_number":44,"context_line":"        except (RuntimeError, OSError, netlink_exceptions.NetlinkError):"},{"line_number":45,"context_line":"            return 1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return decorated_function"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_1b39943e","line":44,"updated":"2020-07-06 09:58:44.000000000","message":"nit: As I see NetworkNamespaceNotFound ([1]), InterfaceOperationNotSupported ([2]) and InvalidArgument ([3]) can be catched here as well instead of the borader RuntimeError, or perhaps change the order to have the broader RuntimeError and OSError as last\n\n\n[1]: https://opendev.org/openstack/neutron/src/branch/master/neutron/privileged/agent/linux/ip_lib.py#L265\n\n[2]: https://opendev.org/openstack/neutron/src/branch/master/neutron/privileged/agent/linux/ip_lib.py#L236\n\n[3]: https://opendev.org/openstack/neutron/src/branch/master/neutron/privileged/agent/linux/ip_lib.py#L239","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"916aed82636b76c09cc342e38157b8a633ed804d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            function(self, *args, **kwargs)"},{"line_number":43,"context_line":"            return 0"},{"line_number":44,"context_line":"        except (RuntimeError, OSError, netlink_exceptions.NetlinkError):"},{"line_number":45,"context_line":"            return 1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return decorated_function"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_d1e9bbb7","line":44,"in_reply_to":"bf51134e_1b39943e","updated":"2020-07-06 11:01:15.000000000","message":"I could make this more specific but I\u0027m expecting those priv_lib exceptions, all of them inheriting from RuntimeError. I can reduce the scope here but IMO is not necessary.\n\nChanging the tuple order won\u0027t make any difference. Those three exceptions only have \"Exception\" in common. The exception raise will be checked to those ones independently.","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"61cce947e166a5cf9371edf917d9620b6e1f57c7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        try:"},{"line_number":42,"context_line":"            function(self, *args, **kwargs)"},{"line_number":43,"context_line":"            return 0"},{"line_number":44,"context_line":"        except (RuntimeError, OSError, netlink_exceptions.NetlinkError):"},{"line_number":45,"context_line":"            return 1"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    return decorated_function"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_455f9471","line":44,"in_reply_to":"bf51134e_d1e9bbb7","updated":"2020-07-07 11:19:50.000000000","message":"ok","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def585ecc6fc7efef7e7b20e3c23ea192f9cd6c9","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        priv_ip_lib.set_link_bridge_stp(self.name, 0, namespace\u003dself.namespace)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @catch_exceptions"},{"line_number":113,"context_line":"    def enable_stp(self):"},{"line_number":114,"context_line":"        priv_ip_lib.set_link_bridge_stp(self.name, 1, namespace\u003dself.namespace)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def owns_interface(self, interface):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_bb4b4885","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":25},"updated":"2020-07-06 09:58:44.000000000","message":"this is just to make the API full, am I right?","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"916aed82636b76c09cc342e38157b8a633ed804d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        priv_ip_lib.set_link_bridge_stp(self.name, 0, namespace\u003dself.namespace)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @catch_exceptions"},{"line_number":113,"context_line":"    def enable_stp(self):"},{"line_number":114,"context_line":"        priv_ip_lib.set_link_bridge_stp(self.name, 1, namespace\u003dself.namespace)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def owns_interface(self, interface):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_f1ff9f64","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":25},"in_reply_to":"bf51134e_bb4b4885","updated":"2020-07-06 11:01:15.000000000","message":"Well, I\u0027m using it only in testing. It was easier to implement this method here.","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"61cce947e166a5cf9371edf917d9620b6e1f57c7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        priv_ip_lib.set_link_bridge_stp(self.name, 0, namespace\u003dself.namespace)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @catch_exceptions"},{"line_number":113,"context_line":"    def enable_stp(self):"},{"line_number":114,"context_line":"        priv_ip_lib.set_link_bridge_stp(self.name, 1, namespace\u003dself.namespace)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def owns_interface(self, interface):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_a5279012","line":113,"range":{"start_line":113,"start_character":4,"end_line":113,"end_character":25},"in_reply_to":"bf51134e_f1ff9f64","updated":"2020-07-07 11:19:50.000000000","message":"ack, as I see it can be here.","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"}],"neutron/privileged/agent/linux/ip_lib.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"861528b83808a9e9b88779c9a3d3cef6a0faf27e","unresolved":false,"context_lines":[{"line_number":433,"context_line":"    return _run_iproute_link(\u0027set\u0027, device, namespace\u003dnamespace,"},{"line_number":434,"context_line":"                             master\u003dbridge_idx)"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"  "},{"line_number":437,"context_line":"@privileged.default.entrypoint"},{"line_number":438,"context_line":"def get_link_attributes(device, namespace):"},{"line_number":439,"context_line":"    link \u003d _run_iproute_link(\"get\", device, namespace)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_302faef6","line":436,"updated":"2020-06-05 17:12:50.000000000","message":"pep8: W293 blank line contains whitespace","commit_id":"687457f0f2b339a9dcd7f94ac807cf25357a8dfc"}],"neutron/tests/fullstack/test_port_shut_down.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"def585ecc6fc7efef7e7b20e3c23ea192f9cd6c9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    scenarios \u003d ["},{"line_number":40,"context_line":"        (constants.AGENT_TYPE_LINUXBRIDGE,"},{"line_number":41,"context_line":"         {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_LINUXBRIDGE}),"},{"line_number":42,"context_line":"        # (constants.AGENT_TYPE_OVS,"},{"line_number":43,"context_line":"        #  {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS})"},{"line_number":44,"context_line":"    ]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_fbb140e3","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":55},"updated":"2020-07-06 09:58:44.000000000","message":"This is not needed anymore, or am I wrong?","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"916aed82636b76c09cc342e38157b8a633ed804d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    scenarios \u003d ["},{"line_number":40,"context_line":"        (constants.AGENT_TYPE_LINUXBRIDGE,"},{"line_number":41,"context_line":"         {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_LINUXBRIDGE}),"},{"line_number":42,"context_line":"        # (constants.AGENT_TYPE_OVS,"},{"line_number":43,"context_line":"        #  {\u0027l2_agent_type\u0027: constants.AGENT_TYPE_OVS})"},{"line_number":44,"context_line":"    ]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_31f91780","line":43,"range":{"start_line":42,"start_character":0,"end_line":43,"end_character":55},"in_reply_to":"bf51134e_fbb140e3","updated":"2020-07-06 11:01:15.000000000","message":"Ups, my bad.","commit_id":"57830b1c7ee616c1776895f9c85951aa8a146f2e"}],"neutron/tests/functional/agent/linux/test_bridge_lib.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"861528b83808a9e9b88779c9a3d3cef6a0faf27e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class BridgeLibTestCase(base.BaseSudoTestCase):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self):"},{"line_number":34,"context_line":"        super(BridgeLibTestCase, self).setUp()"},{"line_number":35,"context_line":"        self.bridge, self.port_fixture \u003d self.create_bridge_port_fixture()"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_9032fa5c","line":33,"updated":"2020-06-05 17:12:50.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"687457f0f2b339a9dcd7f94ac807cf25357a8dfc"}]}
