package com.sequenceiq.cloudbreak.api.model;
import java.util.HashMap;
import java.util.Map;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sequenceiq.cloudbreak.doc.ModelDescriptions;
import com.sequenceiq.cloudbreak.doc.ModelDescriptions.StackModelDescription;
import io.swagger.annotations.ApiModelProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class StackBase implements JsonEntity {
@Size(max = 40, min = 5, message = "The length of the name has to be in range of 5 to 40")
@Pattern(regexp = "([a-z][-a-z0-9]*[a-z0-9])",
message = "The name can only contain lowercase alphanumeric characters and hyphens and has start with an alphanumeric character")
@NotNull
@ApiModelProperty(value = StackModelDescription.STACK_NAME, required = true)
private String name;
@ApiModelProperty(value = StackModelDescription.AVAILABILITY_ZONE)
private String availabilityZone;
@ApiModelProperty(value = StackModelDescription.REGION)
private String region;
@ApiModelProperty(value = ModelDescriptions.CLOUD_PLATFORM)
private String cloudPlatform;
@ApiModelProperty(StackModelDescription.PLATFORM_VARIANT)
private String platformVariant;
@ApiModelProperty(value = StackModelDescription.CREDENTIAL_ID)
private Long credentialId;
@ApiModelProperty(StackModelDescription.FAILURE_ACTION)
private OnFailureAction onFailureAction = OnFailureAction.DO_NOTHING;
@ApiModelProperty(value = StackModelDescription.NETWORK_ID)
private Long networkId;
@ApiModelProperty(StackModelDescription.RELOCATE_DOCKER)
private Boolean relocateDocker;
@ApiModelProperty(StackModelDescription.AMBARI_VERSION)
private String ambariVersion;
@ApiModelProperty(StackModelDescription.HDP_VERSION)
private String hdpVersion;
@ApiModelProperty(StackModelDescription.PARAMETERS)
private Map<String, String> parameters = new HashMap<>();
@ApiModelProperty(StackModelDescription.TAGS)
private Map<String, Object> tags = new HashMap<>();
public OnFailureAction getOnFailureAction() {
return onFailureAction;
}
public void setOnFailureAction(OnFailureAction onFailureAction) {
this.onFailureAction = onFailureAction;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JsonProperty("cloudPlatform")
public String getCloudPlatform() {
return cloudPlatform;
}
@JsonIgnore
public void setCloudPlatform(String cloudPlatform) {
this.cloudPlatform = cloudPlatform;
}
public Long getCredentialId() {
return credentialId;
}
public void setCredentialId(Long credentialId) {
this.credentialId = credentialId;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
public Long getNetworkId() {
return networkId;
}
public void setNetworkId(Long networkId) {
this.networkId = networkId;
}
public String getAvailabilityZone() {
return availabilityZone;
}
public void setAvailabilityZone(String availabilityZone) {
this.availabilityZone = availabilityZone;
}
public Map<String, String> getParameters() {
return parameters;
}
public void setParameters(Map<String, String> parameters) {
this.parameters = parameters;
}
public String getPlatformVariant() {
return platformVariant;
}
public void setPlatformVariant(String platformVariant) {
this.platformVariant = platformVariant;
}
public Boolean getRelocateDocker() {
return relocateDocker;
}
public void setRelocateDocker(Boolean relocateDocker) {
this.relocateDocker = relocateDocker;
}
public String getAmbariVersion() {
return ambariVersion;
}
public void setAmbariVersion(String ambariVersion) {
this.ambariVersion = ambariVersion;
}
public String getHdpVersion() {
return hdpVersion;
}
public void setHdpVersion(String hdpVersion) {
this.hdpVersion = hdpVersion;
}
public Map<String, Object> getTags() {
return tags;
}
public void setTags(Map<String, Object> tags) {
this.tags = tags;
}
}