
com.cloudsnorkel.cdk.github.runners.GitHubRunnersProps Maven / Gradle / Ivy
package com.cloudsnorkel.cdk.github.runners;
/**
* (experimental) Properties for GitHubRunners.
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.73.0 (build 6faeda3)", date = "2023-01-17T21:04:03.029Z")
@software.amazon.jsii.Jsii(module = com.cloudsnorkel.cdk.github.runners.$Module.class, fqn = "@cloudsnorkel/cdk-github-runners.GitHubRunnersProps")
@software.amazon.jsii.Jsii.Proxy(GitHubRunnersProps.Jsii$Proxy.class)
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public interface GitHubRunnersProps extends software.amazon.jsii.JsiiSerializable {
/**
* (experimental) Allow management functions to run in public subnets.
*
* Lambda Functions in a public subnet can NOT access the internet.
*
* Default: false
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.lang.Boolean getAllowPublicSubnet() {
return null;
}
/**
* (experimental) Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed.
*
* You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}.
*
*
* const imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {
* dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,
* });
* imageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');
* const provider = new CodeBuildRunner(this, 'CodeBuild', {
* imageBuilder: imageBuilder,
* });
* new GitHubRunners(
* this,
* 'runners',
* {
* providers: [provider],
* extraCertificates: 'path-to-my-extra-certs-folder',
* }
* );
*
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.lang.String getExtraCertificates() {
return null;
}
/**
* (experimental) Time to wait before stopping a runner that remains idle.
*
* If the user cancelled the job, or if another runner stole it, this stops the runner to avoid wasting resources.
*
* Default: 10 minutes
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.Duration getIdleTimeout() {
return null;
}
/**
* (experimental) Logging options for the state machine that manages the runners.
*
* Default: no logs
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable com.cloudsnorkel.cdk.github.runners.LogOptions getLogOptions() {
return null;
}
/**
* (experimental) List of runner providers to use.
*
* At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job.
*
* Default: CodeBuild, Lambda and Fargate runners with all the defaults (no VPC or default account VPC)
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable java.util.List getProviders() {
return null;
}
/**
* (experimental) Security group attached to all management functions.
*
* Use this with to provide access to GitHub Enterprise Server hosted inside a VPC.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.ISecurityGroup getSecurityGroup() {
return null;
}
/**
* (experimental) VPC used for all management functions.
*
* Use this with GitHub Enterprise Server hosted that's inaccessible from outside the 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) VPC subnets used for all management functions.
*
* Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC.
*/
@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 GitHubRunnersProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
static Builder builder() {
return new Builder();
}
/**
* A builder for {@link GitHubRunnersProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public static final class Builder implements software.amazon.jsii.Builder {
java.lang.Boolean allowPublicSubnet;
java.lang.String extraCertificates;
software.amazon.awscdk.Duration idleTimeout;
com.cloudsnorkel.cdk.github.runners.LogOptions logOptions;
java.util.List providers;
software.amazon.awscdk.services.ec2.ISecurityGroup securityGroup;
software.amazon.awscdk.services.ec2.IVpc vpc;
software.amazon.awscdk.services.ec2.SubnetSelection vpcSubnets;
/**
* Sets the value of {@link GitHubRunnersProps#getAllowPublicSubnet}
* @param allowPublicSubnet Allow management functions to run in public subnets.
* Lambda Functions in a public subnet can NOT access the internet.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder allowPublicSubnet(java.lang.Boolean allowPublicSubnet) {
this.allowPublicSubnet = allowPublicSubnet;
return this;
}
/**
* Sets the value of {@link GitHubRunnersProps#getExtraCertificates}
* @param extraCertificates Path to a directory containing a file named certs.pem containing any additional certificates required to trust GitHub Enterprise Server. Use this when GitHub Enterprise Server certificates are self-signed.
* You may also want to use custom images for your runner providers that contain the same certificates. See {@link CodeBuildImageBuilder.addCertificates}.
*
*
* const imageBuilder = new CodeBuildImageBuilder(this, 'Image Builder with Certs', {
* dockerfilePath: CodeBuildRunner.LINUX_X64_DOCKERFILE_PATH,
* });
* imageBuilder.addExtraCertificates('path-to-my-extra-certs-folder');
*
* const provider = new CodeBuildRunner(this, 'CodeBuild', {
* imageBuilder: imageBuilder,
* });
*
* new GitHubRunners(
* this,
* 'runners',
* {
* providers: [provider],
* extraCertificates: 'path-to-my-extra-certs-folder',
* }
* );
*
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder extraCertificates(java.lang.String extraCertificates) {
this.extraCertificates = extraCertificates;
return this;
}
/**
* Sets the value of {@link GitHubRunnersProps#getIdleTimeout}
* @param idleTimeout Time to wait before stopping a runner that remains idle.
* If the user cancelled the job, or if another runner stole it, this stops the runner to avoid wasting resources.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder idleTimeout(software.amazon.awscdk.Duration idleTimeout) {
this.idleTimeout = idleTimeout;
return this;
}
/**
* Sets the value of {@link GitHubRunnersProps#getLogOptions}
* @param logOptions Logging options for the state machine that manages the runners.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder logOptions(com.cloudsnorkel.cdk.github.runners.LogOptions logOptions) {
this.logOptions = logOptions;
return this;
}
/**
* Sets the value of {@link GitHubRunnersProps#getProviders}
* @param providers List of runner providers to use.
* At least one provider is required. Provider will be selected when its label matches the labels requested by the workflow job.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@SuppressWarnings("unchecked")
public Builder providers(java.util.List extends com.cloudsnorkel.cdk.github.runners.IRunnerProvider> providers) {
this.providers = (java.util.List)providers;
return this;
}
/**
* Sets the value of {@link GitHubRunnersProps#getSecurityGroup}
* @param securityGroup Security group attached to all management functions.
* Use this with to provide access to GitHub Enterprise Server hosted inside a VPC.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
public Builder securityGroup(software.amazon.awscdk.services.ec2.ISecurityGroup securityGroup) {
this.securityGroup = securityGroup;
return this;
}
/**
* Sets the value of {@link GitHubRunnersProps#getVpc}
* @param vpc VPC used for all management functions.
* Use this with GitHub Enterprise Server hosted that's inaccessible from outside the 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 GitHubRunnersProps#getVpcSubnets}
* @param vpcSubnets VPC subnets used for all management functions.
* Use this with GitHub Enterprise Server hosted that's inaccessible from outside the VPC.
* @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 GitHubRunnersProps}
* @throws NullPointerException if any required attribute was not provided
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@Override
public GitHubRunnersProps build() {
return new Jsii$Proxy(this);
}
}
/**
* An implementation for {@link GitHubRunnersProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Experimental)
@software.amazon.jsii.Internal
final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements GitHubRunnersProps {
private final java.lang.Boolean allowPublicSubnet;
private final java.lang.String extraCertificates;
private final software.amazon.awscdk.Duration idleTimeout;
private final com.cloudsnorkel.cdk.github.runners.LogOptions logOptions;
private final java.util.List providers;
private final software.amazon.awscdk.services.ec2.ISecurityGroup securityGroup;
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.allowPublicSubnet = software.amazon.jsii.Kernel.get(this, "allowPublicSubnet", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.extraCertificates = software.amazon.jsii.Kernel.get(this, "extraCertificates", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.idleTimeout = software.amazon.jsii.Kernel.get(this, "idleTimeout", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.Duration.class));
this.logOptions = software.amazon.jsii.Kernel.get(this, "logOptions", software.amazon.jsii.NativeType.forClass(com.cloudsnorkel.cdk.github.runners.LogOptions.class));
this.providers = software.amazon.jsii.Kernel.get(this, "providers", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(com.cloudsnorkel.cdk.github.runners.IRunnerProvider.class)));
this.securityGroup = software.amazon.jsii.Kernel.get(this, "securityGroup", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.ISecurityGroup.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.allowPublicSubnet = builder.allowPublicSubnet;
this.extraCertificates = builder.extraCertificates;
this.idleTimeout = builder.idleTimeout;
this.logOptions = builder.logOptions;
this.providers = (java.util.List)builder.providers;
this.securityGroup = builder.securityGroup;
this.vpc = builder.vpc;
this.vpcSubnets = builder.vpcSubnets;
}
@Override
public final java.lang.Boolean getAllowPublicSubnet() {
return this.allowPublicSubnet;
}
@Override
public final java.lang.String getExtraCertificates() {
return this.extraCertificates;
}
@Override
public final software.amazon.awscdk.Duration getIdleTimeout() {
return this.idleTimeout;
}
@Override
public final com.cloudsnorkel.cdk.github.runners.LogOptions getLogOptions() {
return this.logOptions;
}
@Override
public final java.util.List getProviders() {
return this.providers;
}
@Override
public final software.amazon.awscdk.services.ec2.ISecurityGroup getSecurityGroup() {
return this.securityGroup;
}
@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();
if (this.getAllowPublicSubnet() != null) {
data.set("allowPublicSubnet", om.valueToTree(this.getAllowPublicSubnet()));
}
if (this.getExtraCertificates() != null) {
data.set("extraCertificates", om.valueToTree(this.getExtraCertificates()));
}
if (this.getIdleTimeout() != null) {
data.set("idleTimeout", om.valueToTree(this.getIdleTimeout()));
}
if (this.getLogOptions() != null) {
data.set("logOptions", om.valueToTree(this.getLogOptions()));
}
if (this.getProviders() != null) {
data.set("providers", om.valueToTree(this.getProviders()));
}
if (this.getSecurityGroup() != null) {
data.set("securityGroup", om.valueToTree(this.getSecurityGroup()));
}
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("@cloudsnorkel/cdk-github-runners.GitHubRunnersProps"));
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;
GitHubRunnersProps.Jsii$Proxy that = (GitHubRunnersProps.Jsii$Proxy) o;
if (this.allowPublicSubnet != null ? !this.allowPublicSubnet.equals(that.allowPublicSubnet) : that.allowPublicSubnet != null) return false;
if (this.extraCertificates != null ? !this.extraCertificates.equals(that.extraCertificates) : that.extraCertificates != null) return false;
if (this.idleTimeout != null ? !this.idleTimeout.equals(that.idleTimeout) : that.idleTimeout != null) return false;
if (this.logOptions != null ? !this.logOptions.equals(that.logOptions) : that.logOptions != null) return false;
if (this.providers != null ? !this.providers.equals(that.providers) : that.providers != null) return false;
if (this.securityGroup != null ? !this.securityGroup.equals(that.securityGroup) : that.securityGroup != 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.allowPublicSubnet != null ? this.allowPublicSubnet.hashCode() : 0;
result = 31 * result + (this.extraCertificates != null ? this.extraCertificates.hashCode() : 0);
result = 31 * result + (this.idleTimeout != null ? this.idleTimeout.hashCode() : 0);
result = 31 * result + (this.logOptions != null ? this.logOptions.hashCode() : 0);
result = 31 * result + (this.providers != null ? this.providers.hashCode() : 0);
result = 31 * result + (this.securityGroup != null ? this.securityGroup.hashCode() : 0);
result = 31 * result + (this.vpc != null ? this.vpc.hashCode() : 0);
result = 31 * result + (this.vpcSubnets != null ? this.vpcSubnets.hashCode() : 0);
return result;
}
}
}