'Perform work so that an FC connection can be made.
To be able to create a FC connection from a given host to a
volume, we must:
1. Translate the given WWNN to a host name
2. Create new host on the storage system if it does not yet exist
3. Map the volume to the host if it is not already done
4. Return the connection information for relevant nodes (in the
proper I/O group)'

@fczm_utils.add_fc_zone
@utils.synchronized('flashsystem-init-conn', external=True)
def initialize_connection(self, volume, connector):

    LOG.debug('enter:    initialize_connection:    volume    %(vol)s    with    connector    %(conn)s.', {'vol': volume, 'conn': connector})
    vdisk_name = volume['name']
    vdisk_id = volume['id']
    vdisk_params = self._get_vdisk_params(volume['volume_type_id'])
    self._wait_vdisk_copy_completed(vdisk_name)
    self._driver_assert(self._is_vdisk_defined(vdisk_name), (_('initialize_connection:    vdisk    %s    is    not    defined.') % vdisk_name))
    lun_id = self._map_vdisk_to_host(vdisk_name, connector)
    properties = {}
    try:
        properties = self._get_vdisk_map_properties(connector, lun_id, vdisk_name, vdisk_id, vdisk_params)
    except exception.VolumeBackendAPIException:
        with excutils.save_and_reraise_exception():
            self.terminate_connection(volume, connector)
            LOG.error('initialize_connection:    Failed    to    collect    return    properties    for    volume    %(vol)s    and    connector    %(conn)s.', {'vol': volume, 'conn': connector})
    LOG.debug('leave:    initialize_connection:\n    volume:    %(vol)s\n    connector    %(conn)s\n    properties:    %(prop)s.', {'vol': volume, 'conn': connector, 'prop': properties})
    return properties
