/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import java.net.URI;
/**
* VirtualNAS Server will contain the details of NAS server depending on StorageArray type
* e.g. VDM, vFiler, vServer or AccessZone or NasServer.
* It will hold information about the IP interfaces, CIFS Server & NFS servers mapped to NasServer
*
* @author ganeso
*
*/
public class NASServer extends VirtualArrayTaggedResource implements Comparable<NASServer> {
// NAS Server name
private String nasName;
// NAS Server nativeId
private String nativeId;
// storageSystem, which it belongs
private URI storageDeviceURI;
// List of Protocols (CIFS/NFS) associated with NAS Server
private StringSet protocols;
// Set of Authentication providers for the VNasServer - set values will of type AunthnProvider
private CifsServerMap cifsServersMap;
// List of Storage Ports associated with this NAS Server
private StringSet storagePorts;
// State of the NAS server
private String nasState;
// Place holder for hosting storageDomain's information
private StringSet storageDomain;
// Registration status of NAS server
private String registrationStatus = RegistrationStatus.REGISTERED.toString();
// Compatibility status of NAS server
private String compatibilityStatus = CompatibilityStatus.COMPATIBLE.name();
// Discovery status of NAS server
private String discoveryStatus = DiscoveryStatus.VISIBLE.name();
// Place holder for Tag
private StringSet nasTag;
// Metrics details for NAS server
private StringMap metrics;
@Override
public int compareTo(NASServer arg0) {
// TODO Auto-generated method stub
return 0;
}
@Name("nasName")
public String getNasName() {
return nasName;
}
public void setNasName(String nasName) {
this.nasName = nasName;
setChanged("nasName");
}
@RelationIndex(cf = "RelationIndex", type = StorageSystem.class)
@Name("storageDevice")
public URI getStorageDeviceURI() {
return storageDeviceURI;
}
public void setStorageDeviceURI(URI stroageDeviceURi) {
this.storageDeviceURI = stroageDeviceURi;
setChanged("storageDevice");
}
@Name("nativeId")
public String getNativeId() {
return nativeId;
}
public void setNativeId(String nativeId) {
this.nativeId = nativeId;
setChanged("nativeId");
}
@Name("protocols")
public StringSet getProtocols() {
return protocols;
}
public void setProtocols(StringSet protocols) {
this.protocols = protocols;
setChanged("protocols");
}
@Name("cifsServers")
public CifsServerMap getCifsServersMap() {
return cifsServersMap;
}
public void setCifsServersMap(CifsServerMap cifsServersMap) {
this.cifsServersMap = cifsServersMap;
setChanged("cifsServers");
}
@Name("storagePorts")
@AlternateId("AssignedPortsAltIdIndex")
public StringSet getStoragePorts() {
if (storagePorts == null) {
storagePorts = new StringSet();
}
return storagePorts;
}
public void setStoragePorts(StringSet storagePorts) {
this.storagePorts = storagePorts;
setChanged("storagePorts");
}
@Name("nasState")
public String getNasState() {
return nasState;
}
public void setNasState(String nasState) {
this.nasState = nasState;
setChanged("nasState");
}
@Name("storageDomain")
public StringSet getStorageDomain() {
return storageDomain;
}
public void setStorageDomain(StringSet storageDomain) {
this.storageDomain = storageDomain;
setChanged("storageDomain");
}
@Name("registrationStatus")
public String getRegistrationStatus() {
return registrationStatus;
}
public void setRegistrationStatus(String registrationStatus) {
this.registrationStatus = registrationStatus;
setChanged("registrationStatus");
}
@Name("compatibilityStatus")
public String getCompatibilityStatus() {
return compatibilityStatus;
}
public void setCompatibilityStatus(String compatibilityStatus) {
this.compatibilityStatus = compatibilityStatus;
setChanged("compatibilityStatus");
}
@Name("discoveryStatus")
public String getDiscoveryStatus() {
return discoveryStatus;
}
public void setDiscoveryStatus(String discoveryStatus) {
this.discoveryStatus = discoveryStatus;
setChanged("discoveryStatus");
}
@Name("metrics")
public StringMap getMetrics() {
if (metrics == null) {
metrics = new StringMap();
}
return metrics;
}
public void setMetrics(StringMap metrics) {
this.metrics = metrics;
setChanged("metrics");
}
@Name("nasTag")
public StringSet getNAStag() {
return nasTag;
}
public void setNAStag(StringSet vNAStag) {
this.nasTag = vNAStag;
setChanged("nasTag");
}
}