'Create trunk bridge based on parent port ID.
This method is decorated with a lock that prevents processing deletion
while creation hasn\'t been finished yet. It\'s based on the bridge name
so we can keep processing other bridges in parallel.
:param bridge_name: Name of the created trunk bridge.'

@lock_on_bridge_name(required_parameter='bridge_name')
def handle_trunk_add(self, bridge_name):

    bridge = ovs_lib.OVSBridge(bridge_name)
    if (not bridge.bridge_exists(bridge_name)):
        LOG.debug('The    bridge    %s    was    deleted    before    it    was    handled.', bridge_name)
        return
    if (not self._is_vm_connected(bridge)):
        LOG.debug('No    instance    port    associated    to    bridge    %s    could    be    found.    Deleting    bridge    and    its    resources.', bridge_name)
        self.trunk_manager.dispose_trunk(bridge)
        return
    rewire = bridge_has_service_port(bridge)
    try:
        self._wire_trunk(bridge, self._get_parent_port(bridge), rewire)
    except oslo_messaging.MessagingException as e:
        LOG.error(_LE('Got    messaging    error    while    processing    trunk    bridge    %(bridge_name)s:    %(err)s'), {'bridge_name': bridge.br_name, 'err': e})
    except exceptions.ParentPortNotFound as e:
        LOG.error(_LE('Failed    to    get    parent    port    for    bridge    %(bridge_name)s:    %(err)s'), {'bridge_name': bridge.br_name, 'err': e})
