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;
}
Aggregations