io.github.cdklabs.cdk.ecs.codedeploy.ApiCanaryProps Maven / Gradle / Ivy
Show all versions of cdk-ecs-codedeploy Show documentation
package io.github.cdklabs.cdk.ecs.codedeploy;
/**
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.103.1 (build bef2dea)", date = "2024-09-21T18:14:39.394Z")
@software.amazon.jsii.Jsii(module = io.github.cdklabs.cdk.ecs.codedeploy.$Module.class, fqn = "@cdklabs/cdk-ecs-codedeploy.ApiCanaryProps")
@software.amazon.jsii.Jsii.Proxy(ApiCanaryProps.Jsii$Proxy.class)
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public interface ApiCanaryProps extends software.amazon.jsii.JsiiSerializable {
/**
* (experimental) The base URL to use for tests.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@org.jetbrains.annotations.NotNull java.lang.String getBaseUrl();
/**
* (experimental) The s3 location that stores the data of the canary runs.
*
* Default: - A new s3 bucket will be created without a prefix.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.synthetics.ArtifactsBucketLocation getArtifactsBucketLocation() {
return null;
}
/**
* (experimental) The name of the canary.
*
* Be sure to give it a descriptive name that distinguishes it from
* other canaries in your account.
*
* Do not include secrets or proprietary information in your canary name. The canary name
* makes up part of the canary ARN, which is included in outbound calls over the internet.
*
* Default: - A unique name will be generated from the construct ID
*
* @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/servicelens_canaries_security.html
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.lang.String getCanaryName() {
return null;
}
/**
* (experimental) The threshold for triggering an alarm on the test duration.
*
* Default: - no alarm is created for duration
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.Duration getDurationAlarmThreshold() {
return null;
}
/**
* (experimental) How many days should failed runs be retained.
*
* Default: Duration.days(31)
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.Duration getFailureRetentionPeriod() {
return null;
}
/**
* (experimental) Canary execution role.
*
* This is the role that will be assumed by the canary upon execution.
* It controls the permissions that the canary will have. The role must
* be assumable by the AWS Lambda service principal.
*
* If not supplied, a role will be created with all the required permissions.
* If you provide a Role, you must add the required permissions.
*
* Default: - A unique role will be generated for this canary.
* You can add permissions to roles by calling 'addToRolePolicy'.
*
* @see required permissions: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-executionrolearn
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.iam.IRole getRole() {
return null;
}
/**
* (experimental) Specify the schedule for how often the canary runs.
*
* For example, if you set schedule
to rate(10 minutes)
, then the canary will run every 10 minutes.
* You can set the schedule with Schedule.rate(Duration)
(recommended) or you can specify an expression using Schedule.expression()
.
*
* Default: 'rate(5 minutes)'
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.synthetics.Schedule getSchedule() {
return null;
}
/**
* (experimental) The list of security groups to associate with the canary's network interfaces.
*
* You must provide vpc
when using this prop.
*
* Default: - If the canary is placed within a VPC and a security group is
* not specified a dedicated security group will be created for this canary.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.util.List getSecurityGroups() {
return null;
}
/**
* (experimental) Whether or not the canary should start after creation.
*
* Default: true
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.lang.Boolean getStartAfterCreation() {
return null;
}
/**
* (experimental) The steps to perform in the synthetic test.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.util.List getSteps() {
return null;
}
/**
* (experimental) How many days should successful runs be retained.
*
* Default: Duration.days(31)
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.Duration getSuccessRetentionPeriod() {
return null;
}
/**
* (experimental) The number of threads to run concurrently for the synthetic test.
*
* Default: - 20
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.lang.Number getThreadCount() {
return null;
}
/**
* (experimental) How long the canary will be in a 'RUNNING' state.
*
* For example, if you set timeToLive
to be 1 hour and schedule
to be rate(10 minutes)
,
* your canary will run at 10 minute intervals for an hour, for a total of 6 times.
*
* Default: - no limit
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.Duration getTimeToLive() {
return null;
}
/**
* (experimental) The VPC where this canary is run.
*
* Specify this if the canary needs to access resources in a VPC.
*
* Default: - Not in VPC
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.IVpc getVpc() {
return null;
}
/**
* (experimental) Where to place the network interfaces within the VPC.
*
* You must provide vpc
when using this prop.
*
* Default: - the Vpc default strategy if not specified
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.SubnetSelection getVpcSubnets() {
return null;
}
/**
* @return a {@link Builder} of {@link ApiCanaryProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
static Builder builder() {
return new Builder();
}
/**
* A builder for {@link ApiCanaryProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public static final class Builder implements software.amazon.jsii.Builder {
java.lang.String baseUrl;
software.amazon.awscdk.services.synthetics.ArtifactsBucketLocation artifactsBucketLocation;
java.lang.String canaryName;
software.amazon.awscdk.Duration durationAlarmThreshold;
software.amazon.awscdk.Duration failureRetentionPeriod;
software.amazon.awscdk.services.iam.IRole role;
software.amazon.awscdk.services.synthetics.Schedule schedule;
java.util.List securityGroups;
java.lang.Boolean startAfterCreation;
java.util.List steps;
software.amazon.awscdk.Duration successRetentionPeriod;
java.lang.Number threadCount;
software.amazon.awscdk.Duration timeToLive;
software.amazon.awscdk.services.ec2.IVpc vpc;
software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets;
/**
* Sets the value of {@link ApiCanaryProps#getBaseUrl}
* @param baseUrl The base URL to use for tests. This parameter is required.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder baseUrl(java.lang.String baseUrl) {
this.baseUrl = baseUrl;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getArtifactsBucketLocation}
* @param artifactsBucketLocation The s3 location that stores the data of the canary runs.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder artifactsBucketLocation(software.amazon.awscdk.services.synthetics.ArtifactsBucketLocation artifactsBucketLocation) {
this.artifactsBucketLocation = artifactsBucketLocation;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getCanaryName}
* @param canaryName The name of the canary.
* Be sure to give it a descriptive name that distinguishes it from
* other canaries in your account.
*
* Do not include secrets or proprietary information in your canary name. The canary name
* makes up part of the canary ARN, which is included in outbound calls over the internet.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder canaryName(java.lang.String canaryName) {
this.canaryName = canaryName;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getDurationAlarmThreshold}
* @param durationAlarmThreshold The threshold for triggering an alarm on the test duration.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder durationAlarmThreshold(software.amazon.awscdk.Duration durationAlarmThreshold) {
this.durationAlarmThreshold = durationAlarmThreshold;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getFailureRetentionPeriod}
* @param failureRetentionPeriod How many days should failed runs be retained.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder failureRetentionPeriod(software.amazon.awscdk.Duration failureRetentionPeriod) {
this.failureRetentionPeriod = failureRetentionPeriod;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getRole}
* @param role Canary execution role.
* This is the role that will be assumed by the canary upon execution.
* It controls the permissions that the canary will have. The role must
* be assumable by the AWS Lambda service principal.
*
* If not supplied, a role will be created with all the required permissions.
* If you provide a Role, you must add the required permissions.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder role(software.amazon.awscdk.services.iam.IRole role) {
this.role = role;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getSchedule}
* @param schedule Specify the schedule for how often the canary runs.
* For example, if you set schedule
to rate(10 minutes)
, then the canary will run every 10 minutes.
* You can set the schedule with Schedule.rate(Duration)
(recommended) or you can specify an expression using Schedule.expression()
.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder schedule(software.amazon.awscdk.services.synthetics.Schedule schedule) {
this.schedule = schedule;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getSecurityGroups}
* @param securityGroups The list of security groups to associate with the canary's network interfaces.
* You must provide vpc
when using this prop.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@SuppressWarnings("unchecked")
public Builder securityGroups(java.util.List extends software.amazon.awscdk.services.ec2.ISecurityGroup> securityGroups) {
this.securityGroups = (java.util.List)securityGroups;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getStartAfterCreation}
* @param startAfterCreation Whether or not the canary should start after creation.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder startAfterCreation(java.lang.Boolean startAfterCreation) {
this.startAfterCreation = startAfterCreation;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getSteps}
* @param steps The steps to perform in the synthetic test.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@SuppressWarnings("unchecked")
public Builder steps(java.util.List extends io.github.cdklabs.cdk.ecs.codedeploy.ApiTestStep> steps) {
this.steps = (java.util.List)steps;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getSuccessRetentionPeriod}
* @param successRetentionPeriod How many days should successful runs be retained.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder successRetentionPeriod(software.amazon.awscdk.Duration successRetentionPeriod) {
this.successRetentionPeriod = successRetentionPeriod;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getThreadCount}
* @param threadCount The number of threads to run concurrently for the synthetic test.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder threadCount(java.lang.Number threadCount) {
this.threadCount = threadCount;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getTimeToLive}
* @param timeToLive How long the canary will be in a 'RUNNING' state.
* For example, if you set timeToLive
to be 1 hour and schedule
to be rate(10 minutes)
,
* your canary will run at 10 minute intervals for an hour, for a total of 6 times.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder timeToLive(software.amazon.awscdk.Duration timeToLive) {
this.timeToLive = timeToLive;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getVpc}
* @param vpc The VPC where this canary is run.
* Specify this if the canary needs to access resources in a VPC.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder vpc(software.amazon.awscdk.services.ec2.IVpc vpc) {
this.vpc = vpc;
return this;
}
/**
* Sets the value of {@link ApiCanaryProps#getVpcSubnets}
* @param vpcSubnets Where to place the network interfaces within the VPC.
* You must provide vpc
when using this prop.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder vpcSubnets(software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets) {
this.vpcSubnets = vpcSubnets;
return this;
}
/**
* Builds the configured instance.
* @return a new instance of {@link ApiCanaryProps}
* @throws NullPointerException if any required attribute was not provided
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@Override
public ApiCanaryProps build() {
return new Jsii$Proxy(this);
}
}
/**
* An implementation for {@link ApiCanaryProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@software.amazon.jsii.Internal
final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements ApiCanaryProps {
private final java.lang.String baseUrl;
private final software.amazon.awscdk.services.synthetics.ArtifactsBucketLocation artifactsBucketLocation;
private final java.lang.String canaryName;
private final software.amazon.awscdk.Duration durationAlarmThreshold;
private final software.amazon.awscdk.Duration failureRetentionPeriod;
private final software.amazon.awscdk.services.iam.IRole role;
private final software.amazon.awscdk.services.synthetics.Schedule schedule;
private final java.util.List securityGroups;
private final java.lang.Boolean startAfterCreation;
private final java.util.List steps;
private final software.amazon.awscdk.Duration successRetentionPeriod;
private final java.lang.Number threadCount;
private final software.amazon.awscdk.Duration timeToLive;
private final software.amazon.awscdk.services.ec2.IVpc vpc;
private final software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets;
/**
* Constructor that initializes the object based on values retrieved from the JsiiObject.
* @param objRef Reference to the JSII managed object.
*/
protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) {
super(objRef);
this.baseUrl = software.amazon.jsii.Kernel.get(this, "baseUrl", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.artifactsBucketLocation = software.amazon.jsii.Kernel.get(this, "artifactsBucketLocation", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.synthetics.ArtifactsBucketLocation.class));
this.canaryName = software.amazon.jsii.Kernel.get(this, "canaryName", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.durationAlarmThreshold = software.amazon.jsii.Kernel.get(this, "durationAlarmThreshold", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.Duration.class));
this.failureRetentionPeriod = software.amazon.jsii.Kernel.get(this, "failureRetentionPeriod", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.Duration.class));
this.role = software.amazon.jsii.Kernel.get(this, "role", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.iam.IRole.class));
this.schedule = software.amazon.jsii.Kernel.get(this, "schedule", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.synthetics.Schedule.class));
this.securityGroups = software.amazon.jsii.Kernel.get(this, "securityGroups", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.ISecurityGroup.class)));
this.startAfterCreation = software.amazon.jsii.Kernel.get(this, "startAfterCreation", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.steps = software.amazon.jsii.Kernel.get(this, "steps", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(io.github.cdklabs.cdk.ecs.codedeploy.ApiTestStep.class)));
this.successRetentionPeriod = software.amazon.jsii.Kernel.get(this, "successRetentionPeriod", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.Duration.class));
this.threadCount = software.amazon.jsii.Kernel.get(this, "threadCount", software.amazon.jsii.NativeType.forClass(java.lang.Number.class));
this.timeToLive = software.amazon.jsii.Kernel.get(this, "timeToLive", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.Duration.class));
this.vpc = software.amazon.jsii.Kernel.get(this, "vpc", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.IVpc.class));
this.vpcSubnets = software.amazon.jsii.Kernel.get(this, "vpcSubnets", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.SubnetSelection.class));
}
/**
* Constructor that initializes the object based on literal property values passed by the {@link Builder}.
*/
@SuppressWarnings("unchecked")
protected Jsii$Proxy(final Builder builder) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
this.baseUrl = java.util.Objects.requireNonNull(builder.baseUrl, "baseUrl is required");
this.artifactsBucketLocation = builder.artifactsBucketLocation;
this.canaryName = builder.canaryName;
this.durationAlarmThreshold = builder.durationAlarmThreshold;
this.failureRetentionPeriod = builder.failureRetentionPeriod;
this.role = builder.role;
this.schedule = builder.schedule;
this.securityGroups = (java.util.List)builder.securityGroups;
this.startAfterCreation = builder.startAfterCreation;
this.steps = (java.util.List)builder.steps;
this.successRetentionPeriod = builder.successRetentionPeriod;
this.threadCount = builder.threadCount;
this.timeToLive = builder.timeToLive;
this.vpc = builder.vpc;
this.vpcSubnets = builder.vpcSubnets;
}
@Override
public final java.lang.String getBaseUrl() {
return this.baseUrl;
}
@Override
public final software.amazon.awscdk.services.synthetics.ArtifactsBucketLocation getArtifactsBucketLocation() {
return this.artifactsBucketLocation;
}
@Override
public final java.lang.String getCanaryName() {
return this.canaryName;
}
@Override
public final software.amazon.awscdk.Duration getDurationAlarmThreshold() {
return this.durationAlarmThreshold;
}
@Override
public final software.amazon.awscdk.Duration getFailureRetentionPeriod() {
return this.failureRetentionPeriod;
}
@Override
public final software.amazon.awscdk.services.iam.IRole getRole() {
return this.role;
}
@Override
public final software.amazon.awscdk.services.synthetics.Schedule getSchedule() {
return this.schedule;
}
@Override
public final java.util.List getSecurityGroups() {
return this.securityGroups;
}
@Override
public final java.lang.Boolean getStartAfterCreation() {
return this.startAfterCreation;
}
@Override
public final java.util.List getSteps() {
return this.steps;
}
@Override
public final software.amazon.awscdk.Duration getSuccessRetentionPeriod() {
return this.successRetentionPeriod;
}
@Override
public final java.lang.Number getThreadCount() {
return this.threadCount;
}
@Override
public final software.amazon.awscdk.Duration getTimeToLive() {
return this.timeToLive;
}
@Override
public final software.amazon.awscdk.services.ec2.IVpc getVpc() {
return this.vpc;
}
@Override
public final software.amazon.awscdk.services.ec2.SubnetSelection getVpcSubnets() {
return this.vpcSubnets;
}
@Override
@software.amazon.jsii.Internal
public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() {
final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE;
final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
data.set("baseUrl", om.valueToTree(this.getBaseUrl()));
if (this.getArtifactsBucketLocation() != null) {
data.set("artifactsBucketLocation", om.valueToTree(this.getArtifactsBucketLocation()));
}
if (this.getCanaryName() != null) {
data.set("canaryName", om.valueToTree(this.getCanaryName()));
}
if (this.getDurationAlarmThreshold() != null) {
data.set("durationAlarmThreshold", om.valueToTree(this.getDurationAlarmThreshold()));
}
if (this.getFailureRetentionPeriod() != null) {
data.set("failureRetentionPeriod", om.valueToTree(this.getFailureRetentionPeriod()));
}
if (this.getRole() != null) {
data.set("role", om.valueToTree(this.getRole()));
}
if (this.getSchedule() != null) {
data.set("schedule", om.valueToTree(this.getSchedule()));
}
if (this.getSecurityGroups() != null) {
data.set("securityGroups", om.valueToTree(this.getSecurityGroups()));
}
if (this.getStartAfterCreation() != null) {
data.set("startAfterCreation", om.valueToTree(this.getStartAfterCreation()));
}
if (this.getSteps() != null) {
data.set("steps", om.valueToTree(this.getSteps()));
}
if (this.getSuccessRetentionPeriod() != null) {
data.set("successRetentionPeriod", om.valueToTree(this.getSuccessRetentionPeriod()));
}
if (this.getThreadCount() != null) {
data.set("threadCount", om.valueToTree(this.getThreadCount()));
}
if (this.getTimeToLive() != null) {
data.set("timeToLive", om.valueToTree(this.getTimeToLive()));
}
if (this.getVpc() != null) {
data.set("vpc", om.valueToTree(this.getVpc()));
}
if (this.getVpcSubnets() != null) {
data.set("vpcSubnets", om.valueToTree(this.getVpcSubnets()));
}
final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
struct.set("fqn", om.valueToTree("@cdklabs/cdk-ecs-codedeploy.ApiCanaryProps"));
struct.set("data", data);
final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
obj.set("$jsii.struct", struct);
return obj;
}
@Override
public final boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ApiCanaryProps.Jsii$Proxy that = (ApiCanaryProps.Jsii$Proxy) o;
if (!baseUrl.equals(that.baseUrl)) return false;
if (this.artifactsBucketLocation != null ? !this.artifactsBucketLocation.equals(that.artifactsBucketLocation) : that.artifactsBucketLocation != null) return false;
if (this.canaryName != null ? !this.canaryName.equals(that.canaryName) : that.canaryName != null) return false;
if (this.durationAlarmThreshold != null ? !this.durationAlarmThreshold.equals(that.durationAlarmThreshold) : that.durationAlarmThreshold != null) return false;
if (this.failureRetentionPeriod != null ? !this.failureRetentionPeriod.equals(that.failureRetentionPeriod) : that.failureRetentionPeriod != null) return false;
if (this.role != null ? !this.role.equals(that.role) : that.role != null) return false;
if (this.schedule != null ? !this.schedule.equals(that.schedule) : that.schedule != null) return false;
if (this.securityGroups != null ? !this.securityGroups.equals(that.securityGroups) : that.securityGroups != null) return false;
if (this.startAfterCreation != null ? !this.startAfterCreation.equals(that.startAfterCreation) : that.startAfterCreation != null) return false;
if (this.steps != null ? !this.steps.equals(that.steps) : that.steps != null) return false;
if (this.successRetentionPeriod != null ? !this.successRetentionPeriod.equals(that.successRetentionPeriod) : that.successRetentionPeriod != null) return false;
if (this.threadCount != null ? !this.threadCount.equals(that.threadCount) : that.threadCount != null) return false;
if (this.timeToLive != null ? !this.timeToLive.equals(that.timeToLive) : that.timeToLive != null) return false;
if (this.vpc != null ? !this.vpc.equals(that.vpc) : that.vpc != null) return false;
return this.vpcSubnets != null ? this.vpcSubnets.equals(that.vpcSubnets) : that.vpcSubnets == null;
}
@Override
public final int hashCode() {
int result = this.baseUrl.hashCode();
result = 31 * result + (this.artifactsBucketLocation != null ? this.artifactsBucketLocation.hashCode() : 0);
result = 31 * result + (this.canaryName != null ? this.canaryName.hashCode() : 0);
result = 31 * result + (this.durationAlarmThreshold != null ? this.durationAlarmThreshold.hashCode() : 0);
result = 31 * result + (this.failureRetentionPeriod != null ? this.failureRetentionPeriod.hashCode() : 0);
result = 31 * result + (this.role != null ? this.role.hashCode() : 0);
result = 31 * result + (this.schedule != null ? this.schedule.hashCode() : 0);
result = 31 * result + (this.securityGroups != null ? this.securityGroups.hashCode() : 0);
result = 31 * result + (this.startAfterCreation != null ? this.startAfterCreation.hashCode() : 0);
result = 31 * result + (this.steps != null ? this.steps.hashCode() : 0);
result = 31 * result + (this.successRetentionPeriod != null ? this.successRetentionPeriod.hashCode() : 0);
result = 31 * result + (this.threadCount != null ? this.threadCount.hashCode() : 0);
result = 31 * result + (this.timeToLive != null ? this.timeToLive.hashCode() : 0);
result = 31 * result + (this.vpc != null ? this.vpc.hashCode() : 0);
result = 31 * result + (this.vpcSubnets != null ? this.vpcSubnets.hashCode() : 0);
return result;
}
}
}