use of com.emc.storageos.driver.dellsc.DellSCDriverTask in project coprhd-controller by CoprHD.
the class DellSCDiscovery method discoverStorageProvider.
/**
* Perform discovery for a storage provider.
*
* @param storageProvider The provider.
* @param storageSystems The storage systems collection to populate.
* @return The driver task.
*/
public DriverTask discoverStorageProvider(StorageProvider storageProvider, List<StorageSystem> storageSystems) {
DellSCDriverTask task = new DellSCDriverTask("discover");
try {
LOG.info("Getting information for storage provider [{}:{}] as user {}", storageProvider.getProviderHost(), storageProvider.getPortNumber(), storageProvider.getUsername());
StorageCenterAPI api = connectionManager.getConnection(storageProvider.getProviderHost(), storageProvider.getPortNumber(), storageProvider.getUsername(), storageProvider.getPassword(), true);
LOG.info("Connected to DSM {} as user {}", storageProvider.getProviderHost(), storageProvider.getUsername());
// Populate the provider information
storageProvider.setAccessStatus(AccessStatus.READ_WRITE);
storageProvider.setManufacturer("Dell");
storageProvider.setProviderVersion(driverVersion);
storageProvider.setIsSupportedVersion(true);
// Get some info about the DSM for debugging purposes
EmDataCollector em = api.getDSMInfo();
if (em != null) {
LOG.info("Connected to {} DSM version {}, Java version {}", em.type, em.version, em.javaVersion);
storageProvider.setProviderVersion(em.version);
}
// Populate the basic SC information
StorageCenter[] scs = api.getStorageCenterInfo();
for (StorageCenter sc : scs) {
StorageSystem storageSystem = util.getStorageSystemFromStorageCenter(api, sc, null);
storageSystem.setSystemType(driverName);
storageSystems.add(storageSystem);
}
task.setStatus(DriverTask.TaskStatus.READY);
} catch (Exception e) {
String msg = String.format("Exception encountered getting storage provider information: %s", e);
LOG.error(msg);
task.setFailed(msg);
}
return task;
}
use of com.emc.storageos.driver.dellsc.DellSCDriverTask in project coprhd-controller by CoprHD.
the class DellSCDiscovery method discoverStorageSystem.
/**
* Discover storage systems and their capabilities.
*
* @param storageSystem Storage system to discover.
* @return The discovery task.
*/
public DriverTask discoverStorageSystem(StorageSystem storageSystem) {
DriverTask task = new DellSCDriverTask("discover");
try {
LOG.info("Getting information for storage system [{}] - {}", storageSystem.getIpAddress(), storageSystem.getSystemName());
String sn = storageSystem.getSerialNumber();
if (sn == null || sn.length() == 0) {
// Directly added system, no SSN yet so we use the name field
sn = storageSystem.getSystemName();
// name with provider_name+serial_number
if (sn.contains("+")) {
String[] parts = sn.split("\\+");
sn = parts[1];
}
}
int port = storageSystem.getPortNumber();
if (port == 0) {
port = 3033;
}
StorageCenterAPI api = connectionManager.getConnection(storageSystem.getIpAddress(), port, storageSystem.getUsername(), storageSystem.getPassword(), false);
// Populate the SC information
StorageCenter sc = api.findStorageCenter(sn);
util.getStorageSystemFromStorageCenter(api, sc, storageSystem);
storageSystem.setSystemType(driverName);
task.setStatus(DriverTask.TaskStatus.READY);
} catch (Exception e) {
String msg = String.format("Exception encountered getting storage system information: %s", e);
LOG.error(msg);
task.setMessage(msg);
task.setStatus(DriverTask.TaskStatus.FAILED);
}
return task;
}
use of com.emc.storageos.driver.dellsc.DellSCDriverTask in project coprhd-controller by CoprHD.
the class DellSCMirroring method splitVolumeMirror.
/**
* Delete volume mirror but leave the destination volume intact.
*
* @param mirrors The mirrors to split.
* @return The split task.
*/
public DriverTask splitVolumeMirror(List<VolumeMirror> mirrors) {
LOG.info("Splitting volume mirror");
DellSCDriverTask task = new DellSCDriverTask("splitVolumeMirror");
StringBuilder errBuffer = new StringBuilder();
int mirrorSplit = 0;
for (VolumeMirror mirror : mirrors) {
try {
StorageCenterAPI api = connectionManager.getConnection(mirror.getStorageSystemId());
api.deleteMirror(mirror.getNativeId());
task.setStatus(TaskStatus.READY);
mirrorSplit++;
} catch (StorageCenterAPIException | DellSCDriverException dex) {
String error = String.format("Error splitting volume mirror %s: %s", mirror.getDisplayName(), dex);
LOG.error(error);
errBuffer.append(String.format("%s%n", error));
}
}
task.setMessage(errBuffer.toString());
if (mirrorSplit == mirrors.size()) {
task.setStatus(TaskStatus.READY);
} else if (mirrorSplit == 0) {
task.setStatus(TaskStatus.FAILED);
} else {
task.setStatus(TaskStatus.PARTIALLY_FAILED);
}
return task;
}
use of com.emc.storageos.driver.dellsc.DellSCDriverTask in project coprhd-controller by CoprHD.
the class DellSCMirroring method resumeVolumeMirror.
/**
* Resume volume mirrors. Not supported as once a mirror is split,
* we no longer have any way of knowing what the target was.
*
* @param mirrors The mirrors to resume.
* @return The mirror task.
*/
public DriverTask resumeVolumeMirror(List<VolumeMirror> mirrors) {
LOG.info("Resuming volume mirror not supported.");
DriverTask task = new DellSCDriverTask("resumeVolumeMirror");
task.setStatus(TaskStatus.FAILED);
return null;
}
use of com.emc.storageos.driver.dellsc.DellSCDriverTask in project coprhd-controller by CoprHD.
the class DellSCMirroring method restoreVolumeMirror.
/**
* Restore a volume mirror.
*
* @param mirrors The mirrors.
* @return The driver task.
*/
public DriverTask restoreVolumeMirror(List<VolumeMirror> mirrors) {
LOG.info("Restoring volume mirror not supported");
// Need to determine what this expects. Mirrors are... mirrored. So
// nothing to restore to in SC terms.
DriverTask task = new DellSCDriverTask("restoreVolumeMirror");
task.setStatus(TaskStatus.FAILED);
return null;
}
Aggregations