)]}'
{"neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b40eb845331bd120145926d35694d48f6bba6075","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        return parent_port_id, trunk_id, subport_ids"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _update_trunk_metadata(self, trunk_bridge, port,"},{"line_number":369,"context_line":"                               trunk_id, subport_ids, wire\u003dTrue):"},{"line_number":370,"context_line":"        \"\"\"Update trunk metadata."},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_9f7e8c68","line":368,"range":{"start_line":368,"start_character":37,"end_line":368,"end_character":56},"updated":"2016-09-21 13:14:14.000000000","message":"Maybe we can move these parameters to the end and make them default to None so L275 reads better.","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"123185141efaf12b69ebb90cab133503c86616cf","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        return parent_port_id, trunk_id, subport_ids"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _update_trunk_metadata(self, trunk_bridge, port,"},{"line_number":369,"context_line":"                               trunk_id, subport_ids, wire\u003dTrue):"},{"line_number":370,"context_line":"        \"\"\"Update trunk metadata."},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_e730cc58","line":368,"range":{"start_line":368,"start_character":37,"end_line":368,"end_character":56},"in_reply_to":"7a8ec9b2_43d98321","updated":"2016-09-21 19:22:31.000000000","message":"I\u0027d rather keep _update_trunk_metadata and _set_trunk_metadata signatures consistent, but this can be tweaked in another patch.","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"beb7b43da7320b9fd968f5b3fbed1853fe745339","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"        return parent_port_id, trunk_id, subport_ids"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _update_trunk_metadata(self, trunk_bridge, port,"},{"line_number":369,"context_line":"                               trunk_id, subport_ids, wire\u003dTrue):"},{"line_number":370,"context_line":"        \"\"\"Update trunk metadata."},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_43d98321","line":368,"range":{"start_line":368,"start_character":37,"end_line":368,"end_character":56},"in_reply_to":"7a8ec9b2_9f7e8c68","updated":"2016-09-21 15:16:36.000000000","message":"I was keeping the signature similar to _set_trunk_metadata and I felt that keeping the two signatures alike made us less prone to errors.","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"b40eb845331bd120145926d35694d48f6bba6075","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":379,"context_line":"            utils.gen_trunk_br_name(trunk_id))"},{"line_number":380,"context_line":"        port \u003d port or self._get_parent_port(trunk_bridge)"},{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_69310e5a","line":382,"range":{"start_line":381,"start_character":0,"end_line":382,"end_character":40},"updated":"2016-09-21 13:14:14.000000000","message":"Nit: Even though other data are unused, I find following more readable:\n\n parent_port_id, trunk_id, old_subports \u003d self._get_trunk_metadata(port)","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"58b7329a346119789aa858a2f6c5d6511602faf4","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":379,"context_line":"            utils.gen_trunk_br_name(trunk_id))"},{"line_number":380,"context_line":"        port \u003d port or self._get_parent_port(trunk_bridge)"},{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_46f0b191","line":382,"range":{"start_line":381,"start_character":0,"end_line":382,"end_character":40},"in_reply_to":"7a8ec9b2_437503f8","updated":"2016-09-21 15:31:55.000000000","message":"This was about assigning generally a list to two-tuple. _get_trunk_metadata always returns three-tuple. naming all returned values removes the need to look at _get_trunk_metadata implementation and search what is the 3rd item that is returned.\n\nMy suggestion causes unused-variable but this is disabled for our checks: https://github.com/openstack/neutron/blob/master/.pylintrc#L46","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"56b0ec82f318893d7db01e04741868889d25f32f","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":379,"context_line":"            utils.gen_trunk_br_name(trunk_id))"},{"line_number":380,"context_line":"        port \u003d port or self._get_parent_port(trunk_bridge)"},{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_b9c7da96","line":382,"range":{"start_line":381,"start_character":0,"end_line":382,"end_character":40},"in_reply_to":"7a8ec9b2_46f0b191","updated":"2016-09-21 15:33:34.000000000","message":"I was kidding :P","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"beb7b43da7320b9fd968f5b3fbed1853fe745339","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":379,"context_line":"            utils.gen_trunk_br_name(trunk_id))"},{"line_number":380,"context_line":"        port \u003d port or self._get_parent_port(trunk_bridge)"},{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_437503f8","line":382,"range":{"start_line":381,"start_character":0,"end_line":382,"end_character":40},"in_reply_to":"7a8ec9b2_69310e5a","updated":"2016-09-21 15:16:36.000000000","message":"OK, but then pylint might complain ;)\n\nhttps://review.openstack.org/#/c/359189/","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e53972be436aa92a87fe769b3b30a60c4f10f449","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":379,"context_line":"            utils.gen_trunk_br_name(trunk_id))"},{"line_number":380,"context_line":"        port \u003d port or self._get_parent_port(trunk_bridge)"},{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_59fed6ae","line":382,"range":{"start_line":381,"start_character":0,"end_line":382,"end_character":40},"in_reply_to":"7a8ec9b2_b9c7da96","updated":"2016-09-21 15:34:38.000000000","message":":]","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"637ffd84cb1c1bf25a24e92da2cf2dfa72180287","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"},{"line_number":386,"context_line":"            new_subports \u003d set(old_subports) - set(subport_ids)"},{"line_number":387,"context_line":"        self._set_trunk_metadata(trunk_bridge, port, trunk_id, new_subports)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_bc798884","line":384,"updated":"2016-09-21 15:45:34.000000000","message":"when wiring you get already all the subports associated with the trunk from the rpc line 315, so there\u0027s no need to add the old ones here","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"432cd1f3165bbe825cc5bdb51b1f527c99708b12","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        trunk_metadata \u003d self._get_trunk_metadata(port)"},{"line_number":382,"context_line":"        old_subports \u003d trunk_metadata[2]"},{"line_number":383,"context_line":"        if wire:"},{"line_number":384,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":385,"context_line":"        else:"},{"line_number":386,"context_line":"            new_subports \u003d set(old_subports) - set(subport_ids)"},{"line_number":387,"context_line":"        self._set_trunk_metadata(trunk_bridge, port, trunk_id, new_subports)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_a8069e19","line":384,"in_reply_to":"7a8ec9b2_bc798884","updated":"2016-09-21 16:32:07.000000000","message":"Yes, but think about the code path coming from the skeleton:\n\nhttps://github.com/openstack/neutron/blob/master/neutron/services/trunk/drivers/openvswitch/agent/driver.py#L57","commit_id":"31bfa7ff7c90315b490ebfb8a35e855636b9a781"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"27f696dac8ba7dab054a7d0ef1eddd91e2ff30e8","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            # OVS bridge and port to be determined by _update_trunk_metadata"},{"line_number":275,"context_line":"            bridge \u003d None"},{"line_number":276,"context_line":"            port \u003d None"},{"line_number":277,"context_line":"            self._update_trunk_metadata("},{"line_number":278,"context_line":"                bridge, port, trunk_id, subport_ids, wire\u003dFalse)"},{"line_number":279,"context_line":"        except RuntimeError:"},{"line_number":280,"context_line":"            # NOTE(status_police): Trunk bridge has stale metadata now, it"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_4b6da431","line":277,"updated":"2016-09-22 10:35:51.000000000","message":"instead of adding line 275 and 276, I\u0027d modify the signature of _update_trunk_metadata and have bridge and port as optional parameters. This can be done in a cleanup patch though","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d6155e91b06a8568d514d1d124b42e3d32c68d2d","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            # OVS bridge and port to be determined by _update_trunk_metadata"},{"line_number":275,"context_line":"            bridge \u003d None"},{"line_number":276,"context_line":"            port \u003d None"},{"line_number":277,"context_line":"            self._update_trunk_metadata("},{"line_number":278,"context_line":"                bridge, port, trunk_id, subport_ids, wire\u003dFalse)"},{"line_number":279,"context_line":"        except RuntimeError:"},{"line_number":280,"context_line":"            # NOTE(status_police): Trunk bridge has stale metadata now, it"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_1431fca2","line":277,"in_reply_to":"5a8bc5a2_4b6da431","updated":"2016-09-22 11:48:06.000000000","message":"Deja vu :) https://review.openstack.org/#/c/373600/4/neutron/services/trunk/drivers/openvswitch/agent/ovsdb_handler.py@368","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d6155e91b06a8568d514d1d124b42e3d32c68d2d","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                               trunk_id, subport_ids, wire\u003dTrue):"},{"line_number":374,"context_line":"        \"\"\"Update trunk metadata."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        :param trunk_bridge: OVS trunk bridge."},{"line_number":377,"context_line":"        :param port: OVS parent port."},{"line_number":378,"context_line":"        :param trunk_id: trunk ID."},{"line_number":379,"context_line":"        :param subport_ids: subports affecting the metadata."}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_14657c44","line":376,"range":{"start_line":376,"start_character":29,"end_line":376,"end_character":46},"updated":"2016-09-22 11:48:06.000000000","message":"or None to get the trunk bridge based on trunk_id","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d6155e91b06a8568d514d1d124b42e3d32c68d2d","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        \"\"\"Update trunk metadata."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        :param trunk_bridge: OVS trunk bridge."},{"line_number":377,"context_line":"        :param port: OVS parent port."},{"line_number":378,"context_line":"        :param trunk_id: trunk ID."},{"line_number":379,"context_line":"        :param subport_ids: subports affecting the metadata."},{"line_number":380,"context_line":"        :param wire: if True subport_ids are added, otherwise removed."}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_b44e88bf","line":377,"range":{"start_line":377,"start_character":21,"end_line":377,"end_character":36},"updated":"2016-09-22 11:48:06.000000000","message":"or None to get parent port from trunk bridge automatically","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"0af76f4519c8e3c374955ef94d6eb9608c7d7179","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        :param port: OVS parent port."},{"line_number":378,"context_line":"        :param trunk_id: trunk ID."},{"line_number":379,"context_line":"        :param subport_ids: subports affecting the metadata."},{"line_number":380,"context_line":"        :param wire: if True subport_ids are added, otherwise removed."},{"line_number":381,"context_line":"        \"\"\""},{"line_number":382,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":383,"context_line":"            utils.gen_trunk_br_name(trunk_id))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_ef2c174c","line":380,"updated":"2016-09-22 01:47:07.000000000","message":"Oh, i see now. I missed that subport_ids is representing removed stuff in one case and new stuff in another.","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"052b0f168c03555a1b7fbc83b321c81561715ab3","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        :param port: OVS parent port."},{"line_number":378,"context_line":"        :param trunk_id: trunk ID."},{"line_number":379,"context_line":"        :param subport_ids: subports affecting the metadata."},{"line_number":380,"context_line":"        :param wire: if True subport_ids are added, otherwise removed."},{"line_number":381,"context_line":"        \"\"\""},{"line_number":382,"context_line":"        trunk_bridge \u003d trunk_bridge or ovs_lib.OVSBridge("},{"line_number":383,"context_line":"            utils.gen_trunk_br_name(trunk_id))"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_0fc0634f","line":380,"in_reply_to":"7a8ec9b2_ef2c174c","updated":"2016-09-22 01:53:21.000000000","message":"ok, so I need no kevin proof respin?","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"f114497826f2b17cd15a4332fb9fbb781c9ee60a","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        if wire:"},{"line_number":387,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":388,"context_line":"        else:"},{"line_number":389,"context_line":"            new_subports \u003d set(old_subports) - set(subport_ids)"},{"line_number":390,"context_line":"        self._set_trunk_metadata(trunk_bridge, port, trunk_id, new_subports)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def _get_current_status(self, expected_subports, actual_subports):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_2fa27ffc","line":389,"updated":"2016-09-22 01:39:21.000000000","message":"I\u0027m confused about what is happening in this function then.\n\n\":param subport_ids: subports affecting the metadata.\"\n\nSo subport_ids affect the metadata, set the only thing we pass into _set_trunk_metadata is explicitly stuff not in subport_ids. Is that right?","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"3600fa30eced63a51bff25b03c6c0e42d822d950","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        if wire:"},{"line_number":387,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":388,"context_line":"        else:"},{"line_number":389,"context_line":"            new_subports \u003d set(old_subports) - set(subport_ids)"},{"line_number":390,"context_line":"        self._set_trunk_metadata(trunk_bridge, port, trunk_id, new_subports)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def _get_current_status(self, expected_subports, actual_subports):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_a9e5af09","line":389,"updated":"2016-09-22 00:32:21.000000000","message":"either these variables are named weird or this is backwards. \"new\" should be \"subports - old\", no?","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6e395a05e3357e43749ca350abdc972c5230819d","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        if wire:"},{"line_number":387,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":388,"context_line":"        else:"},{"line_number":389,"context_line":"            new_subports \u003d set(old_subports) - set(subport_ids)"},{"line_number":390,"context_line":"        self._set_trunk_metadata(trunk_bridge, port, trunk_id, new_subports)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def _get_current_status(self, expected_subports, actual_subports):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_ef5ed7e7","line":389,"in_reply_to":"7a8ec9b2_2fa27ffc","updated":"2016-09-22 01:46:16.000000000","message":"ok, let me make this more Kevin proof","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"72e995c25208f1ff718d6f17db7060bee7262fb9","unresolved":false,"context_lines":[{"line_number":386,"context_line":"        if wire:"},{"line_number":387,"context_line":"            new_subports \u003d set(old_subports) | set(subport_ids)"},{"line_number":388,"context_line":"        else:"},{"line_number":389,"context_line":"            new_subports \u003d set(old_subports) - set(subport_ids)"},{"line_number":390,"context_line":"        self._set_trunk_metadata(trunk_bridge, port, trunk_id, new_subports)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"    def _get_current_status(self, expected_subports, actual_subports):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_d4529234","line":389,"in_reply_to":"7a8ec9b2_a9e5af09","updated":"2016-09-22 01:33:54.000000000","message":"old is the ones currently stored, new are the one to be stored.","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"}],"neutron/tests/unit/services/trunk/drivers/openvswitch/agent/test_driver.py":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c279832c8b830c00dc49c3ee590bc5c992a9fb8d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            for subport in self.subports]"},{"line_number":77,"context_line":"        self.trunk_manager.add_sub_port.assert_has_calls(expected_calls)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @mock.patch(\u0027neutron.agent.common.ovs_lib.OVSBridge\u0027)"},{"line_number":80,"context_line":"    def test_handle_subports_deleted(self, br):"},{"line_number":81,"context_line":"        \"\"\"Test handler calls into trunk manager for deleting subports.\"\"\""},{"line_number":82,"context_line":"        self.skeleton.handle_subports(self.subports, events.DELETED)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_23645eb7","line":79,"updated":"2016-09-21 23:18:48.000000000","message":"I\u0027m curious as to why this mock is needed. Not worked up over it, just genuine curiosity.","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"416cd3a7abd3b09634e23365f7bc1fd8023505ea","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            for subport in self.subports]"},{"line_number":77,"context_line":"        self.trunk_manager.add_sub_port.assert_has_calls(expected_calls)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @mock.patch(\u0027neutron.agent.common.ovs_lib.OVSBridge\u0027)"},{"line_number":80,"context_line":"    def test_handle_subports_deleted(self, br):"},{"line_number":81,"context_line":"        \"\"\"Test handler calls into trunk manager for deleting subports.\"\"\""},{"line_number":82,"context_line":"        self.skeleton.handle_subports(self.subports, events.DELETED)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_e34356ad","line":79,"in_reply_to":"7a8ec9b2_23645eb7","updated":"2016-09-21 23:24:38.000000000","message":"handle_subports ends up setting metadata and that in turns ends up using OVSBridge, I could mock out the whole offending method, but this turned out to be cleaner.","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"}],"neutron/tests/unit/services/trunk/drivers/openvswitch/agent/test_ovsdb_handler.py":[{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"c279832c8b830c00dc49c3ee590bc5c992a9fb8d","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                side_effect\u003dtrunk_manager.TrunkManagerError(error\u003d\u0027error\u0027)):"},{"line_number":177,"context_line":"            self.ovsdb_handler.handle_trunk_remove(\u0027foo\u0027, self.fake_port)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    @mock.patch(\u0027neutron.agent.common.ovs_lib.OVSBridge\u0027)"},{"line_number":180,"context_line":"    def test_handle_trunk_remove_rpc_failure(self, br):"},{"line_number":181,"context_line":"        self.ovsdb_handler.trunk_rpc.update_trunk_status \u003d ("},{"line_number":182,"context_line":"            oslo_messaging.MessagingException)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_c3c57a5c","line":179,"updated":"2016-09-21 23:18:48.000000000","message":"What is the purpose of this mock? I saw this in the unit tests as well and asked the same question there.","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"416cd3a7abd3b09634e23365f7bc1fd8023505ea","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                side_effect\u003dtrunk_manager.TrunkManagerError(error\u003d\u0027error\u0027)):"},{"line_number":177,"context_line":"            self.ovsdb_handler.handle_trunk_remove(\u0027foo\u0027, self.fake_port)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    @mock.patch(\u0027neutron.agent.common.ovs_lib.OVSBridge\u0027)"},{"line_number":180,"context_line":"    def test_handle_trunk_remove_rpc_failure(self, br):"},{"line_number":181,"context_line":"        self.ovsdb_handler.trunk_rpc.update_trunk_status \u003d ("},{"line_number":182,"context_line":"            oslo_messaging.MessagingException)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_43096a83","line":179,"in_reply_to":"7a8ec9b2_c3c57a5c","updated":"2016-09-21 23:24:38.000000000","message":"same reason","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"d6155e91b06a8568d514d1d124b42e3d32c68d2d","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                None, None, \u0027foo\u0027, subport_ids, wire\u003dwire)"},{"line_number":280,"context_line":"            external_ids \u003d mock_br.set_db_attribute.call_args[0][3]"},{"line_number":281,"context_line":"            self.assertEqual(1, mock_br.set_db_attribute.call_count)"},{"line_number":282,"context_line":"            self.assertEqual("},{"line_number":283,"context_line":"                sorted(expected_subport_ids),"},{"line_number":284,"context_line":"                sorted(external_ids[\u0027subport_ids\u0027]))"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_148d7c31","line":282,"range":{"start_line":282,"start_character":17,"end_line":282,"end_character":28},"updated":"2016-09-22 11:48:06.000000000","message":"assertItemsEqual(expected_subport_ids, external_ids[\u0027subport_ids\u0027])","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"77ddd1bd06a64fdb48acc4e7f6e00d9452d22b7e","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                None, None, \u0027foo\u0027, subport_ids, wire\u003dwire)"},{"line_number":280,"context_line":"            external_ids \u003d mock_br.set_db_attribute.call_args[0][3]"},{"line_number":281,"context_line":"            self.assertEqual(1, mock_br.set_db_attribute.call_count)"},{"line_number":282,"context_line":"            self.assertEqual("},{"line_number":283,"context_line":"                sorted(expected_subport_ids),"},{"line_number":284,"context_line":"                sorted(external_ids[\u0027subport_ids\u0027]))"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_1b4cb76f","line":282,"range":{"start_line":282,"start_character":17,"end_line":282,"end_character":28},"in_reply_to":"5a8bc5a2_148d7c31","updated":"2016-09-22 15:54:58.000000000","message":"see huge bikeshedding here :)\n\nhttps://review.openstack.org/#/c/372794/\nhttps://review.openstack.org/#/c/374676/","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"48277fb847e402d13632ec3790838857044acc55","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                None, None, \u0027foo\u0027, subport_ids, wire\u003dwire)"},{"line_number":280,"context_line":"            external_ids \u003d mock_br.set_db_attribute.call_args[0][3]"},{"line_number":281,"context_line":"            self.assertEqual(1, mock_br.set_db_attribute.call_count)"},{"line_number":282,"context_line":"            self.assertEqual("},{"line_number":283,"context_line":"                sorted(expected_subport_ids),"},{"line_number":284,"context_line":"                sorted(external_ids[\u0027subport_ids\u0027]))"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a8bc5a2_6ad162cd","line":282,"range":{"start_line":282,"start_character":17,"end_line":282,"end_character":28},"in_reply_to":"5a8bc5a2_1b4cb76f","updated":"2016-09-22 16:41:27.000000000","message":"I\u0027m just saying, I got late to this party anyway","commit_id":"29457631ad0b77b06dee40cb5114f5f4aced129a"}]}
