'Plug patch ports between trunk bridge and given bridge.
The method plugs one patch port on the given bridge side using
port MAC and ID as external IDs.  The other endpoint of patch port is
attached to the trunk bridge.  Everything is done in a single
OVSDB transaction so either all operations succeed or fail.
:param br_int: an integration bridge where peer endpoint of patch port
will be created.'

def plug(self, br_int):

    ovsdb = self.bridge.ovsdb
    patch_int_attrs = get_patch_peer_attrs(self.patch_port_trunk_name, self.port_mac, self.port_id)
    patch_trunk_attrs = get_patch_peer_attrs(self.patch_port_int_name, self.port_mac, self.port_id)
    with ovsdb.transaction() as txn:
        txn.add(ovsdb.add_port(br_int.br_name, self.patch_port_int_name))
        txn.add(ovsdb.db_set('Interface', self.patch_port_int_name, *patch_int_attrs))
        txn.add(ovsdb.add_port(self.bridge.br_name, self.patch_port_trunk_name))
        txn.add(ovsdb.db_set('Interface', self.patch_port_trunk_name, *patch_trunk_attrs))
