/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import java.net.URI;
/**
* An object to represent a cluster of hosts. A cluster can be a part of a
* vcenter or a physical cluster. A cluster is a {@link TenantOrg} resource
* and can be optionally assigned to a project.
*
* @author elalih
*
*/
@Cf("Cluster")
public class Cluster extends AbstractTenantResource {
private URI _vcenterDataCenter;
private URI _project;
private String _externalId;
private Boolean autoExportEnabled = false;
private StringSet volumeGroupIds;
/**
* Returns the data center in vcenter where this cluster resides
*
* @return the data center in vcenter where this cluster resides
*/
@RelationIndex(cf = "RelationIndex", type = VcenterDataCenter.class)
@Name("vcenterDataCenter")
public URI getVcenterDataCenter() {
return _vcenterDataCenter;
}
/**
* Sets the data center in vcenter where this cluster resides
*
* @param dataCenter the data center of this cluster
*/
public void setVcenterDataCenter(URI dataCenter) {
this._vcenterDataCenter = dataCenter;
setChanged("vcenterDataCenter");
}
@Override
public Object[] auditParameters() {
return new Object[] { getLabel(),
getVcenterDataCenter(), getId() };
}
/**
* This field is currently not used. Any values passed into it will be ignored.
*
* @return null
*/
@RelationIndex(cf = "RelationIndex", type = Project.class)
@Name("project")
public URI getProject() {
return _project;
}
/**
* This field is currently not used. Any values passed into it will be ignored.
*
* @param project
*/
public void setProject(URI project) {
// _project = project;
// setChanged("project");
}
/**
* ID of this cluster on an external system such as vCenter.
*
* @return
*/
@AlternateId("AltIdIndex")
@Name("externalId")
public String getExternalId() {
return _externalId;
}
public void setExternalId(String externalId) {
this._externalId = externalId;
setChanged("externalId");
}
/**
* If discovery will automatically export to this cluster.
*
* @deprecated Clusters no longer use this value to determine auto export behavior.
* @return
*/
@Name("autoExportEnabled")
@Deprecated
public Boolean getAutoExportEnabled() {
return autoExportEnabled == null || autoExportEnabled;
}
@Deprecated
public void setAutoExportEnabled(Boolean autoExportEnabled) {
this.autoExportEnabled = autoExportEnabled;
setChanged("autoExportEnabled");
}
/**
* Getter for the ids of the volume groups
*
* @return The set of application ids
*/
@Name("volumeGroupIds")
@AlternateId("VolumeGroups")
public StringSet getVolumeGroupIds() {
if (volumeGroupIds == null) {
volumeGroupIds = new StringSet();
}
return volumeGroupIds;
}
/**
* Setter for the volume group ids
*/
public void setVolumeGroupIds(StringSet applicationIds) {
this.volumeGroupIds = applicationIds;
setChanged("volumeGroupIds");
}
}