/*
* Copyright (c) 2017 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import java.net.URI;
/**
*
* @author jainm15
*
*/
@Cf("FilePolicy")
public class FilePolicy extends DataObjectWithACLs {
private static final long serialVersionUID = 1L;
// Type of the policy
private String filePolicyType;
// Name of the policy
private String filePolicyName;
// Description of the policy
private String filePolicyDescription;
// Level at which policy has to be applied..
private String applyAt;
// Assigned resources for which policy is being applied
private StringSet assignedResources;
// Tenants who will have access to this policy
private StringSet accessTenants;
// Type of schedule policy e.g days, weeks or months
private String scheduleFrequency;
// Policy run on every
private Long scheduleRepeat;
// Time when policy run
private String scheduleTime;
// Day of week when policy run
private String scheduleDayOfWeek;
// Day of month when policy run
private Long scheduleDayOfMonth;
// Snapshot expire type e.g hours, days, weeks, months or never
private String snapshotExpireType;
// Snapshot expire at
private Long snapshotExpireTime;
// Snapshot name pattern
private String snapshotNamePattern;
// File Replication type
private String fileReplicationType;
// File Replication copy type
private String fileReplicationCopyMode;
// File Policy associated Virtual Pool - this is being used for project and file system policy
private URI filePolicyVpool;
// Policy priority Normal / High
private String priority;
// Policy priority Number of worker thread
private Long numWorkerThreads;
// Actual resources where is being applied
private StringSet policyStorageResources;
// This has to be converted to FileReplicationTopology
private StringSet replicationTopologies;
private Boolean applyOnTargetSite;
public static enum FileReplicationType {
LOCAL, REMOTE, NONE;
}
public static enum FileReplicationCopyMode {
SYNC, ASYNC, SEMISYNC;
}
public static enum ScheduleFrequency {
MINUTES, HOURS, DAYS, WEEKS, MONTHS
}
public static enum SnapshotExpireType {
HOURS, DAYS, WEEKS, MONTHS, NEVER
}
public static enum FilePolicyType {
file_snapshot, file_replication, file_quota
}
public static enum FilePolicyApplyLevel {
vpool, project, file_system
}
public static enum AssignToResource {
all, selected
}
public static enum FilePolicyPriority {
Normal, High;
}
@Name("fileReplicationType")
public String getFileReplicationType() {
return this.fileReplicationType;
}
public void setFileReplicationType(String fileReplicationType) {
this.fileReplicationType = fileReplicationType;
setChanged("fileReplicationType");
}
@Name("frCopyMode")
public String getFileReplicationCopyMode() {
return this.fileReplicationCopyMode;
}
public void setFileReplicationCopyMode(String fileReplicationCopyMode) {
this.fileReplicationCopyMode = fileReplicationCopyMode;
setChanged("frCopyMode");
}
@Name("filePolicyType")
public String getFilePolicyType() {
return this.filePolicyType;
}
public void setFilePolicyType(String filePolicyType) {
this.filePolicyType = filePolicyType;
setChanged("filePolicyType");
}
@Name("filePolicyName")
public String getFilePolicyName() {
return this.filePolicyName;
}
public void setFilePolicyName(String filePolicyName) {
this.filePolicyName = filePolicyName;
setChanged("filePolicyName");
}
@Name("filePolicyDescription")
public String getFilePolicyDescription() {
return this.filePolicyDescription;
}
public void setFilePolicyDescription(String filePolicyDescription) {
this.filePolicyDescription = filePolicyDescription;
setChanged("filePolicyDescription");
}
@Name("applyAt")
public String getApplyAt() {
return this.applyAt;
}
public void setApplyAt(String applyAt) {
this.applyAt = applyAt;
setChanged("applyAt");
}
@Name("scheduleFrequency")
public String getScheduleFrequency() {
return this.scheduleFrequency;
}
public void setScheduleFrequency(String scheduleFrequency) {
this.scheduleFrequency = scheduleFrequency;
setChanged("scheduleFrequency");
}
@Name("scheduleRepeat")
public Long getScheduleRepeat() {
return this.scheduleRepeat;
}
public void setScheduleRepeat(Long scheduleRepeat) {
this.scheduleRepeat = scheduleRepeat;
setChanged("scheduleRepeat");
}
@Name("scheduleTime")
public String getScheduleTime() {
return this.scheduleTime;
}
public void setScheduleTime(String scheduleTime) {
this.scheduleTime = scheduleTime;
setChanged("scheduleTime");
}
@Name("scheduleDayOfWeek")
public String getScheduleDayOfWeek() {
return this.scheduleDayOfWeek;
}
public void setScheduleDayOfWeek(String scheduleDayOfWeek) {
this.scheduleDayOfWeek = scheduleDayOfWeek;
setChanged("scheduleDayOfWeek");
}
@Name("scheduleDayOfMonth")
public Long getScheduleDayOfMonth() {
return this.scheduleDayOfMonth;
}
public void setScheduleDayOfMonth(Long scheduleDayOfMonth) {
this.scheduleDayOfMonth = scheduleDayOfMonth;
setChanged("scheduleDayOfMonth");
}
@Name("snapshotExpireType")
public String getSnapshotExpireType() {
return this.snapshotExpireType;
}
public void setSnapshotExpireType(String snapshotExpireType) {
this.snapshotExpireType = snapshotExpireType;
setChanged("snapshotExpireType");
}
@Name("snapshotExpireTime")
public Long getSnapshotExpireTime() {
return this.snapshotExpireTime;
}
public void setSnapshotExpireTime(Long snapshotExpireTime) {
this.snapshotExpireTime = snapshotExpireTime;
setChanged("snapshotExpireTime");
}
@Name("snapshotNamePattern")
public String getSnapshotNamePattern() {
return this.snapshotNamePattern;
}
public void setSnapshotNamePattern(String snapshotNamePattern) {
this.snapshotNamePattern = snapshotNamePattern;
setChanged("snapshotNamePattern");
}
@Name("accessTenants")
public StringSet getTenantOrg() {
return this.accessTenants;
}
public void setTenantOrg(StringSet accessTenants) {
this.accessTenants = accessTenants;
setChanged("accessTenants");
}
@Name("assignedResources")
public StringSet getAssignedResources() {
return this.assignedResources;
}
public void setAssignedResources(StringSet assignedResources) {
this.assignedResources = assignedResources;
setChanged("assignedResources");
}
@Name("applyOnTargetSite")
public Boolean getApplyOnTargetSite() {
return this.applyOnTargetSite;
}
public void setApplyOnTargetSite(Boolean applyOnTargetSite) {
this.applyOnTargetSite = applyOnTargetSite;
setChanged("applyOnTargetSite");
}
@Name("filePolicyVpool")
public URI getFilePolicyVpool() {
return this.filePolicyVpool;
}
public void setFilePolicyVpool(URI filePolicyVpool) {
this.filePolicyVpool = filePolicyVpool;
setChanged("filePolicyVpool");
}
@Name("priority")
public String getPriority() {
return priority;
}
public void setPriority(String priority) {
this.priority = priority;
setChanged("priority");
}
@Name("numWorkerThreads")
public Long getNumWorkerThreads() {
return numWorkerThreads;
}
public void setNumWorkerThreads(Long numWorkerThreads) {
this.numWorkerThreads = numWorkerThreads;
setChanged("numWorkerThreads");
}
@Name("policyStorageResources")
public StringSet getPolicyStorageResources() {
return policyStorageResources;
}
public void setPolicyStorageResources(StringSet policyStorageResources) {
this.policyStorageResources = policyStorageResources;
setChanged("policyStorageResources");
}
@Name("replicationTopologies")
public StringSet getReplicationTopologies() {
return replicationTopologies;
}
public void setReplicationTopologies(StringSet replicationTopologies) {
this.replicationTopologies = replicationTopologies;
setChanged("replicationTopologies");
}
public void addReplicationTopology(String replicationTopology) {
if (this.replicationTopologies == null) {
this.replicationTopologies = new StringSet();
}
this.replicationTopologies.add(replicationTopology);
setChanged("replicationTopologies");
}
public void removeReplicationTopology(String topology) {
if (this.replicationTopologies != null) {
this.replicationTopologies.remove(topology);
setChanged("replicationTopologies");
}
}
@Override
public String toString() {
return "FilePolicy [filePolicyType=" + filePolicyType + ", filePolicyName=" + filePolicyName + ", filePolicyDescription="
+ filePolicyDescription + ", applyAt=" + applyAt + ", assignedResources=" + assignedResources + ", accessTenants="
+ accessTenants + ", scheduleFrequency=" + scheduleFrequency + ", scheduleRepeat=" + scheduleRepeat + ", scheduleTime="
+ scheduleTime + ", scheduleDayOfWeek=" + scheduleDayOfWeek + ", scheduleDayOfMonth=" + scheduleDayOfMonth
+ ", snapshotExpireType=" + snapshotExpireType + ", snapshotExpireTime=" + snapshotExpireTime + ", snapshotNamePattern="
+ snapshotNamePattern + ", fileReplicationType=" + fileReplicationType + ", fileReplicationCopyMode="
+ fileReplicationCopyMode + ", filePolicyVpool=" + filePolicyVpool + ", priority=" + priority + ", policyStorageResources="
+ policyStorageResources + " ]";
}
public void addAssignedResources(URI resourceURI) {
StringSet assignedRes = this.assignedResources;
if (assignedRes == null) {
assignedRes = new StringSet();
}
assignedRes.add(resourceURI.toString());
this.assignedResources = assignedRes;
setChanged("assignedResources");
}
public void removeAssignedResources(URI resourceURI) {
StringSet assignedRes = this.assignedResources;
if (assignedRes != null) {
assignedRes.remove(resourceURI.toString());
this.assignedResources = assignedRes;
setChanged("assignedResources");
}
}
public void addPolicyStorageResources(URI resourceURI) {
StringSet policyStrRes = this.policyStorageResources;
if (policyStrRes == null) {
policyStrRes = new StringSet();
}
policyStrRes.add(resourceURI.toString());
this.policyStorageResources = policyStrRes;
setChanged("policyStorageResources");
}
public void removePolicyStorageResources(URI resourceURI) {
StringSet policyStrRes = this.policyStorageResources;
if (policyStrRes != null) {
policyStrRes.remove(resourceURI.toString());
this.policyStorageResources = policyStrRes;
setChanged("policyStorageResources");
}
}
}