/*
* Copyright (c) 2008-2011 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import com.emc.storageos.db.client.model.FileExport;
import com.emc.storageos.db.client.model.StorageProtocol;
/**
* Place holder for FS Export information.
*/
public class FileShareExport implements Serializable {
// enumeration of export security types
public enum SecurityTypes {
sys,
krb5,
krb5i,
krb5p
}
// enumeration of export permissions
public enum Permissions {
ro,
rw,
root
}
private List<String> _clients;
private Set<SecurityTypes> _securityType;
private Permissions _permissions;
private String _rootUserMapping;
private String _storagePortName;
private StorageProtocol.File _protocol;
private String _storagePort;
private String _path;
private String _subDirectory;
private String _mountPath;
private String _comments;
private String _isilonId;
private Boolean _bypassDnsCheck;
private static final String SEC_SEPARATOR = ",";
/**
* Construction of FileShareExport export
*
* @param clients
* @param securityType
* @param permissions
* @param rootUserMapping
* @param protocol
* @param storagePortName Storage port name.
*/
public FileShareExport(List<String> clients, String securityType, String permissions, String rootUserMapping, String protocol,
String storagePortName, String storagePort) {
_clients = clients;
for (String secType : securityType.split(SEC_SEPARATOR)) {
if (_securityType == null) {
_securityType = new HashSet<SecurityTypes>();
}
_securityType.add(Enum.valueOf(SecurityTypes.class, secType.trim()));
}
_permissions = Enum.valueOf(Permissions.class, permissions);
_rootUserMapping = rootUserMapping;
_storagePortName = storagePortName;
_protocol = Enum.valueOf(StorageProtocol.File.class, protocol);
_storagePort = storagePort;
}
/**
* Construction of FileShareExport export
*
* @param clients
* @param securityType
* @param permissions
* @param rootUserMapping
* @param protocol
* @param storagePortName Storage port name.
* @param path
*/
public FileShareExport(List<String> clients, String securityType, String permissions, String rootUserMapping,
String protocol, String storagePortName, String storagePort, String path) {
_clients = clients;
for (String secType : securityType.split(SEC_SEPARATOR)) {
if (_securityType == null) {
_securityType = new HashSet<SecurityTypes>();
}
_securityType.add(Enum.valueOf(SecurityTypes.class, secType.trim()));
}
_permissions = Enum.valueOf(Permissions.class, permissions);
_rootUserMapping = rootUserMapping;
_storagePortName = storagePortName;
_protocol = Enum.valueOf(StorageProtocol.File.class, protocol);
_storagePort = storagePort;
_path = path;
}
/**
* Construction of FileShareExport export
*
* @param clients
* @param securityType
* @param permissions
* @param rootUserMapping
* @param protocol
* @param storagePortName Storage port name.
* @param path
* @param mountPath
*/
public FileShareExport(List<String> clients, String securityType, String permissions, String rootUserMapping,
String protocol, String storagePortName, String storagePort, String path, String mountPath, String subDirectory,
String comments) {
_clients = clients;
for (String secType : securityType.split(SEC_SEPARATOR)) {
if (_securityType == null) {
_securityType = new HashSet<SecurityTypes>();
}
_securityType.add(Enum.valueOf(SecurityTypes.class, secType.trim()));
}
_permissions = Enum.valueOf(Permissions.class, permissions);
_rootUserMapping = rootUserMapping;
_storagePortName = storagePortName;
_protocol = Enum.valueOf(StorageProtocol.File.class, protocol);
_storagePort = storagePort;
_path = path;
_mountPath = mountPath;
_comments = comments;
_subDirectory = subDirectory;
}
/**
* Construction of FileShareExport export
*
* @param clients
* @param securityType
* @param permissions
* @param rootUserMapping
* @param protocol
* @param storagePortName Storage port name.
* @param path
* @param mountPath
* @param overrideDnsCheck disable the DNS check for the client FQDN
*/
public FileShareExport(List<String> clients, String securityType, String permissions, String rootUserMapping,
String protocol, String storagePortName, String storagePort, String path, String mountPath, String subDirectory,
String comments, Boolean bypassDnsCheck) {
_clients = clients;
for (String secType : securityType.split(SEC_SEPARATOR)) {
if (_securityType == null) {
_securityType = new HashSet<SecurityTypes>();
}
_securityType.add(Enum.valueOf(SecurityTypes.class, secType.trim()));
}
_permissions = Enum.valueOf(Permissions.class, permissions);
_rootUserMapping = rootUserMapping;
_storagePortName = storagePortName;
_protocol = Enum.valueOf(StorageProtocol.File.class, protocol);
_storagePort = storagePort;
_path = path;
_mountPath = mountPath;
_comments = comments;
_subDirectory = subDirectory;
_bypassDnsCheck = bypassDnsCheck;
}
public String getComments() {
if (_comments == null) {
return "";
}
return _comments;
}
public void setComments(String comments) {
_comments = comments;
}
/**
* Construction of FileShareExport
*
* @param fileExport FileExport
*/
public FileShareExport(FileExport fileExport) {
_clients = fileExport.getClients();
_permissions = Permissions.valueOf(fileExport.getPermissions());
if (fileExport.getSecurityType() != null) {
for (String secType : fileExport.getSecurityType().split(SEC_SEPARATOR)) {
if (_securityType == null) {
_securityType = new HashSet<SecurityTypes>();
}
_securityType.add(Enum.valueOf(SecurityTypes.class, secType.trim()));
}
}
_rootUserMapping = fileExport.getRootUserMapping();
_storagePortName = fileExport.getStoragePortName();
_storagePort = fileExport.getStoragePort();
_protocol = StorageProtocol.File.valueOf(fileExport.getProtocol());
_path = fileExport.getPath();
_mountPath = fileExport.getMountPath();
_isilonId = fileExport.getIsilonId();
_subDirectory = fileExport.getSubDirectory();
}
public List<String> getClients() {
return _clients;
}
public String getSecurityType() {
return _securityType.toString();
}
public String getPermissions() {
return _permissions.toString();
}
public String getStoragePortName() {
return _storagePortName;
}
public String getRootUserMapping() {
return _rootUserMapping;
}
public String getProtocol() {
return _protocol.toString();
}
public String getStoragePort() {
return _storagePort;
}
public String getPath() {
return _path;
}
public String getMountPath() {
return _mountPath;
}
public String getSubDirectory() {
return _subDirectory;
}
public void setPath(String path) {
this._path = path;
}
public void setMountPath(String mountPath) {
this._mountPath = mountPath;
}
public FileExport getFileExport() {
// Convert the set of security types to a string separated by comma(,).
Set<String> orderedSecTypes = new TreeSet<String>();
Iterator<SecurityTypes> secIter = _securityType.iterator();
while (secIter.hasNext()) {
orderedSecTypes.add(secIter.next().toString());
}
Iterator<String> orderedList = orderedSecTypes.iterator();
String securityTypes = orderedList.next().toString();
while (orderedList.hasNext()) {
securityTypes += "," + orderedList.next().toString();
}
FileExport fileExport = new FileExport(_clients, _storagePortName, _mountPath, securityTypes, _permissions.toString(),
_rootUserMapping,
_protocol.toString(), _storagePort, _path, _mountPath, _subDirectory, _comments);
fileExport.setIsilonId(_isilonId);
return fileExport;
}
public String getIsilonId() {
return _isilonId;
}
public void setIsilonId(String isilonId) {
this._isilonId = isilonId;
}
public Boolean getBypassDnsCheck() {
if (_bypassDnsCheck == null) {
return false;
}
return _bypassDnsCheck;
}
public void setBypassDnsCheck(Boolean bypassDnsCheck) {
this._bypassDnsCheck = bypassDnsCheck;
}
}