Search in sources :

Example 1 with IP

use of com.emc.storageos.scaleio.api.restapi.response.ScaleIOSDS.IP in project coprhd-controller by CoprHD.

the class ScaleIOCommunicationInterface method createStoragePorts.

/**
 * Create a StoragePort for each SDS in the ScaleIO instance. These are psuedo-StoragePorts
 * for the purpose of tying up the host-end to the storage-end of the Network
 *
 * @param storageSystem [in] - StorageSystem object (ProtectionDomain)
 * @param compatibilityStatus [in] - Compatibility status to use on the ports
 * @param network [in] - Network to associate with the ports
 * @param queryAllSDSResult [in] - SDS query result
 * @param protectionDomainName [in] - Protection Domain name
 */
private List<StoragePort> createStoragePorts(StorageSystem storageSystem, String compatibilityStatus, Network network, List<ScaleIOSDS> allSDSs, String protectionDomainName) throws IOException {
    List<StoragePort> ports = new ArrayList<>();
    List<String> endpoints = new ArrayList<>();
    for (ScaleIOSDS sds : allSDSs) {
        String sdsId = sds.getId();
        List<IP> ips = sds.getIpList();
        String sdsIP = null;
        if (ips != null && !ips.isEmpty()) {
            sdsIP = ips.get(0).getIp();
        }
        StoragePort port;
        List<StoragePort> results = CustomQueryUtility.queryActiveResourcesByAltId(_dbClient, StoragePort.class, "portNetworkId", sdsId);
        if (results == null || results.isEmpty()) {
            String nativeGUID = NativeGUIDGenerator.generateNativeGuid(storageSystem, protectionDomainName, NativeGUIDGenerator.ADAPTER);
            StorageHADomain adapter = new StorageHADomain();
            adapter.setStorageDeviceURI(storageSystem.getId());
            adapter.setId(URIUtil.createId(StorageHADomain.class));
            adapter.setAdapterName(protectionDomainName);
            adapter.setLabel(protectionDomainName);
            adapter.setNativeGuid(nativeGUID);
            adapter.setNumberofPorts("1");
            adapter.setAdapterType(StorageHADomain.HADomainType.FRONTEND.name());
            adapter.setInactive(false);
            _dbClient.createObject(adapter);
            port = new StoragePort();
            port.setId(URIUtil.createId(StoragePort.class));
            port.setPortNetworkId(sdsId);
            port.setLabel(String.format("%s-%s-StoragePort", protectionDomainName, sdsId));
            port.setStorageDevice(storageSystem.getId());
            port.setCompatibilityStatus(compatibilityStatus);
            port.setOperationalStatus(OperationalStatus.OK.name());
            port.setIpAddress(sdsIP);
            port.setNetwork(network.getId());
            port.setPortGroup(sdsId);
            port.setPortName(sdsId);
            port.setPortType(StoragePort.PortType.frontend.name());
            port.setStorageHADomain(adapter.getId());
            port.setTransportType(StorageProtocol.Transport.ScaleIO.name());
            port.setDiscoveryStatus(DiscoveryStatus.VISIBLE.name());
            port.setInactive(false);
            _dbClient.createObject(port);
            endpoints.add(port.getPortNetworkId());
        } else {
            port = results.get(0);
        }
        ports.add(port);
    }
    network.addEndpoints(endpoints, true);
    _dbClient.updateAndReindexObject(network);
    return ports;
}
Also used : IP(com.emc.storageos.scaleio.api.restapi.response.ScaleIOSDS.IP) ArrayList(java.util.ArrayList) ScaleIOSDS(com.emc.storageos.scaleio.api.restapi.response.ScaleIOSDS)

Aggregations

ScaleIOSDS (com.emc.storageos.scaleio.api.restapi.response.ScaleIOSDS)1 IP (com.emc.storageos.scaleio.api.restapi.response.ScaleIOSDS.IP)1 ArrayList (java.util.ArrayList)1