/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.model.vnas;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import com.emc.storageos.model.NamedRelatedResourceRep;
import com.emc.storageos.model.RelatedResourceRep;
import com.emc.storageos.model.varray.VirtualArrayResourceRestRep;
/**
* Virtual NAS server and returned as a response to a REST request.
*
* @author prasaa9
*
*/
@XmlRootElement(name = "virtual_nas_server")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class VirtualNASRestRep extends VirtualArrayResourceRestRep {
// NAS Server name
private String nasName;
// storageSystem, which it belongs
private RelatedResourceRep storageDeviceURI;
// List of Protocols (CIFS/NFS) associated with Virtual NAS Server
private Set<String> protocols;
// Set of Authentication providers for the VNasServer - set values will of type AunthnProvider
private Set<String> cifsServers;
// List of Storage Ports associated with this NAS Server
private List<RelatedResourceRep> storagePorts;
// State of the NAS server
private String nasState;
// Place holder for hosting storageDomain's information
private Set<String> storageDomain;
// Registration status of Virtual NAS server
private String registrationStatus;
// Compatibility status of Virtual NAS server
private String compatibilityStatus;
// Discovery status of Virtual NAS server
private String discoveryStatus;
// Place holder for Tag
private Set<String> nasTag;
// Project name which this VNAS belongs to
private Set<String> associatedProjects;
// Base directory Path for the VNAS applicable in AccessZones & vFiler device types
private String baseDirPath;
// place holder for the Parent NAS server the Data Mover
private NamedRelatedResourceRep parentNASURI;
// Limits on vNAS
private String maxStorageObjects;
private String maxStorageCapacity;
// Static Load on vNAS
private String storageObjects;
private String usedStorageCapacity;
private String percentLoad;
// Dynamic load on vNAS
private String avgPercentagebusy;
private String avgEmaPercentagebusy;
// Indicate, whether the vNAS is overloaded or not!!!
private Boolean isOverloaded;
public VirtualNASRestRep() {
}
@XmlElement(name = "nas_name")
public String getNasName() {
return nasName;
}
public void setNasName(String nasName) {
this.nasName = nasName;
}
@XmlElement(name = "storage_device")
public RelatedResourceRep getStorageDeviceURI() {
return storageDeviceURI;
}
public void setStorageDeviceURI(RelatedResourceRep storageDeviceURI) {
this.storageDeviceURI = storageDeviceURI;
}
@XmlElementWrapper(name = "protocols")
@XmlElement(name = "protocol")
public Set<String> getProtocols() {
return protocols;
}
public void setProtocols(Set<String> protocols) {
this.protocols = protocols;
}
@XmlElementWrapper(name = "cifs_servers")
@XmlElement(name = "cifs_server")
public Set<String> getCifsServers() {
return cifsServers;
}
public void setCifsServers(Set<String> cifsServers) {
this.cifsServers = cifsServers;
}
@XmlElementWrapper(name = "storage_ports")
@XmlElement(name = "storage_port")
public List<RelatedResourceRep> getStoragePorts() {
if (storagePorts == null) {
storagePorts = new ArrayList<RelatedResourceRep>();
}
return storagePorts;
}
public void setStoragePorts(List<RelatedResourceRep> storagePorts) {
this.storagePorts = storagePorts;
}
@XmlElement(name = "nas_state")
public String getNasState() {
return nasState;
}
public void setNasState(String nasState) {
this.nasState = nasState;
}
@XmlElementWrapper(name = "storage_domains")
@XmlElement(name = "storage_domain")
public Set<String> getStorageDomain() {
return storageDomain;
}
public void setStorageDomain(Set<String> storageDomain) {
this.storageDomain = storageDomain;
}
@XmlElement(name = "registration_status")
public String getRegistrationStatus() {
return registrationStatus;
}
public void setRegistrationStatus(String registrationStatus) {
this.registrationStatus = registrationStatus;
}
@XmlElement(name = "compatibility_status")
public String getCompatibilityStatus() {
return compatibilityStatus;
}
public void setCompatibilityStatus(String compatibilityStatus) {
this.compatibilityStatus = compatibilityStatus;
}
@XmlElement(name = "discovery_status")
public String getDiscoveryStatus() {
return discoveryStatus;
}
public void setDiscoveryStatus(String discoveryStatus) {
this.discoveryStatus = discoveryStatus;
}
@XmlElementWrapper(name = "nas_tags")
@XmlElement(name = "nas_tag")
public Set<String> getNasTag() {
return nasTag;
}
public void setNasTag(Set<String> nasTag) {
this.nasTag = nasTag;
}
@XmlElement(name = "associated_projects")
public Set<String> getAssociatedProjects() {
return associatedProjects;
}
public void setAssociatedProjects(Set<String> projects) {
this.associatedProjects = projects;
}
@XmlElement(name = "base_dir_path")
public String getBaseDirPath() {
return baseDirPath;
}
public void setBaseDirPath(String baseDirPath) {
this.baseDirPath = baseDirPath;
}
@XmlElement(name = "parent_nas")
public NamedRelatedResourceRep getParentNASURI() {
return parentNASURI;
}
public void setParentNASURI(NamedRelatedResourceRep parentNASURI) {
this.parentNASURI = parentNASURI;
}
@XmlElement(name = "max_storage_objects")
public String getMaxStorageObjects() {
return maxStorageObjects;
}
public void setMaxStorageObjects(String maxStorageObjects) {
this.maxStorageObjects = maxStorageObjects;
}
@XmlElement(name = "max_storage_capacity")
public String getMaxStorageCapacity() {
return maxStorageCapacity;
}
public void setMaxStorageCapacity(String maxStorageCapacity) {
this.maxStorageCapacity = maxStorageCapacity;
}
@XmlElement(name = "storage_objects")
public String getStorageObjects() {
return storageObjects;
}
public void setStorageObjects(String storageObjects) {
this.storageObjects = storageObjects;
}
@XmlElement(name = "storage_capacity")
public String getUsedStorageCapacity() {
return usedStorageCapacity;
}
public void setUsedStorageCapacity(String storageCapacity) {
this.usedStorageCapacity = storageCapacity;
}
@XmlElement(name = "avg_percentage_busy")
public String getAvgPercentagebusy() {
return avgPercentagebusy;
}
public void setAvgPercentagebusy(String avgPercentagebusy) {
this.avgPercentagebusy = avgPercentagebusy;
}
@XmlElement(name = "avg_ema_percentage_busy")
public String getAvgEmaPercentagebusy() {
return avgEmaPercentagebusy;
}
public void setAvgEmaPercentagebusy(String avgEmaPercentagebusy) {
this.avgEmaPercentagebusy = avgEmaPercentagebusy;
}
@XmlElement(name = "over_loaded")
public Boolean getIsOverloaded() {
return isOverloaded;
}
public void setIsOverloaded(Boolean isOverloaded) {
this.isOverloaded = isOverloaded;
}
@XmlElement(name = "percent_load")
public String getPercentLoad() {
return percentLoad;
}
public void setPercentLoad(String percentLoad) {
this.percentLoad = percentLoad;
}
}