import { ResourceBase , ResourceTag } from '../resource' ; import { Value , List } from '../dataTypes' ; export class ComputeLimits { MaximumCapacityUnits ! : Value < number > ; MaximumCoreCapacityUnits ? : Value < number > ; MaximumOnDemandCapacityUnits ? : Value < number > ; MinimumCapacityUnits ! : Value < number > ; UnitType ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SpotProvisioningSpecification { AllocationStrategy ? : Value < string > ; BlockDurationMinutes ? : Value < number > ; TimeoutAction ! : Value < string > ; TimeoutDurationMinutes ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class BootstrapActionConfig { Name ! : Value < string > ; ScriptBootstrapAction ! : ScriptBootstrapActionConfig ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class StepConfig { ActionOnFailure ? : Value < string > ; HadoopJarStep ! : HadoopJarStepConfig ; Name ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EbsBlockDeviceConfig { VolumeSpecification ! : VolumeSpecification ; VolumesPerInstance ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ManagedScalingPolicy { ComputeLimits ? : ComputeLimits ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class CloudWatchAlarmDefinition { ComparisonOperator ! : Value < string > ; Dimensions ? : List < MetricDimension > ; EvaluationPeriods ? : Value < number > ; MetricName ! : Value < string > ; Namespace ? : Value < string > ; Period ! : Value < number > ; Statistic ? : Value < string > ; Threshold ! : Value < number > ; Unit ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class KeyValue { Key ? : Value < string > ; Value ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class VolumeSpecification { Iops ? : Value < number > ; SizeInGB ! : Value < number > ; VolumeType ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceFleetProvisioningSpecifications { OnDemandSpecification ? : OnDemandProvisioningSpecification ; SpotSpecification ? : SpotProvisioningSpecification ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceGroupConfig { AutoScalingPolicy ? : AutoScalingPolicy ; BidPrice ? : Value < string > ; Configurations ? : List < Configuration > ; EbsConfiguration ? : EbsConfiguration ; InstanceCount ! : Value < number > ; InstanceType ! : Value < string > ; Market ? : Value < string > ; Name ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class KerberosAttributes { ADDomainJoinPassword ? : Value < string > ; ADDomainJoinUser ? : Value < string > ; CrossRealmTrustPrincipalPassword ? : Value < string > ; KdcAdminPassword ! : Value < string > ; Realm ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Application { AdditionalInfo ? : { [ key ] : Value < string > ; } ; Args ? : List < Value < string > > ; Name ? : Value < string > ; Version ? : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class Configuration { Classification ? : Value < string > ; ConfigurationProperties ? : { [ key ] : Value < string > ; } ; Configurations ? : List < Configuration > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ScriptBootstrapActionConfig { Args ? : List < Value < string > > ; Path ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class EbsConfiguration { EbsBlockDeviceConfigs ? : List < EbsBlockDeviceConfig > ; EbsOptimized ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceTypeConfig { BidPrice ? : Value < string > ; BidPriceAsPercentageOfOnDemandPrice ? : Value < number > ; Configurations ? : List < Configuration > ; EbsConfiguration ? : EbsConfiguration ; InstanceType ! : Value < string > ; WeightedCapacity ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class MetricDimension { Key ! : Value < string > ; Value ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class OnDemandProvisioningSpecification { AllocationStrategy ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ScalingTrigger { CloudWatchAlarmDefinition ! : CloudWatchAlarmDefinition ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class InstanceFleetConfig { InstanceTypeConfigs ? : List < InstanceTypeConfig > ; LaunchSpecifications ? : InstanceFleetProvisioningSpecifications ; Name ? : Value < string > ; TargetOnDemandCapacity ? : Value < number > ; TargetSpotCapacity ? : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class JobFlowInstancesConfig { AdditionalMasterSecurityGroups ? : List < Value < string > > ; AdditionalSlaveSecurityGroups ? : List < Value < string > > ; CoreInstanceFleet ? : InstanceFleetConfig ; CoreInstanceGroup ? : InstanceGroupConfig ; Ec2KeyName ? : Value < string > ; Ec2SubnetId ? : Value < string > ; Ec2SubnetIds ? : List < Value < string > > ; EmrManagedMasterSecurityGroup ? : Value < string > ; EmrManagedSlaveSecurityGroup ? : Value < string > ; HadoopVersion ? : Value < string > ; KeepJobFlowAliveWhenNoSteps ? : Value < boolean > ; MasterInstanceFleet ? : InstanceFleetConfig ; MasterInstanceGroup ? : InstanceGroupConfig ; Placement ? : PlacementType ; ServiceAccessSecurityGroup ? : Value < string > ; TerminationProtected ? : Value < boolean > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ScalingConstraints { MaxCapacity ! : Value < number > ; MinCapacity ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ScalingAction { Market ? : Value < string > ; SimpleScalingPolicyConfiguration ! : SimpleScalingPolicyConfiguration ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class SimpleScalingPolicyConfiguration { AdjustmentType ? : Value < string > ; CoolDown ? : Value < number > ; ScalingAdjustment ! : Value < number > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class PlacementType { AvailabilityZone ! : Value < string > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class ScalingRule { Action ! : ScalingAction ; Description ? : Value < string > ; Name ! : Value < string > ; Trigger ! : ScalingTrigger ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class AutoScalingPolicy { Constraints ! : ScalingConstraints ; Rules ! : List < ScalingRule > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export class HadoopJarStepConfig { Args ? : List < Value < string > > ; Jar ! : Value < string > ; MainClass ? : Value < string > ; StepProperties ? : List < KeyValue > ; constructor ( properties ) { Object . assign ( this , properties ) ; } } export interface ClusterProperties { AdditionalInfo ? : { [ key ] : any ; } ; Applications ? : List < Application > ; AutoScalingRole ? : Value < string > ; BootstrapActions ? : List < BootstrapActionConfig > ; Configurations ? : List < Configuration > ; CustomAmiId ? : Value < string > ; EbsRootVolumeSize ? : Value < number > ; Instances : JobFlowInstancesConfig ; JobFlowRole : Value < string > ; KerberosAttributes ? : KerberosAttributes ; LogEncryptionKmsKeyId ? : Value < string > ; LogUri ? : Value < string > ; ManagedScalingPolicy ? : ManagedScalingPolicy ; Name : Value < string > ; ReleaseLabel ? : Value < string > ; ScaleDownBehavior ? : Value < string > ; SecurityConfiguration ? : Value < string > ; ServiceRole : Value < string > ; StepConcurrencyLevel ? : Value < number > ; Steps ? : List < StepConfig > ; Tags ? : List < ResourceTag > ; VisibleToAllUsers ? : Value < boolean > ; } export default class Cluster extends ResourceBase < ClusterProperties > { static ComputeLimits = ComputeLimits ; static SpotProvisioningSpecification = SpotProvisioningSpecification ; static BootstrapActionConfig = BootstrapActionConfig ; static StepConfig = StepConfig ; static EbsBlockDeviceConfig = EbsBlockDeviceConfig ; static ManagedScalingPolicy = ManagedScalingPolicy ; static CloudWatchAlarmDefinition = CloudWatchAlarmDefinition ; static KeyValue = KeyValue ; static VolumeSpecification = VolumeSpecification ; static InstanceFleetProvisioningSpecifications = InstanceFleetProvisioningSpecifications ; static InstanceGroupConfig = InstanceGroupConfig ; static KerberosAttributes = KerberosAttributes ; static Application = Application ; static Configuration = Configuration ; static ScriptBootstrapActionConfig = ScriptBootstrapActionConfig ; static EbsConfiguration = EbsConfiguration ; static InstanceTypeConfig = InstanceTypeConfig ; static MetricDimension = MetricDimension ; static OnDemandProvisioningSpecification = OnDemandProvisioningSpecification ; static ScalingTrigger = ScalingTrigger ; static InstanceFleetConfig = InstanceFleetConfig ; static JobFlowInstancesConfig = JobFlowInstancesConfig ; static ScalingConstraints = ScalingConstraints ; static ScalingAction = ScalingAction ; static SimpleScalingPolicyConfiguration = SimpleScalingPolicyConfiguration ; static PlacementType = PlacementType ; static ScalingRule = ScalingRule ; static AutoScalingPolicy = AutoScalingPolicy ; static HadoopJarStepConfig = HadoopJarStepConfig ; constructor ( properties ) { super ( 'AWS::EMR::Cluster' , properties ) ; } }