import * as core from "@terrascript/core"; export interface ConfigurationsArgs extends core.SchemaArgs { classification?: string | core.StringOut; properties?: core.Map | core.MapOut; } export class Configurations extends core.Schema { @core.attr(String) public classification?: string | core.StringOut; @core.attr(String, { kind: "map" }) public properties?: core.Map | core.MapOut; } export interface EbsConfigArgs extends core.SchemaArgs { iops?: number | core.NumberOut; size: number | core.NumberOut; type: string | core.StringOut; volumesPerInstance?: number | core.NumberOut; } export class EbsConfig extends core.Schema { @core.attr(Number) public iops?: number | core.NumberOut; @core.attr(Number) public size!: number | core.NumberOut; @core.attr(String) public type!: string | core.StringOut; @core.attr(Number) public volumesPerInstance?: number | core.NumberOut; } export interface InstanceTypeConfigsArgs extends core.SchemaArgs { bidPrice?: string | core.StringOut; bidPriceAsPercentageOfOnDemandPrice?: number | core.NumberOut; configurations?: core.Array | core.ArrayOut; ebsConfig?: core.Array | core.ArrayOut; instanceType: string | core.StringOut; weightedCapacity?: number | core.NumberOut; } export class InstanceTypeConfigs extends core.Schema { @core.attr(String) public bidPrice?: string | core.StringOut; @core.attr(Number) public bidPriceAsPercentageOfOnDemandPrice?: number | core.NumberOut; @core.attr(Configurations, { kind: "array" }) public configurations?: | core.Array | core.ArrayOut; @core.attr(EbsConfig, { computed: true, kind: "array" }) public ebsConfig?: core.Array | core.ArrayOut; @core.attr(String) public instanceType!: string | core.StringOut; @core.attr(Number) public weightedCapacity?: number | core.NumberOut; } export interface SpotSpecificationArgs extends core.SchemaArgs { allocationStrategy: string | core.StringOut; blockDurationMinutes?: number | core.NumberOut; timeoutAction: string | core.StringOut; timeoutDurationMinutes: number | core.NumberOut; } export class SpotSpecification extends core.Schema { @core.attr(String) public allocationStrategy!: string | core.StringOut; @core.attr(Number) public blockDurationMinutes?: number | core.NumberOut; @core.attr(String) public timeoutAction!: string | core.StringOut; @core.attr(Number) public timeoutDurationMinutes!: number | core.NumberOut; } export interface OnDemandSpecificationArgs extends core.SchemaArgs { allocationStrategy: string | core.StringOut; } export class OnDemandSpecification extends core.Schema { @core.attr(String) public allocationStrategy!: string | core.StringOut; } export interface LaunchSpecificationsArgs extends core.SchemaArgs { onDemandSpecification?: | core.Array | core.ArrayOut; spotSpecification?: | core.Array | core.ArrayOut; } export class LaunchSpecifications extends core.Schema { @core.attr(OnDemandSpecification, { kind: "array" }) public onDemandSpecification?: | core.Array | core.ArrayOut; @core.attr(SpotSpecification, { kind: "array" }) public spotSpecification?: | core.Array | core.ArrayOut; } export interface InstanceFleetArgs extends core.ResourceArgs { /** * (Required) ID of the EMR Cluster to attach to. Changing this forces a new resource to be created. */ clusterId: string | core.StringOut; /** * (Optional) Configuration block for instance fleet */ instanceTypeConfigs?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block for launch specification */ launchSpecifications?: LaunchSpecifications; /** * (Optional) Friendly name given to the instance fleet. */ name?: string | core.StringOut; /** * (Optional) The target capacity of On-Demand units for the instance fleet, which determines how many * On-Demand instances to provision. */ targetOnDemandCapacity?: number | core.NumberOut; /** * (Optional) The target capacity of Spot units for the instance fleet, which determines how many Spot * instances to provision. */ targetSpotCapacity?: number | core.NumberOut; } export class InstanceFleet extends core.Resource { /** * (Required) ID of the EMR Cluster to attach to. Changing this forces a new resource to be created. */ @core.attr(String) public clusterId!: string | core.StringOut; /** * The unique identifier of the instance fleet. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) Configuration block for instance fleet */ @core.attr(InstanceTypeConfigs, { kind: "array" }) public instanceTypeConfigs?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block for launch specification */ @core.attr(LaunchSpecifications) public launchSpecifications?: LaunchSpecifications; /** * (Optional) Friendly name given to the instance fleet. */ @core.attr(String) public name?: string | core.StringOut; @core.attr(Number, { computed: true }) public provisionedOnDemandCapacity!: number | core.NumberOut; @core.attr(Number, { computed: true }) public provisionedSpotCapacity!: number | core.NumberOut; /** * (Optional) The target capacity of On-Demand units for the instance fleet, which determines how many * On-Demand instances to provision. */ @core.attr(Number) public targetOnDemandCapacity?: number | core.NumberOut; /** * (Optional) The target capacity of Spot units for the instance fleet, which determines how many Spot * instances to provision. */ @core.attr(Number) public targetSpotCapacity?: number | core.NumberOut; constructor(name: string, args?: InstanceFleetArgs) { super(name, "aws_emr_instance_fleet", args); } public override getNamespace(): string { return "aws_emr"; } }