)]}'
{"neutron/services/trunk/drivers/openvswitch/agent/driver.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"65402cf48ac6621c4e05aad9a404d1f8ef2106a5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \"Error on event %(event)s for subports \""},{"line_number":71,"context_line":"                    \"%(subports)s: %(err)s\"),"},{"line_number":72,"context_line":"                    {\u0027event\u0027: event_type, \u0027subports\u0027: subports,"},{"line_number":73,"context_line":"                     \u0027err\u0027: e})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def init_handler(resource, event, trigger, agent\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_02fca36e","line":73,"updated":"2016-09-26 22:59:55.000000000","message":"This all fits on one line now :-p","commit_id":"adf86deee520cebd7bd4d6c800798aed7c6a2a23"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"5e76f98b15d192914373a2552754a389e1f3f9d3","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \"Error on event %(event)s for subports \""},{"line_number":71,"context_line":"                    \"%(subports)s: %(err)s\"),"},{"line_number":72,"context_line":"                    {\u0027event\u0027: event_type, \u0027subports\u0027: subports,"},{"line_number":73,"context_line":"                     \u0027err\u0027: e})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def init_handler(resource, event, trigger, agent\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a8bc5a2_628e47d1","line":73,"in_reply_to":"5a8bc5a2_02fca36e","updated":"2016-09-26 23:02:06.000000000","message":"damn it!","commit_id":"adf86deee520cebd7bd4d6c800798aed7c6a2a23"}],"neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py":[{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"9ad83d84a43af2a7205739348b36c408831efebf","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        # i.e. the trunk parent port to be present. If the VM is absent, i.e."},{"line_number":169,"context_line":"        # this fails with a timeout, then we clean the dangling bridge."},{"line_number":170,"context_line":"        # If the VM is present, the value of rewire tells us whether or not the"},{"line_number":171,"context_line":"        # bridge was dealt whith in a prior added event."},{"line_number":172,"context_line":"        rewire \u003d self._check_trunk_bridge_state(bridge)"},{"line_number":173,"context_line":"        if rewire is None:"},{"line_number":174,"context_line":"            LOG.debug(\"No instance associated to bridge could be found\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_3b4c0070","line":171,"range":{"start_line":171,"start_character":27,"end_line":171,"end_character":32},"updated":"2016-09-22 22:22:53.000000000","message":"with","commit_id":"fccb428fe49fb2ab041024bbc355b7123ee11012"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"fd19289edfbb6f22b0a021f5038bd43ebe4b92c1","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        # i.e. the trunk parent port to be present. If the VM is absent, i.e."},{"line_number":169,"context_line":"        # this fails with a timeout, then we clean the dangling bridge."},{"line_number":170,"context_line":"        # If the VM is present, the value of rewire tells us whether or not the"},{"line_number":171,"context_line":"        # bridge was dealt whith in a prior added event."},{"line_number":172,"context_line":"        rewire \u003d self._check_trunk_bridge_state(bridge)"},{"line_number":173,"context_line":"        if rewire is None:"},{"line_number":174,"context_line":"            LOG.debug(\"No instance associated to bridge could be found\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_6c824c54","line":171,"range":{"start_line":171,"start_character":27,"end_line":171,"end_character":32},"in_reply_to":"5a8bc5a2_3b4c0070","updated":"2016-09-23 00:18:51.000000000","message":"Done","commit_id":"fccb428fe49fb2ab041024bbc355b7123ee11012"},{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"9ad83d84a43af2a7205739348b36c408831efebf","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # bridge was dealt whith in a prior added event."},{"line_number":172,"context_line":"        rewire \u003d self._check_trunk_bridge_state(bridge)"},{"line_number":173,"context_line":"        if rewire is None:"},{"line_number":174,"context_line":"            LOG.debug(\"No instance associated to bridge could be found\")"},{"line_number":175,"context_line":"            self.trunk_manager.dispose_trunk(bridge)"},{"line_number":176,"context_line":"            return"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_9b799496","line":174,"range":{"start_line":174,"start_character":55,"end_line":174,"end_character":56},"updated":"2016-09-22 22:22:53.000000000","message":"add the bridge name?","commit_id":"fccb428fe49fb2ab041024bbc355b7123ee11012"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"fd19289edfbb6f22b0a021f5038bd43ebe4b92c1","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        # bridge was dealt whith in a prior added event."},{"line_number":172,"context_line":"        rewire \u003d self._check_trunk_bridge_state(bridge)"},{"line_number":173,"context_line":"        if rewire is None:"},{"line_number":174,"context_line":"            LOG.debug(\"No instance associated to bridge could be found\")"},{"line_number":175,"context_line":"            self.trunk_manager.dispose_trunk(bridge)"},{"line_number":176,"context_line":"            return"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_ac7c5473","line":174,"range":{"start_line":174,"start_character":55,"end_line":174,"end_character":56},"in_reply_to":"5a8bc5a2_9b799496","updated":"2016-09-23 00:18:51.000000000","message":"Done","commit_id":"fccb428fe49fb2ab041024bbc355b7123ee11012"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"6d8db0fb8568a0831484baba6cb4e26788a53efe","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        # VM is absent, then we clean the dangling bridge. If the VM is present"},{"line_number":170,"context_line":"        # the value of \u0027rewire\u0027 tells us whether or not the bridge was dealt"},{"line_number":171,"context_line":"        # with in a previous added event, and thus it has active patch ports."},{"line_number":172,"context_line":"        rewire \u003d self._check_trunk_bridge_state(bridge)"},{"line_number":173,"context_line":"        if rewire is None:"},{"line_number":174,"context_line":"            LOG.debug(\"No instance port associated to bridge \""},{"line_number":175,"context_line":"                      \"%s could be found.\", bridge_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_cc7c29ee","line":172,"updated":"2016-09-23 11:02:07.000000000","message":"I share the need of reorganizing the code but now it looks a bit confusing. rewire is used both to indicate if rewire is needed and to indicate if the trunk bridge disposal is needed. My suggestion would be to rename _check_trunk_bridge_state into _is_vm_connected\n\n\n    def _is_vm_connected(self, bridge):\n\n        bridge_has_port_predicate \u003d functools.partial(\n            bridge_has_instance_port, bridge)\n        try:\n            common_utils.wait_until_true(\n                bridge_has_port_predicate,\n                timeout\u003dWAIT_FOR_PORT_TIMEOUT)\n        except eventlet.TimeoutError:\n            LOG.info(\n                _LI(\u0027No port present on trunk bridge %(br_name)s \u0027\n                    \u0027in %(timeout)d seconds. Cleaning up the bridge\u0027),\n                {\u0027br_name\u0027: bridge.br_name,\n                 \u0027timeout\u0027: WAIT_FOR_PORT_TIMEOUT})\n            self.trunk_manager.dispose_trunk(bridge)\n            return False\n        return True\n\nthen you can replace lines 172-177 with\n\nif not self._is_vm_connected(bridge)\n    return\nrewire \u003d bridge_has_service_port(bridge)","commit_id":"88f0140f330722fe0151aa86a5a78e8ff865ac26"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1eeedf4c5a0686e68629cbc08bc1a41eb3e31613","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        # VM is absent, then we clean the dangling bridge. If the VM is present"},{"line_number":170,"context_line":"        # the value of \u0027rewire\u0027 tells us whether or not the bridge was dealt"},{"line_number":171,"context_line":"        # with in a previous added event, and thus it has active patch ports."},{"line_number":172,"context_line":"        rewire \u003d self._check_trunk_bridge_state(bridge)"},{"line_number":173,"context_line":"        if rewire is None:"},{"line_number":174,"context_line":"            LOG.debug(\"No instance port associated to bridge \""},{"line_number":175,"context_line":"                      \"%s could be found.\", bridge_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_d624a1b0","line":172,"in_reply_to":"5a8bc5a2_cc7c29ee","updated":"2016-09-23 17:56:36.000000000","message":"ok let me work something out after I rebase on yours","commit_id":"88f0140f330722fe0151aa86a5a78e8ff865ac26"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"eae354f34d8e5fc53e77424a7c1a14b4c2329510","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                timeout\u003dself.timeout)"},{"line_number":460,"context_line":"            return True"},{"line_number":461,"context_line":"        except eventlet.TimeoutError:"},{"line_number":462,"context_line":"            LOG.error("},{"line_number":463,"context_line":"                _LE(\u0027No port present on trunk bridge %(br_name)s \u0027"},{"line_number":464,"context_line":"                    \u0027in %(timeout)d seconds.\u0027),"},{"line_number":465,"context_line":"                {\u0027br_name\u0027: bridge.br_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_9c11ee06","line":462,"updated":"2016-09-27 07:32:57.000000000","message":"Do we really need to log an error here? There is a debug message logged in addition to this in the calling code above. IIUC this is not a situation that could be fixed by an operator, so that should be at most a warning, maybe even a single debug message would suffice.","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f78d7e75eb895e5dbbc3fc7ae9971b5aedbb5495","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                timeout\u003dself.timeout)"},{"line_number":460,"context_line":"            return True"},{"line_number":461,"context_line":"        except eventlet.TimeoutError:"},{"line_number":462,"context_line":"            LOG.error("},{"line_number":463,"context_line":"                _LE(\u0027No port present on trunk bridge %(br_name)s \u0027"},{"line_number":464,"context_line":"                    \u0027in %(timeout)d seconds.\u0027),"},{"line_number":465,"context_line":"                {\u0027br_name\u0027: bridge.br_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_89528565","line":462,"in_reply_to":"5a8bc5a2_9c11ee06","updated":"2016-09-27 09:37:38.000000000","message":"That likely means that instance and its tap device haven\u0027t been created. I think error makes sense here there is something wrong probably on Nova side and operator can fix that.","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"}],"neutron/services/trunk/drivers/openvswitch/agent/trunk_manager.py":[{"author":{"_account_id":16800,"name":"Rawlin Peters","email":"rawlin.peters@hpe.com","username":"rawlin"},"change_message_id":"9ad83d84a43af2a7205739348b36c408831efebf","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def dispose_trunk(self, trunk_bridge):"},{"line_number":257,"context_line":"        \"\"\"Clean up all the OVS resources associated to trunk_bridge.\"\"\""},{"line_number":258,"context_line":"        ovsdb \u003d trunk_bridge.ovsdb"},{"line_number":259,"context_line":"        subport_peers \u003d trunk_bridge.get_ports_attributes("},{"line_number":260,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027options\u0027])"},{"line_number":261,"context_line":"        with trunk_bridge.ovsdb.transaction() as txn:"},{"line_number":262,"context_line":"            for patch_peer in subport_peers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_9b527412","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":15},"updated":"2016-09-22 22:22:53.000000000","message":"Using \u0027subport\u0027 here is kind of a misnomer because the trunk parent port also has a peer. I would rename it \u0027patch_peers\u0027.","commit_id":"fccb428fe49fb2ab041024bbc355b7123ee11012"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"fd19289edfbb6f22b0a021f5038bd43ebe4b92c1","unresolved":false,"context_lines":[{"line_number":256,"context_line":"    def dispose_trunk(self, trunk_bridge):"},{"line_number":257,"context_line":"        \"\"\"Clean up all the OVS resources associated to trunk_bridge.\"\"\""},{"line_number":258,"context_line":"        ovsdb \u003d trunk_bridge.ovsdb"},{"line_number":259,"context_line":"        subport_peers \u003d trunk_bridge.get_ports_attributes("},{"line_number":260,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027options\u0027])"},{"line_number":261,"context_line":"        with trunk_bridge.ovsdb.transaction() as txn:"},{"line_number":262,"context_line":"            for patch_peer in subport_peers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_cc81a04c","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":15},"in_reply_to":"5a8bc5a2_9b527412","updated":"2016-09-23 00:18:51.000000000","message":"Done","commit_id":"fccb428fe49fb2ab041024bbc355b7123ee11012"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bf7b094b7dc38ead73da4c7a8be21ff1e665c65f","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                      trunk_bridge.br_name, patch_peers)"},{"line_number":271,"context_line":"        except RuntimeError as e:"},{"line_number":272,"context_line":"            LOG.error(_LE(\"Could not delete \u0027%(peers)s\u0027 associated to \""},{"line_number":273,"context_line":"                          \"trunk bridge %(name)s. Reason: %(reason)s.\"),"},{"line_number":274,"context_line":"                      {\u0027peers\u0027: patch_peers,"},{"line_number":275,"context_line":"                       \u0027name\u0027: trunk_bridge.br_name,"},{"line_number":276,"context_line":"                       \u0027reason\u0027: e})"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_ed707f42","line":273,"updated":"2016-09-27 05:59:44.000000000","message":"nit: ovsdb.del_br may fail, so \"could not delete \u0027%(peers)s\u0027 associated to trunk bridge %(name)s or delete trunk bridge itself.\" might be better.","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"}],"neutron/tests/functional/services/trunk/drivers/openvswitch/agent/test_ovsdb_handler.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c94a9fd51bdac6f70fb3e4518dc04a11d6990dd2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":195,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":196,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":197,"context_line":"            ports \u003d self.create_test_ports(amount\u003d3)"},{"line_number":198,"context_line":"            self.trunk_dict[\u0027port_id\u0027] \u003d ports[0][\u0027id\u0027]"},{"line_number":199,"context_line":"            self.trunk_dict[\u0027sub_ports\u0027] \u003d [trunk_obj.SubPort("},{"line_number":200,"context_line":"                id\u003duuidutils.generate_uuid(),"},{"line_number":201,"context_line":"                port_id\u003dports[i][\u0027id\u0027],"},{"line_number":202,"context_line":"                mac_address\u003dports[i][\u0027mac_address\u0027],"},{"line_number":203,"context_line":"                segmentation_id\u003di,"},{"line_number":204,"context_line":"                trunk_id\u003dself.trunk_dict[\u0027id\u0027])"},{"line_number":205,"context_line":"                for i in range(1, 3)]"},{"line_number":206,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports)"},{"line_number":207,"context_line":"            self.wait_until_ports_state(self.ports, up\u003dTrue)"},{"line_number":208,"context_line":"            self.trunk_br.delete_port(self.trunk_port_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_221ffa6c","line":205,"range":{"start_line":197,"start_character":0,"end_line":205,"end_character":37},"updated":"2016-09-26 15:23:48.000000000","message":"This repeats in every test, maybe we could split it to a function extending the trunk_dict and returning created ports.\n\n def create_trunk_for_test(trunk_dict, amount):\n     ...\n     return ports","commit_id":"641d36ebb7b84cad1e5486fe56d2565112936fb8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efbffb6bd250064b0705d69288ce596b59f16a4d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":195,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":196,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":197,"context_line":"            ports \u003d self.create_test_ports(amount\u003d3)"},{"line_number":198,"context_line":"            self.trunk_dict[\u0027port_id\u0027] \u003d ports[0][\u0027id\u0027]"},{"line_number":199,"context_line":"            self.trunk_dict[\u0027sub_ports\u0027] \u003d [trunk_obj.SubPort("},{"line_number":200,"context_line":"                id\u003duuidutils.generate_uuid(),"},{"line_number":201,"context_line":"                port_id\u003dports[i][\u0027id\u0027],"},{"line_number":202,"context_line":"                mac_address\u003dports[i][\u0027mac_address\u0027],"},{"line_number":203,"context_line":"                segmentation_id\u003di,"},{"line_number":204,"context_line":"                trunk_id\u003dself.trunk_dict[\u0027id\u0027])"},{"line_number":205,"context_line":"                for i in range(1, 3)]"},{"line_number":206,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports)"},{"line_number":207,"context_line":"            self.wait_until_ports_state(self.ports, up\u003dTrue)"},{"line_number":208,"context_line":"            self.trunk_br.delete_port(self.trunk_port_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_6e2729ca","line":205,"range":{"start_line":197,"start_character":0,"end_line":205,"end_character":37},"in_reply_to":"5a8bc5a2_221ffa6c","updated":"2016-09-26 16:32:20.000000000","message":"Sure, this could be refined, I didn\u0027t want this patch bloat, but I can take care of this.","commit_id":"641d36ebb7b84cad1e5486fe56d2565112936fb8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c94a9fd51bdac6f70fb3e4518dc04a11d6990dd2","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                segmentation_id\u003di,"},{"line_number":204,"context_line":"                trunk_id\u003dself.trunk_dict[\u0027id\u0027])"},{"line_number":205,"context_line":"                for i in range(1, 3)]"},{"line_number":206,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports)"},{"line_number":207,"context_line":"            self.wait_until_ports_state(self.ports, up\u003dTrue)"},{"line_number":208,"context_line":"            self.trunk_br.delete_port(self.trunk_port_name)"},{"line_number":209,"context_line":"            self.ovsdb_handler.handle_trunk_add(self.trunk_br.br_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_c51bc071","line":206,"range":{"start_line":206,"start_character":50,"end_line":206,"end_character":55},"updated":"2016-09-26 15:23:48.000000000","message":"Should we pass ports[:1] ? Wouldn\u0027t this plug the subports to br-int as internal ports?","commit_id":"641d36ebb7b84cad1e5486fe56d2565112936fb8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efbffb6bd250064b0705d69288ce596b59f16a4d","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                segmentation_id\u003di,"},{"line_number":204,"context_line":"                trunk_id\u003dself.trunk_dict[\u0027id\u0027])"},{"line_number":205,"context_line":"                for i in range(1, 3)]"},{"line_number":206,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports)"},{"line_number":207,"context_line":"            self.wait_until_ports_state(self.ports, up\u003dTrue)"},{"line_number":208,"context_line":"            self.trunk_br.delete_port(self.trunk_port_name)"},{"line_number":209,"context_line":"            self.ovsdb_handler.handle_trunk_add(self.trunk_br.br_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_ae2db1a9","line":206,"range":{"start_line":206,"start_character":50,"end_line":206,"end_character":55},"in_reply_to":"5a8bc5a2_c51bc071","updated":"2016-09-26 16:32:20.000000000","message":"Let me check","commit_id":"641d36ebb7b84cad1e5486fe56d2565112936fb8"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"dab6d06190d054f14d5dc384bbc50831e7e69a4c","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports)"},{"line_number":207,"context_line":"            self.wait_until_ports_state(self.ports, up\u003dTrue)"},{"line_number":208,"context_line":"            self.trunk_br.delete_port(self.trunk_port_name)"},{"line_number":209,"context_line":"            self.ovsdb_handler.handle_trunk_add(self.trunk_br.br_name)"},{"line_number":210,"context_line":"            self.assertFalse(self.trunk_br.exists())"},{"line_number":211,"context_line":"            self.assertFalse(ovsdb_handler.bridge_has_service_port(br_int))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_df96323d","line":209,"range":{"start_line":209,"start_character":31,"end_line":209,"end_character":47},"updated":"2016-09-26 14:44:35.000000000","message":"we are waiting here WAIT_FOR_PORT_TIMEOUT, that is 60 seconds. You could mock bridge_has_instance_port and return a TimeoutError exception.","commit_id":"641d36ebb7b84cad1e5486fe56d2565112936fb8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"efbffb6bd250064b0705d69288ce596b59f16a4d","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports)"},{"line_number":207,"context_line":"            self.wait_until_ports_state(self.ports, up\u003dTrue)"},{"line_number":208,"context_line":"            self.trunk_br.delete_port(self.trunk_port_name)"},{"line_number":209,"context_line":"            self.ovsdb_handler.handle_trunk_add(self.trunk_br.br_name)"},{"line_number":210,"context_line":"            self.assertFalse(self.trunk_br.exists())"},{"line_number":211,"context_line":"            self.assertFalse(ovsdb_handler.bridge_has_service_port(br_int))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_4e150d47","line":209,"range":{"start_line":209,"start_character":31,"end_line":209,"end_character":47},"in_reply_to":"5a8bc5a2_df96323d","updated":"2016-09-26 16:32:20.000000000","message":"True. I wanted to keep mocking to a bare minimum. I don\u0027t like the idea to mock bridge_has_instance_port. I\u0027ll come up with something different.","commit_id":"641d36ebb7b84cad1e5486fe56d2565112936fb8"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"a4da8bc519d73b156d34c472aee6467aceb2ead8","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":181,"context_line":"        # No need to wait the default timeout"},{"line_number":182,"context_line":"        self.ovsdb_handler.timeout \u003d 1"},{"line_number":183,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":184,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":185,"context_line":"            ports \u003d self._fill_trunk_dict()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a8bc5a2_a73a21e5","line":182,"updated":"2016-09-26 22:26:33.000000000","message":"I think you want to move this timeout change down to L189. Otherwise it seems to interfere with a successful setup_agent_and_ports call. In my local env it ends up timing out on L187 otherwise.","commit_id":"dc56fac45774238cd6c05238db1ca58c536fda08"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b363efacf492fe2d64ad15d3726e09a0a438d0bb","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":181,"context_line":"        # No need to wait the default timeout"},{"line_number":182,"context_line":"        self.ovsdb_handler.timeout \u003d 1"},{"line_number":183,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":184,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":185,"context_line":"            ports \u003d self._fill_trunk_dict()"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a8bc5a2_42e78b3f","line":182,"in_reply_to":"5a8bc5a2_a73a21e5","updated":"2016-09-26 22:36:07.000000000","message":"rather than interfere, 1 sec timeout is just too aggressive. I could either relax it a bit here, or do as you said, where we do expect it to fail fast","commit_id":"dc56fac45774238cd6c05238db1ca58c536fda08"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2a72aa891cda04d13ff0b34b333b487e71eea758","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                self.trunk_br.get_port_name_list()))"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":181,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":182,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":183,"context_line":"            ports \u003d self._fill_trunk_dict()"},{"line_number":184,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports[:1])"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_ec06b784","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":73},"updated":"2016-09-27 09:50:25.000000000","message":"Nit: As we have a context over the whole method body, decorator would make more sense.","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6cb314b2ad77a1bf82cd1f20c0269b712633e224","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                self.trunk_br.get_port_name_list()))"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":181,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":182,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":183,"context_line":"            ports \u003d self._fill_trunk_dict()"},{"line_number":184,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports[:1])"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_00f2b605","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":73},"in_reply_to":"5a8bc5a2_5dae692e","updated":"2016-09-27 14:20:04.000000000","message":"Oh, you\u0027re right. Sorry.","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1c2eba8021eca80d55d0a488338e03a9d5936f48","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                self.trunk_br.get_port_name_list()))"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_cleanup_on_vm_delete(self):"},{"line_number":181,"context_line":"        with mock.patch.object(self.ovsdb_handler, \u0027handle_trunk_remove\u0027):"},{"line_number":182,"context_line":"            br_int \u003d ovs_lib.OVSBridge(self.br_int)"},{"line_number":183,"context_line":"            ports \u003d self._fill_trunk_dict()"},{"line_number":184,"context_line":"            self.setup_agent_and_ports(port_dicts\u003dports[:1])"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_5dae692e","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":73},"in_reply_to":"5a8bc5a2_ec06b784","updated":"2016-09-27 14:16:43.000000000","message":"This is mocking \u0027self.ovs_handler\u0027, so I think we cannot use a decorator.","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"}],"neutron/tests/functional/services/trunk/drivers/openvswitch/agent/test_trunk_manager.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2a72aa891cda04d13ff0b34b333b487e71eea758","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                self.trunk.bridge.br_name)).bridge"},{"line_number":240,"context_line":"        self.br_int \u003d self.useFixture(net_helpers.OVSBridgeFixture()).bridge"},{"line_number":241,"context_line":"        self.trunk_manager \u003d trunk_manager.TrunkManager("},{"line_number":242,"context_line":"            self.br_int)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def test_dispose_trunk(self):"},{"line_number":245,"context_line":"        self.trunk.plug(self.br_int)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a8bc5a2_4c5c0b7d","line":242,"updated":"2016-09-27 09:50:25.000000000","message":"Nit: Looks like it can fit into the line above :)","commit_id":"4148102f736f7191dd5bf1c2c41505c338c6dc56"}]}
