'Initializes the connection and returns connection info.
Assign any created volume to a compute node/host so that it can be
used from that host.
The  driver returns a driver_volume_type of \'fibre_channel\'.
The target_wwn can be a single entry or a list of wwns that
correspond to the list of remote wwn(s) that will export the volume.'

@fczm_utils.add_fc_zone
def initialize_connection(self, volume, connector):

    volume_name = volume.get('id')
    provider_id = volume.get('provider_id')
    islivevol = self._is_live_vol(volume)
    LOG.debug('Initialize    connection:    %s', volume_name)
    with self._client.open_connection() as api:
        try:
            wwpns = connector.get('wwpns')
            scvolume = api.find_volume(volume_name, provider_id, islivevol)
            if scvolume:
                ssn = scvolume['instanceId'].split('.')[0]
                scserver = self._find_server(api, wwpns, ssn)
                if (scserver is None):
                    scserver = api.create_server(wwpns, self.configuration.dell_server_os, ssn)
                if (scserver is not None):
                    mapping = api.map_volume(scvolume, scserver)
                    if (mapping is not None):
                        scvolume = api.get_volume(scvolume['instanceId'])
                        (lun, targets, init_targ_map) = api.find_wwns(scvolume, scserver)
                        if islivevol:
                            sclivevolume = api.get_live_volume(provider_id)
                            if (sclivevolume and (not api.is_failed_over(provider_id, sclivevolume))):
                                (lvlun, lvtargets, lvinit_targ_map) = self.initialize_secondary(api, sclivevolume, wwpns)
                                targets += lvtargets
                                init_targ_map.update(lvinit_targ_map)
                        if ((lun is not None) and (len(targets) > 0)):
                            data = {'driver_volume_type': 'fibre_channel', 'data': {'target_lun': lun, 'target_discovered': True, 'target_wwn': targets, 'initiator_target_map': init_targ_map, 'discard': True}}
                            LOG.debug('Return    FC    data:    %s', data)
                            return data
                        LOG.error('Lun    mapping    returned    null!')
        except Exception:
            with excutils.save_and_reraise_exception():
                LOG.error('Failed    to    initialize    connection.')
    raise exception.VolumeBackendAPIException(data=_('Unable    to    map    volume.'))
