/*
* Copyright (c) 2017 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.model.file.policy;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import com.emc.storageos.model.DataObjectRestRep;
import com.emc.storageos.model.NamedRelatedResourceRep;
@XmlRootElement(name = "file_policy")
public class FilePolicyRestRep extends DataObjectRestRep {
private String type;
private String description;
private Boolean hasAccessToTenants;
private String appliedAt;
private List<NamedRelatedResourceRep> assignedResources;
private NamedRelatedResourceRep vpool;
private ScheduleRestRep schedule;
private ReplicationSettingsRestRep replicationSettings;
private SnapshotSettingsRestRep snapshotSettings;
private String priority;
private Long numWorkerThreads;
private Boolean applyOnTargetSite;
@XmlElement(name = "schedule")
public ScheduleRestRep getSchedule() {
return schedule;
}
@XmlElement(name = "replication_settings")
public ReplicationSettingsRestRep getReplicationSettings() {
return replicationSettings;
}
@XmlElement(name = "snapshot_settings")
public SnapshotSettingsRestRep getSnapshotSettings() {
return snapshotSettings;
}
@XmlElement(name = "has_access_to_tenants")
public Boolean getHasAccessToTenants() {
return hasAccessToTenants;
}
@XmlElement(name = "apply_on_target_site")
public Boolean getApplyOnTargetSite() {
return applyOnTargetSite;
}
@XmlElement(name = "vpool")
public NamedRelatedResourceRep getVpool() {
return vpool;
}
@XmlElement(name = "applied_at")
public String getAppliedAt() {
return appliedAt;
}
@XmlElementWrapper(name = "assigned_resources")
@XmlElement(name = "resource")
public List<NamedRelatedResourceRep> getAssignedResources() {
return assignedResources;
}
@XmlElement(name = "type")
public String getType() {
return type;
}
@XmlElement(name = "description")
public String getDescription() {
return description;
}
@XmlElement(name = "priority")
public String getPriority() {
return priority;
}
public void setPriority(String priority) {
this.priority = priority;
}
public void setType(String type) {
this.type = type;
}
public void setDescription(String description) {
this.description = description;
}
public void setAssignedResources(List<NamedRelatedResourceRep> assignedResources) {
this.assignedResources = assignedResources;
}
public void setAppliedAt(String appliedAt) {
this.appliedAt = appliedAt;
}
public void setVpool(NamedRelatedResourceRep vpool) {
this.vpool = vpool;
}
public void setApplyOnTargetSite(Boolean applyOnTargetSite) {
this.applyOnTargetSite = applyOnTargetSite;
}
public void setHasAccessToTenants(Boolean hasAccessToTenants) {
this.hasAccessToTenants = hasAccessToTenants;
}
public void setSnapshotSettings(SnapshotSettingsRestRep snapshotSettings) {
this.snapshotSettings = snapshotSettings;
}
public void setReplicationSettings(ReplicationSettingsRestRep replicationSettings) {
this.replicationSettings = replicationSettings;
}
public void setSchedule(ScheduleRestRep schedule) {
this.schedule = schedule;
}
public void addAssignedResource(NamedRelatedResourceRep resource) {
if (assignedResources == null) {
assignedResources = new ArrayList<NamedRelatedResourceRep>();
}
assignedResources.add(resource);
}
@XmlElement(name = "numWorkerThreads")
public Long getNumWorkerThreads() {
return numWorkerThreads;
}
public void setNumWorkerThreads(Long numWorkerThreads) {
this.numWorkerThreads = numWorkerThreads;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("FilePolicyRestRep [");
if (type != null) {
builder.append("type=");
builder.append(type);
builder.append(", ");
}
if (description != null) {
builder.append("description=");
builder.append(description);
builder.append(", ");
}
if (hasAccessToTenants != null) {
builder.append("hasAccessToTenants=");
builder.append(hasAccessToTenants);
builder.append(", ");
}
if (appliedAt != null) {
builder.append("appliedAt=");
builder.append(appliedAt);
builder.append(", ");
}
if (assignedResources != null) {
builder.append("assignedResources=");
builder.append(assignedResources);
builder.append(", ");
}
if (vpool != null) {
builder.append("vpool=");
builder.append(vpool);
builder.append(", ");
}
if (schedule != null) {
builder.append("schedule=");
builder.append(schedule);
builder.append(", ");
}
if (replicationSettings != null) {
builder.append("replicationSettings=");
builder.append(replicationSettings);
builder.append(", ");
}
if (snapshotSettings != null) {
builder.append("snapshotSettings=");
builder.append(snapshotSettings);
}
builder.append("]");
return builder.toString();
}
@XmlRootElement(name = "file_policy_schedule")
public static class ScheduleRestRep {
private String frequency;
// Policy run on every
private Long repeat;
// Time when policy run
private String time;
// Day of week when policy run
private String dayOfWeek;
// Day of month when policy run
private Long dayOfMonth;
@XmlElement(name = "frequency")
public String getFrequency() {
return frequency;
}
@XmlElement(name = "repeat_every")
public Long getRepeat() {
return repeat;
}
@XmlElement(name = "time")
public String getTime() {
return time;
}
@XmlElement(name = "day_of_week")
public String getDayOfWeek() {
return dayOfWeek;
}
@XmlElement(name = "day_of_month")
public Long getDayOfMonth() {
return dayOfMonth;
}
public void setFrequency(String frequency) {
this.frequency = frequency;
}
public void setRepeat(Long repeat) {
this.repeat = repeat;
}
public void setTime(String time) {
this.time = time;
}
public void setDayOfWeek(String dayOfWeek) {
this.dayOfWeek = dayOfWeek;
}
public void setDayOfMonth(Long dayOfMonth) {
this.dayOfMonth = dayOfMonth;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ScheduleRestRep [");
if (frequency != null) {
builder.append("frequency=");
builder.append(frequency);
builder.append(", ");
}
if (repeat != null) {
builder.append("repeat=");
builder.append(repeat);
builder.append(", ");
}
if (time != null) {
builder.append("time=");
builder.append(time);
builder.append(", ");
}
if (dayOfWeek != null) {
builder.append("dayOfWeek=");
builder.append(dayOfWeek);
builder.append(", ");
}
if (dayOfMonth != null) {
builder.append("dayOfMonth=");
builder.append(dayOfMonth);
}
builder.append("]");
return builder.toString();
}
}
@XmlRootElement(name = "replication_settings")
public static class ReplicationSettingsRestRep {
private String type;
private String mode;
private Boolean replicateConfiguration;
// Represent the replication source and target site relation
private List<FileReplicationTopologyRestRep> replicationTopologies;
@XmlElement(name = "type")
public String getType() {
return type;
}
@XmlElement(name = "mode")
public String getMode() {
return mode;
}
@XmlElement(name = "replication_configuration")
public Boolean getReplicateConfiguration() {
return replicateConfiguration;
}
public void setType(String type) {
this.type = type;
}
public void setMode(String mode) {
this.mode = mode;
}
public void setReplicateConfiguration(Boolean replicateConfiguration) {
this.replicateConfiguration = replicateConfiguration;
}
@XmlElement(name = "replication_topologies")
public List<FileReplicationTopologyRestRep> getReplicationTopologies() {
return replicationTopologies;
}
public void setReplicationTopologies(List<FileReplicationTopologyRestRep> replicationTopologies) {
this.replicationTopologies = replicationTopologies;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ReplicationParametersRestRep [");
if (type != null) {
builder.append("type=");
builder.append(type);
builder.append(", ");
}
if (mode != null) {
builder.append("mode=");
builder.append(mode);
builder.append(", ");
}
builder.append("replicateConfiguration=");
builder.append(replicateConfiguration);
builder.append("]");
return builder.toString();
}
}
@XmlRootElement(name = "snapshot_settings")
public static class SnapshotSettingsRestRep {
private String snapshotNamePattern;
private String expiryType;
private Long expiryTime;
@XmlElement(name = "snapshot_name_pattern")
public String getSnapshotNamePattern() {
return snapshotNamePattern;
}
@XmlElement(name = "expiry_type")
public String getExpiryType() {
return expiryType;
}
@XmlElement(name = "expiry_time")
public Long getExpiryTime() {
return expiryTime;
}
public void setExpiryTime(Long expiryTime) {
this.expiryTime = expiryTime;
}
public void setSnapshotNamePattern(String snapshotNamePattern) {
this.snapshotNamePattern = snapshotNamePattern;
}
public void setExpiryType(String expiryType) {
this.expiryType = expiryType;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("SnapshotSettingsRestRep [");
if (snapshotNamePattern != null) {
builder.append("snapshotNamePattern=");
builder.append(snapshotNamePattern);
builder.append(", ");
}
if (expiryType != null) {
builder.append("expiryType=");
builder.append(expiryType);
builder.append(", ");
}
if (expiryTime != null) {
builder.append("expiryTime=");
builder.append(expiryTime);
}
builder.append("]");
return builder.toString();
}
}
}