/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.systemservices.mapper;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.emc.storageos.coordinator.client.model.StorageDriverMetaData;
import com.emc.storageos.db.client.URIUtil;
import com.emc.storageos.db.client.model.StorageSystemType;
import com.emc.storageos.model.storagedriver.StorageDriverRestRep;
public final class StorageDriverMapper {
private StorageDriverMapper() {}
/**
* @return supported StorageSystemTypes by this driver. The first is the
* storage system, and the second is storage provider if there is
*/
public static List<StorageSystemType> map(StorageDriverMetaData driver) {
List<StorageSystemType> types = new ArrayList<StorageSystemType>();
StorageSystemType type = new StorageSystemType();
type.setStorageTypeName(driver.getStorageName());
type.setStorageTypeDispName(driver.getStorageDisplayName());
type.setDriverName(driver.getDriverName());
type.setDriverVersion(driver.getDriverVersion());
type.setDriverFileName(driver.getDriverFileName());
type.setMetaType(driver.getMetaType());
URI uri = URIUtil.createId(StorageSystemType.class);
type.setId(uri);
type.setStorageTypeId(uri.toString());
type.setIsDefaultSsl(driver.isEnableSsl());
type.setSslPort(Long.toString(driver.getSslPort()));
type.setNonSslPort(Long.toString(driver.getNonSslPort()));
type.setSupportAutoTierPolicy(driver.isSupportAutoTierPolicy());
type.setDriverClassName(driver.getDriverClassName());
types.add(type);
if (StringUtils.isNotEmpty(driver.getProviderName())
&& StringUtils.isNotEmpty(driver.getProviderDisplayName())) {
StorageSystemType provider = new StorageSystemType();
provider.setStorageTypeName(driver.getProviderName());
provider.setStorageTypeDispName(driver.getProviderDisplayName());
provider.setIsSmiProvider(true);
provider.setDriverName(driver.getDriverName());
provider.setDriverVersion(driver.getDriverVersion());
provider.setDriverFileName(driver.getDriverFileName());
provider.setMetaType(driver.getMetaType());
uri = URIUtil.createId(StorageSystemType.class);
provider.setId(uri);
provider.setStorageTypeId(uri.toString());
provider.setIsDefaultSsl(driver.isEnableSsl());
provider.setSslPort(Long.toString(driver.getSslPort()));
provider.setNonSslPort(Long.toString(driver.getNonSslPort()));
provider.setSupportAutoTierPolicy(driver.isSupportAutoTierPolicy());
provider.setDriverClassName(driver.getDriverClassName());
type.setManagedBy(provider.getStorageTypeId());
types.add(provider);
}
return types;
}
public static StorageDriverRestRep map(StorageSystemType type) {
StorageDriverRestRep rep = new StorageDriverRestRep();
rep.setDriverName(type.getDriverName());
rep.setDriverVersion(type.getDriverVersion());
rep.setDriverFileName(type.getDriverFileName());
rep.setDriverStatus(type.getDriverStatus());
rep.setDriverClassName(type.getDriverClassName());
rep.setMetaType(type.getMetaType());
List<String> supportedTypes = new ArrayList<String>();
supportedTypes.add(type.getStorageTypeDispName());
rep.setSupportedTypes(supportedTypes);
rep.setDefaultSslOn(type.getIsDefaultSsl());
rep.setSslPort(type.getSslPort());
rep.setNonSslPort(type.getNonSslPort());
rep.setSupportAutoTierPolicy(type.getSupportAutoTierPolicy());
return rep;
}
}