'Driver entry point to unattach a volume from an instance.'

@fczm_utils.remove_fc_zone
def terminate_connection(self, volume, connector, **kwargs):

    LOG.info('Entering    terminate_connection    volume=%(vol)s    connector=%(conn)s    location=%(loc)s.', {'vol': volume, 'conn': connector, 'loc': volume['provider_location']})
    wwpns = []
    initiator_name = connector['initiator']
    for wwpn in connector['wwpns']:
        wwpns.append(wwpn)
    init_targ_map = {}
    array_name = volume['provider_location'].split()
    target_wwns = self.get_wwpns_from_array(array_name)
    init_targ_map = self._build_initiator_target_map(target_wwns, connector)
    initiator_group_name = self._get_igroupname_for_initiator_fc(wwpns)
    if (not initiator_group_name):
        raise NimbleDriverException((_('No    initiator    group    found    for    initiator    %s') % initiator_name))
    LOG.debug('initiator_target_map    %s', init_targ_map)
    self.APIExecutor.remove_acl(volume, initiator_group_name)
    eventlet.sleep(DEFAULT_SLEEP)
    data = {'driver_volume_type': 'fibre_channel', 'data': {'target_wwn': target_wwns}}
    return data
