/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.vnxe.requests; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.emc.storageos.vnxe.VNXeConstants; import com.emc.storageos.vnxe.models.VNXeIscsiNode; import com.emc.storageos.vnxe.models.VNXeIscsiPortal; public class IscsiPortalListRequest extends KHRequests<VNXeIscsiPortal> { private static final Logger _logger = LoggerFactory.getLogger(IscsiPortalListRequest.class); private static final String URL = "/api/types/iscsiPortal/instances"; private static final String FIELDS = "ipAddress,iscsiNode"; public IscsiPortalListRequest(KHClient client) { super(client); _url = URL; _fields = FIELDS; } /** * Get iscsiPortals, without detailed iscsiNode, e.g. no iqn name * * @return */ public List<VNXeIscsiPortal> get() { return getDataForObjects(VNXeIscsiPortal.class); } /** * Get all iscsiPortals, with detailed iscsiNode. * * @return */ public List<VNXeIscsiPortal> getDetails() { List<VNXeIscsiPortal> result = new ArrayList<VNXeIscsiPortal>(); List<VNXeIscsiPortal> portals = get(); if (portals != null && !portals.isEmpty()) { for (VNXeIscsiPortal portal : portals) { // get iscsiNode, so that we could get iqn name for each iscsi port VNXeIscsiNode node = portal.getIscsiNode(); if (node != null) { String nodeId = node.getId(); IscsiNodeRequests nodeReq = new IscsiNodeRequests(getClient()); VNXeIscsiNode detailedNode = nodeReq.get(nodeId); portal.setIscsiNode(detailedNode); result.add(portal); } } } return result; } /** * Get iscsiPort based on the IscsiNode Id * * @param nodeId iscsiNode id * @return */ public VNXeIscsiPortal getByIscsiNode(String nodeId) { StringBuilder builder = new StringBuilder(VNXeConstants.ISCSINODE_FILTER); builder.append("\""); builder.append(nodeId); builder.append("\""); setFilter(builder.toString()); VNXeIscsiPortal result = null; List<VNXeIscsiPortal> portalList = get(); // it should just return 1 if (portalList != null && !portalList.isEmpty()) { result = portalList.get(0); } else { _logger.info("No iscsiPortal found using the iscsiNode Id: {}", nodeId); } return result; } }