'Initializes the connection and returns connection info.
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.
Example return values:
\'driver_volume_type\': \'fibre_channel\'
\'data\': {
\'target_discovered\': True,
\'target_lun\': 1,
\'target_wwn\': \'1234567890123\',
\'access_mode\': \'rw\'
or
\'driver_volume_type\': \'fibre_channel\'
\'data\': {
\'target_discovered\': True,
\'target_lun\': 1,
\'target_wwn\': [\'1234567890123\', \'0987654321321\'],
\'access_mode\': \'rw\''

def _fc_initialize_connection(self, volume, connector):

    LOG.debug('_fc_initialize_connection(Volume    ID    =    %(id)s,    connector    =    %(connector)s)    Start.', {'id': volume.id, 'connector': connector})
    xml = self._cli.view_all(self._properties['ismview_path'])
    (pools, lds, ldsets, used_ldns, hostports, max_ld_count) = self.configs(xml)
    fc_ports = []
    for (director, hostport) in hostports.items():
        for port in hostport:
            if (port['protocol'].lower() == 'fc'):
                fc_ports.append(port)
    (target_wwns, init_targ_map) = self._build_initiator_target_map(connector, fc_ports)
    if (hasattr(volume, 'migration_status') and (volume.migration_status is not None) and ('target:' in volume.migration_status)):
        LOG.debug('migration_status:%s', volume.migration_status)
        migstat = volume.migration_status
        index = migstat.find('target:')
        if (index != (-1)):
            migstat = migstat[len('target:'):]
        ldname = self.get_ldname(migstat, self._properties['ld_name_format'])
    else:
        ldname = self.get_ldname(volume.id, self._properties['ld_name_format'])
    if (ldname not in lds):
        msg = (_('Logical    Disk    %(ld)s    has    unbound    already.    volume_id    =    %(id)s.') % {'ld': ldname, 'id': volume.id})
        LOG.error(msg)
        raise exception.NotFound(msg)
    lvname = (ldname + '_l')
    if (lvname in lds):
        ldn = lds[lvname]['ldn']
    else:
        ldn = lds[ldname]['ldn']
    lun = None
    for ldset in ldsets.values():
        if (ldn in ldset['lds']):
            lun = ldset['lds'][ldn]['lun']
            break
    info = {'driver_volume_type': 'fibre_channel', 'data': {'target_lun': lun, 'target_wwn': target_wwns, 'initiator_target_map': init_targ_map}}
    LOG.debug('_fc_initialize_connection(Volume    ID    =    %(id)s,    connector    =    %(connector)s,    info    =    %(info)s)    End.', {'id': volume.id, 'connector': connector, 'info': info})
    return info
