)]}'
{"dragonflow/neutron/services/trunk/driver.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"708ad67f731d531770ef26e4c2a9ae290da68436","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        )"},{"line_number":121,"context_line":"        self.nb_api.create(model)"},{"line_number":122,"context_line":"        self._subport_ids_by_parent_port_id[trunk.port_id].add(subport.port_id)"},{"line_number":123,"context_line":"        #self.nb_api.update(l2.LogicalPort(id\u003dsubport.port_id,"},{"line_number":124,"context_line":"        #                                  binding\u003ddf_parent.binding))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _delete_subports_handler(self, *args, **kwargs):"},{"line_number":127,"context_line":"        \"\"\"Handle the event that subports were deleted\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_f41afb7a","line":124,"range":{"start_line":123,"start_character":7,"end_line":124,"end_character":70},"updated":"2017-07-26 11:22:51.000000000","message":"this can be removed","commit_id":"59e0213573ace6229ce5ff20240d05cd5e6b3a93"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"708ad67f731d531770ef26e4c2a9ae290da68436","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            topic\u003dtrunk.project_id"},{"line_number":151,"context_line":"        )"},{"line_number":152,"context_line":"        self.nb_api.delete(model)"},{"line_number":153,"context_line":"        #self.nb_api.update(l2.LogicalPort(id\u003dsubport.port_id,"},{"line_number":154,"context_line":"        #                                  binding\u003dNone))"},{"line_number":155,"context_line":"        subports \u003d self._subport_ids_by_parent_port_id[trunk.port_id]"},{"line_number":156,"context_line":"        subports.remove(subport.port_id)"},{"line_number":157,"context_line":"        if not subports:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_4f0ed032","line":154,"range":{"start_line":153,"start_character":5,"end_line":154,"end_character":57},"updated":"2017-07-26 11:22:51.000000000","message":"ditto","commit_id":"59e0213573ace6229ce5ff20240d05cd5e6b3a93"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"708ad67f731d531770ef26e4c2a9ae290da68436","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def _update_port_handler(self, *args, **kwargs):"},{"line_number":161,"context_line":"        \"\"\"Handle the event that a port changes status to ACTIVE or DOWN\"\"\""},{"line_number":162,"context_line":"        port \u003d kwargs[\u0027port\u0027]"},{"line_number":163,"context_line":"        orig_port \u003d kwargs[\u0027original_port\u0027]"},{"line_number":164,"context_line":"        if port[\u0027status\u0027] \u003d\u003d orig_port[\u0027status\u0027]:"},{"line_number":165,"context_line":"            return  # Change not relevant"},{"line_number":166,"context_line":"        new_status \u003d n_constants.PORT_STATUS_ACTIVE"},{"line_number":167,"context_line":"        if port[\u0027status\u0027] !\u003d n_constants.PORT_STATUS_ACTIVE:"},{"line_number":168,"context_line":"            new_status \u003d n_constants.PORT_STATUS_DOWN"},{"line_number":169,"context_line":"        core_plugin \u003d directory.get_plugin()"},{"line_number":170,"context_line":"        for subport_id in self._get_subports_ids(port[\u0027id\u0027]):"},{"line_number":171,"context_line":"            core_plugin.update_port_status(context.get_admin_context(),"},{"line_number":172,"context_line":"                                           subport_id, new_status)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_4f65b0e0","line":169,"range":{"start_line":162,"start_character":6,"end_line":169,"end_character":44},"updated":"2017-07-26 11:22:51.000000000","message":"maybe worth to check that port_id is in the keys before all the preparation","commit_id":"59e0213573ace6229ce5ff20240d05cd5e6b3a93"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"20bead341002413d2700dd0b02386e320bd5cc13","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        self._nb_api \u003d None"},{"line_number":43,"context_line":"        self._register_init_events()"},{"line_number":44,"context_line":"        self._subport_ids_by_parent_port_id \u003d collections.defaultdict(set)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def is_loaded(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_2a037aba","line":44,"range":{"start_line":44,"start_character":13,"end_line":44,"end_character":43},"updated":"2017-07-26 12:08:05.000000000","message":"This is emptied after service restart.","commit_id":"8099128b333083c3a6d6d2474409e4d8c96b9c5e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"2aa219ff61a94d38e6e73d31ae1c7a78c9798a95","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        self._nb_api \u003d None"},{"line_number":43,"context_line":"        self._register_init_events()"},{"line_number":44,"context_line":"        self._subport_ids_by_parent_port_id \u003d collections.defaultdict(set)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def is_loaded(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_aa352a48","line":44,"range":{"start_line":44,"start_character":13,"end_line":44,"end_character":43},"in_reply_to":"ff346bd7_2a037aba","updated":"2017-07-26 12:31:35.000000000","message":"Yes. But I followed the same pattern as in the OVS/linuxbridge (But I can\u0027t find it now). This is to save a database lookup.","commit_id":"8099128b333083c3a6d6d2474409e4d8c96b9c5e"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"459ff6b84f4294589c7895fb63ec98b69fb3c922","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        self._nb_api \u003d None"},{"line_number":43,"context_line":"        self._register_init_events()"},{"line_number":44,"context_line":"        self._subport_ids_by_parent_port_id \u003d collections.defaultdict(set)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def is_loaded(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_4546af23","line":44,"range":{"start_line":44,"start_character":13,"end_line":44,"end_character":43},"in_reply_to":"ff346bd7_45c10f80","updated":"2017-07-26 12:36:44.000000000","message":"This is the Neutron server side.\n\nBut nevermind, this is Bad. Will fix.","commit_id":"8099128b333083c3a6d6d2474409e4d8c96b9c5e"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"996229a44330b13000c8f635fcd27a6bc11ab71c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        self._nb_api \u003d None"},{"line_number":43,"context_line":"        self._register_init_events()"},{"line_number":44,"context_line":"        self._subport_ids_by_parent_port_id \u003d collections.defaultdict(set)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @property"},{"line_number":47,"context_line":"    def is_loaded(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_45c10f80","line":44,"range":{"start_line":44,"start_character":13,"end_line":44,"end_character":43},"in_reply_to":"ff346bd7_aa352a48","updated":"2017-07-26 12:35:55.000000000","message":"I think the question is how do you get the updated dict after local controller restart","commit_id":"8099128b333083c3a6d6d2474409e4d8c96b9c5e"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"7d12bdaebc31cc2c2ea1f0e8e47149a974365464","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        df_parent \u003d self.nb_api.get(l2.LogicalPort(id\u003dtrunk.port_id))"},{"line_number":95,"context_line":"        for subport in subports:"},{"line_number":96,"context_line":"            self._add_subport(trunk, subport, df_parent)"},{"line_number":97,"context_line":"        core_plugin \u003d directory.get_plugin()"},{"line_number":98,"context_line":"        admin_context \u003d context.get_admin_context()"},{"line_number":99,"context_line":"        parent \u003d core_plugin.get_port(admin_context, trunk.port_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_5243f013","line":96,"updated":"2017-07-27 08:50:16.000000000","message":"I think that i will be more readable to export that code to function","commit_id":"971025fac35a5b9fadb1acbefafbbf12de16ff78"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf1a13ae6bcc8987772c0054e5e0b3ddb89720ac","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        df_parent \u003d self.nb_api.get(l2.LogicalPort(id\u003dtrunk.port_id))"},{"line_number":95,"context_line":"        for subport in subports:"},{"line_number":96,"context_line":"            self._add_subport(trunk, subport, df_parent)"},{"line_number":97,"context_line":"        core_plugin \u003d directory.get_plugin()"},{"line_number":98,"context_line":"        admin_context \u003d context.get_admin_context()"},{"line_number":99,"context_line":"        parent \u003d core_plugin.get_port(admin_context, trunk.port_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_85290d8b","line":96,"in_reply_to":"ff346bd7_5243f013","updated":"2017-07-27 10:16:17.000000000","message":"Done","commit_id":"971025fac35a5b9fadb1acbefafbbf12de16ff78"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"7d12bdaebc31cc2c2ea1f0e8e47149a974365464","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        orig_port \u003d kwargs[\u0027original_port\u0027]"},{"line_number":157,"context_line":"        if port[\u0027status\u0027] \u003d\u003d orig_port[\u0027status\u0027]:"},{"line_number":158,"context_line":"            return  # Change not relevant"},{"line_number":159,"context_line":"        new_status \u003d n_constants.PORT_STATUS_ACTIVE"},{"line_number":160,"context_line":"        if port[\u0027status\u0027] !\u003d n_constants.PORT_STATUS_ACTIVE:"},{"line_number":161,"context_line":"            new_status \u003d n_constants.PORT_STATUS_DOWN"},{"line_number":162,"context_line":"        core_plugin \u003d directory.get_plugin()"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_b2a21cad","line":159,"updated":"2017-07-27 08:50:16.000000000","message":"Maybe if else will be more clear?","commit_id":"971025fac35a5b9fadb1acbefafbbf12de16ff78"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bf1a13ae6bcc8987772c0054e5e0b3ddb89720ac","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        orig_port \u003d kwargs[\u0027original_port\u0027]"},{"line_number":157,"context_line":"        if port[\u0027status\u0027] \u003d\u003d orig_port[\u0027status\u0027]:"},{"line_number":158,"context_line":"            return  # Change not relevant"},{"line_number":159,"context_line":"        new_status \u003d n_constants.PORT_STATUS_ACTIVE"},{"line_number":160,"context_line":"        if port[\u0027status\u0027] !\u003d n_constants.PORT_STATUS_ACTIVE:"},{"line_number":161,"context_line":"            new_status \u003d n_constants.PORT_STATUS_DOWN"},{"line_number":162,"context_line":"        core_plugin \u003d directory.get_plugin()"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_c519557a","line":159,"in_reply_to":"ff346bd7_b2a21cad","updated":"2017-07-27 10:16:17.000000000","message":"I\u0027m not sure it will be clearer than this.","commit_id":"971025fac35a5b9fadb1acbefafbbf12de16ff78"}],"dragonflow/tests/unit/test_trunk_driver.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"708ad67f731d531770ef26e4c2a9ae290da68436","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            self.trunk_plugin.remove_subports("},{"line_number":91,"context_line":"                self.context, trunk[\u0027id\u0027], {\u0027sub_ports\u0027: [subport]})"},{"line_number":92,"context_line":"            nb_api.delete.assert_called_once()"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_subport_status_parent_already_active(self):"},{"line_number":95,"context_line":"        self.nb_api \u003d self.mech_driver.nb_api"},{"line_number":96,"context_line":"        with self.port(status\u003dconstants.PORT_STATUS_ACTIVE) as parent,\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff346bd7_cf876061","line":93,"updated":"2017-07-26 11:22:51.000000000","message":"Please add test for the status update on the non trunk port","commit_id":"59e0213573ace6229ce5ff20240d05cd5e6b3a93"}]}
