import * as core from "@terrascript/core"; export interface UpdateConfigArgs extends core.SchemaArgs { maxUnavailable?: number | core.NumberOut; maxUnavailablePercentage?: number | core.NumberOut; } export class UpdateConfig extends core.Schema { @core.attr(Number) public maxUnavailable?: number | core.NumberOut; @core.attr(Number) public maxUnavailablePercentage?: number | core.NumberOut; } export interface LaunchTemplateArgs extends core.SchemaArgs { id?: string | core.StringOut; name?: string | core.StringOut; version: string | core.StringOut; } export class LaunchTemplate extends core.Schema { @core.attr(String, { computed: true }) public id?: string | core.StringOut; @core.attr(String, { computed: true }) public name?: string | core.StringOut; @core.attr(String) public version!: string | core.StringOut; } export interface ScalingConfigArgs extends core.SchemaArgs { desiredSize: number | core.NumberOut; maxSize: number | core.NumberOut; minSize: number | core.NumberOut; } export class ScalingConfig extends core.Schema { @core.attr(Number) public desiredSize!: number | core.NumberOut; @core.attr(Number) public maxSize!: number | core.NumberOut; @core.attr(Number) public minSize!: number | core.NumberOut; } export interface RemoteAccessArgs extends core.SchemaArgs { ec2SshKey?: string | core.StringOut; sourceSecurityGroupIds?: core.Array | core.ArrayOut; } export class RemoteAccess extends core.Schema { @core.attr(String) public ec2SshKey?: string | core.StringOut; @core.attr(String, { kind: "array" }) public sourceSecurityGroupIds?: | core.Array | core.ArrayOut; } export interface AutoscalingGroupsArgs extends core.SchemaArgs { name: string | core.StringOut; } export class AutoscalingGroups extends core.Schema { @core.attr(String, { computed: true }) public name!: string | core.StringOut; } export interface ResourcesArgs extends core.SchemaArgs { autoscalingGroups: | core.Array | core.ArrayOut; remoteAccessSecurityGroupId: string | core.StringOut; } export class Resources extends core.Schema { @core.attr(AutoscalingGroups, { computed: true, kind: "array" }) public autoscalingGroups!: | core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public remoteAccessSecurityGroupId!: string | core.StringOut; } export interface TaintArgs extends core.SchemaArgs { effect: string | core.StringOut; key: string | core.StringOut; value?: string | core.StringOut; } export class Taint extends core.Schema { @core.attr(String) public effect!: string | core.StringOut; @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public value?: string | core.StringOut; } export interface NodeGroupArgs extends core.ResourceArgs { /** * (Optional) Type of Amazon Machine Image (AMI) associated with the EKS Node Group. See the [AWS docum * entation](https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Node * group-amiType) for valid values. Terraform will only perform drift detection if a configuration valu * e is provided. */ amiType?: string | core.StringOut; /** * (Optional) Type of capacity associated with the EKS Node Group. Valid values: `ON_DEMAND`, `SPOT`. T * erraform will only perform drift detection if a configuration value is provided. */ capacityType?: string | core.StringOut; clusterName: string | core.StringOut; /** * (Optional) Disk size in GiB for worker nodes. Defaults to `20`. Terraform will only perform drift de * tection if a configuration value is provided. */ diskSize?: number | core.NumberOut; /** * (Optional) Force version update if existing pods are unable to be drained due to a pod disruption bu * dget issue. */ forceUpdateVersion?: boolean | core.BooleanOut; /** * (Optional) List of instance types associated with the EKS Node Group. Defaults to `["t3.medium"]`. T * erraform will only perform drift detection if a configuration value is provided. */ instanceTypes?: core.Array | core.ArrayOut; /** * (Optional) Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are man * aged by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed. */ labels?: core.Map | core.MapOut; /** * (Optional) Configuration block with Launch Template settings. Detailed below. */ launchTemplate?: LaunchTemplate; nodeGroupName?: string | core.StringOut; nodeGroupNamePrefix?: string | core.StringOut; nodeRoleArn: string | core.StringOut; releaseVersion?: string | core.StringOut; /** * (Optional) Configuration block with remote access settings. Detailed below. */ remoteAccess?: RemoteAccess; /** * (Required) Configuration block with scaling settings. Detailed below. */ scalingConfig: ScalingConfig; subnetIds: core.Array | core.ArrayOut; /** * (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configurati * on block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configurati * on-block) present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints * per node group. Detailed below. */ taint?: core.Array | core.ArrayOut; updateConfig?: UpdateConfig; /** * (Required) EC2 Launch Template version number. While the API accepts values like `$Default` and `$La * test`, the API will convert the value to the associated version number (e.g., `1`) on read and Terra * form will show a difference on next plan. Using the `default_version` or `latest_version` attribute * of the `aws_launch_template` resource or data source is recommended for this argument. */ version?: string | core.StringOut; } export class NodeGroup extends core.Resource { /** * (Optional) Type of Amazon Machine Image (AMI) associated with the EKS Node Group. See the [AWS docum * entation](https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Node * group-amiType) for valid values. Terraform will only perform drift detection if a configuration valu * e is provided. */ @core.attr(String, { computed: true }) public amiType?: string | core.StringOut; /** * Amazon Resource Name (ARN) of the EKS Node Group. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Type of capacity associated with the EKS Node Group. Valid values: `ON_DEMAND`, `SPOT`. T * erraform will only perform drift detection if a configuration value is provided. */ @core.attr(String, { computed: true }) public capacityType?: string | core.StringOut; @core.attr(String) public clusterName!: string | core.StringOut; /** * (Optional) Disk size in GiB for worker nodes. Defaults to `20`. Terraform will only perform drift de * tection if a configuration value is provided. */ @core.attr(Number, { computed: true }) public diskSize?: number | core.NumberOut; /** * (Optional) Force version update if existing pods are unable to be drained due to a pod disruption bu * dget issue. */ @core.attr(Boolean) public forceUpdateVersion?: boolean | core.BooleanOut; /** * (Optional) Identifier of the EC2 Launch Template. Conflicts with `name`. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) List of instance types associated with the EKS Node Group. Defaults to `["t3.medium"]`. T * erraform will only perform drift detection if a configuration value is provided. */ @core.attr(String, { computed: true, kind: "array" }) public instanceTypes?: core.Array | core.ArrayOut; /** * (Optional) Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are man * aged by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed. */ @core.attr(String, { kind: "map" }) public labels?: core.Map | core.MapOut; /** * (Optional) Configuration block with Launch Template settings. Detailed below. */ @core.attr(LaunchTemplate) public launchTemplate?: LaunchTemplate; @core.attr(String, { computed: true }) public nodeGroupName?: string | core.StringOut; @core.attr(String, { computed: true }) public nodeGroupNamePrefix?: string | core.StringOut; @core.attr(String) public nodeRoleArn!: string | core.StringOut; @core.attr(String, { computed: true }) public releaseVersion?: string | core.StringOut; /** * (Optional) Configuration block with remote access settings. Detailed below. */ @core.attr(RemoteAccess) public remoteAccess?: RemoteAccess; /** * List of objects containing information about underlying resources. */ @core.attr(Resources, { computed: true, kind: "array" }) public resources!: core.Array | core.ArrayOut; /** * (Required) Configuration block with scaling settings. Detailed below. */ @core.attr(ScalingConfig) public scalingConfig!: ScalingConfig; /** * Status of the EKS Node Group. */ @core.attr(String, { computed: true }) public status!: string | core.StringOut; @core.attr(String, { kind: "array" }) public subnetIds!: core.Array | core.ArrayOut; /** * (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configurati * on block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configurati * on-block) present, tags with matching keys will overwrite those defined at the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) The Kubernetes taints to be applied to the nodes in the node group. Maximum of 50 taints * per node group. Detailed below. */ @core.attr(Taint, { kind: "array" }) public taint?: core.Array | core.ArrayOut; @core.attr(UpdateConfig, { computed: true }) public updateConfig?: UpdateConfig; /** * (Required) EC2 Launch Template version number. While the API accepts values like `$Default` and `$La * test`, the API will convert the value to the associated version number (e.g., `1`) on read and Terra * form will show a difference on next plan. Using the `default_version` or `latest_version` attribute * of the `aws_launch_template` resource or data source is recommended for this argument. */ @core.attr(String, { computed: true }) public version?: string | core.StringOut; constructor(name: string, args?: NodeGroupArgs) { super(name, "aws_eks_node_group", args); } public override getNamespace(): string { return "aws_eks"; } }