'Gets iscsi iqn, ip and port information.'

def _get_iscsi_service_details(self):

    ports = []
    hw_inventory = self._client.list_hardware_inventory()
    iscsi_ports = hw_inventory.get('iscsiPorts')
    if iscsi_ports:
        for port in iscsi_ports:
            if (port.get('ipv4Enabled') and port.get('iqn') and port.get('ipv4Data') and port['ipv4Data'].get('ipv4AddressData') and port['ipv4Data']['ipv4AddressData'].get('ipv4Address') and (port['ipv4Data']['ipv4AddressData'].get('configState') == 'configured')):
                iscsi_det = {}
                iscsi_det['ip'] = port['ipv4Data']['ipv4AddressData']['ipv4Address']
                iscsi_det['iqn'] = port['iqn']
                iscsi_det['tcp_port'] = port.get('tcpListenPort')
                iscsi_det['controller'] = port.get('controllerId')
                ports.append(iscsi_det)
    if (not ports):
        msg = _('No    good    iscsi    portals    found    for    %s.')
        raise exception.NetAppDriverException((msg % self._client.get_system_id()))
    return ports
