'Finds target information for a given Dell scvolume object mapping.
The data coming back is both the preferred path and all the paths.
:param scvolume: The dell sc volume object.
:returns: iSCSI property dictionary.
:raises VolumeBackendAPIException:'

def find_iscsi_properties(self, scvolume):

    LOG.debug('find_iscsi_properties:    scvolume:    %s', scvolume)
    pdata = {'active': (-1), 'up': (-1)}
    portals = []
    luns = []
    iqns = []
    def process(lun, iqn, address, port, status, active):
        'Process    this    mapping    information.\n\n                                                :param    lun:    SCSI    Lun.\n                                                :param    iqn:    iSCSI    IQN    address.\n                                                :param    address:    IP    address.\n                                                :param    port:    IP    Port    number\n                                                :param    readonly:    Boolean    indicating    mapping    is    readonly.\n                                                :param    status:    String    indicating    mapping    status.        (Up    is    what    we\n                                                                                                            are    looking    for.)\n                                                :param    active:    Boolean    indicating    whether    this    is    on    the    active\n                                                                                                            controller    or    not.\n                                                :return:    Nothing\n                                                '
        if (self.excluded_domain_ips.count(address) == 0):
            newportal = ((address + ':') + six.text_type(port))
            for (idx, portal) in enumerate(portals):
                if ((portal == newportal) and (iqns[idx] == iqn)):
                    LOG.debug('Skipping    duplicate    portal    %(ptrl)s    andiqn    %(iqn)s.', {'ptrl': portal, 'iqn': iqn})
                    return
            portals.append(newportal)
            iqns.append(iqn)
            luns.append(lun)
            if (pdata['up'] == (-1)):
                if active:
                    pdata['active'] = (len(iqns) - 1)
                    if (status == 'Up'):
                        pdata['up'] = pdata['active']
    mappings = self._find_mappings(scvolume)
    if (len(mappings) > 0):
        ssn = self._get_id(scvolume).split('.')[0]
        actvctrl = self._find_active_controller(scvolume)
        isvpmode = self._is_virtualport_mode(ssn)
        for mapping in mappings:
            msrv = mapping.get('server')
            if (msrv and (msrv.get('objectType') == 'ScRemoteStorageCenter')):
                continue
            LOG.debug('find_iscsi_properties:    mapping:    %s', mapping)
            lun = mapping.get('lun')
            status = mapping.get('status')
            iqn = self._get_iqn(mapping)
            isactive = (True if (self._get_controller_id(mapping) == actvctrl) else False)
            if (isvpmode and iqn):
                domains = self._get_domains(mapping)
                if domains:
                    for dom in domains:
                        LOG.debug('find_iscsi_properties:    domain:    %s', dom)
                        ipaddress = dom.get('targetIpv4Address', dom.get('wellKnownIpAddress'))
                        portnumber = dom.get('portNumber')
                        process(lun, iqn, ipaddress, portnumber, status, isactive)
            elif iqn:
                cportid = self._get_id(mapping.get('controllerPort'))
                cpconfig = self._find_controller_port_iscsi_config(cportid)
                if cpconfig:
                    ipaddress = cpconfig.get('ipAddress')
                    portnumber = cpconfig.get('portNumber')
                    process(lun, iqn, ipaddress, portnumber, status, isactive)
    if (len(luns) == 0):
        raise exception.VolumeBackendAPIException(data=_('Unable    to    find    iSCSI    mappings.'))
    if (pdata['up'] != (-1)):
        pdata['active'] = pdata['up']
    elif (pdata['active'] == (-1)):
        LOG.debug('find_iscsi_properties:    Volume    is    not    yet    active    on    any    controller.')
        pdata['active'] = 0
    iqns.insert(0, iqns.pop(pdata['active']))
    portals.insert(0, portals.pop(pdata['active']))
    luns.insert(0, luns.pop(pdata['active']))
    data = {'target_discovered': False, 'target_iqn': iqns[0], 'target_iqns': iqns, 'target_portal': portals[0], 'target_portals': portals, 'target_lun': luns[0], 'target_luns': luns}
    LOG.debug('find_iscsi_properties:    %s', data)
    return data
