{"name":"spotinst","version":"3.128.3","description":"A Pulumi package for creating and managing spotinst cloud resources.","keywords":["pulumi","spotinst"],"homepage":"https://pulumi.io","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`spotinst` Terraform Provider](https://github.com/spotinst/terraform-provider-spotinst).","repository":"https://github.com/pulumi/pulumi-spotinst","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"aws":"Aws","azure":"Azure","ecs":"Ecs","gcp":"Gcp","gke":"Gke","index":"index","spark":"Spark","spotinst":"SpotInst"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing spotinst cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/spotinst/terraform-provider-spotinst)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-spotinst` repo](https://github.com/pulumi/pulumi-spotinst/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-spotinst` repo](https://github.com/spotinst/terraform-provider-spotinst/issues).","devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/spotinst/terraform-provider-spotinst)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-spotinst` repo](https://github.com/pulumi/pulumi-spotinst/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-spotinst` repo](https://github.com/spotinst/terraform-provider-spotinst/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"account":{"type":"string","description":"Spotinst Account ID"},"enabled":{"type":"boolean","description":"Enable or disable the Spotinst provider"},"featureFlags":{"type":"string","description":"Spotinst SDK Feature Flags"},"token":{"type":"string","description":"Spotinst Personal API Access Token"}}},"types":{"spotinst:aws/BeanstalkDeploymentPreferences:BeanstalkDeploymentPreferences":{"properties":{"automaticRoll":{"type":"boolean","description":"Should roll perform automatically\n"},"batchSizePercentage":{"type":"integer","description":"Percent size of each batch\n"},"gracePeriod":{"type":"integer","description":"Amount of time to wait between batches\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/BeanstalkDeploymentPreferencesStrategy:BeanstalkDeploymentPreferencesStrategy"},"description":"Strategy parameters\n"}},"type":"object"},"spotinst:aws/BeanstalkDeploymentPreferencesStrategy:BeanstalkDeploymentPreferencesStrategy":{"properties":{"action":{"type":"string","description":"Action to take\n"},"shouldDrainInstances":{"type":"boolean","description":"Bool value if to wait to drain instance\n"}},"type":"object"},"spotinst:aws/BeanstalkManagedActions:BeanstalkManagedActions":{"properties":{"platformUpdate":{"$ref":"#/types/spotinst:aws/BeanstalkManagedActionsPlatformUpdate:BeanstalkManagedActionsPlatformUpdate","description":"Platform Update parameters\n"}},"type":"object"},"spotinst:aws/BeanstalkManagedActionsPlatformUpdate:BeanstalkManagedActionsPlatformUpdate":{"properties":{"performAt":{"type":"string","description":"Actions to perform (options: timeWindow, never)\n"},"timeWindow":{"type":"string","description":"Time Window for when action occurs ex. Mon:23:50-Tue:00:20\n"},"updateLevel":{"type":"string","description":"Level to update\n"}},"type":"object"},"spotinst:aws/BeanstalkScheduledTask:BeanstalkScheduledTask":{"properties":{"adjustment":{"type":"string","description":"The number of instances to add or remove.\n"},"adjustmentPercentage":{"type":"string","description":"The percentage of instances to add or remove.\n\nUsage:\n\n"},"batchSizePercentage":{"type":"string","description":"The percentage size of each batch in the scheduled deployment roll.\n"},"cronExpression":{"type":"string","description":"A valid cron expression. The cron is running in UTC time zone and is in [Unix cron format](https://en.wikipedia.org/wiki/Cron).\n"},"frequency":{"type":"string","description":"The recurrence frequency to run this task. Supported values are `\"hourly\"`, `\"daily\"`, `\"weekly\"` and `\"continuous\"`.\n"},"gracePeriod":{"type":"string","description":"The period of time (seconds) to wait before checking a batch's health after it's deployment.\n"},"isEnabled":{"type":"boolean","description":"Setting the task to being enabled or disabled.\n"},"maxCapacity":{"type":"string","description":"The maximum number of instances the group should have.\n"},"minCapacity":{"type":"string","description":"The minimum number of instances the group should have.\n"},"scaleMaxCapacity":{"type":"string","description":"The maximum number of instances the group should have.\n"},"scaleMinCapacity":{"type":"string","description":"The minimum number of instances the group should have.\n"},"scaleTargetCapacity":{"type":"string","description":"The desired number of instances the group should have.\n"},"startTime":{"type":"string","description":"Set a start time for one time tasks.\n"},"targetCapacity":{"type":"string","description":"The desired number of instances the group should have.\n"},"taskType":{"type":"string","description":"The task type to run. Supported task types are: `\"scale\"`, `\u003cspan pulumi-lang-nodejs=\"\"backupAmi\"\" pulumi-lang-dotnet=\"\"BackupAmi\"\" pulumi-lang-go=\"\"backupAmi\"\" pulumi-lang-python=\"\"backup_ami\"\" pulumi-lang-yaml=\"\"backupAmi\"\" pulumi-lang-java=\"\"backupAmi\"\"\u003e\"backup_ami\"\u003c/span\u003e`, `\"roll\"`, `\"scaleUp\"`, `\"percentageScaleUp\"`, `\"scaleDown\"`, `\"percentageScaleDown\"`, `\"statefulUpdateCapacity\"`.\n"}},"type":"object","required":["taskType"]},"spotinst:aws/ElastigroupCpuOptions:ElastigroupCpuOptions":{"properties":{"threadsPerCore":{"type":"integer","description":"The ability to define the number of threads per core in instances that allow this.\n"}},"type":"object","required":["threadsPerCore"]},"spotinst:aws/ElastigroupEbsBlockDevice:ElastigroupEbsBlockDevice":{"properties":{"deleteOnTermination":{"type":"boolean","description":"Whether the volume should be destroyed on instance termination.\n"},"deviceName":{"type":"string","description":"The name of the device to mount.\n"},"dynamicIops":{"$ref":"#/types/spotinst:aws/ElastigroupEbsBlockDeviceDynamicIops:ElastigroupEbsBlockDeviceDynamicIops","description":"Set dynamic IOPS properties. When using this object, you cannot use the \u003cspan pulumi-lang-nodejs=\"`iops`\" pulumi-lang-dotnet=\"`Iops`\" pulumi-lang-go=\"`iops`\" pulumi-lang-python=\"`iops`\" pulumi-lang-yaml=\"`iops`\" pulumi-lang-java=\"`iops`\"\u003e`iops`\u003c/span\u003e object. You must use one or the other.\n"},"dynamicVolumeSize":{"$ref":"#/types/spotinst:aws/ElastigroupEbsBlockDeviceDynamicVolumeSize:ElastigroupEbsBlockDeviceDynamicVolumeSize","description":"Set dynamic volume size properties. When using this object, you cannot use \u003cspan pulumi-lang-nodejs=\"`volumeSize`\" pulumi-lang-dotnet=\"`VolumeSize`\" pulumi-lang-go=\"`volumeSize`\" pulumi-lang-python=\"`volume_size`\" pulumi-lang-yaml=\"`volumeSize`\" pulumi-lang-java=\"`volumeSize`\"\u003e`volume_size`\u003c/span\u003e. You must use one or the other.\n"},"encrypted":{"type":"boolean","description":"Enables [EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) on the volume.\n"},"iops":{"type":"integer","description":"The amount of provisioned [IOPS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-io-characteristics.html). This must be set with a \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e of `\"io1\"`.\n"},"kmsKeyId":{"type":"string","description":"ID for a user managed CMK under which the EBS Volume is encrypted\n"},"snapshotId":{"type":"string","description":"The Snapshot ID to mount.\n"},"throughput":{"type":"integer","description":"The amount of data transferred to or from a storage device per second, you can use this param just in a case that \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e = gp3.\n"},"volumeSize":{"type":"integer","description":"The size of the volume in gigabytes.\n"},"volumeType":{"type":"string","description":"The type of volume. Can be `\"standard\"`, `\"gp2\"`, `\"gp3\"`, `\"io1\"`, `\"st1\"` or `\"sc1\"`.\n"}},"type":"object","required":["deviceName"],"language":{"nodejs":{"requiredOutputs":["deleteOnTermination","deviceName","encrypted","volumeType"]}}},"spotinst:aws/ElastigroupEbsBlockDeviceDynamicIops:ElastigroupEbsBlockDeviceDynamicIops":{"properties":{"baseSize":{"type":"integer","description":"Initial size for IOPS.\n"},"resource":{"type":"string","description":"Type of resource, valid values: `\"CPU\", \"MEMORY\"`.\n"},"sizePerResourceUnit":{"type":"integer","description":"Additional size per resource unit (in IOPS).\n\nModifying any \u003cspan pulumi-lang-nodejs=\"`ebsBlockDevice`\" pulumi-lang-dotnet=\"`EbsBlockDevice`\" pulumi-lang-go=\"`ebsBlockDevice`\" pulumi-lang-python=\"`ebs_block_device`\" pulumi-lang-yaml=\"`ebsBlockDevice`\" pulumi-lang-java=\"`ebsBlockDevice`\"\u003e`ebs_block_device`\u003c/span\u003e currently requires resource replacement.\n\nUsage:\n\n"}},"type":"object"},"spotinst:aws/ElastigroupEbsBlockDeviceDynamicVolumeSize:ElastigroupEbsBlockDeviceDynamicVolumeSize":{"properties":{"baseSize":{"type":"integer","description":"Initial size for volume.\n"},"resource":{"type":"string","description":"Type of resource, valid values: `\"CPU\", \"MEMORY\"`.\n"},"sizePerResourceUnit":{"type":"integer","description":"Additional size per resource unit (in GB).\n"}},"type":"object"},"spotinst:aws/ElastigroupEphemeralBlockDevice:ElastigroupEphemeralBlockDevice":{"properties":{"deviceName":{"type":"string","description":"The name of the block device to mount on the instance.\n"},"virtualName":{"type":"string","description":"The [Instance Store Device Name](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html#InstanceStoreDeviceNames)\n(e.g. `\"ephemeral0\"`).\n\nUsage:\n\n"}},"type":"object","required":["deviceName","virtualName"]},"spotinst:aws/ElastigroupImage:ElastigroupImage":{"properties":{"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupImageImage:ElastigroupImageImage"}}},"type":"object","required":["images"]},"spotinst:aws/ElastigroupImageImage:ElastigroupImageImage":{"properties":{"id":{"type":"string","description":"The group ID.\n"}},"type":"object","required":["id"]},"spotinst:aws/ElastigroupInstanceTypesWeight:ElastigroupInstanceTypesWeight":{"properties":{"instanceType":{"type":"string","description":"Name of instance type (String).\n"},"weight":{"type":"integer","description":"Weight per instance type (Integer).\n"}},"type":"object","required":["instanceType","weight"]},"spotinst:aws/ElastigroupIntegrationBeanstalk:ElastigroupIntegrationBeanstalk":{"properties":{"deploymentPreferences":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalkDeploymentPreferences:ElastigroupIntegrationBeanstalkDeploymentPreferences","description":"Preferences when performing a roll\n"},"environmentId":{"type":"string"},"managedActions":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalkManagedActions:ElastigroupIntegrationBeanstalkManagedActions","description":"Managed Actions parameters\n"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationBeanstalkDeploymentPreferences:ElastigroupIntegrationBeanstalkDeploymentPreferences":{"properties":{"automaticRoll":{"type":"boolean","description":"Should roll perform automatically\n"},"batchSizePercentage":{"type":"integer"},"gracePeriod":{"type":"integer"},"strategy":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategy:ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategy"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategy:ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategy":{"properties":{"action":{"type":"string"},"shouldDrainInstances":{"type":"boolean"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationBeanstalkManagedActions:ElastigroupIntegrationBeanstalkManagedActions":{"properties":{"platformUpdate":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdate:ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdate","description":"Platform Update parameters\n"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdate:ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdate":{"properties":{"performAt":{"type":"string"},"timeWindow":{"type":"string","description":"Time Window for when action occurs ex. Mon:23:50-Tue:00:20\n"},"updateLevel":{"type":"string","description":"Level to update\n\nUsage:\n\n"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationCodedeploy:ElastigroupIntegrationCodedeploy":{"properties":{"cleanupOnFailure":{"type":"boolean","description":"Cleanup automatically after a failed deploy.\n"},"deploymentGroups":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationCodedeployDeploymentGroup:ElastigroupIntegrationCodedeployDeploymentGroup"},"description":"Specify the deployment groups details.\n"},"terminateInstanceOnFailure":{"type":"boolean","description":"Terminate the instance automatically after a failed deploy.\n"}},"type":"object","required":["cleanupOnFailure","deploymentGroups","terminateInstanceOnFailure"]},"spotinst:aws/ElastigroupIntegrationCodedeployDeploymentGroup:ElastigroupIntegrationCodedeployDeploymentGroup":{"properties":{"applicationName":{"type":"string","description":"The application name.\n"},"deploymentGroupName":{"type":"string","description":"The deployment group name.\n\nUsage:\n\n"}},"type":"object","required":["applicationName","deploymentGroupName"]},"spotinst:aws/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm":{"properties":{"autoscaleCooldown":{"type":"integer"},"autoscaleDown":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationDockerSwarmAutoscaleDown:ElastigroupIntegrationDockerSwarmAutoscaleDown"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationDockerSwarmAutoscaleHeadroom:ElastigroupIntegrationDockerSwarmAutoscaleHeadroom"},"autoscaleIsEnabled":{"type":"boolean"},"masterHost":{"type":"string"},"masterPort":{"type":"integer"}},"type":"object","required":["masterHost","masterPort"]},"spotinst:aws/ElastigroupIntegrationDockerSwarmAutoscaleDown:ElastigroupIntegrationDockerSwarmAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer"},"maxScaleDownPercentage":{"type":"number"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationDockerSwarmAutoscaleHeadroom:ElastigroupIntegrationDockerSwarmAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer"},"memoryPerUnit":{"type":"integer"},"numOfUnits":{"type":"integer"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationEcs:ElastigroupIntegrationEcs":{"properties":{"autoscaleAttributes":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcsAutoscaleAttribute:ElastigroupIntegrationEcsAutoscaleAttribute"},"description":"A key/value mapping of tags to assign to the resource.\n"},"autoscaleCooldown":{"type":"integer"},"autoscaleDown":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcsAutoscaleDown:ElastigroupIntegrationEcsAutoscaleDown"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcsAutoscaleHeadroom:ElastigroupIntegrationEcsAutoscaleHeadroom"},"autoscaleIsAutoConfig":{"type":"boolean"},"autoscaleIsEnabled":{"type":"boolean"},"autoscaleScaleDownNonServiceTasks":{"type":"boolean","description":"Determines whether to scale down non-service tasks.\n"},"batch":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcsBatch:ElastigroupIntegrationEcsBatch","description":"Batch configuration object:\n"},"clusterName":{"type":"string","description":"The name of the EC2 Container Service cluster.\n"}},"type":"object","required":["clusterName"]},"spotinst:aws/ElastigroupIntegrationEcsAutoscaleAttribute:ElastigroupIntegrationEcsAutoscaleAttribute":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:aws/ElastigroupIntegrationEcsAutoscaleDown:ElastigroupIntegrationEcsAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer"},"maxScaleDownPercentage":{"type":"number"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationEcsAutoscaleHeadroom:ElastigroupIntegrationEcsAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer"},"memoryPerUnit":{"type":"integer"},"numOfUnits":{"type":"integer"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationEcsBatch:ElastigroupIntegrationEcsBatch":{"properties":{"jobQueueNames":{"type":"array","items":{"type":"string"},"description":"Array of strings.\n\nUsage:\n\n"}},"type":"object","required":["jobQueueNames"]},"spotinst:aws/ElastigroupIntegrationGitlab:ElastigroupIntegrationGitlab":{"properties":{"runner":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationGitlabRunner:ElastigroupIntegrationGitlabRunner","description":"Settings for Gitlab runner.\n"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationGitlabRunner:ElastigroupIntegrationGitlabRunner":{"properties":{"isEnabled":{"type":"boolean"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationKubernetes:ElastigroupIntegrationKubernetes":{"properties":{"apiServer":{"type":"string"},"autoscaleCooldown":{"type":"integer"},"autoscaleDown":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationKubernetesAutoscaleDown:ElastigroupIntegrationKubernetesAutoscaleDown"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationKubernetesAutoscaleHeadroom:ElastigroupIntegrationKubernetesAutoscaleHeadroom"},"autoscaleIsAutoConfig":{"type":"boolean"},"autoscaleIsEnabled":{"type":"boolean"},"autoscaleLabels":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationKubernetesAutoscaleLabel:ElastigroupIntegrationKubernetesAutoscaleLabel"},"description":"A key/value mapping of tags to assign to the resource.\n\nUsage:\n\n"},"clusterIdentifier":{"type":"string"},"integrationMode":{"type":"string","description":"Valid values: `\"saas\"`, `\"pod\"`.\n"},"token":{"type":"string","description":"Kubernetes Token\n"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationKubernetesAutoscaleDown:ElastigroupIntegrationKubernetesAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer"},"maxScaleDownPercentage":{"type":"number"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationKubernetesAutoscaleHeadroom:ElastigroupIntegrationKubernetesAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer"},"memoryPerUnit":{"type":"integer"},"numOfUnits":{"type":"integer"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationKubernetesAutoscaleLabel:ElastigroupIntegrationKubernetesAutoscaleLabel":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:aws/ElastigroupIntegrationMesosphere:ElastigroupIntegrationMesosphere":{"properties":{"apiServer":{"type":"string"}},"type":"object","required":["apiServer"]},"spotinst:aws/ElastigroupIntegrationNomad:ElastigroupIntegrationNomad":{"properties":{"aclToken":{"type":"string","description":"Nomad ACL Token\n"},"autoscaleConstraints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationNomadAutoscaleConstraint:ElastigroupIntegrationNomadAutoscaleConstraint"},"description":"A key/value mapping of tags to assign to the resource.\n\nUsage:\n\n"},"autoscaleCooldown":{"type":"integer"},"autoscaleDown":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationNomadAutoscaleDown:ElastigroupIntegrationNomadAutoscaleDown"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationNomadAutoscaleHeadroom:ElastigroupIntegrationNomadAutoscaleHeadroom"},"autoscaleIsEnabled":{"type":"boolean"},"masterHost":{"type":"string"},"masterPort":{"type":"integer"}},"type":"object","required":["masterHost","masterPort"]},"spotinst:aws/ElastigroupIntegrationNomadAutoscaleConstraint:ElastigroupIntegrationNomadAutoscaleConstraint":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:aws/ElastigroupIntegrationNomadAutoscaleDown:ElastigroupIntegrationNomadAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationNomadAutoscaleHeadroom:ElastigroupIntegrationNomadAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer"},"memoryPerUnit":{"type":"integer"},"numOfUnits":{"type":"integer"}},"type":"object"},"spotinst:aws/ElastigroupIntegrationRancher:ElastigroupIntegrationRancher":{"properties":{"accessKey":{"type":"string","description":"The access key of the Rancher API.\n"},"masterHost":{"type":"string"},"secretKey":{"type":"string","description":"The secret key of the Rancher API.\n"},"version":{"type":"string","description":"The Rancher version. Must be `\"1\"` or `\"2\"`. If this field is omitted, it’s assumed that the Rancher cluster is version 1. Note that Kubernetes is required when using Rancher version 2^.\nUsage:\n\n"}},"type":"object","required":["accessKey","masterHost","secretKey"]},"spotinst:aws/ElastigroupIntegrationRoute53:ElastigroupIntegrationRoute53":{"properties":{"domains":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRoute53Domain:ElastigroupIntegrationRoute53Domain"},"description":"Collection of one or more domains to register.\n"}},"type":"object","required":["domains"]},"spotinst:aws/ElastigroupIntegrationRoute53Domain:ElastigroupIntegrationRoute53Domain":{"properties":{"hostedZoneId":{"type":"string","description":"The id associated with a hosted zone.\n"},"recordSetType":{"type":"string","description":"The type of the record set. Valid values: `\"a\"`, `\"cname\"`.\n"},"recordSets":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRoute53DomainRecordSet:ElastigroupIntegrationRoute53DomainRecordSet"},"description":"Collection of records containing authoritative DNS information for the specified domain name.\n"},"spotinstAcctId":{"type":"string","description":"The Spotinst account ID that is linked to the AWS account that holds the Route 53 Hosted Zone ID. The default is the user Spotinst account provided as a URL parameter.\n"}},"type":"object","required":["hostedZoneId","recordSets"]},"spotinst:aws/ElastigroupIntegrationRoute53DomainRecordSet:ElastigroupIntegrationRoute53DomainRecordSet":{"properties":{"name":{"type":"string","description":"The group name.\n"},"usePublicDns":{"type":"boolean","description":"Designates whether the DNS address should be exposed to connections outside the VPC.\n\nUsage:\n\n"},"usePublicIp":{"type":"boolean","description":"Designates whether the IP address should be exposed to connections outside the VPC.\n"}},"type":"object","required":["name"]},"spotinst:aws/ElastigroupItf:ElastigroupItf":{"properties":{"defaultStaticTargetGroup":{"$ref":"#/types/spotinst:aws/ElastigroupItfDefaultStaticTargetGroup:ElastigroupItfDefaultStaticTargetGroup"},"fixedTargetGroups":{"type":"boolean"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItfLoadBalancer:ElastigroupItfLoadBalancer"}},"migrationHealthinessThreshold":{"type":"integer"},"targetGroupConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItfTargetGroupConfig:ElastigroupItfTargetGroupConfig"}},"weightStrategy":{"type":"string"}},"type":"object","required":["fixedTargetGroups","loadBalancers","targetGroupConfigs","weightStrategy"]},"spotinst:aws/ElastigroupItfDefaultStaticTargetGroup:ElastigroupItfDefaultStaticTargetGroup":{"properties":{"arn":{"type":"string"},"percentage":{"type":"number"}},"type":"object","required":["arn","percentage"]},"spotinst:aws/ElastigroupItfLoadBalancer:ElastigroupItfLoadBalancer":{"properties":{"listenerRules":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItfLoadBalancerListenerRule:ElastigroupItfLoadBalancerListenerRule"}},"loadBalancerArn":{"type":"string"}},"type":"object","required":["listenerRules","loadBalancerArn"]},"spotinst:aws/ElastigroupItfLoadBalancerListenerRule:ElastigroupItfLoadBalancerListenerRule":{"properties":{"ruleArn":{"type":"string"},"staticTargetGroup":{"$ref":"#/types/spotinst:aws/ElastigroupItfLoadBalancerListenerRuleStaticTargetGroup:ElastigroupItfLoadBalancerListenerRuleStaticTargetGroup"}},"type":"object","required":["ruleArn"]},"spotinst:aws/ElastigroupItfLoadBalancerListenerRuleStaticTargetGroup:ElastigroupItfLoadBalancerListenerRuleStaticTargetGroup":{"properties":{"arn":{"type":"string"},"percentage":{"type":"number"}},"type":"object","required":["arn","percentage"]},"spotinst:aws/ElastigroupItfTargetGroupConfig:ElastigroupItfTargetGroupConfig":{"properties":{"healthCheckIntervalSeconds":{"type":"integer"},"healthCheckPath":{"type":"string"},"healthCheckPort":{"type":"string"},"healthCheckProtocol":{"type":"string"},"healthCheckTimeoutSeconds":{"type":"integer"},"healthyThresholdCount":{"type":"integer"},"matchers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItfTargetGroupConfigMatcher:ElastigroupItfTargetGroupConfigMatcher"}},"port":{"type":"integer"},"protocol":{"type":"string"},"protocolVersion":{"type":"string"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItfTargetGroupConfigTag:ElastigroupItfTargetGroupConfigTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"unhealthyThresholdCount":{"type":"integer"},"vpcId":{"type":"string"}},"type":"object","required":["healthCheckPath","port","protocol","vpcId"]},"spotinst:aws/ElastigroupItfTargetGroupConfigMatcher:ElastigroupItfTargetGroupConfigMatcher":{"properties":{"grpcCode":{"type":"string"},"httpCode":{"type":"string"}},"type":"object"},"spotinst:aws/ElastigroupItfTargetGroupConfigTag:ElastigroupItfTargetGroupConfigTag":{"properties":{"tagKey":{"type":"string"},"tagValue":{"type":"string"}},"type":"object","required":["tagKey"]},"spotinst:aws/ElastigroupLogging:ElastigroupLogging":{"properties":{"export":{"$ref":"#/types/spotinst:aws/ElastigroupLoggingExport:ElastigroupLoggingExport","description":"Logging Export configuration.\n"}},"type":"object"},"spotinst:aws/ElastigroupLoggingExport:ElastigroupLoggingExport":{"properties":{"s3s":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupLoggingExportS3:ElastigroupLoggingExportS3"},"description":"Exports your cluster's logs to the S3 bucket and subdir configured on the S3 data integration given.\n"}},"type":"object"},"spotinst:aws/ElastigroupLoggingExportS3:ElastigroupLoggingExportS3":{"properties":{"id":{"type":"string","description":"The identifier of The S3 data integration to export the logs to.\n"}},"type":"object","required":["id"]},"spotinst:aws/ElastigroupMetadataOptions:ElastigroupMetadataOptions":{"properties":{"httpPutResponseHopLimit":{"type":"integer","description":"The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel. Valid values: Integers from \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`64`\" pulumi-lang-dotnet=\"`64`\" pulumi-lang-go=\"`64`\" pulumi-lang-python=\"`64`\" pulumi-lang-yaml=\"`64`\" pulumi-lang-java=\"`64`\"\u003e`64`\u003c/span\u003e.\n"},"httpTokens":{"type":"string","description":"The state of token usage for your instance metadata requests. Valid values: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`required`\" pulumi-lang-dotnet=\"`Required`\" pulumi-lang-go=\"`required`\" pulumi-lang-python=\"`required`\" pulumi-lang-yaml=\"`required`\" pulumi-lang-java=\"`required`\"\u003e`required`\u003c/span\u003e.\n"},"instanceMetadataTags":{"type":"string","description":"Indicates whether access to instance tags from the instance metadata is enabled or disabled. Can’t be null.\n"}},"type":"object","required":["httpTokens"]},"spotinst:aws/ElastigroupMultipleMetrics:ElastigroupMultipleMetrics":{"properties":{"expressions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupMultipleMetricsExpression:ElastigroupMultipleMetricsExpression"},"description":"Array of objects (Expression config)\n"},"metrics":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupMultipleMetricsMetric:ElastigroupMultipleMetricsMetric"},"description":"Array of objects (Metric config)\n"}},"type":"object"},"spotinst:aws/ElastigroupMultipleMetricsExpression:ElastigroupMultipleMetricsExpression":{"properties":{"expression":{"type":"string","description":"An expression consisting of the metric names listed in the 'metrics' array.\n"},"name":{"type":"string","description":"The group name.\n"}},"type":"object","required":["expression","name"]},"spotinst:aws/ElastigroupMultipleMetricsMetric:ElastigroupMultipleMetricsMetric":{"properties":{"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupMultipleMetricsMetricDimension:ElastigroupMultipleMetricsMetricDimension"}},"extendedStatistic":{"type":"string","description":"Percentile statistic. Valid values: `\"p0.1\"` - `\"p100\"`.\n"},"metricName":{"type":"string"},"name":{"type":"string","description":"The group name.\n"},"namespace":{"type":"string"},"statistic":{"type":"string"},"unit":{"type":"string"}},"type":"object","required":["metricName","name","namespace"]},"spotinst:aws/ElastigroupMultipleMetricsMetricDimension:ElastigroupMultipleMetricsMetricDimension":{"properties":{"name":{"type":"string","description":"The group name.\n"},"value":{"type":"string"}},"type":"object","required":["name"]},"spotinst:aws/ElastigroupNetworkInterface:ElastigroupNetworkInterface":{"properties":{"associateIpv6Address":{"type":"boolean","description":"Indicates whether to assign IPV6 addresses to your instance. Requires a subnet with IPV6 CIDR block ranges.\n\nUsage:\n\n"},"associatePublicIpAddress":{"type":"boolean","description":"Indicates whether to assign a public IP address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one.\n"},"deleteOnTermination":{"type":"boolean","description":"If set to true, the interface is deleted when the instance is terminated.\n"},"description":{"type":"string","description":"The description of the network interface.\n"},"deviceIndex":{"type":"string","description":"The index of the device on the instance for the network interface attachment.\n"},"networkInterfaceId":{"type":"string","description":"The ID of the network interface.\n"},"privateIpAddress":{"type":"string","description":"The private IP address of the network interface.\n"},"secondaryPrivateIpAddressCount":{"type":"string","description":"The number of secondary private IP addresses.\n"}},"type":"object","required":["deviceIndex"],"language":{"nodejs":{"requiredOutputs":["deleteOnTermination","deviceIndex"]}}},"spotinst:aws/ElastigroupResourceRequirement:ElastigroupResourceRequirement":{"properties":{"excludedInstanceFamilies":{"type":"array","items":{"type":"string"},"description":"Instance families to exclude\n"},"excludedInstanceGenerations":{"type":"array","items":{"type":"string"},"description":"Instance generations to exclude\n"},"excludedInstanceTypes":{"type":"array","items":{"type":"string"},"description":"Instance types to exclude\n"},"requiredGpuMaximum":{"type":"integer","description":"Required maximum instance GPU (\u003c=16)\n"},"requiredGpuMinimum":{"type":"integer","description":"Required minimum instance GPU (\u003e=1)\n"},"requiredMemoryMaximum":{"type":"integer","description":"Required maximum instance memory (\u003c=512)\n"},"requiredMemoryMinimum":{"type":"integer","description":"Required minimum instance memory (\u003e=1)\n"},"requiredVcpuMaximum":{"type":"integer","description":"Required maximum instance vCPU (\u003c=64)\n"},"requiredVcpuMinimum":{"type":"integer","description":"Required minimum instance vCPU (\u003e=1)\n"}},"type":"object","required":["requiredMemoryMaximum","requiredMemoryMinimum","requiredVcpuMaximum","requiredVcpuMinimum"]},"spotinst:aws/ElastigroupResourceTagSpecification:ElastigroupResourceTagSpecification":{"properties":{"shouldTagAmis":{"type":"boolean","description":"Tag specification for AMI resources.\n"},"shouldTagEnis":{"type":"boolean","description":"Tag specification for ENI resources.\n"},"shouldTagSnapshots":{"type":"boolean","description":"Tag specification for Snapshot resources.\n"},"shouldTagVolumes":{"type":"boolean","description":"Tag specification for Volume resources.\n"}},"type":"object"},"spotinst:aws/ElastigroupRevertToSpot:ElastigroupRevertToSpot":{"properties":{"performAt":{"type":"string","description":"In the event of a fallback to On-Demand instances, select the time period to revert back to Spot. Supported Arguments – always (default), timeWindow, never. For timeWindow or never to be valid the group must have availabilityOriented OR persistence defined.\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"Specify a list of time windows for to execute revertToSpot strategy. Time window format: `ddd:hh:mm-ddd:hh:mm`. Example: `Mon:03:00-Wed:02:30`\n"}},"type":"object","required":["performAt"]},"spotinst:aws/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy":{"properties":{"actionType":{"type":"string","description":"The type of action to perform for scaling. Valid values: `\"adjustment\"`, `\"percentageAdjustment\"`, `\"setMaxTarget\"`, `\"setMinTarget\"`, `\"updateCapacity\"`. If a \u003cspan pulumi-lang-nodejs=\"`stepAdjustment`\" pulumi-lang-dotnet=\"`StepAdjustment`\" pulumi-lang-go=\"`stepAdjustment`\" pulumi-lang-python=\"`step_adjustment`\" pulumi-lang-yaml=\"`stepAdjustment`\" pulumi-lang-java=\"`stepAdjustment`\"\u003e`step_adjustment`\u003c/span\u003e object is defined, then it cannot be specified.\n"},"adjustment":{"type":"string","description":"The number of instances to add/remove to/from the target capacity when scale is needed. Can be used as advanced expression for scaling of instances to add/remove to/from the target capacity when scale is needed. You can see more information here: Advanced expression. Example value: `\"MAX(currCapacity / 5, value * 10)\"`\n"},"cooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies.\n"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingDownPolicyDimension:ElastigroupScalingDownPolicyDimension"},"description":"A list of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer","description":"The number of periods over which data is compared to the specified threshold.\n"},"isEnabled":{"type":"boolean","description":"Specifies whether the scaling policy described in this block is enabled.\n"},"maxTargetCapacity":{"type":"string","description":". The number of the desired target (and maximum) capacity\n"},"maximum":{"type":"string","description":"The maximal number of instances to have in the group.\n"},"metricName":{"type":"string","description":"The name of the metric, with or without spaces.\n"},"minTargetCapacity":{"type":"string"},"minimum":{"type":"string","description":"The minimal number of instances to have in the group.\n"},"namespace":{"type":"string","description":"The namespace for the alarm's associated metric.\n"},"operator":{"type":"string","description":"The operator to use in order to determine if the scaling policy is applicable. Valid values: `\"gt\"`, `\"gte\"`, `\"lt\"`, `\"lte\"`.\n"},"period":{"type":"integer","description":"The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60.\n"},"policyName":{"type":"string","description":"The name of the policy.\n"},"source":{"type":"string","description":"The source of the metric. Valid values: `\"cloudWatch\"`, `\"spectrum\"`.\n"},"statistic":{"type":"string","description":"The metric statistics to return. For information about specific statistics go to [Statistics](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/index.html?CHAP_TerminologyandKeyConcepts.html#Statistic) in the Amazon CloudWatch Developer Guide.\n"},"stepAdjustments":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingDownPolicyStepAdjustment:ElastigroupScalingDownPolicyStepAdjustment"}},"target":{"type":"string","description":"The target number of instances to have in the group.\n"},"threshold":{"type":"number","description":"The value against which the specified statistic is compared. If a \u003cspan pulumi-lang-nodejs=\"`stepAdjustment`\" pulumi-lang-dotnet=\"`StepAdjustment`\" pulumi-lang-go=\"`stepAdjustment`\" pulumi-lang-python=\"`step_adjustment`\" pulumi-lang-yaml=\"`stepAdjustment`\" pulumi-lang-java=\"`stepAdjustment`\"\u003e`step_adjustment`\u003c/span\u003e object is defined, then it cannot be specified.\n"},"unit":{"type":"string","description":"The unit for the alarm's associated metric. Valid values: `\"percent`, `\"seconds\"`, `\"microseconds\"`, `\"milliseconds\"`, `\"bytes\"`, `\"kilobytes\"`, `\"megabytes\"`, `\"gigabytes\"`, `\"terabytes\"`, `\"bits\"`, `\"kilobits\"`, `\"megabits\"`, `\"gigabits\"`, `\"terabits\"`, `\"count\"`, `\"bytes/second\"`, `\"kilobytes/second\"`, `\"megabytes/second\"`, `\"gigabytes/second\"`, `\"terabytes/second\"`, `\"bits/second\"`, `\"kilobits/second\"`, `\"megabits/second\"`, `\"gigabits/second\"`, `\"terabits/second\"`, `\"count/second\"`, `\"none\"`.\n"}},"type":"object","required":["metricName","namespace","policyName"],"language":{"nodejs":{"requiredOutputs":["evaluationPeriods","metricName","namespace","operator","period","policyName","source"]}}},"spotinst:aws/ElastigroupScalingDownPolicyDimension:ElastigroupScalingDownPolicyDimension":{"properties":{"name":{"type":"string","description":"The dimension name.\n"},"value":{"type":"string","description":"The dimension value.\n"}},"type":"object","required":["name"]},"spotinst:aws/ElastigroupScalingDownPolicyStepAdjustment:ElastigroupScalingDownPolicyStepAdjustment":{"properties":{"action":{"$ref":"#/types/spotinst:aws/ElastigroupScalingDownPolicyStepAdjustmentAction:ElastigroupScalingDownPolicyStepAdjustmentAction"},"threshold":{"type":"integer"}},"type":"object","required":["action","threshold"]},"spotinst:aws/ElastigroupScalingDownPolicyStepAdjustmentAction:ElastigroupScalingDownPolicyStepAdjustmentAction":{"properties":{"adjustment":{"type":"string"},"maxTargetCapacity":{"type":"string"},"maximum":{"type":"string"},"minTargetCapacity":{"type":"string"},"minimum":{"type":"string"},"target":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["type"]},"spotinst:aws/ElastigroupScalingStrategy:ElastigroupScalingStrategy":{"properties":{"terminateAtEndOfBillingHour":{"type":"boolean","description":"Specify whether to terminate instances at the end of each billing hour.\n"},"terminationPolicy":{"type":"string","description":"Determines whether to terminate the newest instances when performing a scaling action. Valid values: `\"default\"`, `\"newestInstance\"`.\n"}},"type":"object"},"spotinst:aws/ElastigroupScalingTargetPolicy:ElastigroupScalingTargetPolicy":{"properties":{"cooldown":{"type":"integer","description":"Integer the amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies.\n"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingTargetPolicyDimension:ElastigroupScalingTargetPolicyDimension"},"description":"A list of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer","description":"The number of periods over which data is compared to the specified threshold.\n"},"maxCapacityPerScale":{"type":"string","description":"String, restrict the maximal number of instances which can be added in each scale-up action.\n\n\u003cspan pulumi-lang-nodejs=\"`scalingTargetPolicies`\" pulumi-lang-dotnet=\"`ScalingTargetPolicies`\" pulumi-lang-go=\"`scalingTargetPolicies`\" pulumi-lang-python=\"`scaling_target_policies`\" pulumi-lang-yaml=\"`scalingTargetPolicies`\" pulumi-lang-java=\"`scalingTargetPolicies`\"\u003e`scaling_target_policies`\u003c/span\u003e support predictive scaling:\n"},"metricName":{"type":"string","description":"String, the name of the metric, with or without spaces.\n"},"namespace":{"type":"string","description":"String, the namespace for the alarm's associated metric.\n"},"period":{"type":"integer","description":"The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60.\n"},"policyName":{"type":"string","description":"String, the name of the policy.\n"},"predictiveMode":{"type":"string","description":"Start a metric prediction process to determine the expected target metric value within the next two days. See [Predictive Autoscaling](https://api.spotinst.com/elastigroup-for-aws/concepts/scaling-concepts/predictive-autoscaling/) documentation for more info. Valid values: `FORECAST_AND_SCALE`, `FORECAST_ONLY`.\n\nUsage:\n\n"},"source":{"type":"string","description":"String, the source of the metric. Valid values: `\"cloudWatch\"`, `\"spectrum\"`.\n"},"statistic":{"type":"string","description":"String, the metric statistics to return. For information about specific statistics go to [Statistics](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/index.html?CHAP_TerminologyandKeyConcepts.html#Statistic) in the Amazon CloudWatch Developer Guide.\n"},"target":{"type":"number","description":"The target number of instances to have in the group.\n"},"unit":{"type":"string","description":"String, tThe unit for the alarm's associated metric. Valid values: `\"percent`, `\"seconds\"`, `\"microseconds\"`, `\"milliseconds\"`, `\"bytes\"`, `\"kilobytes\"`, `\"megabytes\"`, `\"gigabytes\"`, `\"terabytes\"`, `\"bits\"`, `\"kilobits\"`, `\"megabits\"`, `\"gigabits\"`, `\"terabits\"`, `\"count\"`, `\"bytes/second\"`, `\"kilobytes/second\"`, `\"megabytes/second\"`, `\"gigabytes/second\"`, `\"terabytes/second\"`, `\"bits/second\"`, `\"kilobits/second\"`, `\"megabits/second\"`, `\"gigabits/second\"`, `\"terabits/second\"`, `\"count/second\"`, `\"none\"`.\n"}},"type":"object","required":["metricName","namespace","policyName","target"],"language":{"nodejs":{"requiredOutputs":["metricName","namespace","policyName","source","target"]}}},"spotinst:aws/ElastigroupScalingTargetPolicyDimension:ElastigroupScalingTargetPolicyDimension":{"properties":{"name":{"type":"string","description":"String, the dimension name.\n"},"value":{"type":"string","description":"String, the dimension value.\n"}},"type":"object","required":["name"]},"spotinst:aws/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy":{"properties":{"actionType":{"type":"string","description":"The type of action to perform for scaling. Valid values: `\"adjustment\"`, `\"percentageAdjustment\"`, `\"setMaxTarget\"`, `\"setMinTarget\"`, `\"updateCapacity\"`. If a \u003cspan pulumi-lang-nodejs=\"`stepAdjustment`\" pulumi-lang-dotnet=\"`StepAdjustment`\" pulumi-lang-go=\"`stepAdjustment`\" pulumi-lang-python=\"`step_adjustment`\" pulumi-lang-yaml=\"`stepAdjustment`\" pulumi-lang-java=\"`stepAdjustment`\"\u003e`step_adjustment`\u003c/span\u003e object is defined, then it cannot be specified.\n"},"adjustment":{"type":"string","description":"The number of instances to add/remove to/from the target capacity when scale is needed. Can be used as advanced expression for scaling of instances to add/remove to/from the target capacity when scale is needed. You can see more information here: Advanced expression. Example value: `\"MAX(currCapacity / 5, value * 10)\"`\n"},"cooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start. If this parameter is not specified, the default cooldown period for the group applies.\n"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingUpPolicyDimension:ElastigroupScalingUpPolicyDimension"},"description":"A list of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer","description":"The number of periods over which data is compared to the specified threshold.\n"},"isEnabled":{"type":"boolean","description":"Specifies whether the scaling policy described in this block is enabled.\n"},"maxTargetCapacity":{"type":"string"},"maximum":{"type":"string","description":"The maximal number of instances to have in the group.\n"},"metricName":{"type":"string","description":"The name of the metric, with or without spaces.\n"},"minTargetCapacity":{"type":"string","description":". The number of the desired target (and minimum) capacity\n"},"minimum":{"type":"string","description":"The minimal number of instances to have in the group.\n"},"namespace":{"type":"string","description":"The namespace for the alarm's associated metric.\n"},"operator":{"type":"string","description":"The operator to use in order to determine if the scaling policy is applicable. Valid values: `\"gt\"`, `\"gte\"`, `\"lt\"`, `\"lte\"`.\n"},"period":{"type":"integer","description":"The granularity, in seconds, of the returned datapoints. Period must be at least 60 seconds and must be a multiple of 60.\n"},"policyName":{"type":"string","description":"The name of the policy.\n"},"source":{"type":"string","description":"The source of the metric. Valid values: `\"cloudWatch\"`, `\"spectrum\"`.\n"},"statistic":{"type":"string","description":"The metric statistics to return. For information about specific statistics go to [Statistics](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/index.html?CHAP_TerminologyandKeyConcepts.html#Statistic) in the Amazon CloudWatch Developer Guide.\n"},"stepAdjustments":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingUpPolicyStepAdjustment:ElastigroupScalingUpPolicyStepAdjustment"}},"target":{"type":"string","description":"The target number of instances to have in the group.\n"},"threshold":{"type":"number","description":"The value against which the specified statistic is compared. If a \u003cspan pulumi-lang-nodejs=\"`stepAdjustment`\" pulumi-lang-dotnet=\"`StepAdjustment`\" pulumi-lang-go=\"`stepAdjustment`\" pulumi-lang-python=\"`step_adjustment`\" pulumi-lang-yaml=\"`stepAdjustment`\" pulumi-lang-java=\"`stepAdjustment`\"\u003e`step_adjustment`\u003c/span\u003e object is defined, then it cannot be specified.\n"},"unit":{"type":"string","description":"The unit for the alarm's associated metric. Valid values: `\"percent`, `\"seconds\"`, `\"microseconds\"`, `\"milliseconds\"`, `\"bytes\"`, `\"kilobytes\"`, `\"megabytes\"`, `\"gigabytes\"`, `\"terabytes\"`, `\"bits\"`, `\"kilobits\"`, `\"megabits\"`, `\"gigabits\"`, `\"terabits\"`, `\"count\"`, `\"bytes/second\"`, `\"kilobytes/second\"`, `\"megabytes/second\"`, `\"gigabytes/second\"`, `\"terabytes/second\"`, `\"bits/second\"`, `\"kilobits/second\"`, `\"megabits/second\"`, `\"gigabits/second\"`, `\"terabits/second\"`, `\"count/second\"`, `\"none\"`.\n"}},"type":"object","required":["metricName","namespace","policyName"],"language":{"nodejs":{"requiredOutputs":["evaluationPeriods","metricName","namespace","operator","period","policyName","source"]}}},"spotinst:aws/ElastigroupScalingUpPolicyDimension:ElastigroupScalingUpPolicyDimension":{"properties":{"name":{"type":"string","description":"The dimension name.\n"},"value":{"type":"string","description":"The dimension value.\n"}},"type":"object","required":["name"]},"spotinst:aws/ElastigroupScalingUpPolicyStepAdjustment:ElastigroupScalingUpPolicyStepAdjustment":{"properties":{"action":{"$ref":"#/types/spotinst:aws/ElastigroupScalingUpPolicyStepAdjustmentAction:ElastigroupScalingUpPolicyStepAdjustmentAction"},"threshold":{"type":"integer"}},"type":"object","required":["action","threshold"]},"spotinst:aws/ElastigroupScalingUpPolicyStepAdjustmentAction:ElastigroupScalingUpPolicyStepAdjustmentAction":{"properties":{"adjustment":{"type":"string"},"maxTargetCapacity":{"type":"string"},"maximum":{"type":"string"},"minTargetCapacity":{"type":"string"},"minimum":{"type":"string"},"target":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["type"]},"spotinst:aws/ElastigroupScheduledTask:ElastigroupScheduledTask":{"properties":{"adjustment":{"type":"string","description":"The number of instances to add or remove.\n"},"adjustmentPercentage":{"type":"string","description":"The percentage of instances to add or remove.\n\nUsage:\n\n"},"batchSizePercentage":{"type":"string","description":"The percentage size of each batch in the scheduled deployment roll.\n"},"cronExpression":{"type":"string","description":"A valid cron expression. The cron is running in UTC time zone and is in [Unix cron format](https://en.wikipedia.org/wiki/Cron).\n"},"frequency":{"type":"string","description":"The recurrence frequency to run this task. Supported values are `\"hourly\"`, `\"daily\"`, `\"weekly\"` and `\"continuous\"`.\n"},"gracePeriod":{"type":"string","description":"The period of time (seconds) to wait before checking a batch's health after it's deployment.\n"},"isEnabled":{"type":"boolean","description":"Setting the task to being enabled or disabled.\n"},"maxCapacity":{"type":"string","description":"The maximum number of instances the group should have.\n"},"minCapacity":{"type":"string","description":"The minimum number of instances the group should have.\n"},"scaleMaxCapacity":{"type":"string","description":"The maximum number of instances the group should have.\n"},"scaleMinCapacity":{"type":"string","description":"The minimum number of instances the group should have.\n"},"scaleTargetCapacity":{"type":"string","description":"The desired number of instances the group should have.\n"},"startTime":{"type":"string","description":"Set a start time for one time tasks.\n"},"targetCapacity":{"type":"string","description":"The desired number of instances the group should have.\n"},"taskType":{"type":"string","description":"The task type to run. Supported task types are: `\"scale\"`, `\u003cspan pulumi-lang-nodejs=\"\"backupAmi\"\" pulumi-lang-dotnet=\"\"BackupAmi\"\" pulumi-lang-go=\"\"backupAmi\"\" pulumi-lang-python=\"\"backup_ami\"\" pulumi-lang-yaml=\"\"backupAmi\"\" pulumi-lang-java=\"\"backupAmi\"\"\u003e\"backup_ami\"\u003c/span\u003e`, `\"roll\"`, `\"scaleUp\"`, `\"percentageScaleUp\"`, `\"scaleDown\"`, `\"percentageScaleDown\"`, `\"statefulUpdateCapacity\"`.\n"}},"type":"object","required":["taskType"]},"spotinst:aws/ElastigroupSignal:ElastigroupSignal":{"properties":{"name":{"type":"string","description":"The name of the signal defined for the group. Valid Values: `\"INSTANCE_READY\"`, `\"INSTANCE_READY_TO_SHUTDOWN\"`\n"},"timeout":{"type":"integer","description":"The signals defined timeout- default is 40 minutes (1800 seconds).\n\nUsage:\n\n"}},"type":"object","required":["name"]},"spotinst:aws/ElastigroupStatefulDeallocation:ElastigroupStatefulDeallocation":{"properties":{"shouldDeleteImages":{"type":"boolean","description":"For stateful groups: remove persistent images.\n"},"shouldDeleteNetworkInterfaces":{"type":"boolean","description":"For stateful groups: remove network interfaces.\n"},"shouldDeleteSnapshots":{"type":"boolean","description":"For stateful groups: remove snapshots.\n\nUsage:\n\n"},"shouldDeleteVolumes":{"type":"boolean","description":"For stateful groups: remove persistent volumes.\n"}},"type":"object"},"spotinst:aws/ElastigroupStatefulInstanceAction:ElastigroupStatefulInstanceAction":{"properties":{"statefulInstanceId":{"type":"string","description":"String, Stateful Instance ID on which the action should be performed.\n"},"type":{"type":"string","description":"String, Action type. Supported action types: \u003cspan pulumi-lang-nodejs=\"`pause`\" pulumi-lang-dotnet=\"`Pause`\" pulumi-lang-go=\"`pause`\" pulumi-lang-python=\"`pause`\" pulumi-lang-yaml=\"`pause`\" pulumi-lang-java=\"`pause`\"\u003e`pause`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`resume`\" pulumi-lang-dotnet=\"`Resume`\" pulumi-lang-go=\"`resume`\" pulumi-lang-python=\"`resume`\" pulumi-lang-yaml=\"`resume`\" pulumi-lang-java=\"`resume`\"\u003e`resume`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`recycle`\" pulumi-lang-dotnet=\"`Recycle`\" pulumi-lang-go=\"`recycle`\" pulumi-lang-python=\"`recycle`\" pulumi-lang-yaml=\"`recycle`\" pulumi-lang-java=\"`recycle`\"\u003e`recycle`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`deallocate`\" pulumi-lang-dotnet=\"`Deallocate`\" pulumi-lang-go=\"`deallocate`\" pulumi-lang-python=\"`deallocate`\" pulumi-lang-yaml=\"`deallocate`\" pulumi-lang-java=\"`deallocate`\"\u003e`deallocate`\u003c/span\u003e.\n\nUsage:\n\n"}},"type":"object","required":["statefulInstanceId","type"]},"spotinst:aws/ElastigroupTag:ElastigroupTag":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object"},"spotinst:aws/ElastigroupUpdatePolicy:ElastigroupUpdatePolicy":{"properties":{"autoApplyTags":{"type":"boolean","description":"Enables updates to tags without rolling the group when set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"rollConfig":{"$ref":"#/types/spotinst:aws/ElastigroupUpdatePolicyRollConfig:ElastigroupUpdatePolicyRollConfig","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"shouldResumeStateful":{"type":"boolean","description":"This will apply resuming action for Stateful instances in the Elastigroup upon scale up or capacity changes. Example usage will be for Elastigroups that will have scheduling rules to set a target capacity of 0 instances in the night and automatically restore the same state of the instances in the morning.\n"},"shouldRoll":{"type":"boolean","description":"Sets the enablement of the roll option.\n"}},"type":"object","required":["shouldResumeStateful","shouldRoll"]},"spotinst:aws/ElastigroupUpdatePolicyRollConfig:ElastigroupUpdatePolicyRollConfig":{"properties":{"batchSizePercentage":{"type":"integer","description":"Sets the percentage of the instances to deploy in each batch.\n"},"gracePeriod":{"type":"integer","description":"Sets the grace period for new instances to become healthy.\n"},"healthCheckType":{"type":"string","description":"Sets the health check type to use. Valid values: `\"EC2\"`, `\"ECS_CLUSTER_INSTANCE\"`, `\"ELB\"`, `\"HCS\"`, `\"TARGET_GROUP\"`, `\"NONE\"`.\n"},"strategy":{"$ref":"#/types/spotinst:aws/ElastigroupUpdatePolicyRollConfigStrategy:ElastigroupUpdatePolicyRollConfigStrategy","description":"Strategy parameters\n"},"waitForRollPercentage":{"type":"number","description":"For use with \u003cspan pulumi-lang-nodejs=\"`shouldRoll`\" pulumi-lang-dotnet=\"`ShouldRoll`\" pulumi-lang-go=\"`shouldRoll`\" pulumi-lang-python=\"`should_roll`\" pulumi-lang-yaml=\"`shouldRoll`\" pulumi-lang-java=\"`shouldRoll`\"\u003e`should_roll`\u003c/span\u003e. Sets minimum % of roll required to complete before continuing the plan. Required if \u003cspan pulumi-lang-nodejs=\"`waitForRollTimeout`\" pulumi-lang-dotnet=\"`WaitForRollTimeout`\" pulumi-lang-go=\"`waitForRollTimeout`\" pulumi-lang-python=\"`wait_for_roll_timeout`\" pulumi-lang-yaml=\"`waitForRollTimeout`\" pulumi-lang-java=\"`waitForRollTimeout`\"\u003e`wait_for_roll_timeout`\u003c/span\u003e is set.\n"},"waitForRollTimeout":{"type":"integer","description":"For use with \u003cspan pulumi-lang-nodejs=\"`shouldRoll`\" pulumi-lang-dotnet=\"`ShouldRoll`\" pulumi-lang-go=\"`shouldRoll`\" pulumi-lang-python=\"`should_roll`\" pulumi-lang-yaml=\"`shouldRoll`\" pulumi-lang-java=\"`shouldRoll`\"\u003e`should_roll`\u003c/span\u003e. Sets how long to wait for the deployed % of a roll to exceed \u003cspan pulumi-lang-nodejs=\"`waitForRollPercentage`\" pulumi-lang-dotnet=\"`WaitForRollPercentage`\" pulumi-lang-go=\"`waitForRollPercentage`\" pulumi-lang-python=\"`wait_for_roll_percentage`\" pulumi-lang-yaml=\"`waitForRollPercentage`\" pulumi-lang-java=\"`waitForRollPercentage`\"\u003e`wait_for_roll_percentage`\u003c/span\u003e before continuing the plan. Required if \u003cspan pulumi-lang-nodejs=\"`waitForRollPercentage`\" pulumi-lang-dotnet=\"`WaitForRollPercentage`\" pulumi-lang-go=\"`waitForRollPercentage`\" pulumi-lang-python=\"`wait_for_roll_percentage`\" pulumi-lang-yaml=\"`waitForRollPercentage`\" pulumi-lang-java=\"`waitForRollPercentage`\"\u003e`wait_for_roll_percentage`\u003c/span\u003e is set.\n"}},"type":"object","required":["batchSizePercentage"]},"spotinst:aws/ElastigroupUpdatePolicyRollConfigStrategy:ElastigroupUpdatePolicyRollConfigStrategy":{"properties":{"action":{"type":"string","description":"Action to take. Valid values: `REPLACE_SERVER`, `RESTART_SERVER`.\n"},"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the deployment will fail. Range \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"`100`\" pulumi-lang-dotnet=\"`100`\" pulumi-lang-go=\"`100`\" pulumi-lang-python=\"`100`\" pulumi-lang-yaml=\"`100`\" pulumi-lang-java=\"`100`\"\u003e`100`\u003c/span\u003e.\n"},"onFailure":{"$ref":"#/types/spotinst:aws/ElastigroupUpdatePolicyRollConfigStrategyOnFailure:ElastigroupUpdatePolicyRollConfigStrategyOnFailure","description":"Set detach options to the deployment.\n"},"shouldDrainInstances":{"type":"boolean","description":"Specify whether to drain incoming TCP connections before terminating a server.\n"}},"type":"object","required":["action"]},"spotinst:aws/ElastigroupUpdatePolicyRollConfigStrategyOnFailure:ElastigroupUpdatePolicyRollConfigStrategyOnFailure":{"properties":{"actionType":{"type":"string","description":"Sets the action that will take place, Accepted values are: `DETACH_OLD`, `DETACH_NEW`.\n"},"batchNum":{"type":"integer"},"drainingTimeout":{"type":"integer","description":"Indicates (in seconds) the timeout to wait until instance are detached.\n"},"shouldDecrementTargetCapacity":{"type":"boolean","description":"Decrementing the group target capacity after detaching the instances.\n\n"},"shouldHandleAllBatches":{"type":"boolean","description":"Indicator if the action should apply to all batches of the deployment or only the latest batch.\n"}},"type":"object","required":["actionType"]},"spotinst:aws/ManagedInstanceBlockDeviceMapping:ManagedInstanceBlockDeviceMapping":{"properties":{"deviceName":{"type":"string"},"ebs":{"$ref":"#/types/spotinst:aws/ManagedInstanceBlockDeviceMappingEbs:ManagedInstanceBlockDeviceMappingEbs"}},"type":"object","required":["deviceName"]},"spotinst:aws/ManagedInstanceBlockDeviceMappingEbs:ManagedInstanceBlockDeviceMappingEbs":{"properties":{"deleteOnTermination":{"type":"boolean"},"encrypted":{"type":"boolean"},"iops":{"type":"integer"},"kmsKeyId":{"type":"string"},"snapshotId":{"type":"string"},"throughput":{"type":"integer"},"volumeSize":{"type":"integer"},"volumeType":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["deleteOnTermination","volumeType"]}}},"spotinst:aws/ManagedInstanceDelete:ManagedInstanceDelete":{"properties":{"amiBackupShouldDeleteImages":{"type":"boolean"},"deallocationConfigShouldDeleteImages":{"type":"boolean"},"shouldDeleteNetworkInterfaces":{"type":"boolean"},"shouldDeleteSnapshots":{"type":"boolean"},"shouldDeleteVolumes":{"type":"boolean"},"shouldTerminateInstance":{"type":"boolean"}},"type":"object"},"spotinst:aws/ManagedInstanceIntegrationRoute53:ManagedInstanceIntegrationRoute53":{"properties":{"domains":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceIntegrationRoute53Domain:ManagedInstanceIntegrationRoute53Domain"}}},"type":"object","required":["domains"]},"spotinst:aws/ManagedInstanceIntegrationRoute53Domain:ManagedInstanceIntegrationRoute53Domain":{"properties":{"hostedZoneId":{"type":"string"},"recordSetType":{"type":"string"},"recordSets":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceIntegrationRoute53DomainRecordSet:ManagedInstanceIntegrationRoute53DomainRecordSet"}},"spotinstAcctId":{"type":"string"}},"type":"object","required":["hostedZoneId","recordSets"]},"spotinst:aws/ManagedInstanceIntegrationRoute53DomainRecordSet:ManagedInstanceIntegrationRoute53DomainRecordSet":{"properties":{"name":{"type":"string"},"usePublicDns":{"type":"boolean"},"usePublicIp":{"type":"boolean"}},"type":"object","required":["name"]},"spotinst:aws/ManagedInstanceLoadBalancer:ManagedInstanceLoadBalancer":{"properties":{"arn":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["type"]},"spotinst:aws/ManagedInstanceManagedInstanceAction:ManagedInstanceManagedInstanceAction":{"properties":{"type":{"type":"string"}},"type":"object","required":["type"]},"spotinst:aws/ManagedInstanceMetadataOptions:ManagedInstanceMetadataOptions":{"properties":{"httpPutResponseHopLimit":{"type":"integer"},"httpTokens":{"type":"string"},"instanceMetadataTags":{"type":"string"}},"type":"object","required":["httpTokens"]},"spotinst:aws/ManagedInstanceNetworkInterface:ManagedInstanceNetworkInterface":{"properties":{"associateIpv6Address":{"type":"boolean"},"associatePublicIpAddress":{"type":"boolean"},"deviceIndex":{"type":"string"}},"type":"object","required":["deviceIndex"]},"spotinst:aws/ManagedInstanceResourceRequirement:ManagedInstanceResourceRequirement":{"properties":{"excludedInstanceFamilies":{"type":"array","items":{"type":"string"}},"excludedInstanceGenerations":{"type":"array","items":{"type":"string"}},"excludedInstanceTypes":{"type":"array","items":{"type":"string"}},"requiredGpuMaximum":{"type":"integer"},"requiredGpuMinimum":{"type":"integer"},"requiredMemoryMaximum":{"type":"integer"},"requiredMemoryMinimum":{"type":"integer"},"requiredVcpuMaximum":{"type":"integer"},"requiredVcpuMinimum":{"type":"integer"}},"type":"object","required":["requiredMemoryMaximum","requiredMemoryMinimum","requiredVcpuMaximum","requiredVcpuMinimum"]},"spotinst:aws/ManagedInstanceResourceTagSpecification:ManagedInstanceResourceTagSpecification":{"properties":{"shouldTagAmis":{"type":"boolean"},"shouldTagEnis":{"type":"boolean"},"shouldTagSnapshots":{"type":"boolean"},"shouldTagVolumes":{"type":"boolean"}},"type":"object"},"spotinst:aws/ManagedInstanceRevertToSpot:ManagedInstanceRevertToSpot":{"properties":{"performAt":{"type":"string"}},"type":"object","required":["performAt"]},"spotinst:aws/ManagedInstanceScheduledTask:ManagedInstanceScheduledTask":{"properties":{"cronExpression":{"type":"string"},"frequency":{"type":"string"},"isEnabled":{"type":"boolean"},"startTime":{"type":"string"},"taskType":{"type":"string"}},"type":"object","required":["taskType"]},"spotinst:aws/ManagedInstanceTag:ManagedInstanceTag":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object"},"spotinst:aws/MrScalarApplication:MrScalarApplication":{"properties":{"args":{"type":"array","items":{"type":"string"},"description":"Arguments for EMR to pass to the application.\n"},"name":{"type":"string","description":"The MrScaler name.\n"},"version":{"type":"string","description":"T he version of the application.\n"}},"type":"object","required":["name"]},"spotinst:aws/MrScalarBootstrapActionsFile:MrScalarBootstrapActionsFile":{"properties":{"bucket":{"type":"string"},"key":{"type":"string"}},"type":"object","required":["bucket","key"]},"spotinst:aws/MrScalarConfigurationsFile:MrScalarConfigurationsFile":{"properties":{"bucket":{"type":"string"},"key":{"type":"string"}},"type":"object","required":["bucket","key"]},"spotinst:aws/MrScalarCoreEbsBlockDevice:MrScalarCoreEbsBlockDevice":{"properties":{"iops":{"type":"integer"},"sizeInGb":{"type":"integer"},"volumeType":{"type":"string"},"volumesPerInstance":{"type":"integer"}},"type":"object","required":["sizeInGb","volumeType"]},"spotinst:aws/MrScalarCoreScalingDownPolicy:MrScalarCoreScalingDownPolicy":{"properties":{"actionType":{"type":"string","description":"The type of action to perform. Allowed values are : 'adjustment', 'setMinTarget', 'setMaxTarget', 'updateCapacity', 'percentageAdjustment'\n"},"adjustment":{"type":"string","description":"The number of instances to add/remove to/from the target capacity when scale is needed.\n"},"cooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.\n"},"dimensions":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer"},"maxTargetCapacity":{"type":"string","description":"Max target capacity for scale down.\n"},"maximum":{"type":"string","description":"The maximum to set when scale is needed.\n"},"metricName":{"type":"string"},"minTargetCapacity":{"type":"string","description":"Min target capacity for scale up.\n"},"minimum":{"type":"string","description":"The minimum to set when scale is needed.\n"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string","description":"The name of the policy.\n"},"statistic":{"type":"string"},"target":{"type":"string","description":"The number of instances to set when scale is needed.\n"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","statistic","threshold","unit"]}}},"spotinst:aws/MrScalarCoreScalingUpPolicy:MrScalarCoreScalingUpPolicy":{"properties":{"actionType":{"type":"string","description":"The type of action to perform. Allowed values are : 'adjustment', 'setMinTarget', 'setMaxTarget', 'updateCapacity', 'percentageAdjustment'\n"},"adjustment":{"type":"string","description":"The number of instances to add/remove to/from the target capacity when scale is needed.\n"},"cooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.\n"},"dimensions":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer"},"maxTargetCapacity":{"type":"string","description":"Max target capacity for scale down.\n"},"maximum":{"type":"string","description":"The maximum to set when scale is needed.\n"},"metricName":{"type":"string"},"minTargetCapacity":{"type":"string","description":"Min target capacity for scale up.\n"},"minimum":{"type":"string","description":"The minimum to set when scale is needed.\n"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string","description":"The name of the policy.\n"},"statistic":{"type":"string"},"target":{"type":"string","description":"The number of instances to set when scale is needed.\n"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","statistic","threshold","unit"]}}},"spotinst:aws/MrScalarInstanceWeight:MrScalarInstanceWeight":{"properties":{"instanceType":{"type":"string","description":"The type of the instance.\n"},"weightedCapacity":{"type":"integer","description":"The weight given to the associated instance type.\n"}},"type":"object","required":["instanceType","weightedCapacity"]},"spotinst:aws/MrScalarMasterEbsBlockDevice:MrScalarMasterEbsBlockDevice":{"properties":{"iops":{"type":"integer"},"sizeInGb":{"type":"integer"},"volumeType":{"type":"string"},"volumesPerInstance":{"type":"integer"}},"type":"object","required":["sizeInGb","volumeType"]},"spotinst:aws/MrScalarProvisioningTimeout:MrScalarProvisioningTimeout":{"properties":{"timeout":{"type":"integer","description":"The amount of time (minutes) after which the cluster is automatically terminated if it's still in provisioning status. Minimum: '15'.\n"},"timeoutAction":{"type":"string","description":"The action to take if the timeout is exceeded. Valid values: \u003cspan pulumi-lang-nodejs=\"`terminate`\" pulumi-lang-dotnet=\"`Terminate`\" pulumi-lang-go=\"`terminate`\" pulumi-lang-python=\"`terminate`\" pulumi-lang-yaml=\"`terminate`\" pulumi-lang-java=\"`terminate`\"\u003e`terminate`\u003c/span\u003e, `terminateAndRetry`.\n"}},"type":"object","required":["timeout","timeoutAction"]},"spotinst:aws/MrScalarScheduledTask:MrScalarScheduledTask":{"properties":{"cron":{"type":"string","description":"A cron expression representing the schedule for the task.\n"},"desiredCapacity":{"type":"string","description":"New desired capacity for the elastigroup.\n"},"instanceGroupType":{"type":"string","description":"Select the EMR instance groups to execute the scheduled task on. Valid values: \u003cspan pulumi-lang-nodejs=\"`task`\" pulumi-lang-dotnet=\"`Task`\" pulumi-lang-go=\"`task`\" pulumi-lang-python=\"`task`\" pulumi-lang-yaml=\"`task`\" pulumi-lang-java=\"`task`\"\u003e`task`\u003c/span\u003e.\n"},"isEnabled":{"type":"boolean","description":"Enable/Disable the specified scheduling task.\n"},"maxCapacity":{"type":"string","description":"New max capacity for the elastigroup.\n"},"minCapacity":{"type":"string","description":"New min capacity for the elastigroup.\n"},"taskType":{"type":"string","description":"The type of task to be scheduled. Valid values: `setCapacity`.\n"}},"type":"object","required":["cron","instanceGroupType","taskType"]},"spotinst:aws/MrScalarStepsFile:MrScalarStepsFile":{"properties":{"bucket":{"type":"string"},"key":{"type":"string"}},"type":"object","required":["bucket","key"]},"spotinst:aws/MrScalarTag:MrScalarTag":{"properties":{"key":{"type":"string"},"value":{"type":"string","description":"Tag value.\n\n\u003ca id=\"Optional Compute Parameters\"\u003e\u003c/a\u003e\n"}},"type":"object","required":["key","value"]},"spotinst:aws/MrScalarTaskEbsBlockDevice:MrScalarTaskEbsBlockDevice":{"properties":{"iops":{"type":"integer"},"sizeInGb":{"type":"integer"},"volumeType":{"type":"string"},"volumesPerInstance":{"type":"integer"}},"type":"object","required":["sizeInGb","volumeType"]},"spotinst:aws/MrScalarTaskScalingDownPolicy:MrScalarTaskScalingDownPolicy":{"properties":{"actionType":{"type":"string","description":"The type of action to perform. Allowed values are : 'adjustment', 'setMinTarget', 'setMaxTarget', 'updateCapacity', 'percentageAdjustment'\n"},"adjustment":{"type":"string","description":"The number of instances to add/remove to/from the target capacity when scale is needed.\n"},"cooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.\n"},"dimensions":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer"},"maxTargetCapacity":{"type":"string","description":"Max target capacity for scale down.\n"},"maximum":{"type":"string","description":"The maximum to set when scale is needed.\n"},"metricName":{"type":"string"},"minTargetCapacity":{"type":"string","description":"Min target capacity for scale up.\n"},"minimum":{"type":"string","description":"The minimum to set when scale is needed.\n"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string","description":"The name of the policy.\n"},"statistic":{"type":"string"},"target":{"type":"string","description":"The number of instances to set when scale is needed.\n"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","statistic","threshold","unit"]}}},"spotinst:aws/MrScalarTaskScalingUpPolicy:MrScalarTaskScalingUpPolicy":{"properties":{"actionType":{"type":"string","description":"The type of action to perform. Allowed values are : 'adjustment', 'setMinTarget', 'setMaxTarget', 'updateCapacity', 'percentageAdjustment'\n"},"adjustment":{"type":"string","description":"The number of instances to add/remove to/from the target capacity when scale is needed.\n"},"cooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes and before the next scaling activity can start.\n"},"dimensions":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer"},"maxTargetCapacity":{"type":"string","description":"Max target capacity for scale down.\n"},"maximum":{"type":"string","description":"The maximum to set when scale is needed.\n"},"metricName":{"type":"string"},"minTargetCapacity":{"type":"string","description":"Min target capacity for scale up.\n"},"minimum":{"type":"string","description":"The minimum to set when scale is needed.\n"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string","description":"The name of the policy.\n"},"statistic":{"type":"string"},"target":{"type":"string","description":"The number of instances to set when scale is needed.\n"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","statistic","threshold","unit"]}}},"spotinst:aws/MrScalarTerminationPolicy:MrScalarTerminationPolicy":{"properties":{"statements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTerminationPolicyStatement:MrScalarTerminationPolicyStatement"}}},"type":"object","required":["statements"]},"spotinst:aws/MrScalarTerminationPolicyStatement:MrScalarTerminationPolicyStatement":{"properties":{"evaluationPeriods":{"type":"integer","description":"The number of periods over which data is compared to the specified threshold.\n"},"metricName":{"type":"string","description":"The name of the metric in CloudWatch which the statement will be based on.\n"},"namespace":{"type":"string","description":"Must contain the value: `AWS/ElasticMapReduce`.\n"},"operator":{"type":"string","description":"The operator to use in order to determine if the policy is applicable. Valid values: \u003cspan pulumi-lang-nodejs=\"`gt`\" pulumi-lang-dotnet=\"`Gt`\" pulumi-lang-go=\"`gt`\" pulumi-lang-python=\"`gt`\" pulumi-lang-yaml=\"`gt`\" pulumi-lang-java=\"`gt`\"\u003e`gt`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`gte`\" pulumi-lang-dotnet=\"`Gte`\" pulumi-lang-go=\"`gte`\" pulumi-lang-python=\"`gte`\" pulumi-lang-yaml=\"`gte`\" pulumi-lang-java=\"`gte`\"\u003e`gte`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lt`\" pulumi-lang-dotnet=\"`Lt`\" pulumi-lang-go=\"`lt`\" pulumi-lang-python=\"`lt`\" pulumi-lang-yaml=\"`lt`\" pulumi-lang-java=\"`lt`\"\u003e`lt`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lte`\" pulumi-lang-dotnet=\"`Lte`\" pulumi-lang-go=\"`lte`\" pulumi-lang-python=\"`lte`\" pulumi-lang-yaml=\"`lte`\" pulumi-lang-java=\"`lte`\"\u003e`lte`\u003c/span\u003e\n"},"period":{"type":"integer","description":"The time window in seconds over which the statistic is applied.\n"},"statistic":{"type":"string","description":"The aggregation method of the given metric. Valid Values: \u003cspan pulumi-lang-nodejs=\"`average`\" pulumi-lang-dotnet=\"`Average`\" pulumi-lang-go=\"`average`\" pulumi-lang-python=\"`average`\" pulumi-lang-yaml=\"`average`\" pulumi-lang-java=\"`average`\"\u003e`average`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sum`\" pulumi-lang-dotnet=\"`Sum`\" pulumi-lang-go=\"`sum`\" pulumi-lang-python=\"`sum`\" pulumi-lang-yaml=\"`sum`\" pulumi-lang-java=\"`sum`\"\u003e`sum`\u003c/span\u003e | `sampleCount` | \u003cspan pulumi-lang-nodejs=\"`maximum`\" pulumi-lang-dotnet=\"`Maximum`\" pulumi-lang-go=\"`maximum`\" pulumi-lang-python=\"`maximum`\" pulumi-lang-yaml=\"`maximum`\" pulumi-lang-java=\"`maximum`\"\u003e`maximum`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`minimum`\" pulumi-lang-dotnet=\"`Minimum`\" pulumi-lang-go=\"`minimum`\" pulumi-lang-python=\"`minimum`\" pulumi-lang-yaml=\"`minimum`\" pulumi-lang-java=\"`minimum`\"\u003e`minimum`\u003c/span\u003e\n"},"threshold":{"type":"number","description":"The value that the specified statistic is compared to.\n"},"unit":{"type":"string","description":"The unit for a given metric. Valid Values: \u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\"\u003e`seconds`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`microseconds`\" pulumi-lang-dotnet=\"`Microseconds`\" pulumi-lang-go=\"`microseconds`\" pulumi-lang-python=\"`microseconds`\" pulumi-lang-yaml=\"`microseconds`\" pulumi-lang-java=\"`microseconds`\"\u003e`microseconds`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`milliseconds`\" pulumi-lang-dotnet=\"`Milliseconds`\" pulumi-lang-go=\"`milliseconds`\" pulumi-lang-python=\"`milliseconds`\" pulumi-lang-yaml=\"`milliseconds`\" pulumi-lang-java=\"`milliseconds`\"\u003e`milliseconds`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`bytes`\" pulumi-lang-dotnet=\"`Bytes`\" pulumi-lang-go=\"`bytes`\" pulumi-lang-python=\"`bytes`\" pulumi-lang-yaml=\"`bytes`\" pulumi-lang-java=\"`bytes`\"\u003e`bytes`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`kilobytes`\" pulumi-lang-dotnet=\"`Kilobytes`\" pulumi-lang-go=\"`kilobytes`\" pulumi-lang-python=\"`kilobytes`\" pulumi-lang-yaml=\"`kilobytes`\" pulumi-lang-java=\"`kilobytes`\"\u003e`kilobytes`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`megabytes`\" pulumi-lang-dotnet=\"`Megabytes`\" pulumi-lang-go=\"`megabytes`\" pulumi-lang-python=\"`megabytes`\" pulumi-lang-yaml=\"`megabytes`\" pulumi-lang-java=\"`megabytes`\"\u003e`megabytes`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`gigabytes`\" pulumi-lang-dotnet=\"`Gigabytes`\" pulumi-lang-go=\"`gigabytes`\" pulumi-lang-python=\"`gigabytes`\" pulumi-lang-yaml=\"`gigabytes`\" pulumi-lang-java=\"`gigabytes`\"\u003e`gigabytes`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`terabytes`\" pulumi-lang-dotnet=\"`Terabytes`\" pulumi-lang-go=\"`terabytes`\" pulumi-lang-python=\"`terabytes`\" pulumi-lang-yaml=\"`terabytes`\" pulumi-lang-java=\"`terabytes`\"\u003e`terabytes`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`bits`\" pulumi-lang-dotnet=\"`Bits`\" pulumi-lang-go=\"`bits`\" pulumi-lang-python=\"`bits`\" pulumi-lang-yaml=\"`bits`\" pulumi-lang-java=\"`bits`\"\u003e`bits`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`kilobits`\" pulumi-lang-dotnet=\"`Kilobits`\" pulumi-lang-go=\"`kilobits`\" pulumi-lang-python=\"`kilobits`\" pulumi-lang-yaml=\"`kilobits`\" pulumi-lang-java=\"`kilobits`\"\u003e`kilobits`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`megabits`\" pulumi-lang-dotnet=\"`Megabits`\" pulumi-lang-go=\"`megabits`\" pulumi-lang-python=\"`megabits`\" pulumi-lang-yaml=\"`megabits`\" pulumi-lang-java=\"`megabits`\"\u003e`megabits`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`gigabits`\" pulumi-lang-dotnet=\"`Gigabits`\" pulumi-lang-go=\"`gigabits`\" pulumi-lang-python=\"`gigabits`\" pulumi-lang-yaml=\"`gigabits`\" pulumi-lang-java=\"`gigabits`\"\u003e`gigabits`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`terabits`\" pulumi-lang-dotnet=\"`Terabits`\" pulumi-lang-go=\"`terabits`\" pulumi-lang-python=\"`terabits`\" pulumi-lang-yaml=\"`terabits`\" pulumi-lang-java=\"`terabits`\"\u003e`terabits`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\"\u003e`percent`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`count`\" pulumi-lang-dotnet=\"`Count`\" pulumi-lang-go=\"`count`\" pulumi-lang-python=\"`count`\" pulumi-lang-yaml=\"`count`\" pulumi-lang-java=\"`count`\"\u003e`count`\u003c/span\u003e | `bytes/second` | `kilobytes/second` | `megabytes/second` | `gigabytes/second` | `terabytes/second` | `bits/second` | `kilobits/second` | `megabits/second` | `gigabits/second` | `terabits/second` | `count/second` | \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e\n"}},"type":"object","required":["metricName","namespace","threshold"]},"spotinst:aws/OceanAttachLoadBalancer:OceanAttachLoadBalancer":{"properties":{"arn":{"type":"string","description":"If type is \"TARGET_GROUP\" then an ARN is required. Otherwise is not allowed.\n"},"name":{"type":"string","description":"If type is \"CLASSIC\" then a name is required. Otherwise is not allowed.\n"},"type":{"type":"string","description":"Type of load balancer to use.\n\n"}},"type":"object","required":["type"]},"spotinst:aws/OceanAutoscaler:OceanAutoscaler":{"properties":{"autoHeadroomPercentage":{"type":"integer","description":"Set the auto headroom percentage (a number in the range [0, 200]) which controls the percentage of headroom from the cluster. Relevant only when \u003cspan pulumi-lang-nodejs=\"`autoscaleIsAutoConfig`\" pulumi-lang-dotnet=\"`AutoscaleIsAutoConfig`\" pulumi-lang-go=\"`autoscaleIsAutoConfig`\" pulumi-lang-python=\"`autoscale_is_auto_config`\" pulumi-lang-yaml=\"`autoscaleIsAutoConfig`\" pulumi-lang-java=\"`autoscaleIsAutoConfig`\"\u003e`autoscale_is_auto_config`\u003c/span\u003e toggled on.\n"},"autoscaleCooldown":{"type":"integer","description":"Cooldown period between scaling actions.\n"},"autoscaleDown":{"$ref":"#/types/spotinst:aws/OceanAutoscalerAutoscaleDown:OceanAutoscalerAutoscaleDown","description":"Auto Scaling scale down operations.\n"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:aws/OceanAutoscalerAutoscaleHeadroom:OceanAutoscalerAutoscaleHeadroom","description":"Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.\n"},"autoscaleIsAutoConfig":{"type":"boolean","description":"Automatically configure and optimize headroom resources.\n"},"autoscaleIsEnabled":{"type":"boolean","description":"Enable the Ocean Kubernetes Auto Scaler.\n"},"enableAutomaticAndManualHeadroom":{"type":"boolean","description":"enables automatic and manual headroom to work in parallel. When set to false, automatic headroom overrides all other headroom definitions manually configured, whether they are at cluster or VNG level.\n"},"extendedResourceDefinitions":{"type":"array","items":{"type":"string"},"description":"List of Ocean extended resource definitions to use in this cluster.\n\n"},"resourceLimits":{"$ref":"#/types/spotinst:aws/OceanAutoscalerResourceLimits:OceanAutoscalerResourceLimits","description":"Optionally set upper and lower bounds on the resource usage of the cluster.\n"}},"type":"object"},"spotinst:aws/OceanAutoscalerAutoscaleDown:OceanAutoscalerAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer"},"isAggressiveScaleDownEnabled":{"type":"boolean","description":"When set to 'true', the Aggressive Scale Down feature is enabled.\n"},"maxScaleDownPercentage":{"type":"number","description":"Would represent the maximum % to scale-down. Number between 1-100.\n"}},"type":"object"},"spotinst:aws/OceanAutoscalerAutoscaleHeadroom:OceanAutoscalerAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Optionally configure the number of GPUs to allocate the headroom.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MB) to allocate the headroom.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n"}},"type":"object"},"spotinst:aws/OceanAutoscalerResourceLimits:OceanAutoscalerResourceLimits":{"properties":{"maxMemoryGib":{"type":"integer","description":"The maximum memory in GiB units that can be allocated to the cluster.\n"},"maxVcpu":{"type":"integer","description":"The maximum cpu in vCPU units that can be allocated to the cluster.\n"}},"type":"object"},"spotinst:aws/OceanBlockDeviceMapping:OceanBlockDeviceMapping":{"properties":{"deviceName":{"type":"string","description":"String. Set device name. (Example: `/dev/xvda`).\n"},"ebs":{"$ref":"#/types/spotinst:aws/OceanBlockDeviceMappingEbs:OceanBlockDeviceMappingEbs","description":"Object. Set Elastic Block Store properties .\n"}},"type":"object"},"spotinst:aws/OceanBlockDeviceMappingEbs:OceanBlockDeviceMappingEbs":{"properties":{"deleteOnTermination":{"type":"boolean","description":"Boolean. Flag to delete the EBS on instance termination.\n"},"dynamicIops":{"$ref":"#/types/spotinst:aws/OceanBlockDeviceMappingEbsDynamicIops:OceanBlockDeviceMappingEbsDynamicIops","description":"Set dynamic IOPS properties. When using this object, you cannot use the \u003cspan pulumi-lang-nodejs=\"`iops`\" pulumi-lang-dotnet=\"`Iops`\" pulumi-lang-go=\"`iops`\" pulumi-lang-python=\"`iops`\" pulumi-lang-yaml=\"`iops`\" pulumi-lang-java=\"`iops`\"\u003e`iops`\u003c/span\u003e attribute. You must use one or the other.\n"},"dynamicVolumeSize":{"$ref":"#/types/spotinst:aws/OceanBlockDeviceMappingEbsDynamicVolumeSize:OceanBlockDeviceMappingEbsDynamicVolumeSize","description":"Object. Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n"},"encrypted":{"type":"boolean","description":"Boolean. Enables [EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) on the volume.\n"},"iops":{"type":"integer","description":"Must be greater than or equal to 0.\n"},"kmsKeyId":{"type":"string","description":"String. Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed CMK under which the EBS volume is encrypted.\n"},"snapshotId":{"type":"string","description":"(Optional) String. The Snapshot ID to mount by.\n"},"throughput":{"type":"integer","description":"The amount of data transferred to or from a storage device per second, you can use this param just in a case that \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e = \u003cspan pulumi-lang-nodejs=\"`gp3`\" pulumi-lang-dotnet=\"`Gp3`\" pulumi-lang-go=\"`gp3`\" pulumi-lang-python=\"`gp3`\" pulumi-lang-yaml=\"`gp3`\" pulumi-lang-java=\"`gp3`\"\u003e`gp3`\u003c/span\u003e.\n"},"volumeSize":{"type":"integer","description":"Int. The size, in GB of the volume.\n"},"volumeType":{"type":"string","description":"String. The type of the volume. (Example: \u003cspan pulumi-lang-nodejs=\"`gp2`\" pulumi-lang-dotnet=\"`Gp2`\" pulumi-lang-go=\"`gp2`\" pulumi-lang-python=\"`gp2`\" pulumi-lang-yaml=\"`gp2`\" pulumi-lang-java=\"`gp2`\"\u003e`gp2`\u003c/span\u003e).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["deleteOnTermination","encrypted","volumeType"]}}},"spotinst:aws/OceanBlockDeviceMappingEbsDynamicIops:OceanBlockDeviceMappingEbsDynamicIops":{"properties":{"baseSize":{"type":"integer","description":"Initial size for IOPS.\n"},"resource":{"type":"string"},"sizePerResourceUnit":{"type":"integer","description":"Additional size per resource unit (in IOPS). (Example: `baseSize=50`, `sizePerResourceUnit=20`, and an instance with 2 CPU is launched; its IOPS size will be: 90).\n"}},"type":"object","required":["baseSize","resource","sizePerResourceUnit"]},"spotinst:aws/OceanBlockDeviceMappingEbsDynamicVolumeSize:OceanBlockDeviceMappingEbsDynamicVolumeSize":{"properties":{"baseSize":{"type":"integer","description":"Int. Initial size for volume. (Example: 50)\n"},"resource":{"type":"string","description":"String. Resource type to increase volume size dynamically by. (Valid values: `CPU`)\n"},"sizePerResourceUnit":{"type":"integer","description":"Int. Additional size (in GB) per resource unit. (Example: `baseSize=50`, `sizePerResourceUnit=20`, and instance with 2 CPU is launched; its total disk size will be: 90GB).\n"}},"type":"object","required":["baseSize","resource","sizePerResourceUnit"]},"spotinst:aws/OceanClusterOrientation:OceanClusterOrientation":{"properties":{"availabilityVsCost":{"type":"string","description":"You can control the approach that Ocean takes while launching nodes by configuring this value. Possible values: `costOriented`,\u003cspan pulumi-lang-nodejs=\"`balanced`\" pulumi-lang-dotnet=\"`Balanced`\" pulumi-lang-go=\"`balanced`\" pulumi-lang-python=\"`balanced`\" pulumi-lang-yaml=\"`balanced`\" pulumi-lang-java=\"`balanced`\"\u003e`balanced`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`cheapest`\" pulumi-lang-dotnet=\"`Cheapest`\" pulumi-lang-go=\"`cheapest`\" pulumi-lang-python=\"`cheapest`\" pulumi-lang-yaml=\"`cheapest`\" pulumi-lang-java=\"`cheapest`\"\u003e`cheapest`\u003c/span\u003e.\n"}},"type":"object"},"spotinst:aws/OceanDetachLoadBalancer:OceanDetachLoadBalancer":{"properties":{"arn":{"type":"string","description":"If type is \"TARGET_GROUP\" then an ARN is required. Otherwise is not allowed.\n"},"name":{"type":"string","description":"If type is \"CLASSIC\" then a name is required. Otherwise is not allowed.\n"},"type":{"type":"string","description":"Type of load balancer to use.\n\n"}},"type":"object","required":["type"]},"spotinst:aws/OceanFilters:OceanFilters":{"properties":{"architectures":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will support at least one of the architectures from this list.\n"},"categories":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will belong to one of the categories types from this list.\n"},"diskTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have one of the disk type from this list.\n"},"excludeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n"},"excludeMetal":{"type":"boolean","description":"In case excludeMetal is set to true, metal types will not be available for scaling.\n"},"hypervisors":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have a hypervisor type from this list.\n"},"includeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n"},"isEnaSupported":{"type":"string","description":"Ena is supported or not.\n"},"maxGpu":{"type":"integer","description":"Maximum total number of GPUs.\n"},"maxMemoryGib":{"type":"number"},"maxNetworkPerformance":{"type":"integer","description":"Maximum Bandwidth in Gib/s of network performance.\n"},"maxVcpu":{"type":"integer"},"minEnis":{"type":"integer","description":"Minimum number of network interfaces (ENIs).\n"},"minGpu":{"type":"integer","description":"Minimum total number of GPUs.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minNetworkPerformance":{"type":"integer","description":"Minimum Bandwidth in Gib/s of network performance.\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"},"rootDeviceTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have a root device types from this list.\n"},"virtualizationTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will support at least one of the virtualization types from this list.\n"}},"type":"object"},"spotinst:aws/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions":{"properties":{"httpPutResponseHopLimit":{"type":"integer","description":"An integer from 1 through 64. The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further the instance metadata requests can travel.\n"},"httpTokens":{"type":"string","description":"Determines if a signed token is required or not. Valid values: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`required`\" pulumi-lang-dotnet=\"`Required`\" pulumi-lang-go=\"`required`\" pulumi-lang-python=\"`required`\" pulumi-lang-yaml=\"`required`\" pulumi-lang-java=\"`required`\"\u003e`required`\u003c/span\u003e.\n"}},"type":"object","required":["httpTokens"]},"spotinst:aws/OceanInstanceStorePolicy:OceanInstanceStorePolicy":{"properties":{"instanceStorePolicyType":{"type":"string","description":"Value: `\"RAID0\"` The method for using the instance store volumes (must also be defined in the userData).\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecAutoscaleDown:OceanLaunchSpecAutoscaleDown":{"properties":{"isAggressiveScaleDownEnabled":{"type":"boolean","description":"When set to 'true', the Aggressive Scale Down feature is enabled.\n"},"maxScaleDownPercentage":{"type":"number","description":"The maximum percentage allowed to scale down in a single scaling action on the nodes running in a specific VNG. Allowed only if maxScaleDownPercentage is set to null at the cluster level. Number between [0.1-100].\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Optionally configure the number of GPUS to allocate for each headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate for each headroom unit.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU.\n"}},"type":"object","required":["numOfUnits"]},"spotinst:aws/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic":{"properties":{"autoHeadroomPercentage":{"type":"integer","description":"Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.\u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e = true is set on the Ocean cluster.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping":{"properties":{"deviceName":{"type":"string","description":"String. Set device name. (Example: `/dev/xvda`).\n"},"ebs":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecBlockDeviceMappingEbs:OceanLaunchSpecBlockDeviceMappingEbs","description":"Object. Set Elastic Block Store properties .\n"},"noDevice":{"type":"string"},"virtualName":{"type":"string"}},"type":"object"},"spotinst:aws/OceanLaunchSpecBlockDeviceMappingEbs:OceanLaunchSpecBlockDeviceMappingEbs":{"properties":{"deleteOnTermination":{"type":"boolean","description":"Boolean. Flag to delete the EBS on instance termination.\n"},"dynamicIops":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecBlockDeviceMappingEbsDynamicIops:OceanLaunchSpecBlockDeviceMappingEbsDynamicIops","description":"Set dynamic IOPS properties. When using this object, you cannot use the \u003cspan pulumi-lang-nodejs=\"`iops`\" pulumi-lang-dotnet=\"`Iops`\" pulumi-lang-go=\"`iops`\" pulumi-lang-python=\"`iops`\" pulumi-lang-yaml=\"`iops`\" pulumi-lang-java=\"`iops`\"\u003e`iops`\u003c/span\u003e attribute. You must use one or the other.\n"},"dynamicVolumeSize":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize:OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize","description":"Object. Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n"},"encrypted":{"type":"boolean","description":"Boolean. Enables [EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) on the volume.\n"},"iops":{"type":"integer","description":"Int. The number of I/O operations per second (IOPS) that the volume supports.\n"},"kmsKeyId":{"type":"string","description":"String. Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed CMK under which the EBS volume is encrypted.\n"},"snapshotId":{"type":"string","description":"(Optional) String. The Snapshot ID to mount by.\n"},"throughput":{"type":"integer","description":"The amount of data transferred to or from a storage device per second, you can use this param just in a case that \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e = \u003cspan pulumi-lang-nodejs=\"`gp3`\" pulumi-lang-dotnet=\"`Gp3`\" pulumi-lang-go=\"`gp3`\" pulumi-lang-python=\"`gp3`\" pulumi-lang-yaml=\"`gp3`\" pulumi-lang-java=\"`gp3`\"\u003e`gp3`\u003c/span\u003e.\n"},"volumeSize":{"type":"integer","description":"Int. The size, in GB of the volume.\n"},"volumeType":{"type":"string","description":"String. The type of the volume. (Example: \u003cspan pulumi-lang-nodejs=\"`gp2`\" pulumi-lang-dotnet=\"`Gp2`\" pulumi-lang-go=\"`gp2`\" pulumi-lang-python=\"`gp2`\" pulumi-lang-yaml=\"`gp2`\" pulumi-lang-java=\"`gp2`\"\u003e`gp2`\u003c/span\u003e).\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecBlockDeviceMappingEbsDynamicIops:OceanLaunchSpecBlockDeviceMappingEbsDynamicIops":{"properties":{"baseSize":{"type":"integer","description":"Initial size for IOPS.\n"},"resource":{"type":"string"},"sizePerResourceUnit":{"type":"integer","description":"Additional size per resource unit (in IOPS). (Example: `baseSize=50`, `sizePerResourceUnit=20`, and an instance with 2 CPU is launched; its IOPS size will be: 90).\n"}},"type":"object","required":["baseSize","resource","sizePerResourceUnit"]},"spotinst:aws/OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize:OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize":{"properties":{"baseSize":{"type":"integer","description":"Int. Initial size for volume. (Example: 50)\n"},"resource":{"type":"string","description":"String. Resource type to increase volume size dynamically by. (Valid values: `CPU`)\n"},"sizePerResourceUnit":{"type":"integer","description":"Int. Additional size (in GB) per resource unit. (Example: `baseSize=50`, `sizePerResourceUnit=20`, and instance with 2 CPU is launched; its total disk size will be: 90GB)\n"}},"type":"object","required":["baseSize","resource","sizePerResourceUnit"]},"spotinst:aws/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions":{"properties":{"initialNodes":{"type":"integer","description":"When set to an integer greater than 0, a corresponding amount of nodes will be launched from the created Virtual Node Group. The parameter is recommended in case the\u003cspan pulumi-lang-nodejs=\" useAsTemplateOnly \" pulumi-lang-dotnet=\" UseAsTemplateOnly \" pulumi-lang-go=\" useAsTemplateOnly \" pulumi-lang-python=\" use_as_template_only \" pulumi-lang-yaml=\" useAsTemplateOnly \" pulumi-lang-java=\" useAsTemplateOnly \"\u003e use_as_template_only \u003c/span\u003e(in\u003cspan pulumi-lang-nodejs=\" spotinst.aws.Ocean \" pulumi-lang-dotnet=\" spotinst.aws.Ocean \" pulumi-lang-go=\" aws.Ocean \" pulumi-lang-python=\" aws.Ocean \" pulumi-lang-yaml=\" spotinst.aws.Ocean \" pulumi-lang-java=\" spotinst.aws.Ocean \"\u003e spotinst.aws.Ocean \u003c/span\u003eresource) is set to true during Ocean resource creation.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecDeleteOptions:OceanLaunchSpecDeleteOptions":{"properties":{"deleteNodes":{"type":"boolean","description":"When set to \"true\", all instances belonging to the deleted launch specification will be drained, detached, and terminated.\n"},"forceDelete":{"type":"boolean","description":"When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, delete even if it is the last Virtual Node Group (also, the default Virtual Node Group must be configured with `useAsTemlateOnly = true`). Should be set at creation or update, but will be used only at deletion.\n"}},"type":"object","required":["forceDelete"]},"spotinst:aws/OceanLaunchSpecElasticIpPool:OceanLaunchSpecElasticIpPool":{"properties":{"tagSelector":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecElasticIpPoolTagSelector:OceanLaunchSpecElasticIpPoolTagSelector","description":"A key-value pair, which defines an Elastic IP from the customer pool. Can be null.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecElasticIpPoolTagSelector:OceanLaunchSpecElasticIpPoolTagSelector":{"properties":{"tagKey":{"type":"string","description":"Elastic IP tag key. The Virtual Node Group will consider all Elastic IPs tagged with this tag as a part of the Elastic IP pool to use.\n"},"tagValue":{"type":"string","description":"Elastic IP tag value. Can be null.\n"}},"type":"object","required":["tagKey"]},"spotinst:aws/OceanLaunchSpecEphemeralStorage:OceanLaunchSpecEphemeralStorage":{"properties":{"ephemeralStorageDeviceName":{"type":"string","description":"Specify an alternative device name from which ephemeral storage calculations should be derived. This parameter is used when the ephemeral storage should not utilize the root device. Provide the device name configured in the VNG's BDM or AMI's BDM that differs from the default root device.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecImage:OceanLaunchSpecImage":{"properties":{"imageId":{"type":"string","description":"Identifier of the image in AWS. Valid values: any string which is not empty or null.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions":{"properties":{"httpPutResponseHopLimit":{"type":"integer","description":"An integer from 1 through 64. The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further the instance metadata requests can travel.\n"},"httpTokens":{"type":"string","description":"Determines if a signed token is required or not. Valid values: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`required`\" pulumi-lang-dotnet=\"`Required`\" pulumi-lang-go=\"`required`\" pulumi-lang-python=\"`required`\" pulumi-lang-yaml=\"`required`\" pulumi-lang-java=\"`required`\"\u003e`required`\u003c/span\u003e.\n"}},"type":"object","required":["httpTokens"]},"spotinst:aws/OceanLaunchSpecInstanceStorePolicy:OceanLaunchSpecInstanceStorePolicy":{"properties":{"instanceStorePolicyType":{"type":"string","description":"Value: `\"RAID0\"` The method for using the instance store volumes (must also be defined in the userData).\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecInstanceTypesFilters:OceanLaunchSpecInstanceTypesFilters":{"properties":{"categories":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will belong to one of the categories types from this list. Valid values: `Accelerated_computing`, `Compute_optimized`, `General_purpose`, `Memory_optimized`, `Storage_optimized`.\n"},"diskTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have one of the disk type from this list. Valid values: `NVMe`, `EBS`, `SSD`, `HDD`.\n"},"excludeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n"},"excludeMetal":{"type":"boolean","description":"In case excludeMetal is set to true, metal types will not be available for scaling.\n"},"hypervisors":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have a hypervisor type from this list. Valid values: \u003cspan pulumi-lang-nodejs=\"`nitro`\" pulumi-lang-dotnet=\"`Nitro`\" pulumi-lang-go=\"`nitro`\" pulumi-lang-python=\"`nitro`\" pulumi-lang-yaml=\"`nitro`\" pulumi-lang-java=\"`nitro`\"\u003e`nitro`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`xen`\" pulumi-lang-dotnet=\"`Xen`\" pulumi-lang-go=\"`xen`\" pulumi-lang-python=\"`xen`\" pulumi-lang-yaml=\"`xen`\" pulumi-lang-java=\"`xen`\"\u003e`xen`\u003c/span\u003e.\n"},"includeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n"},"isEnaSupported":{"type":"string","description":"Ena is supported or not.\n"},"maxGpu":{"type":"integer","description":"Maximum total number of GPUs.\n"},"maxMemoryGib":{"type":"number","description":"Maximum amount of Memory (GiB).\n"},"maxNetworkPerformance":{"type":"integer","description":"Maximum Bandwidth in Gib/s of network performance.\n"},"maxVcpu":{"type":"integer","description":"Maximum number of vcpus available.\n"},"minEnis":{"type":"integer","description":"Minimum number of network interfaces (ENIs).\n"},"minGpu":{"type":"integer","description":"Minimum total number of GPUs.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minNetworkPerformance":{"type":"integer","description":"Minimum Bandwidth in Gib/s of network performance.\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"},"rootDeviceTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have a root device types from this list. Valid values: \u003cspan pulumi-lang-nodejs=\"`ebs`\" pulumi-lang-dotnet=\"`Ebs`\" pulumi-lang-go=\"`ebs`\" pulumi-lang-python=\"`ebs`\" pulumi-lang-yaml=\"`ebs`\" pulumi-lang-java=\"`ebs`\"\u003e`ebs`\u003c/span\u003e, or `instance-store`.\n"},"virtualizationTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will support at least one of the virtualization types from this list. Valid values: \u003cspan pulumi-lang-nodejs=\"`hvm`\" pulumi-lang-dotnet=\"`Hvm`\" pulumi-lang-go=\"`hvm`\" pulumi-lang-python=\"`hvm`\" pulumi-lang-yaml=\"`hvm`\" pulumi-lang-java=\"`hvm`\"\u003e`hvm`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`paravirtual`\" pulumi-lang-dotnet=\"`Paravirtual`\" pulumi-lang-go=\"`paravirtual`\" pulumi-lang-python=\"`paravirtual`\" pulumi-lang-yaml=\"`paravirtual`\" pulumi-lang-java=\"`paravirtual`\"\u003e`paravirtual`\u003c/span\u003e.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecLabel:OceanLaunchSpecLabel":{"properties":{"key":{"type":"string","description":"The label key.\n"},"value":{"type":"string","description":"The label value.\n"}},"type":"object","required":["key","value"]},"spotinst:aws/OceanLaunchSpecLoadBalancer:OceanLaunchSpecLoadBalancer":{"properties":{"arn":{"type":"string","description":"Required if type is set to `TARGET_GROUP`\n"},"name":{"type":"string","description":"Required if type is set to `CLASSIC`\n"},"type":{"type":"string","description":"Can be set to `CLASSIC` or `TARGET_GROUP`\n"}},"type":"object","required":["type"]},"spotinst:aws/OceanLaunchSpecResourceLimit:OceanLaunchSpecResourceLimit":{"properties":{"maxInstanceCount":{"type":"integer","description":"Set a maximum number of instances per Virtual Node Group. Can be null. If set, value must be greater than or equal to 0.\n"},"minInstanceCount":{"type":"integer","description":"Set a minimum number of instances per Virtual Node Group. Can be null. If set, value must be greater than or equal to 0.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecSchedulingShutdownHours:OceanLaunchSpecSchedulingShutdownHours":{"properties":{"isEnabled":{"type":"boolean","description":"Flag to enable or disable the shutdown hours mechanism. When \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the mechanism is deactivated, and the virtual node group remains in its current state.\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"The times that the shutdown hours will apply.\n"}},"type":"object","required":["timeWindows"]},"spotinst:aws/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format.\n"},"isEnabled":{"type":"boolean","description":"Describes whether the task is enabled. When \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the task runs. When \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, it does not run.\n"},"taskHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingTaskTaskHeadroom:OceanLaunchSpecSchedulingTaskTaskHeadroom"},"description":"The config of this scheduled task. Depends on the value of taskType.\n"},"taskType":{"type":"string","description":"The activity that you are scheduling. Valid values: \"manualHeadroomUpdate\".\n"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:aws/OceanLaunchSpecSchedulingTaskTaskHeadroom:OceanLaunchSpecSchedulingTaskTaskHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Optionally configure the number of GPUS to allocate for each headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate for each headroom unit.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU.\n"}},"type":"object","required":["numOfUnits"]},"spotinst:aws/OceanLaunchSpecStartupTaint:OceanLaunchSpecStartupTaint":{"properties":{"effect":{"type":"string","description":"Set startup taint effect.\n"},"key":{"type":"string","description":"Set startup taint key.\n"},"value":{"type":"string","description":"Set startup taint value.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy":{"properties":{"drainingTimeout":{"type":"integer","description":"The configurable amount of time that Ocean will wait for the draining process to complete before terminating an instance. If you have not defined a draining timeout, the default of 300 seconds will be used.\n"},"orientation":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStrategyOrientation:OceanLaunchSpecStrategyOrientation","description":"Vng orientation configuration.\n"},"spotPercentage":{"type":"integer","description":"The desired percentage of the Spot instances out of all running instances for this VNG. Only available when the field is not set in the cluster directly (cluster.strategy.spotPercentage).\n"},"utilizeCommitments":{"type":"boolean","description":"When set as ‘true’, if savings plans commitments have available capacity, Ocean will utilize them alongside RIs (if exist) to maximize cost efficiency. If the value is set as 'null', it will automatically be inherited from the cluster level.\n"},"utilizeReservedInstances":{"type":"boolean","description":"When set as ‘true’, if reserved instances exist, Ocean will utilize them before launching spot instances. If the value is set as 'null', it will automatically be inherited from the cluster level.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecStrategyOrientation:OceanLaunchSpecStrategyOrientation":{"properties":{"availabilityVsCost":{"type":"string","description":"Set this value to control the approach that Ocean takes while launching nodes. Valid values: `\"costOriented\"`, `\"cheapest\"`, `\"balanced\"`.\n"}},"type":"object"},"spotinst:aws/OceanLaunchSpecTag:OceanLaunchSpecTag":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:aws/OceanLaunchSpecTaint:OceanLaunchSpecTaint":{"properties":{"effect":{"type":"string","description":"The effect of the taint. Valid values: `\"NoSchedule\"`, `\"PreferNoSchedule\"`, `\"NoExecute\"`.\n"},"key":{"type":"string","description":"The taint key.\n"},"value":{"type":"string","description":"The taint value.\n"}},"type":"object","required":["effect","key","value"]},"spotinst:aws/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy":{"properties":{"rollConfig":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecUpdatePolicyRollConfig:OceanLaunchSpecUpdatePolicyRollConfig","description":"Holds the roll configuration.\n"},"shouldRoll":{"type":"boolean","description":"Enables the roll.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:aws/OceanLaunchSpecUpdatePolicyRollConfig:OceanLaunchSpecUpdatePolicyRollConfig":{"properties":{"batchSizePercentage":{"type":"integer","description":"Sets the percentage of the instances to deploy in each batch.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e we honor PDB during the instance replacement.\n\n\n"}},"type":"object","required":["batchSizePercentage"]},"spotinst:aws/OceanLoadBalancer:OceanLoadBalancer":{"properties":{"arn":{"type":"string","description":"Required if type is set to `TARGET_GROUP`\n"},"name":{"type":"string","description":"Required if type is set to `CLASSIC`\n"},"type":{"type":"string","description":"Can be set to `CLASSIC` or `TARGET_GROUP`\n"}},"type":"object"},"spotinst:aws/OceanLogging:OceanLogging":{"properties":{"export":{"$ref":"#/types/spotinst:aws/OceanLoggingExport:OceanLoggingExport","description":"Logging Export configuration.\n"}},"type":"object"},"spotinst:aws/OceanLoggingExport:OceanLoggingExport":{"properties":{"s3s":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLoggingExportS3:OceanLoggingExportS3"},"description":"Exports your cluster's logs to the S3 bucket and subdir configured on the S3 data integration given.\n"}},"type":"object"},"spotinst:aws/OceanLoggingExportS3:OceanLoggingExportS3":{"properties":{"id":{"type":"string","description":"The identifier of The S3 data integration to export the logs to.\n"}},"type":"object","required":["id"]},"spotinst:aws/OceanResourceTagSpecification:OceanResourceTagSpecification":{"properties":{"shouldTagVolumes":{"type":"boolean","description":"Specify if Volume resources will be tagged with Virtual Node Group tags or Ocean tags.\n"}},"type":"object"},"spotinst:aws/OceanScheduledTask:OceanScheduledTask":{"properties":{"shutdownHours":{"$ref":"#/types/spotinst:aws/OceanScheduledTaskShutdownHours:OceanScheduledTaskShutdownHours","description":"Set shutdown hours for cluster object.\n"},"tasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanScheduledTaskTask:OceanScheduledTaskTask"},"description":"The scheduling tasks for the cluster.\n"}},"type":"object"},"spotinst:aws/OceanScheduledTaskShutdownHours:OceanScheduledTaskShutdownHours":{"properties":{"isEnabled":{"type":"boolean","description":"Toggle the shutdown hours task. (Example: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"Set time windows for shutdown hours. Specify a list of `timeWindows` with at least one time window Each string is in the format of: `ddd:hh:mm-ddd:hh:mm` where \u003cspan pulumi-lang-nodejs=\"`ddd`\" pulumi-lang-dotnet=\"`Ddd`\" pulumi-lang-go=\"`ddd`\" pulumi-lang-python=\"`ddd`\" pulumi-lang-yaml=\"`ddd`\" pulumi-lang-java=\"`ddd`\"\u003e`ddd`\u003c/span\u003e = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat, \u003cspan pulumi-lang-nodejs=\"`hh`\" pulumi-lang-dotnet=\"`Hh`\" pulumi-lang-go=\"`hh`\" pulumi-lang-python=\"`hh`\" pulumi-lang-yaml=\"`hh`\" pulumi-lang-java=\"`hh`\"\u003e`hh`\u003c/span\u003e = hour 24 = 0 -23, \u003cspan pulumi-lang-nodejs=\"`mm`\" pulumi-lang-dotnet=\"`Mm`\" pulumi-lang-go=\"`mm`\" pulumi-lang-python=\"`mm`\" pulumi-lang-yaml=\"`mm`\" pulumi-lang-java=\"`mm`\"\u003e`mm`\u003c/span\u003e = minute = 0 - 59. Time windows should not overlap. Required if `cluster.scheduling.isEnabled` is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. (Example: `Fri:15:30-Wed:14:30`).\n"}},"type":"object","required":["timeWindows"]},"spotinst:aws/OceanScheduledTaskTask:OceanScheduledTaskTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e or `cronExpression` should be used at a time. Required for `cluster.scheduling.tasks` object. (Example: `0 1 * * *`).\n"},"isEnabled":{"type":"boolean","description":"Describes whether the task is enabled. When true the task should run when false it should not run. Required for `cluster.scheduling.tasks` object.\n"},"parameters":{"$ref":"#/types/spotinst:aws/OceanScheduledTaskTaskParameters:OceanScheduledTaskTaskParameters","description":"This filed will be compatible to the \u003cspan pulumi-lang-nodejs=\"`taskType`\" pulumi-lang-dotnet=\"`TaskType`\" pulumi-lang-go=\"`taskType`\" pulumi-lang-python=\"`task_type`\" pulumi-lang-yaml=\"`taskType`\" pulumi-lang-java=\"`taskType`\"\u003e`task_type`\u003c/span\u003e field. If \u003cspan pulumi-lang-nodejs=\"`taskType`\" pulumi-lang-dotnet=\"`TaskType`\" pulumi-lang-go=\"`taskType`\" pulumi-lang-python=\"`task_type`\" pulumi-lang-yaml=\"`taskType`\" pulumi-lang-java=\"`taskType`\"\u003e`task_type`\u003c/span\u003e is defined as `clusterRoll`, user cluster roll object in parameters.\n"},"taskType":{"type":"string","description":"Valid values: `clusterRoll` `amiAutoUpdate`. Required for `cluster.scheduling.tasks`\n"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:aws/OceanScheduledTaskTaskParameters:OceanScheduledTaskTaskParameters":{"properties":{"amiAutoUpdate":{"$ref":"#/types/spotinst:aws/OceanScheduledTaskTaskParametersAmiAutoUpdate:OceanScheduledTaskTaskParametersAmiAutoUpdate","description":"Set amiAutoUpdate object\n"},"parametersClusterRoll":{"$ref":"#/types/spotinst:aws/OceanScheduledTaskTaskParametersParametersClusterRoll:OceanScheduledTaskTaskParametersParametersClusterRoll","description":"Set clusterRoll object\n"}},"type":"object"},"spotinst:aws/OceanScheduledTaskTaskParametersAmiAutoUpdate:OceanScheduledTaskTaskParametersAmiAutoUpdate":{"properties":{"amiAutoUpdateClusterRoll":{"$ref":"#/types/spotinst:aws/OceanScheduledTaskTaskParametersAmiAutoUpdateAmiAutoUpdateClusterRoll:OceanScheduledTaskTaskParametersAmiAutoUpdateAmiAutoUpdateClusterRoll","description":"Set clusterRoll object\n"},"applyRoll":{"type":"boolean","description":"When the AMI is updated according to the configuration set, a cluster roll can be triggered\n"},"minorVersion":{"type":"boolean","description":"When set to 'true', the auto-update process will update the VNGs’ AMI with the AMI to match the Kubernetes control plane version. either \"patch\" or \u003cspan pulumi-lang-nodejs=\"\"minorVersion\"\" pulumi-lang-dotnet=\"\"MinorVersion\"\" pulumi-lang-go=\"\"minorVersion\"\" pulumi-lang-python=\"\"minor_version\"\" pulumi-lang-yaml=\"\"minorVersion\"\" pulumi-lang-java=\"\"minorVersion\"\"\u003e\"minor_version\"\u003c/span\u003e must be true.\n"},"patch":{"type":"boolean","description":"When set to 'true', the auto-update process will update the VNGs’ images with the latest security patches. either \"patch\" or \"minorVersion\" must be true.\n"}},"type":"object"},"spotinst:aws/OceanScheduledTaskTaskParametersAmiAutoUpdateAmiAutoUpdateClusterRoll:OceanScheduledTaskTaskParametersAmiAutoUpdateAmiAutoUpdateClusterRoll":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"},"comment":{"type":"string","description":"Add a \u003cspan pulumi-lang-nodejs=\"`comment`\" pulumi-lang-dotnet=\"`Comment`\" pulumi-lang-go=\"`comment`\" pulumi-lang-python=\"`comment`\" pulumi-lang-yaml=\"`comment`\" pulumi-lang-java=\"`comment`\"\u003e`comment`\u003c/span\u003e description for the roll. The \u003cspan pulumi-lang-nodejs=\"`comment`\" pulumi-lang-dotnet=\"`Comment`\" pulumi-lang-go=\"`comment`\" pulumi-lang-python=\"`comment`\" pulumi-lang-yaml=\"`comment`\" pulumi-lang-java=\"`comment`\"\u003e`comment`\u003c/span\u003e is limited to 256 chars\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n"}},"type":"object"},"spotinst:aws/OceanScheduledTaskTaskParametersParametersClusterRoll:OceanScheduledTaskTaskParametersParametersClusterRoll":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"},"comment":{"type":"string","description":"Add a \u003cspan pulumi-lang-nodejs=\"`comment`\" pulumi-lang-dotnet=\"`Comment`\" pulumi-lang-go=\"`comment`\" pulumi-lang-python=\"`comment`\" pulumi-lang-yaml=\"`comment`\" pulumi-lang-java=\"`comment`\"\u003e`comment`\u003c/span\u003e description for the roll. The \u003cspan pulumi-lang-nodejs=\"`comment`\" pulumi-lang-dotnet=\"`Comment`\" pulumi-lang-go=\"`comment`\" pulumi-lang-python=\"`comment`\" pulumi-lang-yaml=\"`comment`\" pulumi-lang-java=\"`comment`\"\u003e`comment`\u003c/span\u003e is limited to 256 chars\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n\n"}},"type":"object"},"spotinst:aws/OceanStartupTaint:OceanStartupTaint":{"properties":{"effect":{"type":"string","description":"Set startup taint effect.\n"},"key":{"type":"string","description":"Set startup taint key.\n"},"value":{"type":"string","description":"Set startup taint value.\n"}},"type":"object"},"spotinst:aws/OceanTag:OceanTag":{"properties":{"key":{"type":"string","description":"The tag key.\n"},"value":{"type":"string","description":"The tag value.\n"}},"type":"object","required":["key","value"]},"spotinst:aws/OceanUpdatePolicy:OceanUpdatePolicy":{"properties":{"autoApplyTags":{"type":"boolean","description":"will update instance tags on the fly without rolling the cluster.\n"},"conditionedRoll":{"type":"boolean","description":"Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as AMI, Key Pair, user data, instance types, load balancers, etc).\n"},"conditionedRollParams":{"type":"array","items":{"type":"string"},"description":"A custom list of attributes will trigger the cluster roll operation (overrides the predefined list of parameters). Valid only when the \u003cspan pulumi-lang-nodejs=\"`conditionedRoll`\" pulumi-lang-dotnet=\"`ConditionedRoll`\" pulumi-lang-go=\"`conditionedRoll`\" pulumi-lang-python=\"`conditioned_roll`\" pulumi-lang-yaml=\"`conditionedRoll`\" pulumi-lang-java=\"`conditionedRoll`\"\u003e`conditioned_roll`\u003c/span\u003e parameter is set to true. (Valid values: `\u003cspan pulumi-lang-nodejs=\"\"subnetIds\"\" pulumi-lang-dotnet=\"\"SubnetIds\"\" pulumi-lang-go=\"\"subnetIds\"\" pulumi-lang-python=\"\"subnet_ids\"\" pulumi-lang-yaml=\"\"subnetIds\"\" pulumi-lang-java=\"\"subnetIds\"\"\u003e\"subnet_ids\"\u003c/span\u003e`,`\"whitelist\"`,`\"blacklist\"`,`\u003cspan pulumi-lang-nodejs=\"\"userData\"\" pulumi-lang-dotnet=\"\"UserData\"\" pulumi-lang-go=\"\"userData\"\" pulumi-lang-python=\"\"user_data\"\" pulumi-lang-yaml=\"\"userData\"\" pulumi-lang-java=\"\"userData\"\"\u003e\"user_data\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"imageId\"\" pulumi-lang-dotnet=\"\"ImageId\"\" pulumi-lang-go=\"\"imageId\"\" pulumi-lang-python=\"\"image_id\"\" pulumi-lang-yaml=\"\"imageId\"\" pulumi-lang-java=\"\"imageId\"\"\u003e\"image_id\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"securityGroups\"\" pulumi-lang-dotnet=\"\"SecurityGroups\"\" pulumi-lang-go=\"\"securityGroups\"\" pulumi-lang-python=\"\"security_groups\"\" pulumi-lang-yaml=\"\"securityGroups\"\" pulumi-lang-java=\"\"securityGroups\"\"\u003e\"security_groups\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"keyName\"\" pulumi-lang-dotnet=\"\"KeyName\"\" pulumi-lang-go=\"\"keyName\"\" pulumi-lang-python=\"\"key_name\"\" pulumi-lang-yaml=\"\"keyName\"\" pulumi-lang-java=\"\"keyName\"\"\u003e\"key_name\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"iamInstanceProfile\"\" pulumi-lang-dotnet=\"\"IamInstanceProfile\"\" pulumi-lang-go=\"\"iamInstanceProfile\"\" pulumi-lang-python=\"\"iam_instance_profile\"\" pulumi-lang-yaml=\"\"iamInstanceProfile\"\" pulumi-lang-java=\"\"iamInstanceProfile\"\"\u003e\"iam_instance_profile\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"associatePublicIpAddress\"\" pulumi-lang-dotnet=\"\"AssociatePublicIpAddress\"\" pulumi-lang-go=\"\"associatePublicIpAddress\"\" pulumi-lang-python=\"\"associate_public_ip_address\"\" pulumi-lang-yaml=\"\"associatePublicIpAddress\"\" pulumi-lang-java=\"\"associatePublicIpAddress\"\"\u003e\"associate_public_ip_address\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"loadBalancers\"\" pulumi-lang-dotnet=\"\"LoadBalancers\"\" pulumi-lang-go=\"\"loadBalancers\"\" pulumi-lang-python=\"\"load_balancers\"\" pulumi-lang-yaml=\"\"loadBalancers\"\" pulumi-lang-java=\"\"loadBalancers\"\"\u003e\"load_balancers\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"instanceMetadataOptions\"\" pulumi-lang-dotnet=\"\"InstanceMetadataOptions\"\" pulumi-lang-go=\"\"instanceMetadataOptions\"\" pulumi-lang-python=\"\"instance_metadata_options\"\" pulumi-lang-yaml=\"\"instanceMetadataOptions\"\" pulumi-lang-java=\"\"instanceMetadataOptions\"\"\u003e\"instance_metadata_options\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"ebsOptimized\"\" pulumi-lang-dotnet=\"\"EbsOptimized\"\" pulumi-lang-go=\"\"ebsOptimized\"\" pulumi-lang-python=\"\"ebs_optimized\"\" pulumi-lang-yaml=\"\"ebsOptimized\"\" pulumi-lang-java=\"\"ebsOptimized\"\"\u003e\"ebs_optimized\"\u003c/span\u003e`,`\u003cspan pulumi-lang-nodejs=\"\"rootVolumeSize\"\" pulumi-lang-dotnet=\"\"RootVolumeSize\"\" pulumi-lang-go=\"\"rootVolumeSize\"\" pulumi-lang-python=\"\"root_volume_size\"\" pulumi-lang-yaml=\"\"rootVolumeSize\"\" pulumi-lang-java=\"\"rootVolumeSize\"\"\u003e\"root_volume_size\"\u003c/span\u003e`)\n"},"rollConfig":{"$ref":"#/types/spotinst:aws/OceanUpdatePolicyRollConfig:OceanUpdatePolicyRollConfig","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"shouldRoll":{"type":"boolean","description":"Enables the roll.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:aws/OceanUpdatePolicyRollConfig:OceanUpdatePolicyRollConfig":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Default: 50. Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Sets the percentage of the instances to deploy in each batch.\n"},"launchSpecIds":{"type":"array","items":{"type":"string"},"description":"List of virtual node group identifiers to be rolled.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e we honor PDB during the instance replacement.\n"}},"type":"object","required":["batchSizePercentage"]},"spotinst:aws/SuspensionSuspension:SuspensionSuspension":{"properties":{"name":{"type":"string","description":"The name of process to suspend. Valid values: `\"AUTO_HEALING\" , \"OUT_OF_STRATEGY\", \"PREVENTIVE_REPLACEMENT\", \"REVERT_PREFERRED\", or \"SCHEDULING\"`.\n"}},"type":"object","required":["name"]},"spotinst:azure/OceanNpAutoscaler:OceanNpAutoscaler":{"properties":{"autoscaleDown":{"$ref":"#/types/spotinst:azure/OceanNpAutoscalerAutoscaleDown:OceanNpAutoscalerAutoscaleDown","description":"Auto Scaling scale down operations.\n"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:azure/OceanNpAutoscalerAutoscaleHeadroom:OceanNpAutoscalerAutoscaleHeadroom","description":"Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.\n"},"autoscaleIsEnabled":{"type":"boolean","description":"Enable the Ocean Kubernetes Autoscaler.\n"},"resourceLimits":{"$ref":"#/types/spotinst:azure/OceanNpAutoscalerResourceLimits:OceanNpAutoscalerResourceLimits","description":"Optionally set upper and lower bounds on the resource usage of the cluster.\n"}},"type":"object"},"spotinst:azure/OceanNpAutoscalerAutoscaleDown:OceanNpAutoscalerAutoscaleDown":{"properties":{"maxScaleDownPercentage":{"type":"integer","description":"The maximum percentage allowed to scale down in a single scaling action.\n"}},"type":"object"},"spotinst:azure/OceanNpAutoscalerAutoscaleHeadroom:OceanNpAutoscalerAutoscaleHeadroom":{"properties":{"automatic":{"$ref":"#/types/spotinst:azure/OceanNpAutoscalerAutoscaleHeadroomAutomatic:OceanNpAutoscalerAutoscaleHeadroomAutomatic","description":"[Automatic headroom](https://docs.spot.io/ocean/features/headroom?id=automatic-headroom) configuration.\n"}},"type":"object"},"spotinst:azure/OceanNpAutoscalerAutoscaleHeadroomAutomatic:OceanNpAutoscalerAutoscaleHeadroomAutomatic":{"properties":{"isEnabled":{"type":"boolean","description":"Enable automatic headroom. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, Ocean configures and optimizes headroom automatically.\n"},"percentage":{"type":"integer","description":"Optionally set a number between 0-100 to control the percentage of total cluster resources dedicated to headroom.\n"}},"type":"object"},"spotinst:azure/OceanNpAutoscalerResourceLimits:OceanNpAutoscalerResourceLimits":{"properties":{"maxMemoryGib":{"type":"integer","description":"The maximum memory in GiB units that can be allocated to the cluster.\n"},"maxVcpu":{"type":"integer","description":"The maximum cpu in vCpu units that can be allocated to the cluster.\n"}},"type":"object"},"spotinst:azure/OceanNpFilters:OceanNpFilters":{"properties":{"acceleratedNetworking":{"type":"string","description":"In case acceleratedNetworking is set to Enabled, accelerated networking applies only to the VM that enables it.\n"},"architectures":{"type":"array","items":{"type":"string"},"description":"The filtered vm sizes will support at least one of the architectures from this list.\u003cspan pulumi-lang-nodejs=\" x8664 \" pulumi-lang-dotnet=\" X8664 \" pulumi-lang-go=\" x8664 \" pulumi-lang-python=\" x86_64 \" pulumi-lang-yaml=\" x8664 \" pulumi-lang-java=\" x8664 \"\u003e x86_64 \u003c/span\u003eincludes both intel64 and amd64.\n"},"diskPerformance":{"type":"string","description":"The filtered vm sizes will support at least one of the classes from this list.\n"},"excludeSeries":{"type":"array","items":{"type":"string"},"description":"Vm sizes belonging to a series from the list will not be available for scaling\n"},"gpuTypes":{"type":"array","items":{"type":"string"},"description":"The filtered gpu types will belong to one of the gpu types from this list.\n"},"maxGpu":{"type":"number","description":"Maximum number of GPUs available.\n"},"maxMemoryGib":{"type":"number","description":"Maximum amount of Memory (GiB).\n"},"maxVcpu":{"type":"integer","description":"Maximum number of vcpus available.\n"},"minDisk":{"type":"integer","description":"Minimum number of data disks available.\n"},"minGpu":{"type":"number","description":"Minimum number of GPUs available.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minNics":{"type":"integer","description":"Minimum number of network interfaces.\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"},"series":{"type":"array","items":{"type":"string"},"description":"Vm sizes belonging to a series from the list will be available for scaling. We can specify include list and series can be specified with capital or small letters, with space, without space or with underscore '_' .  For example all of these \"DSv2\", \"Ds v2\", \u003cspan pulumi-lang-nodejs=\"\"dsV2\"\" pulumi-lang-dotnet=\"\"DsV2\"\" pulumi-lang-go=\"\"dsV2\"\" pulumi-lang-python=\"\"ds_v2\"\" pulumi-lang-yaml=\"\"dsV2\"\" pulumi-lang-java=\"\"dsV2\"\"\u003e\"ds_v2\"\u003c/span\u003e refer to same DS_v2 series.\n"},"vmTypes":{"type":"array","items":{"type":"string"},"description":"The filtered vm types will belong to one of the vm types from this list.\n"}},"type":"object"},"spotinst:azure/OceanNpHeadroom:OceanNpHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Amount of GPU to allocate for headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Configure the amount of memory (MiB) to allocate the headroom.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n"}},"type":"object"},"spotinst:azure/OceanNpHealth:OceanNpHealth":{"properties":{"gracePeriod":{"type":"integer","description":"The amount of time to wait, in seconds, from the moment the instance has launched until monitoring of its health checks begins.\n"}},"type":"object"},"spotinst:azure/OceanNpLinuxOsConfig:OceanNpLinuxOsConfig":{"properties":{"sysctls":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpLinuxOsConfigSysctl:OceanNpLinuxOsConfigSysctl"},"description":"System Controls\n"}},"type":"object"},"spotinst:azure/OceanNpLinuxOsConfigSysctl:OceanNpLinuxOsConfigSysctl":{"properties":{"vmMaxMapCount":{"type":"integer","description":"Maximum number of memory map areas a process may have. Can be configured only if OS type is Linux.\n"}},"type":"object"},"spotinst:azure/OceanNpLogging:OceanNpLogging":{"properties":{"export":{"$ref":"#/types/spotinst:azure/OceanNpLoggingExport:OceanNpLoggingExport","description":"The Ocean AKS Logging Export object.\n"}},"type":"object"},"spotinst:azure/OceanNpLoggingExport:OceanNpLoggingExport":{"properties":{"azureBlobs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpLoggingExportAzureBlob:OceanNpLoggingExportAzureBlob"},"description":"Exports your cluster's logs to the storage account and container configured on the storage account [data integration](https://docs.spot.io/ocean/features/log-integration-with-azure-blob?id=log-integration-with-azure-blob) given. Each file contains logs of 3 minutes where each log is separated by a new line and saved as a JSON. The file formats are \u003cspan pulumi-lang-nodejs=\"`container`\" pulumi-lang-dotnet=\"`Container`\" pulumi-lang-go=\"`container`\" pulumi-lang-python=\"`container`\" pulumi-lang-yaml=\"`container`\" pulumi-lang-java=\"`container`\"\u003e`container`\u003c/span\u003e/`accountId``oceanId``oceanName`_`startTime`.log\n"}},"type":"object"},"spotinst:azure/OceanNpLoggingExportAzureBlob:OceanNpLoggingExportAzureBlob":{"properties":{"id":{"type":"string","description":"The identifier of The Azure Blob data integration to export the logs to.\n"}},"type":"object"},"spotinst:azure/OceanNpScheduling:OceanNpScheduling":{"properties":{"shutdownHours":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingShutdownHours:OceanNpSchedulingShutdownHours","description":"An object used to specify times that the nodes in the virtual node group will be stopped.\n"},"suspensionHours":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingSuspensionHours:OceanNpSchedulingSuspensionHours"},"tasks":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingTask:OceanNpSchedulingTask"}}},"type":"object"},"spotinst:azure/OceanNpSchedulingShutdownHours:OceanNpSchedulingShutdownHours":{"properties":{"isEnabled":{"type":"boolean"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"The times that the shutdown hours will apply. Required if \u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e is true.\n"}},"type":"object"},"spotinst:azure/OceanNpSchedulingSuspensionHours:OceanNpSchedulingSuspensionHours":{"properties":{"isEnabled":{"type":"boolean"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"The times that the shutdown hours will apply. Required if \u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e is true.\n"}},"type":"object"},"spotinst:azure/OceanNpSchedulingTask:OceanNpSchedulingTask":{"properties":{"cronExpression":{"type":"string"},"isEnabled":{"type":"boolean"},"parameters":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingTaskParameters:OceanNpSchedulingTaskParameters"},"taskType":{"type":"string"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:azure/OceanNpSchedulingTaskParameters:OceanNpSchedulingTaskParameters":{"properties":{"parametersClusterRoll":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingTaskParametersParametersClusterRoll:OceanNpSchedulingTaskParametersParametersClusterRoll"},"parametersUpgradeConfig":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingTaskParametersParametersUpgradeConfig:OceanNpSchedulingTaskParametersParametersUpgradeConfig"}},"type":"object"},"spotinst:azure/OceanNpSchedulingTaskParametersParametersClusterRoll:OceanNpSchedulingTaskParametersParametersClusterRoll":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy nodes in single batch. If the amount of healthy nodes in single batch is under the threshold, the roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100. In case of null as value, the default value in the backend will be 20%.\n"},"comment":{"type":"string","description":"Add a comment description for the roll. The comment is limited to 256 chars and optional.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the nodes replacement.\n"},"respectRestrictScaleDown":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n"},"vngIds":{"type":"array","items":{"type":"string"},"description":"List of virtual node group identifiers to be rolled. Each identifier is a string. vngIds can be null, and cannot be used together with nodeNames and nodePoolNames.\n"}},"type":"object"},"spotinst:azure/OceanNpSchedulingTaskParametersParametersUpgradeConfig:OceanNpSchedulingTaskParametersParametersUpgradeConfig":{"properties":{"applyRoll":{"type":"boolean"},"rollParameters":{"$ref":"#/types/spotinst:azure/OceanNpSchedulingTaskParametersParametersUpgradeConfigRollParameters:OceanNpSchedulingTaskParametersParametersUpgradeConfigRollParameters"},"scopeVersion":{"type":"string"}},"type":"object"},"spotinst:azure/OceanNpSchedulingTaskParametersParametersUpgradeConfigRollParameters:OceanNpSchedulingTaskParametersParametersUpgradeConfigRollParameters":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy nodes in single batch. If the amount of healthy nodes in single batch is under the threshold, the roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100. In case of null as value, the default value in the backend will be 20%.\n"},"comment":{"type":"string","description":"Add a comment description for the roll. The comment is limited to 256 chars and optional.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the nodes replacement.\n"},"respectRestrictScaleDown":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n"}},"type":"object"},"spotinst:azure/OceanNpTaint:OceanNpTaint":{"properties":{"effect":{"type":"string","description":"Set taint effect.\n"},"key":{"type":"string","description":"Set taint key. The following taint keys are not allowed: [\"node.kubernetes.io/not-ready\",  \"node.kubernetes.io/unreachable\", \"node.kubernetes.io/unschedulable\",  \"node.kubernetes.io/memory-pressure\",  \"node.kubernetes.io/disk-pressure\",  \"node.kubernetes.io/network-unavailable\",  \"node.kubernetes.io/pid-pressure\",  \"node.kubernetes.io/out-of-service\",  \"node.cloudprovider.kubernetes.io/uninitialized\",  \"node.cloudprovider.kubernetes.io/shutdown\", \"kubernetes.azure.com/scalesetpriority\"]\n"},"value":{"type":"string","description":"Set taint value.\n"}},"type":"object","required":["effect","key","value"]},"spotinst:azure/OceanNpUpdatePolicy:OceanNpUpdatePolicy":{"properties":{"conditionedRoll":{"type":"boolean","description":"Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as availability_zones, max_pods_per_node, enable_node_public_ip, os_disk_size_gb, os_disk_type, os_sku, kubernetes_version, vnet_subnet_ids, pod_subnet_ids, labels, taints and tags).\n"},"rollConfig":{"$ref":"#/types/spotinst:azure/OceanNpUpdatePolicyRollConfig:OceanNpUpdatePolicyRollConfig","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"shouldRoll":{"type":"boolean","description":"If set to true along with the cluster update, roll will be triggered.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:azure/OceanNpUpdatePolicyRollConfig:OceanNpUpdatePolicyRollConfig":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy nodes in single batch. If the amount of healthy nodes in single batch is under the threshold, the roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100. In case of null as value, the default value in the backend will be 20%.\n"},"comment":{"type":"string","description":"Add a comment description for the roll. The comment is limited to 256 chars and optional.\n"},"nodeNames":{"type":"array","items":{"type":"string"},"description":"List of node names to be rolled. Each identifier is a string. nodeNames can be null, and cannot be used together with nodePoolNames and vngIds.\n"},"nodePoolNames":{"type":"array","items":{"type":"string"},"description":"List of node pools to be rolled. Each node pool name is a string. nodePoolNames can be null, and cannot be used together with nodeNames and vngIds.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the nodes replacement.\n"},"respectRestrictScaleDown":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n"},"vngIds":{"type":"array","items":{"type":"string"},"description":"List of virtual node group identifiers to be rolled. Each identifier is a string. vngIds can be null, and cannot be used together with nodeNames and nodePoolNames.\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupFilters:OceanNpVirtualNodeGroupFilters":{"properties":{"acceleratedNetworking":{"type":"string","description":"In case acceleratedNetworking is set to Enabled, accelerated networking applies only to the VM that enables it.\n"},"architectures":{"type":"array","items":{"type":"string"},"description":"The filtered vm sizes will support at least one of the architectures from this list.\u003cspan pulumi-lang-nodejs=\" x8664 \" pulumi-lang-dotnet=\" X8664 \" pulumi-lang-go=\" x8664 \" pulumi-lang-python=\" x86_64 \" pulumi-lang-yaml=\" x8664 \" pulumi-lang-java=\" x8664 \"\u003e x86_64 \u003c/span\u003eincludes both intel64 and amd64.\n"},"diskPerformance":{"type":"string","description":"The filtered vm sizes will support at least one of the classes from this list.\n"},"excludeSeries":{"type":"array","items":{"type":"string"},"description":"Vm sizes belonging to a series from the list will not be available for scaling.\n"},"gpuTypes":{"type":"array","items":{"type":"string"},"description":"The filtered gpu types will belong to one of the gpu types from this list.\n"},"maxGpu":{"type":"number","description":"Maximum number of GPUs available.\n"},"maxMemoryGib":{"type":"number","description":"Maximum amount of Memory (GiB).\n"},"maxVcpu":{"type":"integer","description":"Maximum number of vcpus available.\n"},"minDisk":{"type":"integer","description":"Minimum number of data disks available.\n"},"minGpu":{"type":"number","description":"Minimum number of GPUs available.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minNics":{"type":"integer","description":"Minimum number of network interfaces.\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"},"series":{"type":"array","items":{"type":"string"},"description":"Vm sizes belonging to a series from the list will be available for scaling.\n"},"vmTypes":{"type":"array","items":{"type":"string"},"description":"The filtered vm types will belong to one of the vm types from this list.\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupHeadroom:OceanNpVirtualNodeGroupHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Amount of GPU to allocate for headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Configure the amount of memory (MiB) to allocate the headroom.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupLinuxOsConfig:OceanNpVirtualNodeGroupLinuxOsConfig":{"properties":{"sysctls":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupLinuxOsConfigSysctl:OceanNpVirtualNodeGroupLinuxOsConfigSysctl"},"description":"System Controls\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupLinuxOsConfigSysctl:OceanNpVirtualNodeGroupLinuxOsConfigSysctl":{"properties":{"vmMaxMapCount":{"type":"integer","description":"Maximum number of memory map areas a process may have. Can be configured only if OS type is Linux.\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupScheduling:OceanNpVirtualNodeGroupScheduling":{"properties":{"shutdownHours":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupSchedulingShutdownHours:OceanNpVirtualNodeGroupSchedulingShutdownHours","description":"An object used to specify times that the nodes in the virtual node group will be stopped.\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupSchedulingShutdownHours:OceanNpVirtualNodeGroupSchedulingShutdownHours":{"properties":{"isEnabled":{"type":"boolean","description":"Flag to enable or disable the shutdown hours mechanism. When \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the mechanism is deactivated, and the virtual node gorup remains in its current state.\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"The times that the shutdown hours will apply. Required if isEnabled is true.\n"}},"type":"object"},"spotinst:azure/OceanNpVirtualNodeGroupTaint:OceanNpVirtualNodeGroupTaint":{"properties":{"effect":{"type":"string","description":"Set taint effect.\n"},"key":{"type":"string","description":"Set taint key. The following are not allowed: \"kubernetes.azure.com/scalesetpriority\".\n"},"value":{"type":"string","description":"Set taint value.\n"}},"type":"object","required":["effect","key","value"]},"spotinst:azure/OceanNpVirtualNodeGroupUpdatePolicy:OceanNpVirtualNodeGroupUpdatePolicy":{"properties":{"conditionedRoll":{"type":"boolean","description":"Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as availability_zones, max_pods_per_node, enable_node_public_ip, os_disk_size_gb, os_disk_type, os_sku, kubernetes_version, vnet_subnet_ids, pod_subnet_ids, labels, taints and tags).\n"},"rollConfig":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupUpdatePolicyRollConfig:OceanNpVirtualNodeGroupUpdatePolicyRollConfig","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"shouldRoll":{"type":"boolean","description":"If set to true along with the vng update, roll will be triggered.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:azure/OceanNpVirtualNodeGroupUpdatePolicyRollConfig:OceanNpVirtualNodeGroupUpdatePolicyRollConfig":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy nodes in single batch. If the amount of healthy nodes in single batch is under the threshold, the roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100. In case of null as value, the default value in the backend will be 20%.\n"},"comment":{"type":"string","description":"Add a comment description for the roll. The comment is limited to 256 chars and optional.\n"},"nodeNames":{"type":"array","items":{"type":"string"},"description":"List of node names to be rolled. Each identifier is a string. nodeNames can be null, and cannot be used together with nodePoolNames and vngIds.\n"},"nodePoolNames":{"type":"array","items":{"type":"string"},"description":"List of node pools to be rolled. Each node pool name is a string. nodePoolNames can be null, and cannot be used together with nodeNames and vngIds.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the nodes replacement.\n"},"respectRestrictScaleDown":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n"},"vngIds":{"type":"array","items":{"type":"string"},"description":"List of virtual node group identifiers to be rolled. Each identifier is a string. vngIds can be null, and cannot be used together with nodeNames and nodePoolNames.\n"}},"type":"object"},"spotinst:azure/OceanNpVngTemplateScheduling:OceanNpVngTemplateScheduling":{"properties":{"vngTemplateShutdownHours":{"$ref":"#/types/spotinst:azure/OceanNpVngTemplateSchedulingVngTemplateShutdownHours:OceanNpVngTemplateSchedulingVngTemplateShutdownHours"}},"type":"object"},"spotinst:azure/OceanNpVngTemplateSchedulingVngTemplateShutdownHours:OceanNpVngTemplateSchedulingVngTemplateShutdownHours":{"properties":{"isEnabled":{"type":"boolean"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"The times that the shutdown hours will apply. Required if \u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e is true.\n"}},"type":"object"},"spotinst:ecs/OceanAutoscaler:OceanAutoscaler":{"properties":{"autoHeadroomPercentage":{"type":"integer","description":"The auto-headroom percentage. Set a number between 0-200 to control the headroom % of the cluster. Relevant when `isAutoConfig`= true.\n"},"cooldown":{"type":"integer","description":"Cooldown period between scaling actions.\n"},"down":{"$ref":"#/types/spotinst:ecs/OceanAutoscalerDown:OceanAutoscalerDown","description":"Auto Scaling scale down operations.\n"},"enableAutomaticAndManualHeadroom":{"type":"boolean","description":"When set to true, both automatic and per custom launch specification manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n\n"},"headroom":{"$ref":"#/types/spotinst:ecs/OceanAutoscalerHeadroom:OceanAutoscalerHeadroom","description":"Spare resource capacity management enabling fast assignment of tasks without waiting for new resources to launch.\n"},"isAutoConfig":{"type":"boolean","description":"Automatically configure and optimize headroom resources.\n"},"isEnabled":{"type":"boolean","description":"Enable the Ocean ECS autoscaler.\n"},"resourceLimits":{"$ref":"#/types/spotinst:ecs/OceanAutoscalerResourceLimits:OceanAutoscalerResourceLimits","description":"Optionally set upper and lower bounds on the resource usage of the cluster.\n"},"shouldScaleDownNonServiceTasks":{"type":"boolean","description":"Option to scale down non-service tasks. If not set, Ocean does not scale down standalone tasks.\n"}},"type":"object"},"spotinst:ecs/OceanAutoscalerDown:OceanAutoscalerDown":{"properties":{"maxScaleDownPercentage":{"type":"number","description":"Would represent the maximum % to scale-down. Number between 1-100.\n"}},"type":"object"},"spotinst:ecs/OceanAutoscalerHeadroom:OceanAutoscalerHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MB) to allocate the headroom.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n"}},"type":"object"},"spotinst:ecs/OceanAutoscalerResourceLimits:OceanAutoscalerResourceLimits":{"properties":{"maxMemoryGib":{"type":"integer","description":"The maximum memory in GiB units that can be allocated to the cluster.\n"},"maxVcpu":{"type":"integer","description":"The maximum cpu in vCPU units that can be allocated to the cluster.\n"}},"type":"object"},"spotinst:ecs/OceanBlockDeviceMapping:OceanBlockDeviceMapping":{"properties":{"deviceName":{"type":"string","description":"String. Set device name. Example: `/dev/xvda1`.\n"},"ebs":{"$ref":"#/types/spotinst:ecs/OceanBlockDeviceMappingEbs:OceanBlockDeviceMappingEbs","description":"Object. Set Elastic Block Store properties.\n"},"noDevice":{"type":"string","description":"String. Suppresses the specified device included in the block device mapping of the AMI.\n"},"virtualName":{"type":"string"}},"type":"object","required":["deviceName"]},"spotinst:ecs/OceanBlockDeviceMappingEbs:OceanBlockDeviceMappingEbs":{"properties":{"deleteOnTermination":{"type":"boolean","description":"Boolean. Toggles EBS deletion upon instance termination.\n"},"dynamicVolumeSize":{"$ref":"#/types/spotinst:ecs/OceanBlockDeviceMappingEbsDynamicVolumeSize:OceanBlockDeviceMappingEbsDynamicVolumeSize","description":"Object. Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n"},"encrypted":{"type":"boolean","description":"Boolean. Enables [EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) on the volume.\n"},"iops":{"type":"integer","description":"Int. The number of I/O operations per second (IOPS) that the volume supports.\n"},"kmsKeyId":{"type":"string","description":"String. Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed CMK under which the EBS volume is encrypted.\n"},"snapshotId":{"type":"string","description":"(Optional) String. The snapshot ID to mount by.\n"},"throughput":{"type":"integer","description":"The amount of data transferred to or from a storage device per second, you can use this param just in a case that \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e = gp3.\n"},"volumeSize":{"type":"integer","description":"Int. The size (in GB) of the volume.\n"},"volumeType":{"type":"string","description":"String. The type of the volume. Example: \u003cspan pulumi-lang-nodejs=\"`gp2`\" pulumi-lang-dotnet=\"`Gp2`\" pulumi-lang-go=\"`gp2`\" pulumi-lang-python=\"`gp2`\" pulumi-lang-yaml=\"`gp2`\" pulumi-lang-java=\"`gp2`\"\u003e`gp2`\u003c/span\u003e.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["deleteOnTermination","encrypted","volumeType"]}}},"spotinst:ecs/OceanBlockDeviceMappingEbsDynamicVolumeSize:OceanBlockDeviceMappingEbsDynamicVolumeSize":{"properties":{"baseSize":{"type":"integer","description":"Int. Initial size for volume. Example: \u003cspan pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\"\u003e`50`\u003c/span\u003e.\n"},"resource":{"type":"string","description":"String. Resource type to increase volume size dynamically by. Valid values: `CPU`.\n"},"sizePerResourceUnit":{"type":"integer","description":"Int. Additional size (in GB) per resource unit. Example: When the `baseSize=50`, `sizePerResourceUnit=20`, and instance with two CPUs is launched, its total disk size will be: 90GB.\n"}},"type":"object","required":["baseSize","resource","sizePerResourceUnit"]},"spotinst:ecs/OceanClusterOrientation:OceanClusterOrientation":{"properties":{"availabilityVsCost":{"type":"string","description":"You can control the approach that Ocean takes while launching nodes by configuring this value. Possible values: `costOriented`,\u003cspan pulumi-lang-nodejs=\"`balanced`\" pulumi-lang-dotnet=\"`Balanced`\" pulumi-lang-go=\"`balanced`\" pulumi-lang-python=\"`balanced`\" pulumi-lang-yaml=\"`balanced`\" pulumi-lang-java=\"`balanced`\"\u003e`balanced`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`cheapest`\" pulumi-lang-dotnet=\"`Cheapest`\" pulumi-lang-go=\"`cheapest`\" pulumi-lang-python=\"`cheapest`\" pulumi-lang-yaml=\"`cheapest`\" pulumi-lang-java=\"`cheapest`\"\u003e`cheapest`\u003c/span\u003e.\n"}},"type":"object"},"spotinst:ecs/OceanFilters:OceanFilters":{"properties":{"architectures":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will support at least one of the architectures from this list.\n"},"categories":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will belong to one of the categories types from this list.\n"},"diskTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have one of the disk type from this list.\n"},"excludeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n"},"excludeMetal":{"type":"boolean","description":"In case excludeMetal is set to true, metal types will not be available for scaling.\n"},"hypervisors":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have a hypervisor type from this list.\n"},"includeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n"},"isEnaSupported":{"type":"string","description":"Ena is supported or not.\n"},"maxGpu":{"type":"integer","description":"Maximum total number of GPUs.\n"},"maxMemoryGib":{"type":"number"},"maxNetworkPerformance":{"type":"integer","description":"Maximum Bandwidth in Gib/s of network performance.\n"},"maxVcpu":{"type":"integer"},"minEnis":{"type":"integer","description":"Minimum number of network interfaces (ENIs).\n"},"minGpu":{"type":"integer","description":"Minimum total number of GPUs.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minNetworkPerformance":{"type":"integer","description":"Minimum Bandwidth in Gib/s of network performance.\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"},"rootDeviceTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will have a root device types from this list.\n"},"virtualizationTypes":{"type":"array","items":{"type":"string"},"description":"The filtered instance types will support at least one of the virtualization types from this list.\n"}},"type":"object"},"spotinst:ecs/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions":{"properties":{"httpPutResponseHopLimit":{"type":"integer","description":"An integer from 1 through 64. The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further the instance metadata requests can travel.\n"},"httpTokens":{"type":"string","description":"Determines if a signed token is required or not. Valid values: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`required`\" pulumi-lang-dotnet=\"`Required`\" pulumi-lang-go=\"`required`\" pulumi-lang-python=\"`required`\" pulumi-lang-yaml=\"`required`\" pulumi-lang-java=\"`required`\"\u003e`required`\u003c/span\u003e.\n"}},"type":"object","required":["httpTokens"]},"spotinst:ecs/OceanLaunchSpecAttribute:OceanLaunchSpecAttribute":{"properties":{"key":{"type":"string","description":"The label key.\n"},"value":{"type":"string","description":"The label value.\n"}},"type":"object","required":["key","value"]},"spotinst:ecs/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate for each headroom unit.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n"}},"type":"object","required":["numOfUnits"]},"spotinst:ecs/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping":{"properties":{"deviceName":{"type":"string","description":"String. Set device name. (Example: \"/dev/xvda1\").\n"},"ebs":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecBlockDeviceMappingEbs:OceanLaunchSpecBlockDeviceMappingEbs","description":"Object. Set Elastic Block Store properties .\n"},"noDevice":{"type":"string","description":"String. suppresses the specified device included in the block device mapping of the AMI.\n"},"virtualName":{"type":"string"}},"type":"object","required":["deviceName"]},"spotinst:ecs/OceanLaunchSpecBlockDeviceMappingEbs:OceanLaunchSpecBlockDeviceMappingEbs":{"properties":{"deleteOnTermination":{"type":"boolean","description":"Boolean. Flag to delete the EBS on instance termination.\n"},"dynamicVolumeSize":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize:OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize","description":"Object. Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n"},"encrypted":{"type":"boolean","description":"Boolean. Enables [EBS encryption](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html) on the volume.\n"},"iops":{"type":"integer","description":"Int. The number of I/O operations per second (IOPS) that the volume supports.\n"},"kmsKeyId":{"type":"string","description":"String. Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed CMK under which the EBS volume is encrypted.\n"},"snapshotId":{"type":"string","description":"(Optional) String. The Snapshot ID to mount by.\n"},"throughput":{"type":"integer","description":"The amount of data transferred to or from a storage device per second, you can use this param just in a case that \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e = gp3.\n"},"volumeSize":{"type":"integer","description":"Int. The size, in GB of the volume.\n"},"volumeType":{"type":"string","description":"String. The type of the volume (example: \"gp2\").\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["deleteOnTermination","encrypted","volumeType"]}}},"spotinst:ecs/OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize:OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSize":{"properties":{"baseSize":{"type":"integer","description":"Int. Initial size for volume. (Example: 50)\n"},"resource":{"type":"string","description":"String. Resource type to increase volume size dynamically by. (valid values: \"CPU\")\n"},"sizePerResourceUnit":{"type":"integer","description":"Int. Additional size (in GB) per resource unit. (Example: baseSize= 50, sizePerResourceUnit=20, and instance with 2 CPU is launched - its total disk size will be: 90GB)\n"}},"type":"object","required":["baseSize","resource","sizePerResourceUnit"]},"spotinst:ecs/OceanLaunchSpecImage:OceanLaunchSpecImage":{"properties":{"imageId":{"type":"string","description":"Identifier of the image in AWS. Valid values: any string which is not empty or null.\n"}},"type":"object"},"spotinst:ecs/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions":{"properties":{"httpPutResponseHopLimit":{"type":"integer","description":"An integer from 1 through 64. The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further the instance metadata requests can travel.\n"},"httpTokens":{"type":"string","description":"Determines if a signed token is required or not. Valid values: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`required`\" pulumi-lang-dotnet=\"`Required`\" pulumi-lang-go=\"`required`\" pulumi-lang-python=\"`required`\" pulumi-lang-yaml=\"`required`\" pulumi-lang-java=\"`required`\"\u003e`required`\u003c/span\u003e.\n"}},"type":"object","required":["httpTokens"]},"spotinst:ecs/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format.\n"},"isEnabled":{"type":"boolean","description":"Describes whether the task is enabled. When \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the task runs. When \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, it does not run.\n"},"taskHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecSchedulingTaskTaskHeadroom:OceanLaunchSpecSchedulingTaskTaskHeadroom"},"description":"The config of this scheduled task. Depends on the value of taskType.\n"},"taskType":{"type":"string","description":"The activity that you are scheduling. Valid values: \"manualHeadroomUpdate\".\n"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:ecs/OceanLaunchSpecSchedulingTaskTaskHeadroom:OceanLaunchSpecSchedulingTaskTaskHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate for each headroom unit.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU.\n"}},"type":"object","required":["numOfUnits"]},"spotinst:ecs/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy":{"properties":{"spotPercentage":{"type":"integer","description":"When set, Ocean will proactively try to maintain as close as possible to the percentage of Spot instances out of all the Virtual Node Group instances.\n"}},"type":"object"},"spotinst:ecs/OceanLaunchSpecTag:OceanLaunchSpecTag":{"properties":{"key":{"type":"string","description":"The label key.\n"},"value":{"type":"string","description":"The label value.\n"}},"type":"object","required":["key","value"]},"spotinst:ecs/OceanLogging:OceanLogging":{"properties":{"export":{"$ref":"#/types/spotinst:ecs/OceanLoggingExport:OceanLoggingExport","description":"Logging Export configuration.\n"}},"type":"object"},"spotinst:ecs/OceanLoggingExport:OceanLoggingExport":{"properties":{"s3s":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLoggingExportS3:OceanLoggingExportS3"},"description":"Exports your cluster's logs to the S3 bucket and subdir configured on the S3 data integration given.\n"}},"type":"object"},"spotinst:ecs/OceanLoggingExportS3:OceanLoggingExportS3":{"properties":{"id":{"type":"string","description":"The identifier of The S3 data integration to export the logs to.\n"}},"type":"object","required":["id"]},"spotinst:ecs/OceanOptimizeImages:OceanOptimizeImages":{"properties":{"performAt":{"type":"string","description":"String. Valid values: \"always\" \"never\" \"timeWindow\".\n"},"shouldOptimizeEcsAmi":{"type":"boolean","description":"Boolean. Enable auto image (AMI) update for the ECS container instances. The auto update applies for ECS-Optimized AMIs.\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"Array of strings. Set time windows for image update, at least one time window. Each string is in the format of ddd:hh:mm-ddd:hh:mm ddd. Time windows should not overlap.\n"}},"type":"object","required":["performAt","shouldOptimizeEcsAmi"]},"spotinst:ecs/OceanScheduledTask:OceanScheduledTask":{"properties":{"shutdownHours":{"$ref":"#/types/spotinst:ecs/OceanScheduledTaskShutdownHours:OceanScheduledTaskShutdownHours","description":"Set shutdown hours for cluster object.\n"},"tasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanScheduledTaskTask:OceanScheduledTaskTask"},"description":"The scheduling tasks for the cluster.\n"}},"type":"object"},"spotinst:ecs/OceanScheduledTaskShutdownHours:OceanScheduledTaskShutdownHours":{"properties":{"isEnabled":{"type":"boolean","description":"Flag to enable / disable the shutdown hours.\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"Set time windows for shutdown hours. Specify a list of `timeWindows` with at least one time window Each string is in the format of `ddd:hh:mm-ddd:hh:mm` (ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59). Time windows should not overlap. Required when `cluster.scheduling.isEnabled` is true. API Times are in UTC. Example: `Fri:15:30-Wed:14:30`.\n"}},"type":"object","required":["timeWindows"]},"spotinst:ecs/OceanScheduledTaskTask:OceanScheduledTaskTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e or `cronExpression` should be used at a time. Required for `cluster.scheduling.tasks` object. Example: `0 1 * * *`.\n"},"isEnabled":{"type":"boolean","description":"Describes whether the task is enabled. When true the task should run when false it should not run. Required for `cluster.scheduling.tasks` object.\n"},"taskType":{"type":"string","description":"Valid values: \"clusterRoll\". Required for `cluster.scheduling.tasks object`. Example: `clusterRoll`.\n\n"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:ecs/OceanTag:OceanTag":{"properties":{"key":{"type":"string","description":"The tag key.\n"},"value":{"type":"string","description":"The tag value.\n* `instanceTypes` - (Optional) The type of instances that may or may not be a part of the Ocean cluster.\n"}},"type":"object","required":["key","value"]},"spotinst:ecs/OceanUpdatePolicy:OceanUpdatePolicy":{"properties":{"autoApplyTags":{"type":"boolean","description":"will update instance tags on the fly without rolling the cluster.\n"},"conditionedRoll":{"type":"boolean","description":"Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as AMI, Key Pair, user data, instance types, load balancers, etc).\n"},"rollConfig":{"$ref":"#/types/spotinst:ecs/OceanUpdatePolicyRollConfig:OceanUpdatePolicyRollConfig"},"shouldRoll":{"type":"boolean","description":"Enables the roll.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:ecs/OceanUpdatePolicyRollConfig:OceanUpdatePolicyRollConfig":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Default: 50. Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n\n"},"batchSizePercentage":{"type":"integer","description":"Sets the percentage of the instances to deploy in each batch.\n"}},"type":"object","required":["batchSizePercentage"]},"spotinst:gcp/ElastigroupBackendService:ElastigroupBackendService":{"properties":{"backendBalancing":{"$ref":"#/types/spotinst:gcp/ElastigroupBackendServiceBackendBalancing:ElastigroupBackendServiceBackendBalancing","description":"Configure how traffic is distributed across instance groups.\n"},"locationType":{"type":"string","description":"Sets which location the backend services will be active. Valid values: \u003cspan pulumi-lang-nodejs=\"`regional`\" pulumi-lang-dotnet=\"`Regional`\" pulumi-lang-go=\"`regional`\" pulumi-lang-python=\"`regional`\" pulumi-lang-yaml=\"`regional`\" pulumi-lang-java=\"`regional`\"\u003e`regional`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`global`\" pulumi-lang-dotnet=\"`Global`\" pulumi-lang-go=\"`global`\" pulumi-lang-python=\"`global`\" pulumi-lang-yaml=\"`global`\" pulumi-lang-java=\"`global`\"\u003e`global`\u003c/span\u003e.\n"},"namedPorts":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupBackendServiceNamedPort:ElastigroupBackendServiceNamedPort"},"description":"Describes a named port and a list of ports.\n"},"scheme":{"type":"string","description":"Use when \u003cspan pulumi-lang-nodejs=\"`locationType`\" pulumi-lang-dotnet=\"`LocationType`\" pulumi-lang-go=\"`locationType`\" pulumi-lang-python=\"`location_type`\" pulumi-lang-yaml=\"`locationType`\" pulumi-lang-java=\"`locationType`\"\u003e`location_type`\u003c/span\u003e is \"regional\". Set the traffic for the backend service to either between the instances in the vpc or to traffic from the internet. Valid values: `INTERNAL`, `EXTERNAL`.\n"},"serviceName":{"type":"string","description":"The name of the backend service.\n"}},"type":"object","required":["serviceName"]},"spotinst:gcp/ElastigroupBackendServiceBackendBalancing:ElastigroupBackendServiceBackendBalancing":{"properties":{"backendBalancingMode":{"type":"string","description":"The backend balancing mode. Valid values: `RATE`, `UTILIZATION`.\n"},"maxRatePerInstance":{"type":"integer","description":"If the backendBalancingMode is set to RATE, this field is required.\n\nUsage:\n\n"}},"type":"object"},"spotinst:gcp/ElastigroupBackendServiceNamedPort:ElastigroupBackendServiceNamedPort":{"properties":{"name":{"type":"string","description":"The name of the port.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of ports.\n"}},"type":"object","required":["name","ports"]},"spotinst:gcp/ElastigroupDisk:ElastigroupDisk":{"properties":{"autoDelete":{"type":"boolean","description":"Specifies whether the disk will be auto-deleted when the instance is deleted.\n"},"boot":{"type":"boolean","description":"Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.\n"},"deviceName":{"type":"string","description":"Specifies a unique device name of your choice.\n"},"initializeParams":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupDiskInitializeParam:ElastigroupDiskInitializeParam"},"description":"Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n"},"interface":{"type":"string","description":"Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME.\n"},"mode":{"type":"string","description":"The mode in which to attach this disk, either READ_WRITE or READ_ONLY.\n"},"source":{"type":"string","description":"Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.\n"},"type":{"type":"string","description":"Specifies the type of disk, either SCRATCH or PERSISTENT.\n"}},"type":"object"},"spotinst:gcp/ElastigroupDiskInitializeParam:ElastigroupDiskInitializeParam":{"properties":{"diskSizeGb":{"type":"string","description":"Specifies disk size in gigabytes. Must be in increments of 2.\n"},"diskType":{"type":"string","description":"Specifies the disk type to use to create the instance. Valid values: pd-ssd, local-ssd.\n"},"sourceImage":{"type":"string","description":"A source image used to create the disk. You can provide a private (custom) image, and Compute Engine will use the corresponding image from your project.\n\nUsage:\n\n"}},"type":"object","required":["sourceImage"]},"spotinst:gcp/ElastigroupGpu:ElastigroupGpu":{"properties":{"count":{"type":"integer","description":"The number of GPUs. Must be 0, 2, 4, 6, 8.\n\nUsage:\n\n"},"type":{"type":"string","description":"The type of GPU instance. Valid values: `nvidia-tesla-v100`, `nvidia-tesla-p100`, `nvidia-tesla-k80`.\n"}},"type":"object","required":["count","type"]},"spotinst:gcp/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom":{"properties":{"memoryGib":{"type":"integer","description":"The memory (in GiB) in the custom instance types. GCP has a number of limitations on accepted memory values.For more information, see the GCP documentation (here.)[https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#specifications]\n"},"vcpu":{"type":"integer"}},"type":"object","required":["memoryGib","vcpu"]},"spotinst:gcp/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm":{"properties":{"masterHost":{"type":"string","description":"IP or FQDN of one of your swarm managers.\n"},"masterPort":{"type":"integer","description":"Network port used by your swarm.\n\nUsage:\n\n"}},"type":"object","required":["masterHost","masterPort"]},"spotinst:gcp/ElastigroupIntegrationGke:ElastigroupIntegrationGke":{"properties":{"autoUpdate":{"type":"boolean"},"autoscaleCooldown":{"type":"integer"},"autoscaleDown":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationGkeAutoscaleDown:ElastigroupIntegrationGkeAutoscaleDown"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationGkeAutoscaleHeadroom:ElastigroupIntegrationGkeAutoscaleHeadroom"},"autoscaleIsAutoConfig":{"type":"boolean"},"autoscaleIsEnabled":{"type":"boolean"},"autoscaleLabels":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationGkeAutoscaleLabel:ElastigroupIntegrationGkeAutoscaleLabel"}},"clusterId":{"type":"string"},"location":{"type":"string"}},"type":"object"},"spotinst:gcp/ElastigroupIntegrationGkeAutoscaleDown:ElastigroupIntegrationGkeAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer","description":"Number of consecutive periods in which the threshold must be met in order to trigger a scaling action.\n"}},"type":"object"},"spotinst:gcp/ElastigroupIntegrationGkeAutoscaleHeadroom:ElastigroupIntegrationGkeAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer"},"memoryPerUnit":{"type":"integer"},"numOfUnits":{"type":"integer"}},"type":"object"},"spotinst:gcp/ElastigroupIntegrationGkeAutoscaleLabel:ElastigroupIntegrationGkeAutoscaleLabel":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:gcp/ElastigroupLabel:ElastigroupLabel":{"properties":{"key":{"type":"string","description":"Labels key.\n"},"value":{"type":"string","description":"Labels value.\n"}},"type":"object","required":["key","value"]},"spotinst:gcp/ElastigroupMetadata:ElastigroupMetadata":{"properties":{"key":{"type":"string","description":"Metadata key.\n"},"value":{"type":"string","description":"Metadata value.\n"}},"type":"object","required":["key","value"]},"spotinst:gcp/ElastigroupNetworkInterface:ElastigroupNetworkInterface":{"properties":{"accessConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupNetworkInterfaceAccessConfig:ElastigroupNetworkInterfaceAccessConfig"},"description":"Array of configurations.\n"},"aliasIpRanges":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupNetworkInterfaceAliasIpRange:ElastigroupNetworkInterfaceAliasIpRange"}},"network":{"type":"string","description":"Network resource for this group.\n"}},"type":"object","required":["network"]},"spotinst:gcp/ElastigroupNetworkInterfaceAccessConfig:ElastigroupNetworkInterfaceAccessConfig":{"properties":{"name":{"type":"string","description":"The group name.\n"},"type":{"type":"string"}},"type":"object"},"spotinst:gcp/ElastigroupNetworkInterfaceAliasIpRange:ElastigroupNetworkInterfaceAliasIpRange":{"properties":{"ipCidrRange":{"type":"string"},"subnetworkRangeName":{"type":"string"}},"type":"object","required":["ipCidrRange","subnetworkRangeName"]},"spotinst:gcp/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible":{"properties":{"performAt":{"type":"string","description":"Valid values: \"always\", \"never\", \"timeWindow\". Required on strategy.revertToPreemptible object.\n"}},"type":"object","required":["performAt"]},"spotinst:gcp/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy":{"properties":{"actionType":{"type":"string","description":"Type of scaling action to take when the scaling policy is triggered. Valid values: \"adjustment\", \"setMinTarget\", \"updateCapacity\", \"percentageAdjustment\"\n"},"adjustment":{"type":"integer","description":"Value to which the action type will be adjusted. Required if using \"numeric\" or \"percentageAdjustment\" action types.\n"},"cooldown":{"type":"integer","description":"Time (seconds) to wait after a scaling action before resuming monitoring.\n"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingDownPolicyDimension:ElastigroupScalingDownPolicyDimension"},"description":"A list of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer","description":"Number of consecutive periods in which the threshold must be met in order to trigger a scaling action.\n"},"metricName":{"type":"string","description":"Metric to monitor. Valid values: \"Percentage CPU\", \"Network In\", \"Network Out\", \"Disk Read Bytes\", \"Disk Write Bytes\", \"Disk Write Operations/Sec\", \"Disk Read Operations/Sec\".\n"},"namespace":{"type":"string"},"operator":{"type":"string","description":"The operator used to evaluate the threshold against the current metric value. Valid values: \"gt\" (greater than), \"get\" (greater-than or equal), \"lt\" (less than), \"lte\" (less than or equal).\n"},"period":{"type":"integer","description":"Amount of time (seconds) for which the threshold must be met in order to trigger the scaling action.\n"},"policyName":{"type":"string","description":"Name of scaling policy.\n"},"source":{"type":"string","description":"Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.\n"},"statistic":{"type":"string","description":"Statistic by which to evaluate the selected metric. Valid values: \"AVERAGE\", \"SAMPLE_COUNT\", \"SUM\", \"MINIMUM\", \"MAXIMUM\", \"PERCENTILE\", \"COUNT\".\n"},"threshold":{"type":"number","description":"The value at which the scaling action is triggered.\n"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","source","statistic","threshold","unit"]}}},"spotinst:gcp/ElastigroupScalingDownPolicyDimension:ElastigroupScalingDownPolicyDimension":{"properties":{"name":{"type":"string","description":"The group name.\n"},"value":{"type":"string"}},"type":"object","required":["name"]},"spotinst:gcp/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy":{"properties":{"actionType":{"type":"string","description":"Type of scaling action to take when the scaling policy is triggered. Valid values: \"adjustment\", \"setMinTarget\", \"updateCapacity\", \"percentageAdjustment\"\n"},"adjustment":{"type":"integer","description":"Value to which the action type will be adjusted. Required if using \"numeric\" or \"percentageAdjustment\" action types.\n"},"cooldown":{"type":"integer","description":"Time (seconds) to wait after a scaling action before resuming monitoring.\n"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingUpPolicyDimension:ElastigroupScalingUpPolicyDimension"},"description":"A list of dimensions describing qualities of the metric.\n"},"evaluationPeriods":{"type":"integer","description":"Number of consecutive periods in which the threshold must be met in order to trigger a scaling action.\n"},"metricName":{"type":"string","description":"Metric to monitor. Valid values: \"Percentage CPU\", \"Network In\", \"Network Out\", \"Disk Read Bytes\", \"Disk Write Bytes\", \"Disk Write Operations/Sec\", \"Disk Read Operations/Sec\".\n"},"namespace":{"type":"string"},"operator":{"type":"string","description":"The operator used to evaluate the threshold against the current metric value. Valid values: \"gt\" (greater than), \"get\" (greater-than or equal), \"lt\" (less than), \"lte\" (less than or equal).\n"},"period":{"type":"integer","description":"Amount of time (seconds) for which the threshold must be met in order to trigger the scaling action.\n"},"policyName":{"type":"string","description":"Name of scaling policy.\n"},"source":{"type":"string","description":"Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.\n"},"statistic":{"type":"string","description":"Statistic by which to evaluate the selected metric. Valid values: \"AVERAGE\", \"SAMPLE_COUNT\", \"SUM\", \"MINIMUM\", \"MAXIMUM\", \"PERCENTILE\", \"COUNT\".\n"},"threshold":{"type":"number","description":"The value at which the scaling action is triggered.\n"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","source","statistic","threshold","unit"]}}},"spotinst:gcp/ElastigroupScalingUpPolicyDimension:ElastigroupScalingUpPolicyDimension":{"properties":{"name":{"type":"string","description":"The dimension name.\n"},"value":{"type":"string","description":"The dimension value.\n\nUsage:\n\n"}},"type":"object","required":["name"]},"spotinst:gcp/ElastigroupScheduledTask:ElastigroupScheduledTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. The cron is running in UTC time zone and is in [Unix cron format](https://en.wikipedia.org/wiki/Cron).\n"},"isEnabled":{"type":"boolean","description":"Setting the task to being enabled or disabled.\n"},"maxCapacity":{"type":"string","description":"The maximum number of instances the group should have.\n\nUsage:\n\n"},"minCapacity":{"type":"string","description":"The minimum number of instances the group should have.\n"},"targetCapacity":{"type":"string","description":"The desired number of instances the group should have.\n"},"taskType":{"type":"string","description":"The task type to run. Valid values: `\"setCapacity\"`.\n"}},"type":"object","required":["taskType"]},"spotinst:gcp/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig":{"properties":{"enableIntegrityMonitoring":{"type":"boolean","description":"Default: false\n"},"enableSecureBoot":{"type":"boolean","description":"Default: false\n"}},"type":"object"},"spotinst:gcp/ElastigroupSubnet:ElastigroupSubnet":{"properties":{"region":{"type":"string","description":"The region for the group of subnets.\n"},"subnetNames":{"type":"array","items":{"type":"string"},"description":"The names of the subnets in the region.\n"}},"type":"object","required":["region","subnetNames"]},"spotinst:gke/ElastigroupBackendService:ElastigroupBackendService":{"properties":{"backendBalancing":{"$ref":"#/types/spotinst:gke/ElastigroupBackendServiceBackendBalancing:ElastigroupBackendServiceBackendBalancing"},"locationType":{"type":"string"},"namedPorts":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupBackendServiceNamedPort:ElastigroupBackendServiceNamedPort"}},"scheme":{"type":"string"},"serviceName":{"type":"string"}},"type":"object","required":["serviceName"]},"spotinst:gke/ElastigroupBackendServiceBackendBalancing:ElastigroupBackendServiceBackendBalancing":{"properties":{"backendBalancingMode":{"type":"string"},"maxRatePerInstance":{"type":"integer"}},"type":"object"},"spotinst:gke/ElastigroupBackendServiceNamedPort:ElastigroupBackendServiceNamedPort":{"properties":{"name":{"type":"string"},"ports":{"type":"array","items":{"type":"string"}}},"type":"object","required":["name","ports"]},"spotinst:gke/ElastigroupDisk:ElastigroupDisk":{"properties":{"autoDelete":{"type":"boolean"},"boot":{"type":"boolean"},"deviceName":{"type":"string"},"initializeParams":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupDiskInitializeParam:ElastigroupDiskInitializeParam"}},"interface":{"type":"string"},"mode":{"type":"string"},"source":{"type":"string"},"type":{"type":"string"}},"type":"object"},"spotinst:gke/ElastigroupDiskInitializeParam:ElastigroupDiskInitializeParam":{"properties":{"diskSizeGb":{"type":"string"},"diskType":{"type":"string"},"sourceImage":{"type":"string"}},"type":"object","required":["sourceImage"]},"spotinst:gke/ElastigroupGpu:ElastigroupGpu":{"properties":{"count":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["count","type"]},"spotinst:gke/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom":{"properties":{"memoryGib":{"type":"integer"},"vcpu":{"type":"integer"}},"type":"object","required":["memoryGib","vcpu"]},"spotinst:gke/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm":{"properties":{"masterHost":{"type":"string"},"masterPort":{"type":"integer"}},"type":"object","required":["masterHost","masterPort"]},"spotinst:gke/ElastigroupIntegrationGke:ElastigroupIntegrationGke":{"properties":{"autoUpdate":{"type":"boolean"},"autoscaleCooldown":{"type":"integer","description":"The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.\n"},"autoscaleDown":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationGkeAutoscaleDown:ElastigroupIntegrationGkeAutoscaleDown","description":"Enabling scale down.\n"},"autoscaleHeadroom":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationGkeAutoscaleHeadroom:ElastigroupIntegrationGkeAutoscaleHeadroom","description":"Headroom for the cluster.\n"},"autoscaleIsAutoConfig":{"type":"boolean"},"autoscaleIsEnabled":{"type":"boolean","description":"Specifies whether the auto scaling feature is enabled.\n"},"autoscaleLabels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationGkeAutoscaleLabel:ElastigroupIntegrationGkeAutoscaleLabel"},"description":"Labels to assign to the resource.\n"},"clusterId":{"type":"string"},"location":{"type":"string","description":"The location of your GKE cluster.\n"}},"type":"object"},"spotinst:gke/ElastigroupIntegrationGkeAutoscaleDown:ElastigroupIntegrationGkeAutoscaleDown":{"properties":{"evaluationPeriods":{"type":"integer","description":"Amount of cooldown evaluation periods for scale down.\n"}},"type":"object"},"spotinst:gke/ElastigroupIntegrationGkeAutoscaleHeadroom:ElastigroupIntegrationGkeAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Cpu units for compute.\n"},"memoryPerUnit":{"type":"integer","description":"RAM units for compute.\n"},"numOfUnits":{"type":"integer","description":"Amount of units for compute.\n"}},"type":"object"},"spotinst:gke/ElastigroupIntegrationGkeAutoscaleLabel:ElastigroupIntegrationGkeAutoscaleLabel":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:gke/ElastigroupLabel:ElastigroupLabel":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:gke/ElastigroupMetadata:ElastigroupMetadata":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:gke/ElastigroupNetworkInterface:ElastigroupNetworkInterface":{"properties":{"accessConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupNetworkInterfaceAccessConfig:ElastigroupNetworkInterfaceAccessConfig"}},"aliasIpRanges":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupNetworkInterfaceAliasIpRange:ElastigroupNetworkInterfaceAliasIpRange"}},"network":{"type":"string"}},"type":"object","required":["network"]},"spotinst:gke/ElastigroupNetworkInterfaceAccessConfig:ElastigroupNetworkInterfaceAccessConfig":{"properties":{"name":{"type":"string"},"type":{"type":"string"}},"type":"object"},"spotinst:gke/ElastigroupNetworkInterfaceAliasIpRange:ElastigroupNetworkInterfaceAliasIpRange":{"properties":{"ipCidrRange":{"type":"string"},"subnetworkRangeName":{"type":"string"}},"type":"object","required":["ipCidrRange","subnetworkRangeName"]},"spotinst:gke/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible":{"properties":{"performAt":{"type":"string"}},"type":"object","required":["performAt"]},"spotinst:gke/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy":{"properties":{"actionType":{"type":"string"},"adjustment":{"type":"integer"},"cooldown":{"type":"integer"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingDownPolicyDimension:ElastigroupScalingDownPolicyDimension"}},"evaluationPeriods":{"type":"integer","description":"Amount of cooldown evaluation periods for scale down.\n"},"metricName":{"type":"string"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string"},"source":{"type":"string"},"statistic":{"type":"string"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","source","statistic","threshold","unit"]}}},"spotinst:gke/ElastigroupScalingDownPolicyDimension:ElastigroupScalingDownPolicyDimension":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["name"]},"spotinst:gke/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy":{"properties":{"actionType":{"type":"string"},"adjustment":{"type":"integer"},"cooldown":{"type":"integer"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingUpPolicyDimension:ElastigroupScalingUpPolicyDimension"}},"evaluationPeriods":{"type":"integer","description":"Amount of cooldown evaluation periods for scale down.\n"},"metricName":{"type":"string"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string"},"source":{"type":"string"},"statistic":{"type":"string"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["metricName","namespace","policyName","threshold","unit"],"language":{"nodejs":{"requiredOutputs":["cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","source","statistic","threshold","unit"]}}},"spotinst:gke/ElastigroupScalingUpPolicyDimension:ElastigroupScalingUpPolicyDimension":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["name"]},"spotinst:gke/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig":{"properties":{"enableIntegrityMonitoring":{"type":"boolean"},"enableSecureBoot":{"type":"boolean"}},"type":"object"},"spotinst:gke/OceanImportAutoUpdate:OceanImportAutoUpdate":{"properties":{"isEnabled":{"type":"boolean","description":"Enable the Ocean Kubernetes AutoUpdate.\n"}},"type":"object"},"spotinst:gke/OceanImportAutoscaler:OceanImportAutoscaler":{"properties":{"autoHeadroomPercentage":{"type":"integer","description":"Optionally set the auto headroom percentage, set a number between 0-200 to control the headroom % from the cluster. Relevant when isAutoConfig=true.\n"},"cooldown":{"type":"integer","description":"Cooldown period between scaling actions.\n"},"down":{"$ref":"#/types/spotinst:gke/OceanImportAutoscalerDown:OceanImportAutoscalerDown","description":"Auto Scaling scale down operations.\n"},"enableAutomaticAndManualHeadroom":{"type":"boolean","description":"enables automatic and manual headroom to work in parallel. When set to false, automatic headroom overrides all other headroom definitions manually configured, whether they are at cluster or VNG level.\n"},"headroom":{"$ref":"#/types/spotinst:gke/OceanImportAutoscalerHeadroom:OceanImportAutoscalerHeadroom","description":"Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.\n"},"isAutoConfig":{"type":"boolean","description":"Automatically configure and optimize headroom resources.\n"},"isEnabled":{"type":"boolean","description":"Enable the Ocean Kubernetes Autoscaler.\n"},"resourceLimits":{"$ref":"#/types/spotinst:gke/OceanImportAutoscalerResourceLimits:OceanImportAutoscalerResourceLimits","description":"Optionally set upper and lower bounds on the resource usage of the cluster.\n"}},"type":"object"},"spotinst:gke/OceanImportAutoscalerDown:OceanImportAutoscalerDown":{"properties":{"evaluationPeriods":{"type":"integer","description":"The number of evaluation periods that should accumulate before a scale down action takes place.\n"},"isAggressiveScaleDownEnabled":{"type":"boolean","description":"When set to 'true', the Aggressive Scale Down feature is enabled.\n"},"maxScaleDownPercentage":{"type":"number","description":"Would represent the maximum % to scale-down. Number between 1-100.\n"}},"type":"object"},"spotinst:gke/OceanImportAutoscalerHeadroom:OceanImportAutoscalerHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"How much GPU allocate for headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate the headroom.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n"}},"type":"object"},"spotinst:gke/OceanImportAutoscalerResourceLimits:OceanImportAutoscalerResourceLimits":{"properties":{"maxMemoryGib":{"type":"integer","description":"The maximum memory in GiB units that can be allocated to the cluster.\n\n"},"maxVcpu":{"type":"integer","description":"The maximum cpu in vCpu units that can be allocated to the cluster.\n"}},"type":"object"},"spotinst:gke/OceanImportBackendService:OceanImportBackendService":{"properties":{"locationType":{"type":"string","description":"Sets which location the backend services will be active. Valid values: \u003cspan pulumi-lang-nodejs=\"`regional`\" pulumi-lang-dotnet=\"`Regional`\" pulumi-lang-go=\"`regional`\" pulumi-lang-python=\"`regional`\" pulumi-lang-yaml=\"`regional`\" pulumi-lang-java=\"`regional`\"\u003e`regional`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`global`\" pulumi-lang-dotnet=\"`Global`\" pulumi-lang-go=\"`global`\" pulumi-lang-python=\"`global`\" pulumi-lang-yaml=\"`global`\" pulumi-lang-java=\"`global`\"\u003e`global`\u003c/span\u003e.\n"},"namedPorts":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportBackendServiceNamedPort:OceanImportBackendServiceNamedPort"}},"scheme":{"type":"string","description":"Use when \u003cspan pulumi-lang-nodejs=\"`locationType`\" pulumi-lang-dotnet=\"`LocationType`\" pulumi-lang-go=\"`locationType`\" pulumi-lang-python=\"`location_type`\" pulumi-lang-yaml=\"`locationType`\" pulumi-lang-java=\"`locationType`\"\u003e`location_type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`regional`\" pulumi-lang-dotnet=\"`Regional`\" pulumi-lang-go=\"`regional`\" pulumi-lang-python=\"`regional`\" pulumi-lang-yaml=\"`regional`\" pulumi-lang-java=\"`regional`\"\u003e`regional`\u003c/span\u003e. Set the traffic for the backend service to either between the instances in the vpc or to traffic from the internet. Valid values: `INTERNAL`, `EXTERNAL`.\n"},"serviceName":{"type":"string","description":"The name of the backend service.\n"}},"type":"object","required":["serviceName"]},"spotinst:gke/OceanImportBackendServiceNamedPort:OceanImportBackendServiceNamedPort":{"properties":{"name":{"type":"string"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of ports.\n"}},"type":"object","required":["name","ports"]},"spotinst:gke/OceanImportFilters:OceanImportFilters":{"properties":{"excludeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n"},"includeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n"},"maxMemoryGib":{"type":"number","description":"Maximum amount of Memory (GiB).\n"},"maxVcpu":{"type":"integer","description":"Maximum number of vcpus available.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"}},"type":"object"},"spotinst:gke/OceanImportScheduledTask:OceanImportScheduledTask":{"properties":{"shutdownHours":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTaskShutdownHours:OceanImportScheduledTaskShutdownHours","description":"Set shutdown hours for cluster object.\n"},"tasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTaskTask:OceanImportScheduledTaskTask"},"description":"The scheduling tasks for the cluster.\n"}},"type":"object"},"spotinst:gke/OceanImportScheduledTaskShutdownHours:OceanImportScheduledTaskShutdownHours":{"properties":{"isEnabled":{"type":"boolean","description":"Flag to enable / disable the shutdown hours.\nExample: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"timeWindows":{"type":"array","items":{"type":"string"},"description":"Set time windows for shutdown hours. specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. required on cluster.scheduling.isEnabled = \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. API Times are in UTC\nExample: Fri:15:30-Wed:14:30\n"}},"type":"object","required":["timeWindows"]},"spotinst:gke/OceanImportScheduledTaskTask:OceanImportScheduledTaskTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. For example : \" * * * * * \".The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time. Required for cluster.scheduling.tasks object\nExample: 0 1 * * *\n"},"isEnabled":{"type":"boolean","description":"Describes whether the task is enabled. When true the task should run when false it should not run. Required for cluster.scheduling.tasks object.\n"},"taskParameters":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTaskTaskTaskParameters:OceanImportScheduledTaskTaskTaskParameters","description":"The scheduling parameters for the cluster.\n"},"taskType":{"type":"string","description":"Valid values: \"clusterRoll\". Required for cluster.scheduling.tasks object.\n"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:gke/OceanImportScheduledTaskTaskTaskParameters:OceanImportScheduledTaskTaskTaskParameters":{"properties":{"clusterRoll":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTaskTaskTaskParametersClusterRoll:OceanImportScheduledTaskTaskTaskParametersClusterRoll","description":"The cluster roll parameters for the cluster.\n"}},"type":"object"},"spotinst:gke/OceanImportScheduledTaskTaskTaskParametersClusterRoll:OceanImportScheduledTaskTaskTaskParametersClusterRoll":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"},"comment":{"type":"string","description":"Add a comment description for the roll. The comment is limited to 256 chars.\n"},"respectPdb":{"type":"boolean","description":"During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n\n\n"}},"type":"object"},"spotinst:gke/OceanImportShieldedInstanceConfig:OceanImportShieldedInstanceConfig":{"properties":{"enableIntegrityMonitoring":{"type":"boolean","description":"Boolean. Enable the integrity monitoring parameter on the GCP instances.\n"},"enableSecureBoot":{"type":"boolean","description":"Boolean. Enable the secure boot parameter on the GCP instances.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enableIntegrityMonitoring","enableSecureBoot"]}}},"spotinst:gke/OceanImportStrategy:OceanImportStrategy":{"properties":{"drainingTimeout":{"type":"integer","description":"The draining timeout (in seconds) before terminating the instance. If no draining timeout is defined, the default draining timeout will be used.\n"},"preemptiblePercentage":{"type":"integer","description":"Defines the desired preemptible percentage for the cluster.\n"},"provisioningModel":{"type":"string","description":"Define the provisioning model of the launched instances. Valid values: `SPOT`, `PREEMPTIBLE`.\n"},"scalingOrientation":{"type":"string","description":"Valid Values: `\"cost\", \"availability\", \"balanced\"`. Set this value to control the approach that Ocean takes when launching nodes.\n\n"},"shouldUtilizeCommitments":{"type":"boolean","description":"Enable committed use discounts utilization.\n"}},"type":"object"},"spotinst:gke/OceanImportUpdatePolicy:OceanImportUpdatePolicy":{"properties":{"conditionedRoll":{"type":"boolean","description":"Spot will perform a cluster Roll in accordance with a relevant modification of the cluster’s settings. When set to true , only specific changes in the cluster’s configuration will trigger a cluster roll (such as AMI, Key Pair, user data, instance types, load balancers, etc).\n"},"rollConfig":{"$ref":"#/types/spotinst:gke/OceanImportUpdatePolicyRollConfig:OceanImportUpdatePolicyRollConfig","description":"Holds the roll configuration.\n"},"shouldRoll":{"type":"boolean","description":"Enables the roll.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:gke/OceanImportUpdatePolicyRollConfig:OceanImportUpdatePolicyRollConfig":{"properties":{"batchMinHealthyPercentage":{"type":"integer","description":"Default: 50. Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"},"batchSizePercentage":{"type":"integer","description":"Sets the percentage of the instances to deploy in each batch.\n"},"launchSpecIds":{"type":"array","items":{"type":"string"},"description":"List of Virtual Node Group identifiers to be rolled.\n"},"respectPdb":{"type":"boolean","description":"Default: \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. During the roll, if the parameter is set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e we honor PDB during the instance replacement.\n\n"}},"type":"object","required":["batchSizePercentage"]},"spotinst:gke/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Optionally configure the number of GPUS to allocate for each headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate for each headroom unit.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU.\n"}},"type":"object","required":["numOfUnits"]},"spotinst:gke/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic":{"properties":{"autoHeadroomPercentage":{"type":"integer","description":"Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.headroom.automatic.\u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e = true is set on the Ocean cluster.\n"}},"type":"object"},"spotinst:gke/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions":{"properties":{"initialNodes":{"type":"integer","description":"When set to an integer greater than 0, a corresponding amount of nodes will be launched from the created Virtual Node Group.\n"}},"type":"object"},"spotinst:gke/OceanLaunchSpecFilters:OceanLaunchSpecFilters":{"properties":{"excludeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n"},"includeFamilies":{"type":"array","items":{"type":"string"},"description":"Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n"},"maxMemoryGib":{"type":"number","description":"Maximum amount of Memory (GiB).\n"},"maxVcpu":{"type":"integer","description":"Maximum number of vcpus available.\n"},"minMemoryGib":{"type":"number","description":"Minimum amount of Memory (GiB).\n"},"minVcpu":{"type":"integer","description":"Minimum number of vcpus available.\n"}},"type":"object"},"spotinst:gke/OceanLaunchSpecLabel:OceanLaunchSpecLabel":{"properties":{"key":{"type":"string","description":"The label key.\n"},"value":{"type":"string","description":"The label value.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["key","value"]}}},"spotinst:gke/OceanLaunchSpecMetadata:OceanLaunchSpecMetadata":{"properties":{"key":{"type":"string","description":"The metadata key.\n"},"value":{"type":"string","description":"The metadata value.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["key","value"]}}},"spotinst:gke/OceanLaunchSpecNetworkInterface:OceanLaunchSpecNetworkInterface":{"properties":{"accessConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecNetworkInterfaceAccessConfig:OceanLaunchSpecNetworkInterfaceAccessConfig"},"description":"The network protocol of the VNG.\n"},"aliasIpRanges":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecNetworkInterfaceAliasIpRange:OceanLaunchSpecNetworkInterfaceAliasIpRange"},"description":"use the imported node pool’s associated aliasIpRange to assign secondary IP addresses to the nodes. Cannot be changed after VNG creation.\n"},"network":{"type":"string","description":"The name of the network.\n"},"projectId":{"type":"string","description":"Use a network resource from a different project. Set the project identifier to use its network resource. This parameter is relevant only if the network resource is in a different project.\n"}},"type":"object","required":["network"]},"spotinst:gke/OceanLaunchSpecNetworkInterfaceAccessConfig:OceanLaunchSpecNetworkInterfaceAccessConfig":{"properties":{"name":{"type":"string","description":"The name of the access configuration.\n"},"type":{"type":"string","description":"The type of the access configuration.\n"}},"type":"object"},"spotinst:gke/OceanLaunchSpecNetworkInterfaceAliasIpRange:OceanLaunchSpecNetworkInterfaceAliasIpRange":{"properties":{"ipCidrRange":{"type":"string","description":"specify the IP address range in CIDR notation that can be used for the alias IP addresses associated with the imported node pool.\n"},"subnetworkRangeName":{"type":"string","description":"specify the IP address range for the subnet secondary IP range.\n"}},"type":"object","required":["ipCidrRange","subnetworkRangeName"]},"spotinst:gke/OceanLaunchSpecResourceLimits:OceanLaunchSpecResourceLimits":{"properties":{"maxInstanceCount":{"type":"integer","description":"Option to set a maximum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0.\n"},"minInstanceCount":{"type":"integer","description":"Option to set a minimum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0.\n"}},"type":"object"},"spotinst:gke/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask":{"properties":{"cronExpression":{"type":"string","description":"A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format.\n"},"isEnabled":{"type":"boolean","description":"Describes whether the task is enabled. When \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the task runs. When \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, it does not run.\n"},"taskHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecSchedulingTaskTaskHeadroom:OceanLaunchSpecSchedulingTaskTaskHeadroom"},"description":"The config of this scheduled task. Depends on the value of taskType.\n"},"taskType":{"type":"string","description":"The activity that you are scheduling. Valid values: \"manualHeadroomUpdate\".\n"}},"type":"object","required":["cronExpression","isEnabled","taskType"]},"spotinst:gke/OceanLaunchSpecSchedulingTaskTaskHeadroom:OceanLaunchSpecSchedulingTaskTaskHeadroom":{"properties":{"cpuPerUnit":{"type":"integer","description":"Optionally configure the number of CPUs to allocate for each headroom unit. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n"},"gpuPerUnit":{"type":"integer","description":"Optionally configure the number of GPUS to allocate for each headroom unit.\n"},"memoryPerUnit":{"type":"integer","description":"Optionally configure the amount of memory (MiB) to allocate for each headroom unit.\n"},"numOfUnits":{"type":"integer","description":"The number of units to retain as headroom, where each unit has the defined headroom CPU, memory and GPU.\n"}},"type":"object","required":["numOfUnits"]},"spotinst:gke/OceanLaunchSpecShieldedInstanceConfig:OceanLaunchSpecShieldedInstanceConfig":{"properties":{"enableIntegrityMonitoring":{"type":"boolean","description":"Boolean. Enable the integrity monitoring parameter on the GCP instances.\n"},"enableSecureBoot":{"type":"boolean","description":"Boolean. Enable the secure boot parameter on the GCP instances.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enableIntegrityMonitoring","enableSecureBoot"]}}},"spotinst:gke/OceanLaunchSpecStorage:OceanLaunchSpecStorage":{"properties":{"localSsdCount":{"type":"integer","description":"Defines the number of local SSDs to be attached per node for this VNG.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["localSsdCount"]}}},"spotinst:gke/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy":{"properties":{"preemptiblePercentage":{"type":"integer","description":"Defines the desired preemptible percentage for this launch specification.\n"},"scalingOrientation":{"type":"string","description":"Valid Values: `\"cost\", \"availability\", \"balanced\"`. Set this value to control the approach that Ocean takes when launching nodes.\n"}},"type":"object"},"spotinst:gke/OceanLaunchSpecTaint:OceanLaunchSpecTaint":{"properties":{"effect":{"type":"string","description":"The effect of the taint. Valid values: `\"NoSchedule\"`, `\"PreferNoSchedule\"`, `\"NoExecute\"`.\n"},"key":{"type":"string","description":"The taint key.\n"},"value":{"type":"string","description":"The taint value.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["effect","key","value"]}}},"spotinst:gke/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy":{"properties":{"rollConfig":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecUpdatePolicyRollConfig:OceanLaunchSpecUpdatePolicyRollConfig","description":"Holds the roll configuration.\n"},"shouldRoll":{"type":"boolean","description":"Enables the roll.\n"}},"type":"object","required":["shouldRoll"]},"spotinst:gke/OceanLaunchSpecUpdatePolicyRollConfig:OceanLaunchSpecUpdatePolicyRollConfig":{"properties":{"batchSizePercentage":{"type":"integer","description":"Sets the percentage of the instances to deploy in each batch.\n\n"}},"type":"object","required":["batchSizePercentage"]},"spotinst:index/DataIntegrationS3:DataIntegrationS3":{"properties":{"bucketName":{"type":"string"},"subdir":{"type":"string","description":"The subdirectory in which your files will be stored within the bucket. Adds the prefix subdir/ to new objects' keys. Can't be null or contain '/'.\n"}},"type":"object","required":["bucketName"]},"spotinst:index/ElastigroupAzureV3BootDiagnostic:ElastigroupAzureV3BootDiagnostic":{"properties":{"isEnabled":{"type":"boolean"},"storageUrl":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["isEnabled","type"],"language":{"nodejs":{"requiredOutputs":["isEnabled","storageUrl","type"]}}},"spotinst:index/ElastigroupAzureV3CapacityReservation:ElastigroupAzureV3CapacityReservation":{"properties":{"capacityReservationGroups":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3CapacityReservationCapacityReservationGroups:ElastigroupAzureV3CapacityReservationCapacityReservationGroups"},"shouldUtilize":{"type":"boolean"},"utilizationStrategy":{"type":"string"}},"type":"object","required":["shouldUtilize","utilizationStrategy"]},"spotinst:index/ElastigroupAzureV3CapacityReservationCapacityReservationGroups:ElastigroupAzureV3CapacityReservationCapacityReservationGroups":{"properties":{"crgName":{"type":"string"},"crgResourceGroupName":{"type":"string"},"crgShouldPrioritize":{"type":"boolean"}},"type":"object","required":["crgName","crgResourceGroupName"]},"spotinst:index/ElastigroupAzureV3DataDisk:ElastigroupAzureV3DataDisk":{"properties":{"lun":{"type":"integer"},"sizeGb":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["lun","sizeGb","type"]},"spotinst:index/ElastigroupAzureV3Extension:ElastigroupAzureV3Extension":{"properties":{"apiVersion":{"type":"string"},"enableAutomaticUpgrade":{"type":"boolean"},"minorVersionAutoUpgrade":{"type":"boolean"},"name":{"type":"string"},"protectedSettings":{"type":"object","additionalProperties":{"type":"string"}},"protectedSettingsFromKeyVault":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ExtensionProtectedSettingsFromKeyVault:ElastigroupAzureV3ExtensionProtectedSettingsFromKeyVault"},"publicSettings":{"type":"object","additionalProperties":{"type":"string"}},"publisher":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["apiVersion","minorVersionAutoUpgrade","name","publisher","type"],"language":{"nodejs":{"requiredOutputs":["apiVersion","minorVersionAutoUpgrade","name","protectedSettings","publicSettings","publisher","type"]}}},"spotinst:index/ElastigroupAzureV3ExtensionProtectedSettingsFromKeyVault:ElastigroupAzureV3ExtensionProtectedSettingsFromKeyVault":{"properties":{"secretUrl":{"type":"string"},"sourceVault":{"type":"string"}},"type":"object","required":["secretUrl","sourceVault"]},"spotinst:index/ElastigroupAzureV3Health:ElastigroupAzureV3Health":{"properties":{"autoHealing":{"type":"boolean"},"gracePeriod":{"type":"integer"},"healthCheckTypes":{"type":"array","items":{"type":"string"}},"unhealthyDuration":{"type":"integer"}},"type":"object"},"spotinst:index/ElastigroupAzureV3Image:ElastigroupAzureV3Image":{"properties":{"customs":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ImageCustom:ElastigroupAzureV3ImageCustom"}},"galleryImages":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ImageGalleryImage:ElastigroupAzureV3ImageGalleryImage"}},"marketplaces":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ImageMarketplace:ElastigroupAzureV3ImageMarketplace"}}},"type":"object"},"spotinst:index/ElastigroupAzureV3ImageCustom:ElastigroupAzureV3ImageCustom":{"properties":{"imageName":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["imageName","resourceGroupName"]},"spotinst:index/ElastigroupAzureV3ImageGalleryImage:ElastigroupAzureV3ImageGalleryImage":{"properties":{"galleryName":{"type":"string"},"imageName":{"type":"string"},"resourceGroupName":{"type":"string"},"spotAccountId":{"type":"string"},"version":{"type":"string"}},"type":"object","required":["galleryName","imageName","resourceGroupName","version"]},"spotinst:index/ElastigroupAzureV3ImageMarketplace:ElastigroupAzureV3ImageMarketplace":{"properties":{"offer":{"type":"string"},"publisher":{"type":"string"},"sku":{"type":"string"},"version":{"type":"string"}},"type":"object","required":["offer","publisher","sku","version"]},"spotinst:index/ElastigroupAzureV3LoadBalancer:ElastigroupAzureV3LoadBalancer":{"properties":{"backendPoolNames":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"resourceGroupName":{"type":"string"},"sku":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["name","resourceGroupName","type"]},"spotinst:index/ElastigroupAzureV3Login:ElastigroupAzureV3Login":{"properties":{"password":{"type":"string"},"sshPublicKey":{"type":"string"},"userName":{"type":"string"}},"type":"object","required":["userName"]},"spotinst:index/ElastigroupAzureV3ManagedServiceIdentity:ElastigroupAzureV3ManagedServiceIdentity":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/ElastigroupAzureV3Network:ElastigroupAzureV3Network":{"properties":{"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3NetworkNetworkInterface:ElastigroupAzureV3NetworkNetworkInterface"}},"resourceGroupName":{"type":"string"},"virtualNetworkName":{"type":"string"}},"type":"object","required":["networkInterfaces","resourceGroupName","virtualNetworkName"]},"spotinst:index/ElastigroupAzureV3NetworkNetworkInterface:ElastigroupAzureV3NetworkNetworkInterface":{"properties":{"additionalIpConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3NetworkNetworkInterfaceAdditionalIpConfig:ElastigroupAzureV3NetworkNetworkInterfaceAdditionalIpConfig"}},"applicationSecurityGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3NetworkNetworkInterfaceApplicationSecurityGroup:ElastigroupAzureV3NetworkNetworkInterfaceApplicationSecurityGroup"}},"assignPublicIp":{"type":"boolean"},"enableIpForwarding":{"type":"boolean"},"isPrimary":{"type":"boolean"},"privateIpAddresses":{"type":"array","items":{"type":"string"}},"publicIpSku":{"type":"string"},"securityGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3NetworkNetworkInterfaceSecurityGroup:ElastigroupAzureV3NetworkNetworkInterfaceSecurityGroup"}},"subnetName":{"type":"string"}},"type":"object","required":["assignPublicIp","isPrimary","subnetName"]},"spotinst:index/ElastigroupAzureV3NetworkNetworkInterfaceAdditionalIpConfig:ElastigroupAzureV3NetworkNetworkInterfaceAdditionalIpConfig":{"properties":{"name":{"type":"string"},"privateIpVersion":{"type":"string"}},"type":"object","required":["name"]},"spotinst:index/ElastigroupAzureV3NetworkNetworkInterfaceApplicationSecurityGroup:ElastigroupAzureV3NetworkNetworkInterfaceApplicationSecurityGroup":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/ElastigroupAzureV3NetworkNetworkInterfaceSecurityGroup:ElastigroupAzureV3NetworkNetworkInterfaceSecurityGroup":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object"},"spotinst:index/ElastigroupAzureV3OsDisk:ElastigroupAzureV3OsDisk":{"properties":{"sizeGb":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["type"]},"spotinst:index/ElastigroupAzureV3ProximityPlacementGroup:ElastigroupAzureV3ProximityPlacementGroup":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/ElastigroupAzureV3RevertToSpot:ElastigroupAzureV3RevertToSpot":{"properties":{"performAt":{"type":"string"}},"type":"object","required":["performAt"]},"spotinst:index/ElastigroupAzureV3ScalingDownPolicy:ElastigroupAzureV3ScalingDownPolicy":{"properties":{"action":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingDownPolicyAction:ElastigroupAzureV3ScalingDownPolicyAction"},"cooldown":{"type":"integer"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingDownPolicyDimension:ElastigroupAzureV3ScalingDownPolicyDimension"}},"evaluationPeriods":{"type":"integer"},"isEnabled":{"type":"boolean"},"metricName":{"type":"string"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string"},"source":{"type":"string"},"statistic":{"type":"string"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["action","cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","statistic","threshold"],"language":{"nodejs":{"requiredOutputs":["action","cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","source","statistic","threshold"]}}},"spotinst:index/ElastigroupAzureV3ScalingDownPolicyAction:ElastigroupAzureV3ScalingDownPolicyAction":{"properties":{"adjustment":{"type":"string"},"maximum":{"type":"string"},"minimum":{"type":"string"},"target":{"type":"string"},"type":{"type":"string"}},"type":"object"},"spotinst:index/ElastigroupAzureV3ScalingDownPolicyDimension:ElastigroupAzureV3ScalingDownPolicyDimension":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"type":"object"},"spotinst:index/ElastigroupAzureV3ScalingUpPolicy:ElastigroupAzureV3ScalingUpPolicy":{"properties":{"action":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingUpPolicyAction:ElastigroupAzureV3ScalingUpPolicyAction"},"cooldown":{"type":"integer"},"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingUpPolicyDimension:ElastigroupAzureV3ScalingUpPolicyDimension"}},"evaluationPeriods":{"type":"integer"},"isEnabled":{"type":"boolean"},"metricName":{"type":"string"},"namespace":{"type":"string"},"operator":{"type":"string"},"period":{"type":"integer"},"policyName":{"type":"string"},"source":{"type":"string"},"statistic":{"type":"string"},"threshold":{"type":"number"},"unit":{"type":"string"}},"type":"object","required":["action","cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","statistic","threshold"],"language":{"nodejs":{"requiredOutputs":["action","cooldown","evaluationPeriods","metricName","namespace","operator","period","policyName","source","statistic","threshold"]}}},"spotinst:index/ElastigroupAzureV3ScalingUpPolicyAction:ElastigroupAzureV3ScalingUpPolicyAction":{"properties":{"adjustment":{"type":"string"},"maximum":{"type":"string"},"minimum":{"type":"string"},"target":{"type":"string"},"type":{"type":"string"}},"type":"object"},"spotinst:index/ElastigroupAzureV3ScalingUpPolicyDimension:ElastigroupAzureV3ScalingUpPolicyDimension":{"properties":{"name":{"type":"string"},"value":{"type":"string"}},"type":"object"},"spotinst:index/ElastigroupAzureV3SchedulingTask:ElastigroupAzureV3SchedulingTask":{"properties":{"adjustment":{"type":"string"},"adjustmentPercentage":{"type":"string"},"batchSizePercentage":{"type":"string"},"cronExpression":{"type":"string"},"gracePeriod":{"type":"string"},"isEnabled":{"type":"boolean"},"scaleMaxCapacity":{"type":"string"},"scaleMinCapacity":{"type":"string"},"scaleTargetCapacity":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["cronExpression","isEnabled","type"]},"spotinst:index/ElastigroupAzureV3Secret:ElastigroupAzureV3Secret":{"properties":{"sourceVaults":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3SecretSourceVault:ElastigroupAzureV3SecretSourceVault"}},"vaultCertificates":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3SecretVaultCertificate:ElastigroupAzureV3SecretVaultCertificate"}}},"type":"object","required":["sourceVaults","vaultCertificates"]},"spotinst:index/ElastigroupAzureV3SecretSourceVault:ElastigroupAzureV3SecretSourceVault":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/ElastigroupAzureV3SecretVaultCertificate:ElastigroupAzureV3SecretVaultCertificate":{"properties":{"certificateStore":{"type":"string"},"certificateUrl":{"type":"string"}},"type":"object","required":["certificateStore","certificateUrl"]},"spotinst:index/ElastigroupAzureV3Security:ElastigroupAzureV3Security":{"properties":{"confidentialOsDiskEncryption":{"type":"boolean"},"encryptionAtHost":{"type":"boolean"},"secureBootEnabled":{"type":"boolean"},"securityType":{"type":"string"},"vtpmEnabled":{"type":"boolean"}},"type":"object"},"spotinst:index/ElastigroupAzureV3Signal:ElastigroupAzureV3Signal":{"properties":{"timeout":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["timeout","type"]},"spotinst:index/ElastigroupAzureV3Tag:ElastigroupAzureV3Tag":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:index/ElastigroupAzureV3VmSizes:ElastigroupAzureV3VmSizes":{"properties":{"excludedVmSizes":{"type":"array","items":{"type":"string"}},"odSizes":{"type":"array","items":{"type":"string"}},"preferredSpotSizes":{"type":"array","items":{"type":"string"}},"spotSizeAttributes":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3VmSizesSpotSizeAttributes:ElastigroupAzureV3VmSizesSpotSizeAttributes"},"spotSizes":{"type":"array","items":{"type":"string"}}},"type":"object","required":["odSizes"]},"spotinst:index/ElastigroupAzureV3VmSizesSpotSizeAttributes:ElastigroupAzureV3VmSizesSpotSizeAttributes":{"properties":{"maxCpu":{"type":"integer"},"maxMemory":{"type":"integer"},"maxStorage":{"type":"integer"},"minCpu":{"type":"integer"},"minMemory":{"type":"integer"},"minStorage":{"type":"integer"}},"type":"object"},"spotinst:index/HealthCheckCheck:HealthCheckCheck":{"properties":{"endPoint":{"type":"string"},"endpoint":{"type":"string","description":"The destination for the request.\n"},"healthy":{"type":"integer","description":"The number of consecutive successful health checks that must occur before declaring an instance healthy.\n"},"interval":{"type":"integer","description":"The amount of time (in seconds) between each health check (minimum: 10).\n"},"port":{"type":"integer","description":"The port to use to connect with the instance.\n"},"protocol":{"type":"string","description":"The protocol to use to connect with the instance. Valid values: http, https.\n"},"timeOut":{"type":"integer"},"timeout":{"type":"integer","description":"the amount of time (in seconds) to wait when receiving a response from the health check.\n"},"unhealthy":{"type":"integer","description":"The number of consecutive failed health checks that must occur before declaring an instance unhealthy.\n"}},"type":"object","required":["healthy","interval","port","protocol","unhealthy"]},"spotinst:index/NotificationCenterComputePolicyConfig:NotificationCenterComputePolicyConfig":{"properties":{"dynamicRules":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterComputePolicyConfigDynamicRule:NotificationCenterComputePolicyConfigDynamicRule"}},"events":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterComputePolicyConfigEvent:NotificationCenterComputePolicyConfigEvent"}},"resourceIds":{"type":"array","items":{"type":"string"}},"shouldIncludeAllResources":{"type":"boolean"}},"type":"object","required":["events"]},"spotinst:index/NotificationCenterComputePolicyConfigDynamicRule:NotificationCenterComputePolicyConfigDynamicRule":{"properties":{"filterConditions":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterComputePolicyConfigDynamicRuleFilterCondition:NotificationCenterComputePolicyConfigDynamicRuleFilterCondition"}}},"type":"object"},"spotinst:index/NotificationCenterComputePolicyConfigDynamicRuleFilterCondition:NotificationCenterComputePolicyConfigDynamicRuleFilterCondition":{"properties":{"expression":{"type":"string"},"identifier":{"type":"string"},"operator":{"type":"string"}},"type":"object"},"spotinst:index/NotificationCenterComputePolicyConfigEvent:NotificationCenterComputePolicyConfigEvent":{"properties":{"event":{"type":"string"},"eventType":{"type":"string"}},"type":"object"},"spotinst:index/NotificationCenterRegisteredUser:NotificationCenterRegisteredUser":{"properties":{"subscriptionTypes":{"type":"array","items":{"type":"string"}},"userEmail":{"type":"string"}},"type":"object"},"spotinst:index/NotificationCenterSubscription:NotificationCenterSubscription":{"properties":{"endpoint":{"type":"string"},"subscriptionType":{"type":"string"}},"type":"object"},"spotinst:index/OceanRightSizingRuleAttachWorkload:OceanRightSizingRuleAttachWorkload":{"properties":{"namespaces":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAttachWorkloadNamespace:OceanRightSizingRuleAttachWorkloadNamespace"},"description":"List of namespaces that match the auto-apply rule.\n"}},"type":"object","required":["namespaces"]},"spotinst:index/OceanRightSizingRuleAttachWorkloadNamespace:OceanRightSizingRuleAttachWorkloadNamespace":{"properties":{"labels":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAttachWorkloadNamespaceLabel:OceanRightSizingRuleAttachWorkloadNamespaceLabel"},"description":"A set of key-value label pairs used to automatically apply this rule to all workloads in the cluster that match these labels.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"attachWorkloads\"\" pulumi-lang-dotnet=\"\"AttachWorkloads\"\" pulumi-lang-go=\"\"attachWorkloads\"\" pulumi-lang-python=\"\"attach_workloads\"\" pulumi-lang-yaml=\"\"attachWorkloads\"\" pulumi-lang-java=\"\"attachWorkloads\"\"\u003e\"attach_workloads\"\u003c/span\u003e\u003e\u003c/a\u003e\n"},"namespaceName":{"type":"string"},"workloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAttachWorkloadNamespaceWorkload:OceanRightSizingRuleAttachWorkloadNamespaceWorkload"}}},"type":"object","required":["namespaceName"]},"spotinst:index/OceanRightSizingRuleAttachWorkloadNamespaceLabel:OceanRightSizingRuleAttachWorkloadNamespaceLabel":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:index/OceanRightSizingRuleAttachWorkloadNamespaceWorkload:OceanRightSizingRuleAttachWorkloadNamespaceWorkload":{"properties":{"regexName":{"type":"string"},"workloadName":{"type":"string"},"workloadType":{"type":"string"}},"type":"object","required":["workloadType"]},"spotinst:index/OceanRightSizingRuleAutoApplyDefinition:OceanRightSizingRuleAutoApplyDefinition":{"properties":{"enabled":{"type":"boolean","description":"Determines if auto apply is enabled.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"A set of key-value label pairs used to automatically apply this rule to all workloads in the cluster that match these labels.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"attachWorkloads\"\" pulumi-lang-dotnet=\"\"AttachWorkloads\"\" pulumi-lang-go=\"\"attachWorkloads\"\" pulumi-lang-python=\"\"attach_workloads\"\" pulumi-lang-yaml=\"\"attachWorkloads\"\" pulumi-lang-java=\"\"attachWorkloads\"\"\u003e\"attach_workloads\"\u003c/span\u003e\u003e\u003c/a\u003e\n"},"namespaces":{"type":"array","items":{"type":"string"},"description":"List of namespaces that match the auto-apply rule.\n"}},"type":"object"},"spotinst:index/OceanRightSizingRuleDetachWorkload:OceanRightSizingRuleDetachWorkload":{"properties":{"namespaces":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleDetachWorkloadNamespace:OceanRightSizingRuleDetachWorkloadNamespace"},"description":"List of namespaces that match the auto-apply rule.\n"}},"type":"object","required":["namespaces"]},"spotinst:index/OceanRightSizingRuleDetachWorkloadNamespace:OceanRightSizingRuleDetachWorkloadNamespace":{"properties":{"labels":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleDetachWorkloadNamespaceLabel:OceanRightSizingRuleDetachWorkloadNamespaceLabel"},"description":"A set of key-value label pairs used to automatically apply this rule to all workloads in the cluster that match these labels.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"attachWorkloads\"\" pulumi-lang-dotnet=\"\"AttachWorkloads\"\" pulumi-lang-go=\"\"attachWorkloads\"\" pulumi-lang-python=\"\"attach_workloads\"\" pulumi-lang-yaml=\"\"attachWorkloads\"\" pulumi-lang-java=\"\"attachWorkloads\"\"\u003e\"attach_workloads\"\u003c/span\u003e\u003e\u003c/a\u003e\n"},"namespaceName":{"type":"string"},"workloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleDetachWorkloadNamespaceWorkload:OceanRightSizingRuleDetachWorkloadNamespaceWorkload"}}},"type":"object","required":["namespaceName"]},"spotinst:index/OceanRightSizingRuleDetachWorkloadNamespaceLabel:OceanRightSizingRuleDetachWorkloadNamespaceLabel":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["key","value"]},"spotinst:index/OceanRightSizingRuleDetachWorkloadNamespaceWorkload:OceanRightSizingRuleDetachWorkloadNamespaceWorkload":{"properties":{"regexName":{"type":"string"},"workloadName":{"type":"string"},"workloadType":{"type":"string"}},"type":"object","required":["workloadType"]},"spotinst:index/OceanRightSizingRuleRecommendationApplicationBoundary:OceanRightSizingRuleRecommendationApplicationBoundary":{"properties":{"cpuMax":{"type":"number","description":"the maximal value of cpu in vCpu.\n"},"cpuMin":{"type":"number","description":"the minimal value of cpu in vCpu.\n"},"memoryMax":{"type":"integer","description":"the maximal value of memory in Gib.\n"},"memoryMin":{"type":"integer","description":"the minimal value of memory in Gib.\n"}},"type":"object"},"spotinst:index/OceanRightSizingRuleRecommendationApplicationHpa:OceanRightSizingRuleRecommendationApplicationHpa":{"properties":{"allowHpaRecommendations":{"type":"boolean","description":"Determines by the rule if recommendation application is allowed for workloads with HPA definition.\n"}},"type":"object"},"spotinst:index/OceanRightSizingRuleRecommendationApplicationInterval:OceanRightSizingRuleRecommendationApplicationInterval":{"properties":{"monthlyRepetitionBases":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBase:OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBase"},"description":"Determines the Ocean Rightsizing rule monthly repetition basis.\n"},"repetitionBasis":{"type":"string","description":"Valid values: \"WEEKLY\" \"MONTHLY\". The repetition basis.\n"},"weeklyRepetitionBases":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBase:OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBase"},"description":"Determines the Ocean Rightsizing rule weekly repetition basis.\n"}},"type":"object","required":["repetitionBasis"]},"spotinst:index/OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBase:OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBase":{"properties":{"intervalMonths":{"type":"array","items":{"type":"integer"},"description":"Array of the months (in number), when we want to trigger the apply recommendations.\n"},"weekOfTheMonths":{"type":"array","items":{"type":"string"},"description":"Valid values: \"FIRST\" \"SECOND\" \"THIRD\" \"FOURTH\" \"LAST\". Array of the weeks in the month, when we want to trigger the apply recommendations.\n"},"weeklyRepetitionBases":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBase:OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBase"},"description":"Determines the Ocean Rightsizing rule weekly repetition basis.\n"}},"type":"object","required":["intervalMonths","weekOfTheMonths"]},"spotinst:index/OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBase:OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBase":{"properties":{"intervalDays":{"type":"array","items":{"type":"string"},"description":"Valid values: \"SUNDAY\" \"MONDAY\" \"TUESDAY\" \"WEDNESDAY\" \"THURSDAY\" \"FRIDAY\" \"SATURDAY\". Array of the days of the week, when we want to trigger the apply recommendations.\n"},"intervalHoursEndTime":{"type":"string","description":"End time.\n"},"intervalHoursStartTime":{"type":"string","description":"Start time.\n"}},"type":"object","required":["intervalDays","intervalHoursEndTime","intervalHoursStartTime"]},"spotinst:index/OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBase:OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBase":{"properties":{"intervalDays":{"type":"array","items":{"type":"string"},"description":"Valid values: \"SUNDAY\" \"MONDAY\" \"TUESDAY\" \"WEDNESDAY\" \"THURSDAY\" \"FRIDAY\" \"SATURDAY\". Array of the days of the week, when we want to trigger the apply recommendations.\n"},"intervalHoursEndTime":{"type":"string","description":"End time.\n"},"intervalHoursStartTime":{"type":"string","description":"Start time.\n"}},"type":"object","required":["intervalDays","intervalHoursEndTime","intervalHoursStartTime"]},"spotinst:index/OceanRightSizingRuleRecommendationApplicationMinThreshold:OceanRightSizingRuleRecommendationApplicationMinThreshold":{"properties":{"cpuPercentage":{"type":"number","description":".\n"},"memoryPercentage":{"type":"number","description":".\n"}},"type":"object"},"spotinst:index/OceanRightSizingRuleRecommendationApplicationOverheadValue:OceanRightSizingRuleRecommendationApplicationOverheadValue":{"properties":{"cpuPercentage":{"type":"number","description":".\n"},"memoryPercentage":{"type":"number","description":".\n"}},"type":"object"},"spotinst:index/StatefulNodeAzureAttachDataDisk:StatefulNodeAzureAttachDataDisk":{"properties":{"dataDiskName":{"type":"string"},"dataDiskResourceGroupName":{"type":"string"},"lun":{"type":"integer"},"sizeGb":{"type":"integer"},"storageAccountType":{"type":"string"},"zone":{"type":"string"}},"type":"object","required":["dataDiskName","dataDiskResourceGroupName","sizeGb","storageAccountType"]},"spotinst:index/StatefulNodeAzureBootDiagnostic:StatefulNodeAzureBootDiagnostic":{"properties":{"isEnabled":{"type":"boolean"},"storageUrl":{"type":"string"},"type":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["isEnabled","storageUrl","type"]}}},"spotinst:index/StatefulNodeAzureDataDisk:StatefulNodeAzureDataDisk":{"properties":{"lun":{"type":"integer"},"sizeGb":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["lun","sizeGb","type"]},"spotinst:index/StatefulNodeAzureDelete:StatefulNodeAzureDelete":{"properties":{"diskShouldDeallocate":{"type":"boolean"},"diskTtlInHours":{"type":"integer"},"networkShouldDeallocate":{"type":"boolean"},"networkTtlInHours":{"type":"integer"},"publicIpShouldDeallocate":{"type":"boolean"},"publicIpTtlInHours":{"type":"integer"},"shouldDeregisterFromLb":{"type":"boolean"},"shouldRevertToOd":{"type":"boolean"},"shouldTerminateVm":{"type":"boolean"},"snapshotShouldDeallocate":{"type":"boolean"},"snapshotTtlInHours":{"type":"integer"}},"type":"object","required":["shouldTerminateVm"]},"spotinst:index/StatefulNodeAzureDetachDataDisk:StatefulNodeAzureDetachDataDisk":{"properties":{"dataDiskName":{"type":"string"},"dataDiskResourceGroupName":{"type":"string"},"shouldDeallocate":{"type":"boolean"},"ttlInHours":{"type":"integer"}},"type":"object","required":["dataDiskName","dataDiskResourceGroupName","shouldDeallocate"]},"spotinst:index/StatefulNodeAzureExtension:StatefulNodeAzureExtension":{"properties":{"apiVersion":{"type":"string"},"minorVersionAutoUpgrade":{"type":"boolean"},"name":{"type":"string"},"protectedSettings":{"type":"object","additionalProperties":{"type":"string"}},"publicSettings":{"type":"object","additionalProperties":{"type":"string"}},"publisher":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["apiVersion","minorVersionAutoUpgrade","name","publisher","type"],"language":{"nodejs":{"requiredOutputs":["apiVersion","minorVersionAutoUpgrade","name","protectedSettings","publicSettings","publisher","type"]}}},"spotinst:index/StatefulNodeAzureHealth:StatefulNodeAzureHealth":{"properties":{"autoHealing":{"type":"boolean"},"gracePeriod":{"type":"integer"},"healthCheckTypes":{"type":"array","items":{"type":"string"}},"unhealthyDuration":{"type":"integer"}},"type":"object","required":["autoHealing","healthCheckTypes"],"language":{"nodejs":{"requiredOutputs":["autoHealing","gracePeriod","healthCheckTypes","unhealthyDuration"]}}},"spotinst:index/StatefulNodeAzureImage:StatefulNodeAzureImage":{"properties":{"customImages":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImageCustomImage:StatefulNodeAzureImageCustomImage"}},"galleries":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImageGallery:StatefulNodeAzureImageGallery"}},"marketplaceImages":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImageMarketplaceImage:StatefulNodeAzureImageMarketplaceImage"}}},"type":"object","language":{"nodejs":{"requiredOutputs":["customImages","galleries","marketplaceImages"]}}},"spotinst:index/StatefulNodeAzureImageCustomImage:StatefulNodeAzureImageCustomImage":{"properties":{"customImageResourceGroupName":{"type":"string"},"name":{"type":"string"}},"type":"object","required":["customImageResourceGroupName","name"]},"spotinst:index/StatefulNodeAzureImageGallery:StatefulNodeAzureImageGallery":{"properties":{"galleryName":{"type":"string"},"galleryResourceGroupName":{"type":"string"},"imageName":{"type":"string"},"spotAccountId":{"type":"string"},"versionName":{"type":"string"}},"type":"object","required":["galleryName","galleryResourceGroupName","imageName","versionName"]},"spotinst:index/StatefulNodeAzureImageMarketplaceImage:StatefulNodeAzureImageMarketplaceImage":{"properties":{"offer":{"type":"string"},"publisher":{"type":"string"},"sku":{"type":"string"},"version":{"type":"string"}},"type":"object","required":["offer","publisher","sku","version"]},"spotinst:index/StatefulNodeAzureImportVm:StatefulNodeAzureImportVm":{"properties":{"drainingTimeout":{"type":"integer"},"originalVmName":{"type":"string"},"resourceGroupName":{"type":"string"},"resourcesRetentionTime":{"type":"integer"}},"type":"object","required":["originalVmName","resourceGroupName"]},"spotinst:index/StatefulNodeAzureLoadBalancer:StatefulNodeAzureLoadBalancer":{"properties":{"backendPoolNames":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"resourceGroupName":{"type":"string"},"sku":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["backendPoolNames","name","resourceGroupName","type"],"language":{"nodejs":{"requiredOutputs":["backendPoolNames","name","resourceGroupName","sku","type"]}}},"spotinst:index/StatefulNodeAzureLogin:StatefulNodeAzureLogin":{"properties":{"password":{"type":"string"},"sshPublicKey":{"type":"string"},"userName":{"type":"string"}},"type":"object","required":["userName"]},"spotinst:index/StatefulNodeAzureManagedServiceIdentity:StatefulNodeAzureManagedServiceIdentity":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"},"subscriptionId":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/StatefulNodeAzureNetwork:StatefulNodeAzureNetwork":{"properties":{"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetworkNetworkInterface:StatefulNodeAzureNetworkNetworkInterface"}},"networkResourceGroupName":{"type":"string"},"virtualNetworkName":{"type":"string"}},"type":"object","required":["networkInterfaces","networkResourceGroupName","virtualNetworkName"]},"spotinst:index/StatefulNodeAzureNetworkNetworkInterface:StatefulNodeAzureNetworkNetworkInterface":{"properties":{"additionalIpConfigurations":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfiguration:StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfiguration"}},"applicationSecurityGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroup:StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroup"}},"assignPublicIp":{"type":"boolean"},"enableIpForwarding":{"type":"boolean"},"isPrimary":{"type":"boolean"},"networkSecurityGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroup:StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroup"}},"privateIpAddresses":{"type":"array","items":{"type":"string"}},"publicIpSku":{"type":"string"},"publicIps":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetworkNetworkInterfacePublicIp:StatefulNodeAzureNetworkNetworkInterfacePublicIp"}},"subnetName":{"type":"string"}},"type":"object","required":["isPrimary","subnetName"]},"spotinst:index/StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfiguration:StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfiguration":{"properties":{"name":{"type":"string"},"privateIpAddressVersion":{"type":"string"}},"type":"object","required":["name","privateIpAddressVersion"]},"spotinst:index/StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroup:StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroup":{"properties":{"name":{"type":"string"},"networkResourceGroupName":{"type":"string"}},"type":"object","required":["name","networkResourceGroupName"]},"spotinst:index/StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroup:StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroup":{"properties":{"name":{"type":"string"},"networkResourceGroupName":{"type":"string"}},"type":"object"},"spotinst:index/StatefulNodeAzureNetworkNetworkInterfacePublicIp:StatefulNodeAzureNetworkNetworkInterfacePublicIp":{"properties":{"name":{"type":"string"},"networkResourceGroupName":{"type":"string"}},"type":"object","required":["name","networkResourceGroupName"]},"spotinst:index/StatefulNodeAzureOsDisk:StatefulNodeAzureOsDisk":{"properties":{"caching":{"type":"string"},"sizeGb":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["type"]},"spotinst:index/StatefulNodeAzureProximityPlacementGroup:StatefulNodeAzureProximityPlacementGroup":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/StatefulNodeAzureSchedulingTask:StatefulNodeAzureSchedulingTask":{"properties":{"cronExpression":{"type":"string"},"isEnabled":{"type":"boolean"},"type":{"type":"string"}},"type":"object","required":["cronExpression","isEnabled","type"]},"spotinst:index/StatefulNodeAzureSecret:StatefulNodeAzureSecret":{"properties":{"sourceVaults":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecretSourceVault:StatefulNodeAzureSecretSourceVault"}},"vaultCertificates":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecretVaultCertificate:StatefulNodeAzureSecretVaultCertificate"}}},"type":"object","required":["sourceVaults","vaultCertificates"]},"spotinst:index/StatefulNodeAzureSecretSourceVault:StatefulNodeAzureSecretSourceVault":{"properties":{"name":{"type":"string"},"resourceGroupName":{"type":"string"}},"type":"object","required":["name","resourceGroupName"]},"spotinst:index/StatefulNodeAzureSecretVaultCertificate:StatefulNodeAzureSecretVaultCertificate":{"properties":{"certificateStore":{"type":"string"},"certificateUrl":{"type":"string"}},"type":"object"},"spotinst:index/StatefulNodeAzureSecurity:StatefulNodeAzureSecurity":{"properties":{"confidentialOsDiskEncryption":{"type":"string"},"encryptionAtHost":{"type":"boolean"},"secureBootEnabled":{"type":"boolean"},"securityType":{"type":"string"},"vtpmEnabled":{"type":"boolean"}},"type":"object","language":{"nodejs":{"requiredOutputs":["encryptionAtHost","secureBootEnabled","vtpmEnabled"]}}},"spotinst:index/StatefulNodeAzureSignal:StatefulNodeAzureSignal":{"properties":{"timeout":{"type":"integer"},"type":{"type":"string"}},"type":"object","required":["timeout","type"]},"spotinst:index/StatefulNodeAzureStrategy:StatefulNodeAzureStrategy":{"properties":{"availabilityVsCost":{"type":"integer"},"capacityReservations":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategyCapacityReservation:StatefulNodeAzureStrategyCapacityReservation"}},"drainingTimeout":{"type":"integer"},"fallbackToOnDemand":{"type":"boolean"},"interruptionToleration":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategyInterruptionToleration:StatefulNodeAzureStrategyInterruptionToleration"},"odWindows":{"type":"array","items":{"type":"string"}},"optimizationWindows":{"type":"array","items":{"type":"string"}},"preferredLifeCycle":{"type":"string"},"revertToSpot":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategyRevertToSpot:StatefulNodeAzureStrategyRevertToSpot"},"vmAdmins":{"type":"array","items":{"type":"string"}}},"type":"object","required":["fallbackToOnDemand"],"language":{"nodejs":{"requiredOutputs":["drainingTimeout","fallbackToOnDemand","preferredLifeCycle","revertToSpot"]}}},"spotinst:index/StatefulNodeAzureStrategyCapacityReservation:StatefulNodeAzureStrategyCapacityReservation":{"properties":{"capacityReservationGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroup:StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroup"}},"shouldUtilize":{"type":"boolean"},"utilizationStrategy":{"type":"string"}},"type":"object","required":["shouldUtilize","utilizationStrategy"]},"spotinst:index/StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroup:StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroup":{"properties":{"crgName":{"type":"string"},"crgResourceGroupName":{"type":"string"},"crgShouldPrioritize":{"type":"boolean"}},"type":"object","required":["crgName","crgResourceGroupName"]},"spotinst:index/StatefulNodeAzureStrategyInterruptionToleration:StatefulNodeAzureStrategyInterruptionToleration":{"properties":{"cooldown":{"type":"integer"},"evaluationPeriod":{"type":"integer"},"isEnabled":{"type":"boolean"},"threshold":{"type":"integer"}},"type":"object"},"spotinst:index/StatefulNodeAzureStrategyRevertToSpot:StatefulNodeAzureStrategyRevertToSpot":{"properties":{"performAt":{"type":"string"}},"type":"object","required":["performAt"]},"spotinst:index/StatefulNodeAzureTag:StatefulNodeAzureTag":{"properties":{"tagKey":{"type":"string"},"tagValue":{"type":"string"}},"type":"object","required":["tagKey"]},"spotinst:index/StatefulNodeAzureUpdateState:StatefulNodeAzureUpdateState":{"properties":{"state":{"type":"string"}},"type":"object","required":["state"]},"spotinst:index/StatefulNodeAzureVmSizes:StatefulNodeAzureVmSizes":{"properties":{"excludedVmSizes":{"type":"array","items":{"type":"string"}},"odSizes":{"type":"array","items":{"type":"string"}},"preferredSpotSizes":{"type":"array","items":{"type":"string"}},"spotSizeAttributes":{"$ref":"#/types/spotinst:index/StatefulNodeAzureVmSizesSpotSizeAttributes:StatefulNodeAzureVmSizesSpotSizeAttributes"},"spotSizes":{"type":"array","items":{"type":"string"}}},"type":"object","required":["odSizes"]},"spotinst:index/StatefulNodeAzureVmSizesSpotSizeAttributes:StatefulNodeAzureVmSizesSpotSizeAttributes":{"properties":{"maxCpu":{"type":"integer"},"maxMemory":{"type":"integer"},"maxStorage":{"type":"integer"},"minCpu":{"type":"integer"},"minMemory":{"type":"integer"},"minStorage":{"type":"integer"}},"type":"object"},"spotinst:oceancd/RolloutSpecFailurePolicy:RolloutSpecFailurePolicy":{"properties":{"action":{"type":"string","description":"Choose an action to perform on failure. Default is \u003cspan pulumi-lang-nodejs=\"`abort`\" pulumi-lang-dotnet=\"`Abort`\" pulumi-lang-go=\"`abort`\" pulumi-lang-python=\"`abort`\" pulumi-lang-yaml=\"`abort`\" pulumi-lang-java=\"`abort`\"\u003e`abort`\u003c/span\u003e.  Enum: \"abort\" \"pause\" \"promote\".\n"}},"type":"object","required":["action"]},"spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment":{"properties":{"spotDeploymentsClusterId":{"type":"string","description":"Ocean CD cluster identifier for the references `SpotDeployment`.\n"},"spotDeploymentsName":{"type":"string","description":"The name of the `SpotDeployment` resource\n"},"spotDeploymentsNamespace":{"type":"string","description":"The namespace which the `SpotDeployment` resource exists within.\n"}},"type":"object"},"spotinst:oceancd/RolloutSpecStrategy:RolloutSpecStrategy":{"properties":{"args":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/RolloutSpecStrategyArg:RolloutSpecStrategyArg"},"description":"Arguments defined in Verification Templates.\n"},"strategyName":{"type":"string","description":"Ocean CD strategy name identifier.\n"}},"type":"object","required":["strategyName"]},"spotinst:oceancd/RolloutSpecStrategyArg:RolloutSpecStrategyArg":{"properties":{"argName":{"type":"string","description":"Name of an argument.\n"},"argValue":{"type":"string","description":"Value of an argument.\n"},"valueFrom":{"$ref":"#/types/spotinst:oceancd/RolloutSpecStrategyArgValueFrom:RolloutSpecStrategyArgValueFrom","description":"Defines from where to get the value of an argument.\n"}},"type":"object","required":["argName"]},"spotinst:oceancd/RolloutSpecStrategyArgValueFrom:RolloutSpecStrategyArgValueFrom":{"properties":{"fieldRef":{"$ref":"#/types/spotinst:oceancd/RolloutSpecStrategyArgValueFromFieldRef:RolloutSpecStrategyArgValueFromFieldRef","description":"Defines the field path from where to get the value of an argument.\n"}},"type":"object","required":["fieldRef"]},"spotinst:oceancd/RolloutSpecStrategyArgValueFromFieldRef:RolloutSpecStrategyArgValueFromFieldRef":{"properties":{"fieldPath":{"type":"string","description":"Path to SpotDeployment's field from where to get the value of an argument.\n"}},"type":"object","required":["fieldPath"]},"spotinst:oceancd/RolloutSpecTraffic:RolloutSpecTraffic":{"properties":{"alb":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficAlb:RolloutSpecTrafficAlb","description":"Holds ALB Ingress specific configuration to route traffic.\n"},"ambassador":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficAmbassador:RolloutSpecTrafficAmbassador","description":"Holds specific configuration to use Ambassador to route traffic.\n"},"canaryService":{"type":"string","description":"The canary service name.\n"},"istio":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficIstio:RolloutSpecTrafficIstio","description":"Holds Istio specific configuration to route traffic.\n"},"nginx":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficNginx:RolloutSpecTrafficNginx","description":"Holds Nginx Ingress specific configuration to route traffic.\n"},"pingPong":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficPingPong:RolloutSpecTrafficPingPong","description":"Holds the ping and pong services. You can use `pingPong` field only when using ALB as a traffic manager with the IP Mode approach.\n"},"smi":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficSmi:RolloutSpecTrafficSmi","description":"Holds TrafficSplit specific configuration to route traffic.\n"},"stableService":{"type":"string","description":"The stable service name.\n"}},"type":"object"},"spotinst:oceancd/RolloutSpecTrafficAlb:RolloutSpecTrafficAlb":{"properties":{"albAnnotationPrefix":{"type":"string","description":"Has to match the configured annotation prefix on the alb ingress controller.\n"},"albIngress":{"type":"string","description":"Refers to the name of an `Ingress` resource in the same namespace as the `SpotDeployment`.\n"},"albRootService":{"type":"string","description":"References the service in the ingress to the controller should add the action to.\n"},"servicePort":{"type":"integer","description":"Refers to the port that the Ingress action should route traffic to.\n"},"stickinessConfig":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficAlbStickinessConfig:RolloutSpecTrafficAlbStickinessConfig","description":"Allows to specify further settings on the ForwardConfig.\n"}},"type":"object","required":["albIngress","albRootService","servicePort"]},"spotinst:oceancd/RolloutSpecTrafficAlbStickinessConfig:RolloutSpecTrafficAlbStickinessConfig":{"properties":{"durationSeconds":{"type":"integer","description":"Defines how long the load balancer should consistently route the user's request to the same target.\n"},"enabled":{"type":"boolean","description":"Enables the load balancer to bind a user's session to a specific target.\n"}},"type":"object"},"spotinst:oceancd/RolloutSpecTrafficAmbassador:RolloutSpecTrafficAmbassador":{"properties":{"mappings":{"type":"array","items":{"type":"string"},"description":"A list of names of the Ambassador Mappings used to route traffic to the service.\n"}},"type":"object","required":["mappings"]},"spotinst:oceancd/RolloutSpecTrafficIstio:RolloutSpecTrafficIstio":{"properties":{"destinationRule":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficIstioDestinationRule:RolloutSpecTrafficIstioDestinationRule","description":"It references to an Istio DestinationRule to modify and shape traffic. `DestinationRule` field belongs only to the Subset Level approach.\n"},"virtualServices":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficIstioVirtualService:RolloutSpecTrafficIstioVirtualService"},"description":"Defines a set of traffic routing rules to apply when a host is addressed.\n"}},"type":"object","required":["virtualServices"]},"spotinst:oceancd/RolloutSpecTrafficIstioDestinationRule:RolloutSpecTrafficIstioDestinationRule":{"properties":{"canarySubsetName":{"type":"string","description":"The subset name to modify labels with the canary version.\n"},"destinationRuleName":{"type":"string","description":"Holds the name of the DestinationRule.\n"},"stableSubsetName":{"type":"string","description":"The subset name to modify labels with the stable version.\n"}},"type":"object","required":["canarySubsetName","destinationRuleName","stableSubsetName"]},"spotinst:oceancd/RolloutSpecTrafficIstioVirtualService:RolloutSpecTrafficIstioVirtualService":{"properties":{"tlsRoutes":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficIstioVirtualServiceTlsRoute:RolloutSpecTrafficIstioVirtualServiceTlsRoute"},"description":"A list of HTTPS routes within VirtualService.\n"},"virtualServiceName":{"type":"string","description":"Holds the name of the VirtualService.\n"},"virtualServiceRoutes":{"type":"array","items":{"type":"string"},"description":"A list of HTTP routes within VirtualService.\n"}},"type":"object","required":["virtualServiceName"]},"spotinst:oceancd/RolloutSpecTrafficIstioVirtualServiceTlsRoute:RolloutSpecTrafficIstioVirtualServiceTlsRoute":{"properties":{"port":{"type":"integer","description":"The port of the TLS Route desired to be matched in the given Istio VirtualService.\n"},"sniHosts":{"type":"array","items":{"type":"string"},"description":"A list of all the SNI Hosts of the TLS Route desired to be matched in the given Istio VirtualService.\n"}},"type":"object"},"spotinst:oceancd/RolloutSpecTrafficNginx:RolloutSpecTrafficNginx":{"properties":{"additionalIngressAnnotation":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTrafficNginxAdditionalIngressAnnotation:RolloutSpecTrafficNginxAdditionalIngressAnnotation","description":"Provides additional features to add to the canary ingress (such as routing by header, cookie, etc). You can add these Kubernetes annotations to specific Ingress objects to customize their behavior. Above are found examples of accepted k8s keys.For the full list of supported keys, you may reach the following documentation - https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary.\n"},"nginxAnnotationPrefix":{"type":"string","description":"Has to match the configured annotation prefix on the Nginx ingress controller.\n"},"stableIngress":{"type":"string","description":"Refers to the name of an `Ingress` resource in the same namespace as the `SpotDeployment`.\n"}},"type":"object","required":["stableIngress"]},"spotinst:oceancd/RolloutSpecTrafficNginxAdditionalIngressAnnotation:RolloutSpecTrafficNginxAdditionalIngressAnnotation":{"properties":{"canaryByHeader":{"type":"string","description":"Allows customizing the header value instead of using hardcoded values.\n"},"key1":{"type":"string","description":"Any of supported annotations.\n"}},"type":"object"},"spotinst:oceancd/RolloutSpecTrafficPingPong:RolloutSpecTrafficPingPong":{"properties":{"pingService":{"type":"string","description":"Holds the name of the ping service.\n"},"pongService":{"type":"string","description":"Holds the name of the pong service.\n"}},"type":"object","required":["pingService","pongService"]},"spotinst:oceancd/RolloutSpecTrafficSmi:RolloutSpecTrafficSmi":{"properties":{"smiRootService":{"type":"string","description":"Holds the name of service that clients use to communicate.\n"},"trafficSplitName":{"type":"string","description":"Holds the name of the TrafficSplit.\n"}},"type":"object"},"spotinst:oceancd/StrategyCanary:StrategyCanary":{"properties":{"backgroundVerification":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryBackgroundVerification:StrategyCanaryBackgroundVerification","description":"A list of background verifications.\n"},"steps":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStep:StrategyCanaryStep"},"description":"A set of separate conditions of rollout processing.\n"}},"type":"object","required":["steps"]},"spotinst:oceancd/StrategyCanaryBackgroundVerification:StrategyCanaryBackgroundVerification":{"properties":{"templateNames":{"type":"array","items":{"type":"string"},"description":"List of Verification Template names.\n"}},"type":"object","required":["templateNames"]},"spotinst:oceancd/StrategyCanaryStep:StrategyCanaryStep":{"properties":{"pause":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStepPause:StrategyCanaryStepPause","description":"Defines the duration of time to freeze the rollout.\n"},"setCanaryScale":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStepSetCanaryScale:StrategyCanaryStepSetCanaryScale","description":"Defines how to scale the version without traffic weight changing.\n"},"setHeaderRoute":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStepSetHeaderRoute:StrategyCanaryStepSetHeaderRoute","description":"Defines the list of HeaderRoutes to add to the Rollout.\n"},"setWeight":{"type":"integer","description":"Defines the percentage that the new version should receive.\n"},"stepName":{"type":"string"},"verification":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStepVerification:StrategyCanaryStepVerification","description":"Represents the list of verifications to run in a step.\n"}},"type":"object"},"spotinst:oceancd/StrategyCanaryStepPause:StrategyCanaryStepPause":{"properties":{"duration":{"type":"string","description":"The amount of time to wait before moving to the next step.\n"}},"type":"object"},"spotinst:oceancd/StrategyCanaryStepSetCanaryScale:StrategyCanaryStepSetCanaryScale":{"properties":{"matchTrafficWeight":{"type":"boolean","description":"Defines whether a rollout should match the current canary's setWeight step.\n"},"replicas":{"type":"integer","description":"Sets the number of replicas the new version should have.\n"},"weight":{"type":"integer","description":"Sets the percentage of replicas the new version should have.\n"}},"type":"object"},"spotinst:oceancd/StrategyCanaryStepSetHeaderRoute:StrategyCanaryStepSetHeaderRoute":{"properties":{"headerRouteName":{"type":"string","description":"The name of the HeaderRoute group.\n"},"matches":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStepSetHeaderRouteMatch:StrategyCanaryStepSetHeaderRouteMatch"},"description":"The matching rules for the header route.\n"}},"type":"object","required":["headerRouteName","matches"]},"spotinst:oceancd/StrategyCanaryStepSetHeaderRouteMatch:StrategyCanaryStepSetHeaderRouteMatch":{"properties":{"headerName":{"type":"string","description":"The name of the header.\n"},"headerValue":{"$ref":"#/types/spotinst:oceancd/StrategyCanaryStepSetHeaderRouteMatchHeaderValue:StrategyCanaryStepSetHeaderRouteMatchHeaderValue","description":"Defines a single header to add to the Rollout. Must be only one initialized from the following (exact, prefix, regex).\n"}},"type":"object","required":["headerName","headerValue"]},"spotinst:oceancd/StrategyCanaryStepSetHeaderRouteMatchHeaderValue:StrategyCanaryStepSetHeaderRouteMatchHeaderValue":{"properties":{"exact":{"type":"string","description":"The exact header value.\n"},"prefix":{"type":"string","description":"The prefix of the value.\n"},"regex":{"type":"string","description":"The value in a regex format.\n"}},"type":"object"},"spotinst:oceancd/StrategyCanaryStepVerification:StrategyCanaryStepVerification":{"properties":{"templateNames":{"type":"array","items":{"type":"string"},"description":"List of Verification Template names.\n"}},"type":"object","required":["templateNames"]},"spotinst:oceancd/StrategyRolling:StrategyRolling":{"properties":{"steps":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/StrategyRollingStep:StrategyRollingStep"},"description":"A set of separate conditions of rollout processing.\n"}},"type":"object","required":["steps"]},"spotinst:oceancd/StrategyRollingStep:StrategyRollingStep":{"properties":{"pause":{"$ref":"#/types/spotinst:oceancd/StrategyRollingStepPause:StrategyRollingStepPause","description":"Defines the duration of time to freeze the rollout.\n"},"stepsName":{"type":"string"},"verification":{"$ref":"#/types/spotinst:oceancd/StrategyRollingStepVerification:StrategyRollingStepVerification","description":"Represents the list of verifications to run in a step.\n"}},"type":"object"},"spotinst:oceancd/StrategyRollingStepPause:StrategyRollingStepPause":{"properties":{"duration":{"type":"string","description":"The amount of time to wait before moving to the next step.\n"}},"type":"object"},"spotinst:oceancd/StrategyRollingStepVerification:StrategyRollingStepVerification":{"properties":{"templateNames":{"type":"array","items":{"type":"string"},"description":"List of Verification Template names.\n"}},"type":"object","required":["templateNames"]},"spotinst:oceancd/VerificationProviderCloudWatch:VerificationProviderCloudWatch":{"properties":{"iamArn":{"type":"string","description":"Set label key.\n"}},"type":"object","required":["iamArn"]},"spotinst:oceancd/VerificationProviderDatadog:VerificationProviderDatadog":{"properties":{"address":{"type":"string","description":"DataDog API URL.\n"},"apiKey":{"type":"string","description":"API key required by the Datadog Agent to submit metrics and events to Datadog.\n"},"appKey":{"type":"string","description":"API key that gives users access to Datadog’s programmatic API.\n"}},"type":"object","required":["address","apiKey","appKey"]},"spotinst:oceancd/VerificationProviderJenkins:VerificationProviderJenkins":{"properties":{"apiToken":{"type":"string","description":"The Jenkins server’s access apiToken.\n"},"baseUrl":{"type":"string","description":"The address of the Jenkins server within the cluster.\n"},"username":{"type":"string","description":"The Jenkins server’s access username.\n"}},"type":"object","required":["apiToken","baseUrl","username"]},"spotinst:oceancd/VerificationProviderNewRelic:VerificationProviderNewRelic":{"properties":{"accountId":{"type":"string"},"baseUrlNerdGraph":{"type":"string","description":"The base URL for NerdGraph for a proxy.\n"},"baseUrlRest":{"type":"string","description":"The base URL of the New Relic REST API for a proxy.\n"},"personalApiKey":{"type":"string","description":"The NewRelic user key\n"},"region":{"type":"string","description":"A region which the account is attached to. Default is \"us\".\n"}},"type":"object","required":["accountId","personalApiKey"]},"spotinst:oceancd/VerificationProviderPrometheus:VerificationProviderPrometheus":{"properties":{"address":{"type":"string","description":"The address which the Prometheus server available on.\n"}},"type":"object","required":["address"]},"spotinst:oceancd/VerificationTemplateArg:VerificationTemplateArg":{"properties":{"argName":{"type":"string","description":"Name of an argument.\n"},"value":{"type":"string","description":"String representation of data.\n"},"valueFrom":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateArgValueFrom:VerificationTemplateArgValueFrom","description":"ValueFrom object.\n"}},"type":"object","required":["argName"]},"spotinst:oceancd/VerificationTemplateArgValueFrom:VerificationTemplateArgValueFrom":{"properties":{"secretKeyRef":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateArgValueFromSecretKeyRef:VerificationTemplateArgValueFromSecretKeyRef","description":"Secret key to use.\n"}},"type":"object"},"spotinst:oceancd/VerificationTemplateArgValueFromSecretKeyRef:VerificationTemplateArgValueFromSecretKeyRef":{"properties":{"key":{"type":"string","description":"The name of the field inside the secret.\n"},"name":{"type":"string","description":"The name of the secret.\n"}},"type":"object","required":["key","name"]},"spotinst:oceancd/VerificationTemplateMetric:VerificationTemplateMetric":{"properties":{"baseline":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricBaseline:VerificationTemplateMetricBaseline","description":"Baseline Object.\n"},"consecutiveErrorLimit":{"type":"integer","description":"The maximum number of times the measurement is allowed to error in succession, before the metric is considered error.Default is 4.When choosing `Jenkins` as the provider, there is no need to send this variable.\n"},"count":{"type":"integer","description":"The number of times to run the measurement. If both interval and count are omitted, the effective count is 1. If only interval is specified, metric runs indefinitely. If count \u003e 1, interval must be specified. When choosing `Jenkins` as the provider, there is no need to send this variable.\n"},"dryRun":{"type":"boolean","description":"Defines whether the metric should have an impact on the result of the rollout.\n"},"failureCondition":{"type":"string","description":"An expression which determines if a measurement is considered failed.If failureCondition is set, then successCondition is not allowed. When choosing Jenkins as the provider, there is no need to send this variable.\n"},"failureLimit":{"type":"integer","description":"The maximum number of times the measurement is allowed to fail, before the entire metric is considered failed.Default is 0. When choosing `Jenkins` as the provider, there is no need to send this variable.\n"},"initialDelay":{"type":"string","description":"How long to wait before starting this metric measurements. When choosing Jenkins as the provider, there is no need to send this variable.\n"},"interval":{"type":"string","description":"Defines an interval string (30s, 5m, 1h) between each verification measurements. If omitted, will perform a single measurement.When choosing Jenkins as the provider, there is no need to send this variable.\n"},"metricsName":{"type":"string","description":"The name of the verification metric.\n"},"providers":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProvider:VerificationTemplateMetricProvider"},"description":"The name of the monitoring tool chosen for the metric.\n"},"successCondition":{"type":"string","description":"An expression which determines if a measurement is considered successful. The keyword \u003cspan pulumi-lang-nodejs=\"`result`\" pulumi-lang-dotnet=\"`Result`\" pulumi-lang-go=\"`result`\" pulumi-lang-python=\"`result`\" pulumi-lang-yaml=\"`result`\" pulumi-lang-java=\"`result`\"\u003e`result`\u003c/span\u003e is a variable reference to the value of measurement. Results can be both structured data or primitive. If successCondition is set, then failureCondition is not allowed. When choosing `Jenkins` as the provider, there is no need to send this variable.\n"}},"type":"object","required":["metricsName","providers"]},"spotinst:oceancd/VerificationTemplateMetricBaseline:VerificationTemplateMetricBaseline":{"properties":{"baselineProviders":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProvider:VerificationTemplateMetricBaselineBaselineProvider"},"description":"The name of the monitoring tool chosen for the metric.\n"},"maxRange":{"type":"integer","description":"Number in percent we allow the new version’s data result to be under baseline data result.\n"},"minRange":{"type":"integer","description":"Number in percent we allow the new version’s data result to be under baseline data result.*\n"},"threshold":{"type":"string","description":"A mathematical expression needed for the comparison. Enum: \"\u003c\" \"\u003e\" \"\u003c=\" \"\u003e=\" \"=\" \"range\"\n"}},"type":"object","required":["baselineProviders","threshold"]},"spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProvider:VerificationTemplateMetricBaselineBaselineProvider":{"properties":{"datadog":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProviderDatadog:VerificationTemplateMetricBaselineBaselineProviderDatadog","description":"The datadog provider.\n"},"newRelic":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProviderNewRelic:VerificationTemplateMetricBaselineBaselineProviderNewRelic","description":"The New Relic provider.\n"},"prometheus":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProviderPrometheus:VerificationTemplateMetricBaselineBaselineProviderPrometheus","description":"The Prometheus provider.\n"}},"type":"object"},"spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProviderDatadog:VerificationTemplateMetricBaselineBaselineProviderDatadog":{"properties":{"datadogQuery":{"type":"string","description":"A request for information retrieved from Datadog.\n"},"duration":{"type":"string","description":"The window of time we are looking at in DataDog.\n"}},"type":"object","required":["datadogQuery"]},"spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProviderNewRelic:VerificationTemplateMetricBaselineBaselineProviderNewRelic":{"properties":{"newRelicQuery":{"type":"string","description":"A raw newrelic NRQL query to perform.\n"},"profile":{"type":"string","description":"The name of the secret holding NR account configuration.\n"}},"type":"object","required":["newRelicQuery"]},"spotinst:oceancd/VerificationTemplateMetricBaselineBaselineProviderPrometheus:VerificationTemplateMetricBaselineBaselineProviderPrometheus":{"properties":{"prometheusQuery":{"type":"string","description":"A request for information retrieved from Prometheus.\n"}},"type":"object","required":["prometheusQuery"]},"spotinst:oceancd/VerificationTemplateMetricProvider:VerificationTemplateMetricProvider":{"properties":{"cloudWatch":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderCloudWatch:VerificationTemplateMetricProviderCloudWatch","description":"The CloudWatch provider.\n"},"datadog":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderDatadog:VerificationTemplateMetricProviderDatadog","description":"The datadog provider.\n"},"jenkins":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJenkins:VerificationTemplateMetricProviderJenkins","description":"The Jenkins provider. Default is \"{$}\"\n"},"job":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJob:VerificationTemplateMetricProviderJob","description":"The Job provider.\n"},"newRelic":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderNewRelic:VerificationTemplateMetricProviderNewRelic","description":"The New Relic provider.\n"},"prometheus":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderPrometheus:VerificationTemplateMetricProviderPrometheus","description":"The Prometheus provider.\n"},"web":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderWeb:VerificationTemplateMetricProviderWeb","description":"The Web provider.\n"}},"type":"object"},"spotinst:oceancd/VerificationTemplateMetricProviderCloudWatch:VerificationTemplateMetricProviderCloudWatch":{"properties":{"duration":{"type":"string","description":"The window of time we are looking at in CloudWatch.\n"},"metricDataQueries":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQuery:VerificationTemplateMetricProviderCloudWatchMetricDataQuery"},"description":"The metric queries to be returned. A single MetricData call can include as many as 500 MetricDataQuery structures. Each of these structures can specify either a metric to retrieve, a Metrics Insights query, or a math expression to perform on retrieved data.\n"}},"type":"object","required":["metricDataQueries"]},"spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQuery:VerificationTemplateMetricProviderCloudWatchMetricDataQuery":{"properties":{"expression":{"type":"string","description":"This field can contain either a Metrics Insights query, or a metric math expression to be performed on the returned data. Within one metricdataquery object, you must specify either expression or metricstat but not both.\n"},"id":{"type":"string","description":"The response ID. Must be unique and not null. This object can contain characters, letters, numbers and underscore. The first letter must be a lowercase letter.\n"},"label":{"type":"string","description":"A human-readable label for this metric or expression. If the metric or expression is shown in a CloudWatch dashboard widget, the label is shown\n"},"metricStat":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStat:VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStat","description":"The metric to be returned, along with statistics, period, and units. Use this parameter only if this object is retrieving a metric and not performing a math expression on returned data.Within one metricdataquery object, you must specify either expression or metricstat but not both.\n"},"period":{"type":"integer","description":"The granularity, in seconds, of the returned data points.\n"},"returnData":{"type":"boolean","description":"This option indicates whether to return the timestamps and raw data values of this metric. If you are performing this call just to do math expressions and do not also need the raw data returned, you can specify \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. If you omit this, the default of \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e is used.\n"}},"type":"object","required":["id"]},"spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStat:VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStat":{"properties":{"metric":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetric:VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetric","description":"The metric to return, including the metric name, namespace, and dimensions.\n"},"metricPeriod":{"type":"integer","description":"The granularity, in seconds, of the returned data points.\n"},"stat":{"type":"string","description":"The statistic to return. It can include any CloudWatch statistic or extended statistic.\n"},"unit":{"type":"string","description":"This defines what unit you want to use when storing the metric.  Enum: `\"Seconds\" \"Microseconds\" \"Milliseconds\" \"Bytes\" \"Kilobytes\" \"Megabytes\" \"Gigabytes\" \"Terabytes\" \"Bits\" \"Kilobits\" \"Megabits\" \"Gigabits\" \"Terabits\" \"Percent\" \"Count\" \"Bytes/Second\" \"Kilobytes/Second\" \"Megabytes/Second\" \"Gigabytes/Second\" \"Terabytes/Second\" \"Bits/Second\" \"Kilobits/Second\" \"Megabits/Second\" \"Gigabits/Second\" \"Terabits/Second\" \"Count/Second\" \"None\"`\n"}},"type":"object"},"spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetric:VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetric":{"properties":{"dimensions":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimension:VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimension"},"description":"A dimension is a name/value pair that is part of the identity of a metric.You can assign upto 30 dimensions to a metric\n"},"metricName":{"type":"string","description":"The name of the metric.\n"},"namespace":{"type":"string","description":"The namespace of the metric.\n"}},"type":"object","required":["metricName"]},"spotinst:oceancd/VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimension:VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimension":{"properties":{"dimensionName":{"type":"string","description":"The name of the dimensions. These values must contain only ASCII characters and must include at least one non-whitespace characte\n"},"dimensionValue":{"type":"string","description":"The value of the dimensions.These values must contain only ASCII characters and must include at least one non-whitespace characte\n"}},"type":"object","required":["dimensionName","dimensionValue"]},"spotinst:oceancd/VerificationTemplateMetricProviderDatadog:VerificationTemplateMetricProviderDatadog":{"properties":{"datadogQuery":{"type":"string","description":"A request for information retrieved from Datadog.\n"},"duration":{"type":"string","description":"The window of time we are looking at in DataDog.\n"}},"type":"object"},"spotinst:oceancd/VerificationTemplateMetricProviderJenkins:VerificationTemplateMetricProviderJenkins":{"properties":{"jenkinsInterval":{"type":"string","description":"The interval time to poll status.\n"},"jenkinsParameters":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJenkinsJenkinsParameters:VerificationTemplateMetricProviderJenkinsJenkinsParameters","description":"List of parameters.\n"},"pipelineName":{"type":"string","description":"The Jenkins pipeline name.\n"},"timeout":{"type":"string","description":"The total jenkins timeout.\n"},"tlsVerification":{"type":"boolean","description":"Host TLS verification.\n"}},"type":"object","required":["jenkinsInterval","pipelineName","timeout"]},"spotinst:oceancd/VerificationTemplateMetricProviderJenkinsJenkinsParameters:VerificationTemplateMetricProviderJenkinsJenkinsParameters":{"properties":{"parameterKey":{"type":"string","description":"Key of an argument.\n"},"parameterValue":{"type":"string","description":"Value of an argument.\n"}},"type":"object","required":["parameterKey","parameterValue"]},"spotinst:oceancd/VerificationTemplateMetricProviderJob:VerificationTemplateMetricProviderJob":{"properties":{"specs":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJobSpec:VerificationTemplateMetricProviderJobSpec"},"description":"The job spec require to run the metric.\n"}},"type":"object","required":["specs"]},"spotinst:oceancd/VerificationTemplateMetricProviderJobSpec:VerificationTemplateMetricProviderJobSpec":{"properties":{"backoffLimit":{"type":"integer","description":"Specifies the number of retries before marking this job failed.\n"},"jobTemplates":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJobSpecJobTemplate:VerificationTemplateMetricProviderJobSpecJobTemplate"},"description":"Describes the pod that will be created when executing a job.\n"}},"type":"object","required":["jobTemplates"]},"spotinst:oceancd/VerificationTemplateMetricProviderJobSpecJobTemplate:VerificationTemplateMetricProviderJobSpecJobTemplate":{"properties":{"templateSpecs":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpec:VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpec"},"description":"Specification of the desired behavior of the pod.\n"}},"type":"object","required":["templateSpecs"]},"spotinst:oceancd/VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpec:VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpec":{"properties":{"containers":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainer:VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainer"},"description":"A list of containers belonging to the pod.\n"},"restartPolicy":{"type":"string","description":"Restart policy for all containers within the pod. Enum: `\"Never\" \"OnFailure\"`\n"}},"type":"object","required":["containers","restartPolicy"]},"spotinst:oceancd/VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainer:VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainer":{"properties":{"commands":{"type":"array","items":{"type":"string"},"description":"The entry point of a container.\n"},"containerName":{"type":"string","description":"The name of a container.\n"},"image":{"type":"string","description":"The image name of a container.\n"}},"type":"object","required":["commands","containerName","image"]},"spotinst:oceancd/VerificationTemplateMetricProviderNewRelic:VerificationTemplateMetricProviderNewRelic":{"properties":{"newRelicQuery":{"type":"string","description":"A raw newrelic NRQL query to perform.\n"},"profile":{"type":"string","description":"The name of the secret holding NR account configuration.\n"}},"type":"object","required":["newRelicQuery"]},"spotinst:oceancd/VerificationTemplateMetricProviderPrometheus:VerificationTemplateMetricProviderPrometheus":{"properties":{"prometheusQuery":{"type":"string","description":"A request for information retrieved from Prometheus.\n"}},"type":"object","required":["prometheusQuery"]},"spotinst:oceancd/VerificationTemplateMetricProviderWeb:VerificationTemplateMetricProviderWeb":{"properties":{"body":{"type":"string","description":"The body of the web metric.\n"},"insecure":{"type":"boolean","description":"Skips host TLS verification.\n"},"jsonPath":{"type":"string","description":"A JSON Path to use as the result variable. Default is \"{$}\"\n"},"method":{"type":"string","description":"The method of the web metric.  Enum: \"GET\" \"POST\" \"PUT\"\n"},"timeoutSeconds":{"type":"integer","description":"The timeout for the request in seconds. Default is 10.\n"},"url":{"type":"string","description":"The address of the web metric.\n"},"webHeaders":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetricProviderWebWebHeader:VerificationTemplateMetricProviderWebWebHeader"},"description":"Optional HTTP headers to use in the request.\n"}},"type":"object","required":["url"]},"spotinst:oceancd/VerificationTemplateMetricProviderWebWebHeader:VerificationTemplateMetricProviderWebWebHeader":{"properties":{"webHeaderKey":{"type":"string","description":"The name of a header\n"},"webHeaderValue":{"type":"string","description":"The value of a header\n"}},"type":"object","required":["webHeaderKey","webHeaderValue"]},"spotinst:organization/PolicyPolicyContent:PolicyPolicyContent":{"properties":{"statements":{"type":"array","items":{"$ref":"#/types/spotinst:organization/PolicyPolicyContentStatement:PolicyPolicyContentStatement"},"description":"List of permissions statements.\n"}},"type":"object","required":["statements"]},"spotinst:organization/PolicyPolicyContentStatement:PolicyPolicyContentStatement":{"properties":{"actions":{"type":"array","items":{"type":"string"},"description":"Set a list of required actions for this permissions statement.\nFull list of actions can be found in [https://docs.spot.io/account-user-management/user-management/access-policies-actions/](https://docs.spot.io/account-user-management/user-management/access-policies-actions/).\n"},"effect":{"type":"string","description":"Valid values \"ALLOW\", \"DENY\".\n"},"resources":{"type":"array","items":{"type":"string"},"description":"Set a list of resources IDs. In order to include all resources in this statement - use \"*\".\n"}},"type":"object","required":["actions","effect","resources"]},"spotinst:organization/ProgrammaticUserAccount:ProgrammaticUserAccount":{"properties":{"accountId":{"type":"string","description":"Account ID the programmatic user will have access to.\n"},"accountRole":{"type":"string","description":"(Enum: `\"viewer\", \"editor\") Role to be associated with the\nprogrammatic user for this account.\n"}},"type":"object","required":["accountId","accountRole"]},"spotinst:organization/ProgrammaticUserPolicy:ProgrammaticUserPolicy":{"properties":{"policyAccountIds":{"type":"array","items":{"type":"string"},"description":"A list of the accounts that the policy should be\nenforced for the user.\n"},"policyId":{"type":"string","description":"Policy ID the programmatic user will have access to.\n"}},"type":"object","required":["policyId"]},"spotinst:organization/UserGroupPolicy:UserGroupPolicy":{"properties":{"accountIds":{"type":"array","items":{"type":"string"},"description":"A list of accounts to register with the assigned under the\ngiven group (should be existing accounts only).\n"},"policyId":{"type":"string","description":"A policy to register under the given group\n(should be existing policy only).\n"}},"type":"object","required":["accountIds","policyId"]},"spotinst:organization/UserPolicy:UserPolicy":{"properties":{"policyAccountIds":{"type":"array","items":{"type":"string"}},"policyId":{"type":"string","description":"A policy to register under the given group\n(should be existing policy only).\n"}},"type":"object","required":["policyAccountIds","policyId"]},"spotinst:spark/OceanCompute:OceanCompute":{"properties":{"createVngs":{"type":"boolean","description":"- Enable/disable the creation of Ocean Spark VNGs during cluster creation.\n"},"useTaints":{"type":"boolean","description":"- Enable/disable Ocean Spark taints on the Ocean Spark VNGs. By default, Ocean Spark uses taints to prevent non-Spark workloads from running on Ocean Spark VNGs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createVngs","useTaints"]}}},"spotinst:spark/OceanIngress:OceanIngress":{"properties":{"controller":{"$ref":"#/types/spotinst:spark/OceanIngressController:OceanIngressController"},"customEndpoint":{"$ref":"#/types/spotinst:spark/OceanIngressCustomEndpoint:OceanIngressCustomEndpoint"},"loadBalancer":{"$ref":"#/types/spotinst:spark/OceanIngressLoadBalancer:OceanIngressLoadBalancer"},"privateLink":{"$ref":"#/types/spotinst:spark/OceanIngressPrivateLink:OceanIngressPrivateLink"},"serviceAnnotations":{"type":"object","additionalProperties":{"type":"string"},"description":"- **DEPRECATED**: Use `load_balancer.service_annotations` instead.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["serviceAnnotations"]}}},"spotinst:spark/OceanIngressController:OceanIngressController":{"properties":{"managed":{"type":"boolean","description":"- Should an ingress controller managed by Ocean for Apache Spark be installed on the cluster.\n"}},"type":"object"},"spotinst:spark/OceanIngressCustomEndpoint:OceanIngressCustomEndpoint":{"properties":{"address":{"type":"string","description":"- The address the Ocean for Apache Spark control plane will use when addressing the cluster.\n"},"enabled":{"type":"boolean","description":"- Should the Ocean for Apache Spark control plane address the cluster using a custom endpoint. Use this to specify the DNS address of an externally provisioned (unmanaged) load balancer.\n"}},"type":"object"},"spotinst:spark/OceanIngressLoadBalancer:OceanIngressLoadBalancer":{"properties":{"managed":{"type":"boolean","description":"- Should a load balancer managed by Ocean for Apache Spark be provisioned for the cluster. Set this to false if you want to use an existing load balancer (only available on AWS).\n"},"serviceAnnotations":{"type":"object","additionalProperties":{"type":"string"},"description":"- Annotations to add to the ingress controller load balancer service. This is useful to configure properties of the managed load balancer, like the nature of the load balancer (e.g. ELB, NLB, ALB on AWS), the security groups, or various timeouts.\n"},"targetGroupArn":{"type":"string","description":"- The ARN of a target group that the Ocean for Apache Spark ingress controller will be bound to. Set this to use an existing load balancer with Ocean for Apache Spark. Has no effect if using a managed load balancer. Only available on AWS.\n"}},"type":"object"},"spotinst:spark/OceanIngressPrivateLink:OceanIngressPrivateLink":{"properties":{"enabled":{"type":"boolean","description":"- Should the Ocean for Apache Spark control plane address the cluster via an AWS Private Link. Only available on AWS.\n"},"vpcEndpointService":{"type":"string","description":"- The name of the VPC Endpoint Service the Ocean for Apache Spark control plane should bind to.\n"}},"type":"object"},"spotinst:spark/OceanLogCollection:OceanLogCollection":{"properties":{"collectAppLogs":{"type":"boolean","description":"- Enable/Disable collecting driver and executor logs. When enabled, logs are stored by NetApp and can be downloaded from the Spot console web interface. The logs are deleted after 30 days.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["collectAppLogs"]}}},"spotinst:spark/OceanSpark:OceanSpark":{"properties":{"additionalAppNamespaces":{"type":"array","items":{"type":"string"},"description":"- List of Kubernetes namespaces that should be configured to run Spark applications, in addition to the default Spark application namespace `spark-apps`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["additionalAppNamespaces"]}}},"spotinst:spark/OceanWebhook:OceanWebhook":{"properties":{"hostNetworkPorts":{"type":"array","items":{"type":"integer"},"description":"- List of ports allowed to use on the host network - if empty default is \u003cspan pulumi-lang-nodejs=\"`25554`\" pulumi-lang-dotnet=\"`25554`\" pulumi-lang-go=\"`25554`\" pulumi-lang-python=\"`25554`\" pulumi-lang-yaml=\"`25554`\" pulumi-lang-java=\"`25554`\"\u003e`25554`\u003c/span\u003e.\n"},"useHostNetwork":{"type":"boolean","description":"- Enable/disable host networking for the Spark Operator. Host networking can be useful when using custom CNI plugins like Calico on EKS.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["hostNetworkPorts","useHostNetwork"]}}},"spotinst:spark/OceanWorkspaces:OceanWorkspaces":{"properties":{"storage":{"$ref":"#/types/spotinst:spark/OceanWorkspacesStorage:OceanWorkspacesStorage"}},"type":"object","language":{"nodejs":{"requiredOutputs":["storage"]}}},"spotinst:spark/OceanWorkspacesStorage:OceanWorkspacesStorage":{"properties":{"defaults":{"$ref":"#/types/spotinst:spark/OceanWorkspacesStorageDefaults:OceanWorkspacesStorageDefaults"}},"type":"object","language":{"nodejs":{"requiredOutputs":["defaults"]}}},"spotinst:spark/OceanWorkspacesStorageDefaults:OceanWorkspacesStorageDefaults":{"properties":{"storageClassName":{"type":"string","description":"- The name of the default storage class to use for new workspaces. If not specified, the default storage class of the Kubernetes cluster will be used.\n"}},"type":"object"}},"provider":{"description":"The provider type for the spotinst package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"account":{"type":"string","description":"Spotinst Account ID"},"enabled":{"type":"boolean","description":"Enable or disable the Spotinst provider"},"featureFlags":{"type":"string","description":"Spotinst SDK Feature Flags"},"token":{"type":"string","description":"Spotinst Personal API Access Token"}},"inputProperties":{"account":{"type":"string","description":"Spotinst Account ID"},"enabled":{"type":"boolean","description":"Enable or disable the Spotinst provider"},"featureFlags":{"type":"string","description":"Spotinst SDK Feature Flags"},"token":{"type":"string","description":"Spotinst Personal API Access Token"}},"methods":{"terraformConfig":"pulumi:providers:spotinst/terraformConfig"}},"resources":{"spotinst:aws/account:Account":{"description":"Provides a Spotinst account resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create a Account\nconst myAwsAcct = new spotinst.aws.Account(\"my_aws_acct\", {name: \"my_aws_acct\"});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create a Account\nmy_aws_acct = spotinst.aws.Account(\"my_aws_acct\", name=\"my_aws_acct\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a Account\n    var myAwsAcct = new SpotInst.Aws.Account(\"my_aws_acct\", new()\n    {\n        Name = \"my_aws_acct\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a Account\n\t\t_, err := aws.NewAccount(ctx, \"my_aws_acct\", \u0026aws.AccountArgs{\n\t\t\tName: pulumi.String(\"my_aws_acct\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.Account;\nimport com.pulumi.spotinst.aws.AccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a Account\n        var myAwsAcct = new Account(\"myAwsAcct\", AccountArgs.builder()\n            .name(\"my_aws_acct\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a Account\n  myAwsAcct:\n    type: spotinst:aws:Account\n    name: my_aws_acct\n    properties:\n      name: my_aws_acct\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"Provide a name for your account. The account name must contain at least one character that is a-z or A-Z.\n"}},"required":["name"],"inputProperties":{"name":{"type":"string","description":"Provide a name for your account. The account name must contain at least one character that is a-z or A-Z.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Account resources.\n","properties":{"name":{"type":"string","description":"Provide a name for your account. The account name must contain at least one character that is a-z or A-Z.\n","willReplaceOnChanges":true}},"type":"object"}},"spotinst:aws/beanstalk:Beanstalk":{"description":"Provides a Spotinst AWS group resource using Elastic Beanstalk.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst elastigoup_aws_beanstalk = new spotinst.aws.Beanstalk(\"elastigoup-aws-beanstalk\", {\n    name: \"example-elastigroup-beanstalk\",\n    region: \"us-west-2\",\n    product: \"Linux/UNIX\",\n    minSize: 0,\n    maxSize: 1,\n    desiredCapacity: 0,\n    beanstalkEnvironmentName: \"example-env\",\n    beanstalkEnvironmentId: \"e-example\",\n    instanceTypesSpots: [\n        \"t2.micro\",\n        \"t2.medium\",\n        \"t2.large\",\n    ],\n    deploymentPreferences: {\n        automaticRoll: true,\n        batchSizePercentage: 100,\n        gracePeriod: 90,\n        strategies: [{\n            action: \"REPLACE_SERVER\",\n            shouldDrainInstances: true,\n        }],\n    },\n    managedActions: {\n        platformUpdate: {\n            performAt: \"timeWindow\",\n            timeWindow: \"Mon:23:50-Tue:00:20\",\n            updateLevel: \"minorAndPatch\",\n        },\n    }[0],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nelastigoup_aws_beanstalk = spotinst.aws.Beanstalk(\"elastigoup-aws-beanstalk\",\n    name=\"example-elastigroup-beanstalk\",\n    region=\"us-west-2\",\n    product=\"Linux/UNIX\",\n    min_size=0,\n    max_size=1,\n    desired_capacity=0,\n    beanstalk_environment_name=\"example-env\",\n    beanstalk_environment_id=\"e-example\",\n    instance_types_spots=[\n        \"t2.micro\",\n        \"t2.medium\",\n        \"t2.large\",\n    ],\n    deployment_preferences={\n        \"automatic_roll\": True,\n        \"batch_size_percentage\": 100,\n        \"grace_period\": 90,\n        \"strategies\": [{\n            \"action\": \"REPLACE_SERVER\",\n            \"should_drain_instances\": True,\n        }],\n    },\n    managed_actions={\n        \"platformUpdate\": {\n            \"performAt\": \"timeWindow\",\n            \"timeWindow\": \"Mon:23:50-Tue:00:20\",\n            \"updateLevel\": \"minorAndPatch\",\n        },\n    }[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var elastigoup_aws_beanstalk = new SpotInst.Aws.Beanstalk(\"elastigoup-aws-beanstalk\", new()\n    {\n        Name = \"example-elastigroup-beanstalk\",\n        Region = \"us-west-2\",\n        Product = \"Linux/UNIX\",\n        MinSize = 0,\n        MaxSize = 1,\n        DesiredCapacity = 0,\n        BeanstalkEnvironmentName = \"example-env\",\n        BeanstalkEnvironmentId = \"e-example\",\n        InstanceTypesSpots = new[]\n        {\n            \"t2.micro\",\n            \"t2.medium\",\n            \"t2.large\",\n        },\n        DeploymentPreferences = new SpotInst.Aws.Inputs.BeanstalkDeploymentPreferencesArgs\n        {\n            AutomaticRoll = true,\n            BatchSizePercentage = 100,\n            GracePeriod = 90,\n            Strategies = new[]\n            {\n                new SpotInst.Aws.Inputs.BeanstalkDeploymentPreferencesStrategyArgs\n                {\n                    Action = \"REPLACE_SERVER\",\n                    ShouldDrainInstances = true,\n                },\n            },\n        },\n        ManagedActions = \n        {\n            { \"platformUpdate\", \n            {\n                { \"performAt\", \"timeWindow\" },\n                { \"timeWindow\", \"Mon:23:50-Tue:00:20\" },\n                { \"updateLevel\", \"minorAndPatch\" },\n            } },\n        }[0],\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := aws.NewBeanstalk(ctx, \"elastigoup-aws-beanstalk\", \u0026aws.BeanstalkArgs{\n\t\t\tName:                     pulumi.String(\"example-elastigroup-beanstalk\"),\n\t\t\tRegion:                   pulumi.String(\"us-west-2\"),\n\t\t\tProduct:                  pulumi.String(\"Linux/UNIX\"),\n\t\t\tMinSize:                  pulumi.Int(0),\n\t\t\tMaxSize:                  pulumi.Int(1),\n\t\t\tDesiredCapacity:          pulumi.Int(0),\n\t\t\tBeanstalkEnvironmentName: pulumi.String(\"example-env\"),\n\t\t\tBeanstalkEnvironmentId:   pulumi.String(\"e-example\"),\n\t\t\tInstanceTypesSpots: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"t2.micro\"),\n\t\t\t\tpulumi.String(\"t2.medium\"),\n\t\t\t\tpulumi.String(\"t2.large\"),\n\t\t\t},\n\t\t\tDeploymentPreferences: \u0026aws.BeanstalkDeploymentPreferencesArgs{\n\t\t\t\tAutomaticRoll:       pulumi.Bool(true),\n\t\t\t\tBatchSizePercentage: pulumi.Int(100),\n\t\t\t\tGracePeriod:         pulumi.Int(90),\n\t\t\t\tStrategies: aws.BeanstalkDeploymentPreferencesStrategyArray{\n\t\t\t\t\t\u0026aws.BeanstalkDeploymentPreferencesStrategyArgs{\n\t\t\t\t\t\tAction:               pulumi.String(\"REPLACE_SERVER\"),\n\t\t\t\t\t\tShouldDrainInstances: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tManagedActions: map[string]interface{}{\n\t\t\t\t\"platformUpdate\": map[string]interface{}{\n\t\t\t\t\t\"performAt\":   \"timeWindow\",\n\t\t\t\t\t\"timeWindow\":  \"Mon:23:50-Tue:00:20\",\n\t\t\t\t\t\"updateLevel\": \"minorAndPatch\",\n\t\t\t\t},\n\t\t\t}[0],\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.Beanstalk;\nimport com.pulumi.spotinst.aws.BeanstalkArgs;\nimport com.pulumi.spotinst.aws.inputs.BeanstalkDeploymentPreferencesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var elastigoup_aws_beanstalk = new Beanstalk(\"elastigoup-aws-beanstalk\", BeanstalkArgs.builder()\n            .name(\"example-elastigroup-beanstalk\")\n            .region(\"us-west-2\")\n            .product(\"Linux/UNIX\")\n            .minSize(0)\n            .maxSize(1)\n            .desiredCapacity(0)\n            .beanstalkEnvironmentName(\"example-env\")\n            .beanstalkEnvironmentId(\"e-example\")\n            .instanceTypesSpots(            \n                \"t2.micro\",\n                \"t2.medium\",\n                \"t2.large\")\n            .deploymentPreferences(BeanstalkDeploymentPreferencesArgs.builder()\n                .automaticRoll(true)\n                .batchSizePercentage(100)\n                .gracePeriod(90)\n                .strategies(BeanstalkDeploymentPreferencesStrategyArgs.builder()\n                    .action(\"REPLACE_SERVER\")\n                    .shouldDrainInstances(true)\n                    .build())\n                .build())\n            .managedActions(BeanstalkManagedActionsArgs.builder()\n                .platformUpdate(BeanstalkManagedActionsPlatformUpdateArgs.builder()\n                    .performAt(\"timeWindow\")\n                    .timeWindow(\"Mon:23:50-Tue:00:20\")\n                    .updateLevel(\"minorAndPatch\")\n                    .build())\n                .build()[0])\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"beanstalkEnvironmentId":{"type":"string","description":"The id of an existing Beanstalk environment.\n"},"beanstalkEnvironmentName":{"type":"string","description":"The name of an existing Beanstalk environment.\n"},"deploymentPreferences":{"$ref":"#/types/spotinst:aws/BeanstalkDeploymentPreferences:BeanstalkDeploymentPreferences","description":"Preferences when performing a roll\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"instanceTypesSpots":{"type":"array","items":{"type":"string"},"description":"One or more instance types. To maximize the availability of Spot instances, select as many instance types as possible.\n"},"maintenance":{"type":"string"},"managedActions":{"$ref":"#/types/spotinst:aws/BeanstalkManagedActions:BeanstalkManagedActions","description":"Managed Actions parameters\n"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"name":{"type":"string","description":"The group name.\n"},"product":{"type":"string","description":"Operation system type. Valid values: `\"Linux/UNIX\"`, `\"SUSE Linux\"`, `\"Windows\"`.\nFor EC2 Classic instances:  `\"Linux/UNIX (Amazon VPC)\"`, `\"SUSE Linux (Amazon VPC)\"`, `\"Windows (Amazon VPC)\"`.\n"},"region":{"type":"string","description":"The AWS region your group will be created in. Cannot be changed after the group has been created.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/BeanstalkScheduledTask:BeanstalkScheduledTask"}}},"required":["desiredCapacity","instanceTypesSpots","maxSize","minSize","name","product","region"],"inputProperties":{"beanstalkEnvironmentId":{"type":"string","description":"The id of an existing Beanstalk environment.\n"},"beanstalkEnvironmentName":{"type":"string","description":"The name of an existing Beanstalk environment.\n"},"deploymentPreferences":{"$ref":"#/types/spotinst:aws/BeanstalkDeploymentPreferences:BeanstalkDeploymentPreferences","description":"Preferences when performing a roll\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"instanceTypesSpots":{"type":"array","items":{"type":"string"},"description":"One or more instance types. To maximize the availability of Spot instances, select as many instance types as possible.\n"},"maintenance":{"type":"string"},"managedActions":{"$ref":"#/types/spotinst:aws/BeanstalkManagedActions:BeanstalkManagedActions","description":"Managed Actions parameters\n"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"name":{"type":"string","description":"The group name.\n"},"product":{"type":"string","description":"Operation system type. Valid values: `\"Linux/UNIX\"`, `\"SUSE Linux\"`, `\"Windows\"`.\nFor EC2 Classic instances:  `\"Linux/UNIX (Amazon VPC)\"`, `\"SUSE Linux (Amazon VPC)\"`, `\"Windows (Amazon VPC)\"`.\n"},"region":{"type":"string","description":"The AWS region your group will be created in. Cannot be changed after the group has been created.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/BeanstalkScheduledTask:BeanstalkScheduledTask"}}},"requiredInputs":["desiredCapacity","instanceTypesSpots","maxSize","minSize","product","region"],"stateInputs":{"description":"Input properties used for looking up and filtering Beanstalk resources.\n","properties":{"beanstalkEnvironmentId":{"type":"string","description":"The id of an existing Beanstalk environment.\n"},"beanstalkEnvironmentName":{"type":"string","description":"The name of an existing Beanstalk environment.\n"},"deploymentPreferences":{"$ref":"#/types/spotinst:aws/BeanstalkDeploymentPreferences:BeanstalkDeploymentPreferences","description":"Preferences when performing a roll\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"instanceTypesSpots":{"type":"array","items":{"type":"string"},"description":"One or more instance types. To maximize the availability of Spot instances, select as many instance types as possible.\n"},"maintenance":{"type":"string"},"managedActions":{"$ref":"#/types/spotinst:aws/BeanstalkManagedActions:BeanstalkManagedActions","description":"Managed Actions parameters\n"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"name":{"type":"string","description":"The group name.\n"},"product":{"type":"string","description":"Operation system type. Valid values: `\"Linux/UNIX\"`, `\"SUSE Linux\"`, `\"Windows\"`.\nFor EC2 Classic instances:  `\"Linux/UNIX (Amazon VPC)\"`, `\"SUSE Linux (Amazon VPC)\"`, `\"Windows (Amazon VPC)\"`.\n"},"region":{"type":"string","description":"The AWS region your group will be created in. Cannot be changed after the group has been created.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/BeanstalkScheduledTask:BeanstalkScheduledTask"}}},"type":"object"}},"spotinst:aws/credentials:Credentials":{"description":"Provides a Spotinst credential AWS resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// set credential AWS\nconst credential = new spotinst.aws.Credentials(\"credential\", {\n    iamrole: \"arn:aws:iam::1234567890:role/Spot_Iam_Role\",\n    accountId: \"act-123456\",\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# set credential AWS\ncredential = spotinst.aws.Credentials(\"credential\",\n    iamrole=\"arn:aws:iam::1234567890:role/Spot_Iam_Role\",\n    account_id=\"act-123456\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // set credential AWS\n    var credential = new SpotInst.Aws.Credentials(\"credential\", new()\n    {\n        Iamrole = \"arn:aws:iam::1234567890:role/Spot_Iam_Role\",\n        AccountId = \"act-123456\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// set credential AWS\n\t\t_, err := aws.NewCredentials(ctx, \"credential\", \u0026aws.CredentialsArgs{\n\t\t\tIamrole:   pulumi.String(\"arn:aws:iam::1234567890:role/Spot_Iam_Role\"),\n\t\t\tAccountId: pulumi.String(\"act-123456\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.Credentials;\nimport com.pulumi.spotinst.aws.CredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // set credential AWS\n        var credential = new Credentials(\"credential\", CredentialsArgs.builder()\n            .iamrole(\"arn:aws:iam::1234567890:role/Spot_Iam_Role\")\n            .accountId(\"act-123456\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # set credential AWS\n  credential:\n    type: spotinst:aws:Credentials\n    properties:\n      iamrole: arn:aws:iam::1234567890:role/Spot_Iam_Role\n      accountId: act-123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n"},"iamrole":{"type":"string","description":"Provide the IAM Role ARN connected to another AWS account 922761411349 and with the latest Spot Policy - https://docs.spot.io/administration/api/spot-policy-in-aws\n"}},"required":["accountId","iamrole"],"inputProperties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n","willReplaceOnChanges":true},"iamrole":{"type":"string","description":"Provide the IAM Role ARN connected to another AWS account 922761411349 and with the latest Spot Policy - https://docs.spot.io/administration/api/spot-policy-in-aws\n","willReplaceOnChanges":true}},"requiredInputs":["accountId","iamrole"],"stateInputs":{"description":"Input properties used for looking up and filtering Credentials resources.\n","properties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n","willReplaceOnChanges":true},"iamrole":{"type":"string","description":"Provide the IAM Role ARN connected to another AWS account 922761411349 and with the latest Spot Policy - https://docs.spot.io/administration/api/spot-policy-in-aws\n","willReplaceOnChanges":true}},"type":"object"}},"spotinst:aws/elastigroup:Elastigroup":{"description":"Provides a Spotinst AWS group resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create an Elastigroup\nconst default_elastigroup = new spotinst.aws.Elastigroup(\"default-elastigroup\", {\n    name: \"default-elastigroup\",\n    description: \"created by Pulumi\",\n    product: \"Linux/UNIX\",\n    maxSize: 0,\n    minSize: 0,\n    desiredCapacity: 0,\n    capacityUnit: \"weight\",\n    region: \"us-west-2\",\n    subnetIds: [\n        \"sb-123456\",\n        \"sb-456789\",\n    ],\n    imageId: \"ami-a27d8fda\",\n    iamInstanceProfile: \"iam-profile\",\n    keyName: \"my-key.ssh\",\n    securityGroups: [\"sg-123456\"],\n    userData: \"echo hello world\",\n    enableMonitoring: false,\n    ebsOptimized: false,\n    placementTenancy: \"default\",\n    metadataOptions: {\n        httpTokens: \"optional\",\n        httpPutResponseHopLimit: 10,\n        instanceMetadataTags: \"enabled\",\n    },\n    cpuOptions: {\n        threadsPerCore: 1,\n    },\n    instanceTypesOndemand: \"m3.2xlarge\",\n    instanceTypesSpots: [\n        \"m3.xlarge\",\n        \"m3.2xlarge\",\n    ],\n    instanceTypesPreferredSpots: [\"m3.xlarge\"],\n    onDemandTypes: [\"c3.large\"],\n    instanceTypesWeights: [\n        {\n            instanceType: \"m3.xlarge\",\n            weight: 10,\n        },\n        {\n            instanceType: \"m3.2xlarge\",\n            weight: 16,\n        },\n    ],\n    resourceRequirements: [{\n        excludedInstanceFamilies: [\n            \"a\",\n            \"m\",\n        ],\n        excludedInstanceTypes: [\"m3.large\"],\n        excludedInstanceGenerations: [\n            \"1\",\n            \"2\",\n        ],\n        requiredGpuMinimum: 1,\n        requiredGpuMaximum: 16,\n        requiredMemoryMinimum: 1,\n        requiredMemoryMaximum: 512,\n        requiredVcpuMinimum: 1,\n        requiredVcpuMaximum: 64,\n    }],\n    orientation: \"balanced\",\n    fallbackToOndemand: false,\n    cpuCredits: \"unlimited\",\n    minimumInstanceLifetime: 12,\n    maxReplacementsPercentage: 10,\n    waitForCapacity: 5,\n    waitForCapacityTimeout: 300,\n    scalingStrategies: [{\n        terminateAtEndOfBillingHour: true,\n        terminationPolicy: \"default\",\n    }],\n    scalingUpPolicies: [{\n        policyName: \"Default Scaling Up Policy\",\n        metricName: \"DefaultQueuesDepth\",\n        statistic: \"average\",\n        unit: \"none\",\n        adjustment: \"1\",\n        namespace: \"custom\",\n        threshold: 100,\n        period: 60,\n        evaluationPeriods: 5,\n        cooldown: 300,\n    }],\n    scalingDownPolicies: [{\n        policyName: \"Default Scaling Down Policy\",\n        metricName: \"DefaultQueuesDepth\",\n        statistic: \"average\",\n        unit: \"none\",\n        adjustment: \"1\",\n        namespace: \"custom\",\n        threshold: 10,\n        period: 60,\n        evaluationPeriods: 10,\n        cooldown: 300,\n    }],\n    tags: [\n        {\n            key: \"Env\",\n            value: \"production\",\n        },\n        {\n            key: \"Name\",\n            value: \"default-production\",\n        },\n        {\n            key: \"Project\",\n            value: \"app_v2\",\n        },\n    ],\n    resourceTagSpecifications: [{\n        shouldTagEnis: true,\n        shouldTagVolumes: true,\n        shouldTagSnapshots: true,\n        shouldTagAmis: true,\n    }],\n    logging: {\n        \"export\": {\n            s3s: [{\n                id: \"di-123456\",\n            }],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create an Elastigroup\ndefault_elastigroup = spotinst.aws.Elastigroup(\"default-elastigroup\",\n    name=\"default-elastigroup\",\n    description=\"created by Pulumi\",\n    product=\"Linux/UNIX\",\n    max_size=0,\n    min_size=0,\n    desired_capacity=0,\n    capacity_unit=\"weight\",\n    region=\"us-west-2\",\n    subnet_ids=[\n        \"sb-123456\",\n        \"sb-456789\",\n    ],\n    image_id=\"ami-a27d8fda\",\n    iam_instance_profile=\"iam-profile\",\n    key_name=\"my-key.ssh\",\n    security_groups=[\"sg-123456\"],\n    user_data=\"echo hello world\",\n    enable_monitoring=False,\n    ebs_optimized=False,\n    placement_tenancy=\"default\",\n    metadata_options={\n        \"http_tokens\": \"optional\",\n        \"http_put_response_hop_limit\": 10,\n        \"instance_metadata_tags\": \"enabled\",\n    },\n    cpu_options={\n        \"threads_per_core\": 1,\n    },\n    instance_types_ondemand=\"m3.2xlarge\",\n    instance_types_spots=[\n        \"m3.xlarge\",\n        \"m3.2xlarge\",\n    ],\n    instance_types_preferred_spots=[\"m3.xlarge\"],\n    on_demand_types=[\"c3.large\"],\n    instance_types_weights=[\n        {\n            \"instance_type\": \"m3.xlarge\",\n            \"weight\": 10,\n        },\n        {\n            \"instance_type\": \"m3.2xlarge\",\n            \"weight\": 16,\n        },\n    ],\n    resource_requirements=[{\n        \"excluded_instance_families\": [\n            \"a\",\n            \"m\",\n        ],\n        \"excluded_instance_types\": [\"m3.large\"],\n        \"excluded_instance_generations\": [\n            \"1\",\n            \"2\",\n        ],\n        \"required_gpu_minimum\": 1,\n        \"required_gpu_maximum\": 16,\n        \"required_memory_minimum\": 1,\n        \"required_memory_maximum\": 512,\n        \"required_vcpu_minimum\": 1,\n        \"required_vcpu_maximum\": 64,\n    }],\n    orientation=\"balanced\",\n    fallback_to_ondemand=False,\n    cpu_credits=\"unlimited\",\n    minimum_instance_lifetime=12,\n    max_replacements_percentage=10,\n    wait_for_capacity=5,\n    wait_for_capacity_timeout=300,\n    scaling_strategies=[{\n        \"terminate_at_end_of_billing_hour\": True,\n        \"termination_policy\": \"default\",\n    }],\n    scaling_up_policies=[{\n        \"policy_name\": \"Default Scaling Up Policy\",\n        \"metric_name\": \"DefaultQueuesDepth\",\n        \"statistic\": \"average\",\n        \"unit\": \"none\",\n        \"adjustment\": \"1\",\n        \"namespace\": \"custom\",\n        \"threshold\": 100,\n        \"period\": 60,\n        \"evaluation_periods\": 5,\n        \"cooldown\": 300,\n    }],\n    scaling_down_policies=[{\n        \"policy_name\": \"Default Scaling Down Policy\",\n        \"metric_name\": \"DefaultQueuesDepth\",\n        \"statistic\": \"average\",\n        \"unit\": \"none\",\n        \"adjustment\": \"1\",\n        \"namespace\": \"custom\",\n        \"threshold\": 10,\n        \"period\": 60,\n        \"evaluation_periods\": 10,\n        \"cooldown\": 300,\n    }],\n    tags=[\n        {\n            \"key\": \"Env\",\n            \"value\": \"production\",\n        },\n        {\n            \"key\": \"Name\",\n            \"value\": \"default-production\",\n        },\n        {\n            \"key\": \"Project\",\n            \"value\": \"app_v2\",\n        },\n    ],\n    resource_tag_specifications=[{\n        \"should_tag_enis\": True,\n        \"should_tag_volumes\": True,\n        \"should_tag_snapshots\": True,\n        \"should_tag_amis\": True,\n    }],\n    logging={\n        \"export\": {\n            \"s3s\": [{\n                \"id\": \"di-123456\",\n            }],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create an Elastigroup\n    var default_elastigroup = new SpotInst.Aws.Elastigroup(\"default-elastigroup\", new()\n    {\n        Name = \"default-elastigroup\",\n        Description = \"created by Pulumi\",\n        Product = \"Linux/UNIX\",\n        MaxSize = 0,\n        MinSize = 0,\n        DesiredCapacity = 0,\n        CapacityUnit = \"weight\",\n        Region = \"us-west-2\",\n        SubnetIds = new[]\n        {\n            \"sb-123456\",\n            \"sb-456789\",\n        },\n        ImageId = \"ami-a27d8fda\",\n        IamInstanceProfile = \"iam-profile\",\n        KeyName = \"my-key.ssh\",\n        SecurityGroups = new[]\n        {\n            \"sg-123456\",\n        },\n        UserData = \"echo hello world\",\n        EnableMonitoring = false,\n        EbsOptimized = false,\n        PlacementTenancy = \"default\",\n        MetadataOptions = new SpotInst.Aws.Inputs.ElastigroupMetadataOptionsArgs\n        {\n            HttpTokens = \"optional\",\n            HttpPutResponseHopLimit = 10,\n            InstanceMetadataTags = \"enabled\",\n        },\n        CpuOptions = new SpotInst.Aws.Inputs.ElastigroupCpuOptionsArgs\n        {\n            ThreadsPerCore = 1,\n        },\n        InstanceTypesOndemand = \"m3.2xlarge\",\n        InstanceTypesSpots = new[]\n        {\n            \"m3.xlarge\",\n            \"m3.2xlarge\",\n        },\n        InstanceTypesPreferredSpots = new[]\n        {\n            \"m3.xlarge\",\n        },\n        OnDemandTypes = new[]\n        {\n            \"c3.large\",\n        },\n        InstanceTypesWeights = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeightArgs\n            {\n                InstanceType = \"m3.xlarge\",\n                Weight = 10,\n            },\n            new SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeightArgs\n            {\n                InstanceType = \"m3.2xlarge\",\n                Weight = 16,\n            },\n        },\n        ResourceRequirements = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupResourceRequirementArgs\n            {\n                ExcludedInstanceFamilies = new[]\n                {\n                    \"a\",\n                    \"m\",\n                },\n                ExcludedInstanceTypes = new[]\n                {\n                    \"m3.large\",\n                },\n                ExcludedInstanceGenerations = new[]\n                {\n                    \"1\",\n                    \"2\",\n                },\n                RequiredGpuMinimum = 1,\n                RequiredGpuMaximum = 16,\n                RequiredMemoryMinimum = 1,\n                RequiredMemoryMaximum = 512,\n                RequiredVcpuMinimum = 1,\n                RequiredVcpuMaximum = 64,\n            },\n        },\n        Orientation = \"balanced\",\n        FallbackToOndemand = false,\n        CpuCredits = \"unlimited\",\n        MinimumInstanceLifetime = 12,\n        MaxReplacementsPercentage = 10,\n        WaitForCapacity = 5,\n        WaitForCapacityTimeout = 300,\n        ScalingStrategies = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupScalingStrategyArgs\n            {\n                TerminateAtEndOfBillingHour = true,\n                TerminationPolicy = \"default\",\n            },\n        },\n        ScalingUpPolicies = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupScalingUpPolicyArgs\n            {\n                PolicyName = \"Default Scaling Up Policy\",\n                MetricName = \"DefaultQueuesDepth\",\n                Statistic = \"average\",\n                Unit = \"none\",\n                Adjustment = \"1\",\n                Namespace = \"custom\",\n                Threshold = 100,\n                Period = 60,\n                EvaluationPeriods = 5,\n                Cooldown = 300,\n            },\n        },\n        ScalingDownPolicies = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupScalingDownPolicyArgs\n            {\n                PolicyName = \"Default Scaling Down Policy\",\n                MetricName = \"DefaultQueuesDepth\",\n                Statistic = \"average\",\n                Unit = \"none\",\n                Adjustment = \"1\",\n                Namespace = \"custom\",\n                Threshold = 10,\n                Period = 60,\n                EvaluationPeriods = 10,\n                Cooldown = 300,\n            },\n        },\n        Tags = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupTagArgs\n            {\n                Key = \"Env\",\n                Value = \"production\",\n            },\n            new SpotInst.Aws.Inputs.ElastigroupTagArgs\n            {\n                Key = \"Name\",\n                Value = \"default-production\",\n            },\n            new SpotInst.Aws.Inputs.ElastigroupTagArgs\n            {\n                Key = \"Project\",\n                Value = \"app_v2\",\n            },\n        },\n        ResourceTagSpecifications = new[]\n        {\n            new SpotInst.Aws.Inputs.ElastigroupResourceTagSpecificationArgs\n            {\n                ShouldTagEnis = true,\n                ShouldTagVolumes = true,\n                ShouldTagSnapshots = true,\n                ShouldTagAmis = true,\n            },\n        },\n        Logging = new SpotInst.Aws.Inputs.ElastigroupLoggingArgs\n        {\n            Export = new SpotInst.Aws.Inputs.ElastigroupLoggingExportArgs\n            {\n                S3s = new[]\n                {\n                    new SpotInst.Aws.Inputs.ElastigroupLoggingExportS3Args\n                    {\n                        Id = \"di-123456\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create an Elastigroup\n\t\t_, err := aws.NewElastigroup(ctx, \"default-elastigroup\", \u0026aws.ElastigroupArgs{\n\t\t\tName:            pulumi.String(\"default-elastigroup\"),\n\t\t\tDescription:     pulumi.String(\"created by Pulumi\"),\n\t\t\tProduct:         pulumi.String(\"Linux/UNIX\"),\n\t\t\tMaxSize:         pulumi.Int(0),\n\t\t\tMinSize:         pulumi.Int(0),\n\t\t\tDesiredCapacity: pulumi.Int(0),\n\t\t\tCapacityUnit:    pulumi.String(\"weight\"),\n\t\t\tRegion:          pulumi.String(\"us-west-2\"),\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sb-123456\"),\n\t\t\t\tpulumi.String(\"sb-456789\"),\n\t\t\t},\n\t\t\tImageId:            pulumi.String(\"ami-a27d8fda\"),\n\t\t\tIamInstanceProfile: pulumi.String(\"iam-profile\"),\n\t\t\tKeyName:            pulumi.String(\"my-key.ssh\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sg-123456\"),\n\t\t\t},\n\t\t\tUserData:         pulumi.String(\"echo hello world\"),\n\t\t\tEnableMonitoring: pulumi.Bool(false),\n\t\t\tEbsOptimized:     pulumi.Bool(false),\n\t\t\tPlacementTenancy: pulumi.String(\"default\"),\n\t\t\tMetadataOptions: \u0026aws.ElastigroupMetadataOptionsArgs{\n\t\t\t\tHttpTokens:              pulumi.String(\"optional\"),\n\t\t\t\tHttpPutResponseHopLimit: pulumi.Int(10),\n\t\t\t\tInstanceMetadataTags:    pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t\tCpuOptions: \u0026aws.ElastigroupCpuOptionsArgs{\n\t\t\t\tThreadsPerCore: pulumi.Int(1),\n\t\t\t},\n\t\t\tInstanceTypesOndemand: pulumi.String(\"m3.2xlarge\"),\n\t\t\tInstanceTypesSpots: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"m3.xlarge\"),\n\t\t\t\tpulumi.String(\"m3.2xlarge\"),\n\t\t\t},\n\t\t\tInstanceTypesPreferredSpots: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"m3.xlarge\"),\n\t\t\t},\n\t\t\tOnDemandTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"c3.large\"),\n\t\t\t},\n\t\t\tInstanceTypesWeights: aws.ElastigroupInstanceTypesWeightArray{\n\t\t\t\t\u0026aws.ElastigroupInstanceTypesWeightArgs{\n\t\t\t\t\tInstanceType: pulumi.String(\"m3.xlarge\"),\n\t\t\t\t\tWeight:       pulumi.Int(10),\n\t\t\t\t},\n\t\t\t\t\u0026aws.ElastigroupInstanceTypesWeightArgs{\n\t\t\t\t\tInstanceType: pulumi.String(\"m3.2xlarge\"),\n\t\t\t\t\tWeight:       pulumi.Int(16),\n\t\t\t\t},\n\t\t\t},\n\t\t\tResourceRequirements: aws.ElastigroupResourceRequirementArray{\n\t\t\t\t\u0026aws.ElastigroupResourceRequirementArgs{\n\t\t\t\t\tExcludedInstanceFamilies: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\t\t\tpulumi.String(\"m\"),\n\t\t\t\t\t},\n\t\t\t\t\tExcludedInstanceTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"m3.large\"),\n\t\t\t\t\t},\n\t\t\t\t\tExcludedInstanceGenerations: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\t\t\tpulumi.String(\"2\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequiredGpuMinimum:    pulumi.Int(1),\n\t\t\t\t\tRequiredGpuMaximum:    pulumi.Int(16),\n\t\t\t\t\tRequiredMemoryMinimum: pulumi.Int(1),\n\t\t\t\t\tRequiredMemoryMaximum: pulumi.Int(512),\n\t\t\t\t\tRequiredVcpuMinimum:   pulumi.Int(1),\n\t\t\t\t\tRequiredVcpuMaximum:   pulumi.Int(64),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOrientation:               pulumi.String(\"balanced\"),\n\t\t\tFallbackToOndemand:        pulumi.Bool(false),\n\t\t\tCpuCredits:                pulumi.String(\"unlimited\"),\n\t\t\tMinimumInstanceLifetime:   pulumi.Int(12),\n\t\t\tMaxReplacementsPercentage: pulumi.Int(10),\n\t\t\tWaitForCapacity:           pulumi.Int(5),\n\t\t\tWaitForCapacityTimeout:    pulumi.Int(300),\n\t\t\tScalingStrategies: aws.ElastigroupScalingStrategyArray{\n\t\t\t\t\u0026aws.ElastigroupScalingStrategyArgs{\n\t\t\t\t\tTerminateAtEndOfBillingHour: pulumi.Bool(true),\n\t\t\t\t\tTerminationPolicy:           pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScalingUpPolicies: aws.ElastigroupScalingUpPolicyArray{\n\t\t\t\t\u0026aws.ElastigroupScalingUpPolicyArgs{\n\t\t\t\t\tPolicyName:        pulumi.String(\"Default Scaling Up Policy\"),\n\t\t\t\t\tMetricName:        pulumi.String(\"DefaultQueuesDepth\"),\n\t\t\t\t\tStatistic:         pulumi.String(\"average\"),\n\t\t\t\t\tUnit:              pulumi.String(\"none\"),\n\t\t\t\t\tAdjustment:        pulumi.String(\"1\"),\n\t\t\t\t\tNamespace:         pulumi.String(\"custom\"),\n\t\t\t\t\tThreshold:         pulumi.Float64(100),\n\t\t\t\t\tPeriod:            pulumi.Int(60),\n\t\t\t\t\tEvaluationPeriods: pulumi.Int(5),\n\t\t\t\t\tCooldown:          pulumi.Int(300),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScalingDownPolicies: aws.ElastigroupScalingDownPolicyArray{\n\t\t\t\t\u0026aws.ElastigroupScalingDownPolicyArgs{\n\t\t\t\t\tPolicyName:        pulumi.String(\"Default Scaling Down Policy\"),\n\t\t\t\t\tMetricName:        pulumi.String(\"DefaultQueuesDepth\"),\n\t\t\t\t\tStatistic:         pulumi.String(\"average\"),\n\t\t\t\t\tUnit:              pulumi.String(\"none\"),\n\t\t\t\t\tAdjustment:        pulumi.String(\"1\"),\n\t\t\t\t\tNamespace:         pulumi.String(\"custom\"),\n\t\t\t\t\tThreshold:         pulumi.Float64(10),\n\t\t\t\t\tPeriod:            pulumi.Int(60),\n\t\t\t\t\tEvaluationPeriods: pulumi.Int(10),\n\t\t\t\t\tCooldown:          pulumi.Int(300),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: aws.ElastigroupTagArray{\n\t\t\t\t\u0026aws.ElastigroupTagArgs{\n\t\t\t\t\tKey:   pulumi.String(\"Env\"),\n\t\t\t\t\tValue: pulumi.String(\"production\"),\n\t\t\t\t},\n\t\t\t\t\u0026aws.ElastigroupTagArgs{\n\t\t\t\t\tKey:   pulumi.String(\"Name\"),\n\t\t\t\t\tValue: pulumi.String(\"default-production\"),\n\t\t\t\t},\n\t\t\t\t\u0026aws.ElastigroupTagArgs{\n\t\t\t\t\tKey:   pulumi.String(\"Project\"),\n\t\t\t\t\tValue: pulumi.String(\"app_v2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tResourceTagSpecifications: aws.ElastigroupResourceTagSpecificationArray{\n\t\t\t\t\u0026aws.ElastigroupResourceTagSpecificationArgs{\n\t\t\t\t\tShouldTagEnis:      pulumi.Bool(true),\n\t\t\t\t\tShouldTagVolumes:   pulumi.Bool(true),\n\t\t\t\t\tShouldTagSnapshots: pulumi.Bool(true),\n\t\t\t\t\tShouldTagAmis:      pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLogging: \u0026aws.ElastigroupLoggingArgs{\n\t\t\t\tExport: \u0026aws.ElastigroupLoggingExportArgs{\n\t\t\t\t\tS3s: aws.ElastigroupLoggingExportS3Array{\n\t\t\t\t\t\t\u0026aws.ElastigroupLoggingExportS3Args{\n\t\t\t\t\t\t\tId: pulumi.String(\"di-123456\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.Elastigroup;\nimport com.pulumi.spotinst.aws.ElastigroupArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupMetadataOptionsArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupCpuOptionsArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupInstanceTypesWeightArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupResourceRequirementArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupScalingStrategyArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupScalingUpPolicyArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupScalingDownPolicyArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupTagArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupResourceTagSpecificationArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupLoggingArgs;\nimport com.pulumi.spotinst.aws.inputs.ElastigroupLoggingExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create an Elastigroup\n        var default_elastigroup = new Elastigroup(\"default-elastigroup\", ElastigroupArgs.builder()\n            .name(\"default-elastigroup\")\n            .description(\"created by Pulumi\")\n            .product(\"Linux/UNIX\")\n            .maxSize(0)\n            .minSize(0)\n            .desiredCapacity(0)\n            .capacityUnit(\"weight\")\n            .region(\"us-west-2\")\n            .subnetIds(            \n                \"sb-123456\",\n                \"sb-456789\")\n            .imageId(\"ami-a27d8fda\")\n            .iamInstanceProfile(\"iam-profile\")\n            .keyName(\"my-key.ssh\")\n            .securityGroups(\"sg-123456\")\n            .userData(\"echo hello world\")\n            .enableMonitoring(false)\n            .ebsOptimized(false)\n            .placementTenancy(\"default\")\n            .metadataOptions(ElastigroupMetadataOptionsArgs.builder()\n                .httpTokens(\"optional\")\n                .httpPutResponseHopLimit(10)\n                .instanceMetadataTags(\"enabled\")\n                .build())\n            .cpuOptions(ElastigroupCpuOptionsArgs.builder()\n                .threadsPerCore(1)\n                .build())\n            .instanceTypesOndemand(\"m3.2xlarge\")\n            .instanceTypesSpots(            \n                \"m3.xlarge\",\n                \"m3.2xlarge\")\n            .instanceTypesPreferredSpots(\"m3.xlarge\")\n            .onDemandTypes(\"c3.large\")\n            .instanceTypesWeights(            \n                ElastigroupInstanceTypesWeightArgs.builder()\n                    .instanceType(\"m3.xlarge\")\n                    .weight(10)\n                    .build(),\n                ElastigroupInstanceTypesWeightArgs.builder()\n                    .instanceType(\"m3.2xlarge\")\n                    .weight(16)\n                    .build())\n            .resourceRequirements(ElastigroupResourceRequirementArgs.builder()\n                .excludedInstanceFamilies(                \n                    \"a\",\n                    \"m\")\n                .excludedInstanceTypes(\"m3.large\")\n                .excludedInstanceGenerations(                \n                    \"1\",\n                    \"2\")\n                .requiredGpuMinimum(1)\n                .requiredGpuMaximum(16)\n                .requiredMemoryMinimum(1)\n                .requiredMemoryMaximum(512)\n                .requiredVcpuMinimum(1)\n                .requiredVcpuMaximum(64)\n                .build())\n            .orientation(\"balanced\")\n            .fallbackToOndemand(false)\n            .cpuCredits(\"unlimited\")\n            .minimumInstanceLifetime(12)\n            .maxReplacementsPercentage(10)\n            .waitForCapacity(5)\n            .waitForCapacityTimeout(300)\n            .scalingStrategies(ElastigroupScalingStrategyArgs.builder()\n                .terminateAtEndOfBillingHour(true)\n                .terminationPolicy(\"default\")\n                .build())\n            .scalingUpPolicies(ElastigroupScalingUpPolicyArgs.builder()\n                .policyName(\"Default Scaling Up Policy\")\n                .metricName(\"DefaultQueuesDepth\")\n                .statistic(\"average\")\n                .unit(\"none\")\n                .adjustment(\"1\")\n                .namespace(\"custom\")\n                .threshold(100.0)\n                .period(60)\n                .evaluationPeriods(5)\n                .cooldown(300)\n                .build())\n            .scalingDownPolicies(ElastigroupScalingDownPolicyArgs.builder()\n                .policyName(\"Default Scaling Down Policy\")\n                .metricName(\"DefaultQueuesDepth\")\n                .statistic(\"average\")\n                .unit(\"none\")\n                .adjustment(\"1\")\n                .namespace(\"custom\")\n                .threshold(10.0)\n                .period(60)\n                .evaluationPeriods(10)\n                .cooldown(300)\n                .build())\n            .tags(            \n                ElastigroupTagArgs.builder()\n                    .key(\"Env\")\n                    .value(\"production\")\n                    .build(),\n                ElastigroupTagArgs.builder()\n                    .key(\"Name\")\n                    .value(\"default-production\")\n                    .build(),\n                ElastigroupTagArgs.builder()\n                    .key(\"Project\")\n                    .value(\"app_v2\")\n                    .build())\n            .resourceTagSpecifications(ElastigroupResourceTagSpecificationArgs.builder()\n                .shouldTagEnis(true)\n                .shouldTagVolumes(true)\n                .shouldTagSnapshots(true)\n                .shouldTagAmis(true)\n                .build())\n            .logging(ElastigroupLoggingArgs.builder()\n                .export(ElastigroupLoggingExportArgs.builder()\n                    .s3s(ElastigroupLoggingExportS3Args.builder()\n                        .id(\"di-123456\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create an Elastigroup\n  default-elastigroup:\n    type: spotinst:aws:Elastigroup\n    properties:\n      name: default-elastigroup\n      description: created by Pulumi\n      product: Linux/UNIX\n      maxSize: 0\n      minSize: 0\n      desiredCapacity: 0\n      capacityUnit: weight\n      region: us-west-2\n      subnetIds:\n        - sb-123456\n        - sb-456789\n      imageId: ami-a27d8fda\n      iamInstanceProfile: iam-profile\n      keyName: my-key.ssh\n      securityGroups:\n        - sg-123456\n      userData: echo hello world\n      enableMonitoring: false\n      ebsOptimized: false\n      placementTenancy: default\n      metadataOptions:\n        httpTokens: optional\n        httpPutResponseHopLimit: 10\n        instanceMetadataTags: enabled\n      cpuOptions:\n        threadsPerCore: 1\n      instanceTypesOndemand: m3.2xlarge\n      instanceTypesSpots:\n        - m3.xlarge\n        - m3.2xlarge\n      instanceTypesPreferredSpots:\n        - m3.xlarge\n      onDemandTypes:\n        - c3.large\n      instanceTypesWeights:\n        - instanceType: m3.xlarge\n          weight: 10\n        - instanceType: m3.2xlarge\n          weight: 16\n      resourceRequirements:\n        - excludedInstanceFamilies:\n            - a\n            - m\n          excludedInstanceTypes:\n            - m3.large\n          excludedInstanceGenerations:\n            - '1'\n            - '2'\n          requiredGpuMinimum: 1\n          requiredGpuMaximum: 16\n          requiredMemoryMinimum: 1\n          requiredMemoryMaximum: 512\n          requiredVcpuMinimum: 1\n          requiredVcpuMaximum: 64\n      orientation: balanced\n      fallbackToOndemand: false\n      cpuCredits: unlimited\n      minimumInstanceLifetime: 12\n      maxReplacementsPercentage: 10\n      waitForCapacity: 5\n      waitForCapacityTimeout: 300\n      scalingStrategies:\n        - terminateAtEndOfBillingHour: true\n          terminationPolicy: default\n      scalingUpPolicies:\n        - policyName: Default Scaling Up Policy\n          metricName: DefaultQueuesDepth\n          statistic: average\n          unit: none\n          adjustment: 1\n          namespace: custom\n          threshold: 100\n          period: 60\n          evaluationPeriods: 5\n          cooldown: 300\n      scalingDownPolicies:\n        - policyName: Default Scaling Down Policy\n          metricName: DefaultQueuesDepth\n          statistic: average\n          unit: none\n          adjustment: 1\n          namespace: custom\n          threshold: 10\n          period: 60\n          evaluationPeriods: 10\n          cooldown: 300\n      tags:\n        - key: Env\n          value: production\n        - key: Name\n          value: default-production\n        - key: Project\n          value: app_v2\n      resourceTagSpecifications:\n        - shouldTagEnis: true\n          shouldTagVolumes: true\n          shouldTagSnapshots: true\n          shouldTagAmis: true\n      logging:\n        export:\n          s3s:\n            - id: di-123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"autoHealing":{"type":"boolean","description":"Auto-healing replacement won't be triggered if this parameter value is \"false\". In a case of a stateful group - no recycling will start if this parameter value is \"false\".\n"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"List of Strings of availability zones. When this parameter is set, \u003cspan pulumi-lang-nodejs=\"`subnetIds`\" pulumi-lang-dotnet=\"`SubnetIds`\" pulumi-lang-go=\"`subnetIds`\" pulumi-lang-python=\"`subnet_ids`\" pulumi-lang-yaml=\"`subnetIds`\" pulumi-lang-java=\"`subnetIds`\"\u003e`subnet_ids`\u003c/span\u003e should be left unused.\nNote: \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e naming syntax follows the convention `availability-zone:subnet:placement-group-name`. For example, to set an AZ in `us-east-1` with subnet `subnet-123456` and placement group `ClusterI03`, you would set:\n\u003cspan pulumi-lang-nodejs=\"`availabilityZones \" pulumi-lang-dotnet=\"`AvailabilityZones \" pulumi-lang-go=\"`availabilityZones \" pulumi-lang-python=\"`availability_zones \" pulumi-lang-yaml=\"`availabilityZones \" pulumi-lang-java=\"`availabilityZones \"\u003e`availability_zones \u003c/span\u003e= [\"us-east-1a:subnet-123456:ClusterI03\"]`\n"},"blockDevicesMode":{"type":"string"},"capacityUnit":{"type":"string","description":"The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`weight`\" pulumi-lang-dotnet=\"`Weight`\" pulumi-lang-go=\"`weight`\" pulumi-lang-python=\"`weight`\" pulumi-lang-yaml=\"`weight`\" pulumi-lang-java=\"`weight`\"\u003e`weight`\u003c/span\u003e.\n"},"considerOdPricing":{"type":"boolean"},"cpuCredits":{"type":"string","description":"Controls how T3 instances are launched. Valid values: \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unlimited`\" pulumi-lang-dotnet=\"`Unlimited`\" pulumi-lang-go=\"`unlimited`\" pulumi-lang-python=\"`unlimited`\" pulumi-lang-yaml=\"`unlimited`\" pulumi-lang-java=\"`unlimited`\"\u003e`unlimited`\u003c/span\u003e.\n"},"cpuOptions":{"$ref":"#/types/spotinst:aws/ElastigroupCpuOptions:ElastigroupCpuOptions","description":"The CPU options for the instances that are launched within the group:\n"},"description":{"type":"string","description":"The group description.\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupEbsBlockDevice:ElastigroupEbsBlockDevice"}},"ebsOptimized":{"type":"boolean","description":"Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.\n"},"elasticIps":{"type":"array","items":{"type":"string"},"description":"A list of [AWS Elastic IP](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) allocation IDs to associate to the group instances.\n"},"elasticLoadBalancers":{"type":"array","items":{"type":"string"}},"enableMonitoring":{"type":"boolean","description":"Indicates whether monitoring is enabled for the instance.\n"},"ephemeralBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupEphemeralBlockDevice:ElastigroupEphemeralBlockDevice"}},"fallbackToOndemand":{"type":"boolean","description":"In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.\n"},"healthCheckGracePeriod":{"type":"integer","description":"The amount of time, in seconds, after the instance has launched to starts and check its health.\n"},"healthCheckType":{"type":"string","description":"The service that will perform health checks for the instance. Valid values: `\"ELB\"`, `\"HCS\"`, `\"TARGET_GROUP\"`, `\"EC2\"`, `\"K8S_NODE\"`, `\"NOMAD_NODE\"`, `\"ECS_CLUSTER_INSTANCE\"`.\n"},"healthCheckUnhealthyDurationBeforeReplacement":{"type":"integer","description":"The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).\n"},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"The ID of the AMI used to launch the instance.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupImage:ElastigroupImage"},"description":"An array of image objects. \nNote: Elastigroup can be configured with either imageId or images, but not both.\n"},"immediateOdRecoverThreshold":{"type":"integer"},"instanceTypesOndemand":{"type":"string","description":"The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).\n"},"instanceTypesPreferredSpots":{"type":"array","items":{"type":"string"},"description":"Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.\n"},"instanceTypesSpots":{"type":"array","items":{"type":"string"},"description":"One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.\n"},"instanceTypesWeights":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupInstanceTypesWeight:ElastigroupInstanceTypesWeight"},"description":"List of weights per instance type for weighted groups. Each object in the list should have the following attributes:\n"},"integrationBeanstalk":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalk:ElastigroupIntegrationBeanstalk"},"integrationCodedeploy":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationCodedeploy:ElastigroupIntegrationCodedeploy"},"integrationDockerSwarm":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationEcs":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcs:ElastigroupIntegrationEcs"},"integrationGitlab":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationGitlab:ElastigroupIntegrationGitlab"},"integrationKubernetes":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationKubernetes:ElastigroupIntegrationKubernetes"},"integrationMesosphere":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationMesosphere:ElastigroupIntegrationMesosphere"},"integrationNomad":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationNomad:ElastigroupIntegrationNomad"},"integrationRancher":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRancher:ElastigroupIntegrationRancher"},"integrationRoute53":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRoute53:ElastigroupIntegrationRoute53"},"itfs":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItf:ElastigroupItf"}},"keyName":{"type":"string","description":"The key name that should be used for the instance.\n"},"lifetimePeriod":{"type":"string"},"logging":{"$ref":"#/types/spotinst:aws/ElastigroupLogging:ElastigroupLogging","description":"Logging configuration.\n"},"maxReplacementsPercentage":{"type":"integer"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"metadataOptions":{"$ref":"#/types/spotinst:aws/ElastigroupMetadataOptions:ElastigroupMetadataOptions","description":"Data that used to configure or manage the running instances:\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"minimumInstanceLifetime":{"type":"integer","description":"Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.\n"},"multipleMetrics":{"$ref":"#/types/spotinst:aws/ElastigroupMultipleMetrics:ElastigroupMultipleMetrics"},"name":{"type":"string","description":"The group name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"onDemandTypes":{"type":"array","items":{"type":"string"},"description":"Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.\n"},"ondemandCount":{"type":"integer","description":"Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the \u003cspan pulumi-lang-nodejs=\"`spotPercentage`\" pulumi-lang-dotnet=\"`SpotPercentage`\" pulumi-lang-go=\"`spotPercentage`\" pulumi-lang-python=\"`spot_percentage`\" pulumi-lang-yaml=\"`spotPercentage`\" pulumi-lang-java=\"`spotPercentage`\"\u003e`spot_percentage`\u003c/span\u003e parameter is being ignored.\n"},"orientation":{"type":"string","description":"Select a prediction strategy. Valid values: \u003cspan pulumi-lang-nodejs=\"`balanced`\" pulumi-lang-dotnet=\"`Balanced`\" pulumi-lang-go=\"`balanced`\" pulumi-lang-python=\"`balanced`\" pulumi-lang-yaml=\"`balanced`\" pulumi-lang-java=\"`balanced`\"\u003e`balanced`\u003c/span\u003e, `costOriented`, `equalAzDistribution`, `availabilityOriented`. You can read more in our documentation.\n"},"persistBlockDevices":{"type":"boolean"},"persistPrivateIp":{"type":"boolean"},"persistRootDevice":{"type":"boolean"},"placementTenancy":{"type":"string","description":"Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: \"default\", \"dedicated\" .\n"},"preferredAvailabilityZones":{"type":"array","items":{"type":"string"},"description":"The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. \nNote: Must be a sublist of \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`orientation`\" pulumi-lang-dotnet=\"`Orientation`\" pulumi-lang-go=\"`orientation`\" pulumi-lang-python=\"`orientation`\" pulumi-lang-yaml=\"`orientation`\" pulumi-lang-java=\"`orientation`\"\u003e`orientation`\u003c/span\u003e value must not be `\"equalAzDistribution\"`.\n"},"privateIps":{"type":"array","items":{"type":"string"}},"product":{"type":"string","description":"Operation system type. Valid values: `\"Linux/UNIX\"`, `\"SUSE Linux\"`, `\"Windows\"`. \nFor EC2 Classic instances: `\"SUSE Linux (Amazon VPC)\"`, `\"Windows (Amazon VPC)\"`.\n"},"region":{"type":"string","description":"The AWS region your group will be created in.\nNote: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).\n"},"resourceRequirements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupResourceRequirement:ElastigroupResourceRequirement"},"description":"Required instance attributes. Instance types will be selected based on these requirements.\n"},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupResourceTagSpecification:ElastigroupResourceTagSpecification"},"description":"User will specify which resources should be tagged with group tags.\n"},"restrictSingleAz":{"type":"boolean","description":"Elastigroup will automatically scale your instances in the most available and cost efficient availability zone. Every evaluation will be done when there are no active instances in the group.\n"},"revertToSpot":{"$ref":"#/types/spotinst:aws/ElastigroupRevertToSpot:ElastigroupRevertToSpot","description":"Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: `\"never\"`, `\"always\"`, `\"timeWindow\"`\n"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingStrategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingStrategy:ElastigroupScalingStrategy"},"description":"Set termination policy.\n"},"scalingTargetPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingTargetPolicy:ElastigroupScalingTargetPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScheduledTask:ElastigroupScheduledTask"}},"securityGroups":{"type":"array","items":{"type":"string"},"description":"A list of associated security group IDS.\n"},"shutdownScript":{"type":"string","description":"The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: [Shutdown Script](https://api.spotinst.com/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupSignal:ElastigroupSignal"}},"spotPercentage":{"type":"integer","description":"The percentage of Spot instances that would spin up from the \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e number.\n"},"statefulDeallocation":{"$ref":"#/types/spotinst:aws/ElastigroupStatefulDeallocation:ElastigroupStatefulDeallocation"},"statefulInstanceActions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupStatefulInstanceAction:ElastigroupStatefulInstanceAction"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"List of Strings of subnet identifiers.\nNote: When this parameter is set, \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e should be left unused.\n","deprecationMessage":"This field will soon be deprecated and handled by availability_zones"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupTag:ElastigroupTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"targetGroupArns":{"type":"array","items":{"type":"string"}},"updatePolicy":{"$ref":"#/types/spotinst:aws/ElastigroupUpdatePolicy:ElastigroupUpdatePolicy"},"userData":{"type":"string","description":"The user data to provide when launching the instance.\n"},"utilizeCommitments":{"type":"boolean"},"utilizeReservedInstances":{"type":"boolean","description":"In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.\n"},"waitForCapacity":{"type":"integer","description":"Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e.\n"},"waitForCapacityTimeout":{"type":"integer","description":"Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e to indicate no wait. This is ignored when updating with blue/green deployment.\n"}},"required":["capacityUnit","drainingTimeout","ebsOptimized","fallbackToOndemand","maxSize","minSize","name","orientation","product","securityGroups"],"inputProperties":{"autoHealing":{"type":"boolean","description":"Auto-healing replacement won't be triggered if this parameter value is \"false\". In a case of a stateful group - no recycling will start if this parameter value is \"false\".\n"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"List of Strings of availability zones. When this parameter is set, \u003cspan pulumi-lang-nodejs=\"`subnetIds`\" pulumi-lang-dotnet=\"`SubnetIds`\" pulumi-lang-go=\"`subnetIds`\" pulumi-lang-python=\"`subnet_ids`\" pulumi-lang-yaml=\"`subnetIds`\" pulumi-lang-java=\"`subnetIds`\"\u003e`subnet_ids`\u003c/span\u003e should be left unused.\nNote: \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e naming syntax follows the convention `availability-zone:subnet:placement-group-name`. For example, to set an AZ in `us-east-1` with subnet `subnet-123456` and placement group `ClusterI03`, you would set:\n\u003cspan pulumi-lang-nodejs=\"`availabilityZones \" pulumi-lang-dotnet=\"`AvailabilityZones \" pulumi-lang-go=\"`availabilityZones \" pulumi-lang-python=\"`availability_zones \" pulumi-lang-yaml=\"`availabilityZones \" pulumi-lang-java=\"`availabilityZones \"\u003e`availability_zones \u003c/span\u003e= [\"us-east-1a:subnet-123456:ClusterI03\"]`\n"},"blockDevicesMode":{"type":"string"},"capacityUnit":{"type":"string","description":"The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`weight`\" pulumi-lang-dotnet=\"`Weight`\" pulumi-lang-go=\"`weight`\" pulumi-lang-python=\"`weight`\" pulumi-lang-yaml=\"`weight`\" pulumi-lang-java=\"`weight`\"\u003e`weight`\u003c/span\u003e.\n"},"considerOdPricing":{"type":"boolean"},"cpuCredits":{"type":"string","description":"Controls how T3 instances are launched. Valid values: \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unlimited`\" pulumi-lang-dotnet=\"`Unlimited`\" pulumi-lang-go=\"`unlimited`\" pulumi-lang-python=\"`unlimited`\" pulumi-lang-yaml=\"`unlimited`\" pulumi-lang-java=\"`unlimited`\"\u003e`unlimited`\u003c/span\u003e.\n"},"cpuOptions":{"$ref":"#/types/spotinst:aws/ElastigroupCpuOptions:ElastigroupCpuOptions","description":"The CPU options for the instances that are launched within the group:\n"},"description":{"type":"string","description":"The group description.\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupEbsBlockDevice:ElastigroupEbsBlockDevice"}},"ebsOptimized":{"type":"boolean","description":"Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.\n"},"elasticIps":{"type":"array","items":{"type":"string"},"description":"A list of [AWS Elastic IP](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) allocation IDs to associate to the group instances.\n"},"elasticLoadBalancers":{"type":"array","items":{"type":"string"}},"enableMonitoring":{"type":"boolean","description":"Indicates whether monitoring is enabled for the instance.\n"},"ephemeralBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupEphemeralBlockDevice:ElastigroupEphemeralBlockDevice"}},"fallbackToOndemand":{"type":"boolean","description":"In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.\n"},"healthCheckGracePeriod":{"type":"integer","description":"The amount of time, in seconds, after the instance has launched to starts and check its health.\n"},"healthCheckType":{"type":"string","description":"The service that will perform health checks for the instance. Valid values: `\"ELB\"`, `\"HCS\"`, `\"TARGET_GROUP\"`, `\"EC2\"`, `\"K8S_NODE\"`, `\"NOMAD_NODE\"`, `\"ECS_CLUSTER_INSTANCE\"`.\n"},"healthCheckUnhealthyDurationBeforeReplacement":{"type":"integer","description":"The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).\n"},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"The ID of the AMI used to launch the instance.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupImage:ElastigroupImage"},"description":"An array of image objects. \nNote: Elastigroup can be configured with either imageId or images, but not both.\n"},"immediateOdRecoverThreshold":{"type":"integer"},"instanceTypesOndemand":{"type":"string","description":"The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).\n"},"instanceTypesPreferredSpots":{"type":"array","items":{"type":"string"},"description":"Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.\n"},"instanceTypesSpots":{"type":"array","items":{"type":"string"},"description":"One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.\n"},"instanceTypesWeights":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupInstanceTypesWeight:ElastigroupInstanceTypesWeight"},"description":"List of weights per instance type for weighted groups. Each object in the list should have the following attributes:\n"},"integrationBeanstalk":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalk:ElastigroupIntegrationBeanstalk"},"integrationCodedeploy":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationCodedeploy:ElastigroupIntegrationCodedeploy"},"integrationDockerSwarm":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationEcs":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcs:ElastigroupIntegrationEcs"},"integrationGitlab":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationGitlab:ElastigroupIntegrationGitlab"},"integrationKubernetes":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationKubernetes:ElastigroupIntegrationKubernetes"},"integrationMesosphere":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationMesosphere:ElastigroupIntegrationMesosphere"},"integrationNomad":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationNomad:ElastigroupIntegrationNomad"},"integrationRancher":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRancher:ElastigroupIntegrationRancher"},"integrationRoute53":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRoute53:ElastigroupIntegrationRoute53"},"itfs":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItf:ElastigroupItf"}},"keyName":{"type":"string","description":"The key name that should be used for the instance.\n"},"lifetimePeriod":{"type":"string"},"logging":{"$ref":"#/types/spotinst:aws/ElastigroupLogging:ElastigroupLogging","description":"Logging configuration.\n"},"maxReplacementsPercentage":{"type":"integer"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"metadataOptions":{"$ref":"#/types/spotinst:aws/ElastigroupMetadataOptions:ElastigroupMetadataOptions","description":"Data that used to configure or manage the running instances:\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"minimumInstanceLifetime":{"type":"integer","description":"Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.\n"},"multipleMetrics":{"$ref":"#/types/spotinst:aws/ElastigroupMultipleMetrics:ElastigroupMultipleMetrics"},"name":{"type":"string","description":"The group name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"onDemandTypes":{"type":"array","items":{"type":"string"},"description":"Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.\n"},"ondemandCount":{"type":"integer","description":"Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the \u003cspan pulumi-lang-nodejs=\"`spotPercentage`\" pulumi-lang-dotnet=\"`SpotPercentage`\" pulumi-lang-go=\"`spotPercentage`\" pulumi-lang-python=\"`spot_percentage`\" pulumi-lang-yaml=\"`spotPercentage`\" pulumi-lang-java=\"`spotPercentage`\"\u003e`spot_percentage`\u003c/span\u003e parameter is being ignored.\n"},"orientation":{"type":"string","description":"Select a prediction strategy. Valid values: \u003cspan pulumi-lang-nodejs=\"`balanced`\" pulumi-lang-dotnet=\"`Balanced`\" pulumi-lang-go=\"`balanced`\" pulumi-lang-python=\"`balanced`\" pulumi-lang-yaml=\"`balanced`\" pulumi-lang-java=\"`balanced`\"\u003e`balanced`\u003c/span\u003e, `costOriented`, `equalAzDistribution`, `availabilityOriented`. You can read more in our documentation.\n"},"persistBlockDevices":{"type":"boolean"},"persistPrivateIp":{"type":"boolean"},"persistRootDevice":{"type":"boolean"},"placementTenancy":{"type":"string","description":"Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: \"default\", \"dedicated\" .\n"},"preferredAvailabilityZones":{"type":"array","items":{"type":"string"},"description":"The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. \nNote: Must be a sublist of \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`orientation`\" pulumi-lang-dotnet=\"`Orientation`\" pulumi-lang-go=\"`orientation`\" pulumi-lang-python=\"`orientation`\" pulumi-lang-yaml=\"`orientation`\" pulumi-lang-java=\"`orientation`\"\u003e`orientation`\u003c/span\u003e value must not be `\"equalAzDistribution\"`.\n"},"privateIps":{"type":"array","items":{"type":"string"}},"product":{"type":"string","description":"Operation system type. Valid values: `\"Linux/UNIX\"`, `\"SUSE Linux\"`, `\"Windows\"`. \nFor EC2 Classic instances: `\"SUSE Linux (Amazon VPC)\"`, `\"Windows (Amazon VPC)\"`.\n"},"region":{"type":"string","description":"The AWS region your group will be created in.\nNote: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).\n"},"resourceRequirements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupResourceRequirement:ElastigroupResourceRequirement"},"description":"Required instance attributes. Instance types will be selected based on these requirements.\n"},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupResourceTagSpecification:ElastigroupResourceTagSpecification"},"description":"User will specify which resources should be tagged with group tags.\n"},"restrictSingleAz":{"type":"boolean","description":"Elastigroup will automatically scale your instances in the most available and cost efficient availability zone. Every evaluation will be done when there are no active instances in the group.\n"},"revertToSpot":{"$ref":"#/types/spotinst:aws/ElastigroupRevertToSpot:ElastigroupRevertToSpot","description":"Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: `\"never\"`, `\"always\"`, `\"timeWindow\"`\n"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingStrategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingStrategy:ElastigroupScalingStrategy"},"description":"Set termination policy.\n"},"scalingTargetPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingTargetPolicy:ElastigroupScalingTargetPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScheduledTask:ElastigroupScheduledTask"}},"securityGroups":{"type":"array","items":{"type":"string"},"description":"A list of associated security group IDS.\n"},"shutdownScript":{"type":"string","description":"The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: [Shutdown Script](https://api.spotinst.com/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupSignal:ElastigroupSignal"}},"spotPercentage":{"type":"integer","description":"The percentage of Spot instances that would spin up from the \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e number.\n"},"statefulDeallocation":{"$ref":"#/types/spotinst:aws/ElastigroupStatefulDeallocation:ElastigroupStatefulDeallocation"},"statefulInstanceActions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupStatefulInstanceAction:ElastigroupStatefulInstanceAction"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"List of Strings of subnet identifiers.\nNote: When this parameter is set, \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e should be left unused.\n","deprecationMessage":"This field will soon be deprecated and handled by availability_zones"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupTag:ElastigroupTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"targetGroupArns":{"type":"array","items":{"type":"string"}},"updatePolicy":{"$ref":"#/types/spotinst:aws/ElastigroupUpdatePolicy:ElastigroupUpdatePolicy"},"userData":{"type":"string","description":"The user data to provide when launching the instance.\n"},"utilizeCommitments":{"type":"boolean"},"utilizeReservedInstances":{"type":"boolean","description":"In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.\n"},"waitForCapacity":{"type":"integer","description":"Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e.\n"},"waitForCapacityTimeout":{"type":"integer","description":"Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e to indicate no wait. This is ignored when updating with blue/green deployment.\n"}},"requiredInputs":["fallbackToOndemand","orientation","product","securityGroups"],"stateInputs":{"description":"Input properties used for looking up and filtering Elastigroup resources.\n","properties":{"autoHealing":{"type":"boolean","description":"Auto-healing replacement won't be triggered if this parameter value is \"false\". In a case of a stateful group - no recycling will start if this parameter value is \"false\".\n"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"List of Strings of availability zones. When this parameter is set, \u003cspan pulumi-lang-nodejs=\"`subnetIds`\" pulumi-lang-dotnet=\"`SubnetIds`\" pulumi-lang-go=\"`subnetIds`\" pulumi-lang-python=\"`subnet_ids`\" pulumi-lang-yaml=\"`subnetIds`\" pulumi-lang-java=\"`subnetIds`\"\u003e`subnet_ids`\u003c/span\u003e should be left unused.\nNote: \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e naming syntax follows the convention `availability-zone:subnet:placement-group-name`. For example, to set an AZ in `us-east-1` with subnet `subnet-123456` and placement group `ClusterI03`, you would set:\n\u003cspan pulumi-lang-nodejs=\"`availabilityZones \" pulumi-lang-dotnet=\"`AvailabilityZones \" pulumi-lang-go=\"`availabilityZones \" pulumi-lang-python=\"`availability_zones \" pulumi-lang-yaml=\"`availabilityZones \" pulumi-lang-java=\"`availabilityZones \"\u003e`availability_zones \u003c/span\u003e= [\"us-east-1a:subnet-123456:ClusterI03\"]`\n"},"blockDevicesMode":{"type":"string"},"capacityUnit":{"type":"string","description":"The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: \u003cspan pulumi-lang-nodejs=\"`instance`\" pulumi-lang-dotnet=\"`Instance`\" pulumi-lang-go=\"`instance`\" pulumi-lang-python=\"`instance`\" pulumi-lang-yaml=\"`instance`\" pulumi-lang-java=\"`instance`\"\u003e`instance`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`weight`\" pulumi-lang-dotnet=\"`Weight`\" pulumi-lang-go=\"`weight`\" pulumi-lang-python=\"`weight`\" pulumi-lang-yaml=\"`weight`\" pulumi-lang-java=\"`weight`\"\u003e`weight`\u003c/span\u003e.\n"},"considerOdPricing":{"type":"boolean"},"cpuCredits":{"type":"string","description":"Controls how T3 instances are launched. Valid values: \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unlimited`\" pulumi-lang-dotnet=\"`Unlimited`\" pulumi-lang-go=\"`unlimited`\" pulumi-lang-python=\"`unlimited`\" pulumi-lang-yaml=\"`unlimited`\" pulumi-lang-java=\"`unlimited`\"\u003e`unlimited`\u003c/span\u003e.\n"},"cpuOptions":{"$ref":"#/types/spotinst:aws/ElastigroupCpuOptions:ElastigroupCpuOptions","description":"The CPU options for the instances that are launched within the group:\n"},"description":{"type":"string","description":"The group description.\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupEbsBlockDevice:ElastigroupEbsBlockDevice"}},"ebsOptimized":{"type":"boolean","description":"Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.\n"},"elasticIps":{"type":"array","items":{"type":"string"},"description":"A list of [AWS Elastic IP](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) allocation IDs to associate to the group instances.\n"},"elasticLoadBalancers":{"type":"array","items":{"type":"string"}},"enableMonitoring":{"type":"boolean","description":"Indicates whether monitoring is enabled for the instance.\n"},"ephemeralBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupEphemeralBlockDevice:ElastigroupEphemeralBlockDevice"}},"fallbackToOndemand":{"type":"boolean","description":"In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.\n"},"healthCheckGracePeriod":{"type":"integer","description":"The amount of time, in seconds, after the instance has launched to starts and check its health.\n"},"healthCheckType":{"type":"string","description":"The service that will perform health checks for the instance. Valid values: `\"ELB\"`, `\"HCS\"`, `\"TARGET_GROUP\"`, `\"EC2\"`, `\"K8S_NODE\"`, `\"NOMAD_NODE\"`, `\"ECS_CLUSTER_INSTANCE\"`.\n"},"healthCheckUnhealthyDurationBeforeReplacement":{"type":"integer","description":"The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).\n"},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"The ID of the AMI used to launch the instance.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupImage:ElastigroupImage"},"description":"An array of image objects. \nNote: Elastigroup can be configured with either imageId or images, but not both.\n"},"immediateOdRecoverThreshold":{"type":"integer"},"instanceTypesOndemand":{"type":"string","description":"The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).\n"},"instanceTypesPreferredSpots":{"type":"array","items":{"type":"string"},"description":"Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.\n"},"instanceTypesSpots":{"type":"array","items":{"type":"string"},"description":"One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.\n"},"instanceTypesWeights":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupInstanceTypesWeight:ElastigroupInstanceTypesWeight"},"description":"List of weights per instance type for weighted groups. Each object in the list should have the following attributes:\n"},"integrationBeanstalk":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationBeanstalk:ElastigroupIntegrationBeanstalk"},"integrationCodedeploy":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationCodedeploy:ElastigroupIntegrationCodedeploy"},"integrationDockerSwarm":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationEcs":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationEcs:ElastigroupIntegrationEcs"},"integrationGitlab":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationGitlab:ElastigroupIntegrationGitlab"},"integrationKubernetes":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationKubernetes:ElastigroupIntegrationKubernetes"},"integrationMesosphere":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationMesosphere:ElastigroupIntegrationMesosphere"},"integrationNomad":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationNomad:ElastigroupIntegrationNomad"},"integrationRancher":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRancher:ElastigroupIntegrationRancher"},"integrationRoute53":{"$ref":"#/types/spotinst:aws/ElastigroupIntegrationRoute53:ElastigroupIntegrationRoute53"},"itfs":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupItf:ElastigroupItf"}},"keyName":{"type":"string","description":"The key name that should be used for the instance.\n"},"lifetimePeriod":{"type":"string"},"logging":{"$ref":"#/types/spotinst:aws/ElastigroupLogging:ElastigroupLogging","description":"Logging configuration.\n"},"maxReplacementsPercentage":{"type":"integer"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"metadataOptions":{"$ref":"#/types/spotinst:aws/ElastigroupMetadataOptions:ElastigroupMetadataOptions","description":"Data that used to configure or manage the running instances:\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"minimumInstanceLifetime":{"type":"integer","description":"Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.\n"},"multipleMetrics":{"$ref":"#/types/spotinst:aws/ElastigroupMultipleMetrics:ElastigroupMultipleMetrics"},"name":{"type":"string","description":"The group name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"onDemandTypes":{"type":"array","items":{"type":"string"},"description":"Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.\n"},"ondemandCount":{"type":"integer","description":"Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the \u003cspan pulumi-lang-nodejs=\"`spotPercentage`\" pulumi-lang-dotnet=\"`SpotPercentage`\" pulumi-lang-go=\"`spotPercentage`\" pulumi-lang-python=\"`spot_percentage`\" pulumi-lang-yaml=\"`spotPercentage`\" pulumi-lang-java=\"`spotPercentage`\"\u003e`spot_percentage`\u003c/span\u003e parameter is being ignored.\n"},"orientation":{"type":"string","description":"Select a prediction strategy. Valid values: \u003cspan pulumi-lang-nodejs=\"`balanced`\" pulumi-lang-dotnet=\"`Balanced`\" pulumi-lang-go=\"`balanced`\" pulumi-lang-python=\"`balanced`\" pulumi-lang-yaml=\"`balanced`\" pulumi-lang-java=\"`balanced`\"\u003e`balanced`\u003c/span\u003e, `costOriented`, `equalAzDistribution`, `availabilityOriented`. You can read more in our documentation.\n"},"persistBlockDevices":{"type":"boolean"},"persistPrivateIp":{"type":"boolean"},"persistRootDevice":{"type":"boolean"},"placementTenancy":{"type":"string","description":"Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: \"default\", \"dedicated\" .\n"},"preferredAvailabilityZones":{"type":"array","items":{"type":"string"},"description":"The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. \nNote: Must be a sublist of \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`orientation`\" pulumi-lang-dotnet=\"`Orientation`\" pulumi-lang-go=\"`orientation`\" pulumi-lang-python=\"`orientation`\" pulumi-lang-yaml=\"`orientation`\" pulumi-lang-java=\"`orientation`\"\u003e`orientation`\u003c/span\u003e value must not be `\"equalAzDistribution\"`.\n"},"privateIps":{"type":"array","items":{"type":"string"}},"product":{"type":"string","description":"Operation system type. Valid values: `\"Linux/UNIX\"`, `\"SUSE Linux\"`, `\"Windows\"`. \nFor EC2 Classic instances: `\"SUSE Linux (Amazon VPC)\"`, `\"Windows (Amazon VPC)\"`.\n"},"region":{"type":"string","description":"The AWS region your group will be created in.\nNote: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).\n"},"resourceRequirements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupResourceRequirement:ElastigroupResourceRequirement"},"description":"Required instance attributes. Instance types will be selected based on these requirements.\n"},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupResourceTagSpecification:ElastigroupResourceTagSpecification"},"description":"User will specify which resources should be tagged with group tags.\n"},"restrictSingleAz":{"type":"boolean","description":"Elastigroup will automatically scale your instances in the most available and cost efficient availability zone. Every evaluation will be done when there are no active instances in the group.\n"},"revertToSpot":{"$ref":"#/types/spotinst:aws/ElastigroupRevertToSpot:ElastigroupRevertToSpot","description":"Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: `\"never\"`, `\"always\"`, `\"timeWindow\"`\n"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingStrategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingStrategy:ElastigroupScalingStrategy"},"description":"Set termination policy.\n"},"scalingTargetPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingTargetPolicy:ElastigroupScalingTargetPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupScheduledTask:ElastigroupScheduledTask"}},"securityGroups":{"type":"array","items":{"type":"string"},"description":"A list of associated security group IDS.\n"},"shutdownScript":{"type":"string","description":"The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: [Shutdown Script](https://api.spotinst.com/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupSignal:ElastigroupSignal"}},"spotPercentage":{"type":"integer","description":"The percentage of Spot instances that would spin up from the \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e number.\n"},"statefulDeallocation":{"$ref":"#/types/spotinst:aws/ElastigroupStatefulDeallocation:ElastigroupStatefulDeallocation"},"statefulInstanceActions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupStatefulInstanceAction:ElastigroupStatefulInstanceAction"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"List of Strings of subnet identifiers.\nNote: When this parameter is set, \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e should be left unused.\n","deprecationMessage":"This field will soon be deprecated and handled by availability_zones"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ElastigroupTag:ElastigroupTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"targetGroupArns":{"type":"array","items":{"type":"string"}},"updatePolicy":{"$ref":"#/types/spotinst:aws/ElastigroupUpdatePolicy:ElastigroupUpdatePolicy"},"userData":{"type":"string","description":"The user data to provide when launching the instance.\n"},"utilizeCommitments":{"type":"boolean"},"utilizeReservedInstances":{"type":"boolean","description":"In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.\n"},"waitForCapacity":{"type":"integer","description":"Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e.\n"},"waitForCapacityTimeout":{"type":"integer","description":"Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e to indicate no wait. This is ignored when updating with blue/green deployment.\n"}},"type":"object"}},"spotinst:aws/managedInstance:ManagedInstance":{"properties":{"autoHealing":{"type":"boolean"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceBlockDeviceMapping:ManagedInstanceBlockDeviceMapping"}},"blockDevicesMode":{"type":"string"},"cpuCredits":{"type":"string"},"deletes":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceDelete:ManagedInstanceDelete"}},"description":{"type":"string"},"drainingTimeout":{"type":"integer"},"ebsOptimized":{"type":"boolean"},"elasticIp":{"type":"string"},"enableMonitoring":{"type":"boolean"},"fallbackToOndemand":{"type":"boolean"},"gracePeriod":{"type":"integer"},"healthCheckType":{"type":"string"},"iamInstanceProfile":{"type":"string"},"imageId":{"type":"string"},"instanceTypes":{"type":"array","items":{"type":"string"}},"integrationRoute53":{"$ref":"#/types/spotinst:aws/ManagedInstanceIntegrationRoute53:ManagedInstanceIntegrationRoute53"},"keyPair":{"type":"string"},"lifeCycle":{"type":"string"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceLoadBalancer:ManagedInstanceLoadBalancer"}},"managedInstanceAction":{"$ref":"#/types/spotinst:aws/ManagedInstanceManagedInstanceAction:ManagedInstanceManagedInstanceAction"},"metadataOptions":{"$ref":"#/types/spotinst:aws/ManagedInstanceMetadataOptions:ManagedInstanceMetadataOptions"},"minimumInstanceLifetime":{"type":"integer"},"name":{"type":"string"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceNetworkInterface:ManagedInstanceNetworkInterface"}},"optimizationWindows":{"type":"array","items":{"type":"string"}},"orientation":{"type":"string"},"persistBlockDevices":{"type":"boolean"},"persistPrivateIp":{"type":"boolean"},"persistRootDevice":{"type":"boolean"},"placementTenancy":{"type":"string"},"preferredType":{"type":"string"},"preferredTypes":{"type":"array","items":{"type":"string"}},"privateIp":{"type":"string"},"product":{"type":"string"},"region":{"type":"string"},"resourceRequirements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceResourceRequirement:ManagedInstanceResourceRequirement"}},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceResourceTagSpecification:ManagedInstanceResourceTagSpecification"}},"revertToSpot":{"$ref":"#/types/spotinst:aws/ManagedInstanceRevertToSpot:ManagedInstanceRevertToSpot"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceScheduledTask:ManagedInstanceScheduledTask"}},"securityGroupIds":{"type":"array","items":{"type":"string"}},"shutdownScript":{"type":"string"},"subnetIds":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceTag:ManagedInstanceTag"}},"unhealthyDuration":{"type":"integer"},"userData":{"type":"string"},"utilizeReservedInstances":{"type":"boolean"},"vpcId":{"type":"string"}},"required":["ebsOptimized","imageId","name","persistBlockDevices","product","subnetIds","vpcId"],"inputProperties":{"autoHealing":{"type":"boolean"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceBlockDeviceMapping:ManagedInstanceBlockDeviceMapping"}},"blockDevicesMode":{"type":"string"},"cpuCredits":{"type":"string"},"deletes":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceDelete:ManagedInstanceDelete"}},"description":{"type":"string"},"drainingTimeout":{"type":"integer"},"ebsOptimized":{"type":"boolean"},"elasticIp":{"type":"string"},"enableMonitoring":{"type":"boolean"},"fallbackToOndemand":{"type":"boolean"},"gracePeriod":{"type":"integer"},"healthCheckType":{"type":"string"},"iamInstanceProfile":{"type":"string"},"imageId":{"type":"string"},"instanceTypes":{"type":"array","items":{"type":"string"}},"integrationRoute53":{"$ref":"#/types/spotinst:aws/ManagedInstanceIntegrationRoute53:ManagedInstanceIntegrationRoute53"},"keyPair":{"type":"string"},"lifeCycle":{"type":"string"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceLoadBalancer:ManagedInstanceLoadBalancer"}},"managedInstanceAction":{"$ref":"#/types/spotinst:aws/ManagedInstanceManagedInstanceAction:ManagedInstanceManagedInstanceAction"},"metadataOptions":{"$ref":"#/types/spotinst:aws/ManagedInstanceMetadataOptions:ManagedInstanceMetadataOptions"},"minimumInstanceLifetime":{"type":"integer"},"name":{"type":"string"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceNetworkInterface:ManagedInstanceNetworkInterface"}},"optimizationWindows":{"type":"array","items":{"type":"string"}},"orientation":{"type":"string"},"persistBlockDevices":{"type":"boolean"},"persistPrivateIp":{"type":"boolean"},"persistRootDevice":{"type":"boolean"},"placementTenancy":{"type":"string"},"preferredType":{"type":"string"},"preferredTypes":{"type":"array","items":{"type":"string"}},"privateIp":{"type":"string"},"product":{"type":"string"},"region":{"type":"string"},"resourceRequirements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceResourceRequirement:ManagedInstanceResourceRequirement"}},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceResourceTagSpecification:ManagedInstanceResourceTagSpecification"}},"revertToSpot":{"$ref":"#/types/spotinst:aws/ManagedInstanceRevertToSpot:ManagedInstanceRevertToSpot"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceScheduledTask:ManagedInstanceScheduledTask"}},"securityGroupIds":{"type":"array","items":{"type":"string"}},"shutdownScript":{"type":"string"},"subnetIds":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceTag:ManagedInstanceTag"}},"unhealthyDuration":{"type":"integer"},"userData":{"type":"string"},"utilizeReservedInstances":{"type":"boolean"},"vpcId":{"type":"string"}},"requiredInputs":["imageId","persistBlockDevices","product","subnetIds","vpcId"],"stateInputs":{"description":"Input properties used for looking up and filtering ManagedInstance resources.\n","properties":{"autoHealing":{"type":"boolean"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceBlockDeviceMapping:ManagedInstanceBlockDeviceMapping"}},"blockDevicesMode":{"type":"string"},"cpuCredits":{"type":"string"},"deletes":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceDelete:ManagedInstanceDelete"}},"description":{"type":"string"},"drainingTimeout":{"type":"integer"},"ebsOptimized":{"type":"boolean"},"elasticIp":{"type":"string"},"enableMonitoring":{"type":"boolean"},"fallbackToOndemand":{"type":"boolean"},"gracePeriod":{"type":"integer"},"healthCheckType":{"type":"string"},"iamInstanceProfile":{"type":"string"},"imageId":{"type":"string"},"instanceTypes":{"type":"array","items":{"type":"string"}},"integrationRoute53":{"$ref":"#/types/spotinst:aws/ManagedInstanceIntegrationRoute53:ManagedInstanceIntegrationRoute53"},"keyPair":{"type":"string"},"lifeCycle":{"type":"string"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceLoadBalancer:ManagedInstanceLoadBalancer"}},"managedInstanceAction":{"$ref":"#/types/spotinst:aws/ManagedInstanceManagedInstanceAction:ManagedInstanceManagedInstanceAction"},"metadataOptions":{"$ref":"#/types/spotinst:aws/ManagedInstanceMetadataOptions:ManagedInstanceMetadataOptions"},"minimumInstanceLifetime":{"type":"integer"},"name":{"type":"string"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceNetworkInterface:ManagedInstanceNetworkInterface"}},"optimizationWindows":{"type":"array","items":{"type":"string"}},"orientation":{"type":"string"},"persistBlockDevices":{"type":"boolean"},"persistPrivateIp":{"type":"boolean"},"persistRootDevice":{"type":"boolean"},"placementTenancy":{"type":"string"},"preferredType":{"type":"string"},"preferredTypes":{"type":"array","items":{"type":"string"}},"privateIp":{"type":"string"},"product":{"type":"string"},"region":{"type":"string"},"resourceRequirements":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceResourceRequirement:ManagedInstanceResourceRequirement"}},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceResourceTagSpecification:ManagedInstanceResourceTagSpecification"}},"revertToSpot":{"$ref":"#/types/spotinst:aws/ManagedInstanceRevertToSpot:ManagedInstanceRevertToSpot"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceScheduledTask:ManagedInstanceScheduledTask"}},"securityGroupIds":{"type":"array","items":{"type":"string"}},"shutdownScript":{"type":"string"},"subnetIds":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/ManagedInstanceTag:ManagedInstanceTag"}},"unhealthyDuration":{"type":"integer"},"userData":{"type":"string"},"utilizeReservedInstances":{"type":"boolean"},"vpcId":{"type":"string"}},"type":"object"}},"spotinst:aws/mrScalar:MrScalar":{"description":"Provides a Spotinst AWS MrScaler resource.\n\n## Example Usage\n\n### New Strategy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  sample-MrScaler-01:\n    type: spotinst:aws:MrScalar\n    properties:\n      name: sample-MrScaler-01\n      description: Testing MrScaler creation\n      region: us-west-2\n      strategy: clone\n      clusterId: j-123456789\n      exposeClusterId: true\n      availabilityZones:\n        - us-west-2a:subnet-12345678\n      masterInstanceTypes:\n        - c3.xlarge\n      masterLifecycle: SPOT\n      masterEbsOptimized: true\n      masterTarget: 1\n      masterEbsBlockDevices:\n        - volumesPerInstance: 1\n          volumeType: gp2\n          sizeInGb: 30\n      coreInstanceTypes:\n        - c3.xlarge\n        - c4.xlarge\n      coreMinSize: 1\n      coreMaxSize: 1\n      coreDesiredCapacity: 1\n      coreLifecycle: ON_DEMAND\n      coreEbsOptimized: false\n      coreUnit: instance\n      coreEbsBlockDevices:\n        - volumesPerInstance: 2\n          volumeType: gp2\n          sizeInGb: 40\n      taskInstanceTypes:\n        - c3.xlarge\n        - c4.xlarge\n      taskMinSize: 0\n      taskMaxSize: 30\n      taskDesiredCapacity: 1\n      taskLifecycle: SPOT\n      taskEbsOptimized: false\n      taskUnit: instance\n      taskEbsBlockDevices:\n        - volumesPerInstance: 2\n          volumeType: gp2\n          sizeInGb: 40\n      tags:\n        - key: Creator\n          value: Pulumi\n      taskScalingDownPolicies:\n        - policyName: policy-name\n          metricName: CPUUtilization\n          namespace: AWS/EC2\n          statistic: average\n          unit: \"\"\n          threshold: 10\n          adjustment: '1'\n          cooldown: 60\n          dimensions:\n            - name: name-1\n              value: value-1\n          operator: gt\n          evaluationPeriods: 10\n          period: 60\n          actionType: \"\"\n          minimum: 0\n          maximum: 10\n          target: 5\n          maxTargetCapacity: 1\noutputs:\n  # Create a Mr Scaler with Clone strategy and Task scaling\n  mrscaler-name: ${[\"sample-MrScaler-01\"].name}\n  mrscaler-created-cluster-id: ${[\"sample-MrScaler-01\"].outputClusterId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Wrap Strategy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create a Mr Scaler with Wrap strategy\nconst example_scaler_2 = new spotinst.aws.MrScalar(\"example-scaler-2\", {\n    name: \"spotinst-mr-scaler-2\",\n    description: \"created by Pulumi\",\n    region: \"us-west-2\",\n    strategy: \"wrap\",\n    clusterId: \"j-27UVDEHXL4OQM\",\n    taskInstanceTypes: [\n        \"c3.xlarge\",\n        \"c4.xlarge\",\n    ],\n    taskDesiredCapacity: 2,\n    taskMinSize: 0,\n    taskMaxSize: 4,\n    taskLifecycle: \"SPOT\",\n    taskUnit: \"instance\",\n    taskEbsBlockDevices: [{\n        volumesPerInstance: 1,\n        volumeType: \"gp2\",\n        sizeInGb: 20,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create a Mr Scaler with Wrap strategy\nexample_scaler_2 = spotinst.aws.MrScalar(\"example-scaler-2\",\n    name=\"spotinst-mr-scaler-2\",\n    description=\"created by Pulumi\",\n    region=\"us-west-2\",\n    strategy=\"wrap\",\n    cluster_id=\"j-27UVDEHXL4OQM\",\n    task_instance_types=[\n        \"c3.xlarge\",\n        \"c4.xlarge\",\n    ],\n    task_desired_capacity=2,\n    task_min_size=0,\n    task_max_size=4,\n    task_lifecycle=\"SPOT\",\n    task_unit=\"instance\",\n    task_ebs_block_devices=[{\n        \"volumes_per_instance\": 1,\n        \"volume_type\": \"gp2\",\n        \"size_in_gb\": 20,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a Mr Scaler with Wrap strategy\n    var example_scaler_2 = new SpotInst.Aws.MrScalar(\"example-scaler-2\", new()\n    {\n        Name = \"spotinst-mr-scaler-2\",\n        Description = \"created by Pulumi\",\n        Region = \"us-west-2\",\n        Strategy = \"wrap\",\n        ClusterId = \"j-27UVDEHXL4OQM\",\n        TaskInstanceTypes = new[]\n        {\n            \"c3.xlarge\",\n            \"c4.xlarge\",\n        },\n        TaskDesiredCapacity = 2,\n        TaskMinSize = 0,\n        TaskMaxSize = 4,\n        TaskLifecycle = \"SPOT\",\n        TaskUnit = \"instance\",\n        TaskEbsBlockDevices = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarTaskEbsBlockDeviceArgs\n            {\n                VolumesPerInstance = 1,\n                VolumeType = \"gp2\",\n                SizeInGb = 20,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a Mr Scaler with Wrap strategy\n\t\t_, err := aws.NewMrScalar(ctx, \"example-scaler-2\", \u0026aws.MrScalarArgs{\n\t\t\tName:        pulumi.String(\"spotinst-mr-scaler-2\"),\n\t\t\tDescription: pulumi.String(\"created by Pulumi\"),\n\t\t\tRegion:      pulumi.String(\"us-west-2\"),\n\t\t\tStrategy:    pulumi.String(\"wrap\"),\n\t\t\tClusterId:   pulumi.String(\"j-27UVDEHXL4OQM\"),\n\t\t\tTaskInstanceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"c3.xlarge\"),\n\t\t\t\tpulumi.String(\"c4.xlarge\"),\n\t\t\t},\n\t\t\tTaskDesiredCapacity: pulumi.Int(2),\n\t\t\tTaskMinSize:         pulumi.Int(0),\n\t\t\tTaskMaxSize:         pulumi.Int(4),\n\t\t\tTaskLifecycle:       pulumi.String(\"SPOT\"),\n\t\t\tTaskUnit:            pulumi.String(\"instance\"),\n\t\t\tTaskEbsBlockDevices: aws.MrScalarTaskEbsBlockDeviceArray{\n\t\t\t\t\u0026aws.MrScalarTaskEbsBlockDeviceArgs{\n\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\tVolumeType:         pulumi.String(\"gp2\"),\n\t\t\t\t\tSizeInGb:           pulumi.Int(20),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.MrScalar;\nimport com.pulumi.spotinst.aws.MrScalarArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarTaskEbsBlockDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a Mr Scaler with Wrap strategy\n        var example_scaler_2 = new MrScalar(\"example-scaler-2\", MrScalarArgs.builder()\n            .name(\"spotinst-mr-scaler-2\")\n            .description(\"created by Pulumi\")\n            .region(\"us-west-2\")\n            .strategy(\"wrap\")\n            .clusterId(\"j-27UVDEHXL4OQM\")\n            .taskInstanceTypes(            \n                \"c3.xlarge\",\n                \"c4.xlarge\")\n            .taskDesiredCapacity(2)\n            .taskMinSize(0)\n            .taskMaxSize(4)\n            .taskLifecycle(\"SPOT\")\n            .taskUnit(\"instance\")\n            .taskEbsBlockDevices(MrScalarTaskEbsBlockDeviceArgs.builder()\n                .volumesPerInstance(1)\n                .volumeType(\"gp2\")\n                .sizeInGb(20)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a Mr Scaler with Wrap strategy\n  example-scaler-2:\n    type: spotinst:aws:MrScalar\n    properties:\n      name: spotinst-mr-scaler-2\n      description: created by Pulumi\n      region: us-west-2\n      strategy: wrap\n      clusterId: j-27UVDEHXL4OQM\n      taskInstanceTypes:\n        - c3.xlarge\n        - c4.xlarge\n      taskDesiredCapacity: 2\n      taskMinSize: 0\n      taskMaxSize: 4\n      taskLifecycle: SPOT\n      taskUnit: instance\n      taskEbsBlockDevices:\n        - volumesPerInstance: 1\n          volumeType: gp2\n          sizeInGb: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### New Strategy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create a Mr Scaler with New strategy\nconst sample_MrScaler_01 = new spotinst.aws.MrScalar(\"sample-MrScaler-01\", {\n    name: \"sample-MrScaler-01\",\n    description: \"Testing MrScaler creation\",\n    region: \"us-west-2\",\n    strategy: \"new\",\n    releaseLabel: \"emr-5.17.0\",\n    retries: 2,\n    availabilityZones: [\"us-west-2a:subnet-123456\"],\n    provisioningTimeout: {\n        timeout: 15,\n        timeoutAction: \"terminateAndRetry\",\n    },\n    logUri: \"s3://example-logs\",\n    additionalInfo: \"{'test':'more information'}\",\n    jobFlowRole: \"EMR_EC2_ExampleRole\",\n    securityConfig: \"example-config\",\n    serviceRole: \"example-role\",\n    terminationProtected: false,\n    keepJobFlowAlive: true,\n    customAmiId: \"ami-123456\",\n    repoUpgradeOnBoot: \"NONE\",\n    ec2KeyName: \"test-key\",\n    managedPrimarySecurityGroup: \"sg-123456\",\n    managedReplicaSecurityGroup: \"sg-987654\",\n    serviceAccessSecurityGroup: \"access-example\",\n    additionalPrimarySecurityGroups: [\"sg-456321\"],\n    additionalReplicaSecurityGroups: [\"sg-123654\"],\n    applications: [\n        {\n            name: \"Ganglia\",\n            version: \"1.0\",\n        },\n        {\n            name: \"Hadoop\",\n        },\n        {\n            name: \"Pig\",\n            args: [\n                \"fake\",\n                \"args\",\n            ],\n        },\n    ],\n    instanceWeights: [\n        {\n            instanceType: \"t2.small\",\n            weightedCapacity: 10,\n        },\n        {\n            instanceType: \"t2.medium\",\n            weightedCapacity: 90,\n        },\n    ],\n    stepsFiles: [{\n        bucket: \"example-bucket\",\n        key: \"steps.json\",\n    }],\n    configurationsFiles: [{\n        bucket: \"example-bucket\",\n        key: \"configurations.json\",\n    }],\n    bootstrapActionsFiles: [{\n        bucket: \"sample-emr-test\",\n        key: \"bootstrap-actions.json\",\n    }],\n    masterInstanceTypes: [\"c3.xlarge\"],\n    masterLifecycle: \"SPOT\",\n    masterEbsOptimized: true,\n    masterTarget: 1,\n    masterEbsBlockDevices: [{\n        volumesPerInstance: 1,\n        volumeType: \"gp2\",\n        sizeInGb: 30,\n    }],\n    coreInstanceTypes: [\n        \"c3.xlarge\",\n        \"c4.xlarge\",\n    ],\n    coreMinSize: 1,\n    coreMaxSize: 1,\n    coreDesiredCapacity: 1,\n    coreLifecycle: \"ON_DEMAND\",\n    coreEbsOptimized: false,\n    coreUnit: \"instance\",\n    coreEbsBlockDevices: [{\n        volumesPerInstance: 2,\n        volumeType: \"gp2\",\n        sizeInGb: 40,\n    }],\n    taskInstanceTypes: [\n        \"c3.xlarge\",\n        \"c4.xlarge\",\n    ],\n    taskMinSize: 0,\n    taskMaxSize: 30,\n    taskDesiredCapacity: 1,\n    taskLifecycle: \"SPOT\",\n    taskEbsOptimized: false,\n    taskUnit: \"instance\",\n    taskEbsBlockDevices: [{\n        volumesPerInstance: 2,\n        volumeType: \"gp2\",\n        sizeInGb: 40,\n    }],\n    tags: [{\n        key: \"Creator\",\n        value: \"Pulumi\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create a Mr Scaler with New strategy\nsample__mr_scaler_01 = spotinst.aws.MrScalar(\"sample-MrScaler-01\",\n    name=\"sample-MrScaler-01\",\n    description=\"Testing MrScaler creation\",\n    region=\"us-west-2\",\n    strategy=\"new\",\n    release_label=\"emr-5.17.0\",\n    retries=2,\n    availability_zones=[\"us-west-2a:subnet-123456\"],\n    provisioning_timeout={\n        \"timeout\": 15,\n        \"timeout_action\": \"terminateAndRetry\",\n    },\n    log_uri=\"s3://example-logs\",\n    additional_info=\"{'test':'more information'}\",\n    job_flow_role=\"EMR_EC2_ExampleRole\",\n    security_config=\"example-config\",\n    service_role=\"example-role\",\n    termination_protected=False,\n    keep_job_flow_alive=True,\n    custom_ami_id=\"ami-123456\",\n    repo_upgrade_on_boot=\"NONE\",\n    ec2_key_name=\"test-key\",\n    managed_primary_security_group=\"sg-123456\",\n    managed_replica_security_group=\"sg-987654\",\n    service_access_security_group=\"access-example\",\n    additional_primary_security_groups=[\"sg-456321\"],\n    additional_replica_security_groups=[\"sg-123654\"],\n    applications=[\n        {\n            \"name\": \"Ganglia\",\n            \"version\": \"1.0\",\n        },\n        {\n            \"name\": \"Hadoop\",\n        },\n        {\n            \"name\": \"Pig\",\n            \"args\": [\n                \"fake\",\n                \"args\",\n            ],\n        },\n    ],\n    instance_weights=[\n        {\n            \"instance_type\": \"t2.small\",\n            \"weighted_capacity\": 10,\n        },\n        {\n            \"instance_type\": \"t2.medium\",\n            \"weighted_capacity\": 90,\n        },\n    ],\n    steps_files=[{\n        \"bucket\": \"example-bucket\",\n        \"key\": \"steps.json\",\n    }],\n    configurations_files=[{\n        \"bucket\": \"example-bucket\",\n        \"key\": \"configurations.json\",\n    }],\n    bootstrap_actions_files=[{\n        \"bucket\": \"sample-emr-test\",\n        \"key\": \"bootstrap-actions.json\",\n    }],\n    master_instance_types=[\"c3.xlarge\"],\n    master_lifecycle=\"SPOT\",\n    master_ebs_optimized=True,\n    master_target=1,\n    master_ebs_block_devices=[{\n        \"volumes_per_instance\": 1,\n        \"volume_type\": \"gp2\",\n        \"size_in_gb\": 30,\n    }],\n    core_instance_types=[\n        \"c3.xlarge\",\n        \"c4.xlarge\",\n    ],\n    core_min_size=1,\n    core_max_size=1,\n    core_desired_capacity=1,\n    core_lifecycle=\"ON_DEMAND\",\n    core_ebs_optimized=False,\n    core_unit=\"instance\",\n    core_ebs_block_devices=[{\n        \"volumes_per_instance\": 2,\n        \"volume_type\": \"gp2\",\n        \"size_in_gb\": 40,\n    }],\n    task_instance_types=[\n        \"c3.xlarge\",\n        \"c4.xlarge\",\n    ],\n    task_min_size=0,\n    task_max_size=30,\n    task_desired_capacity=1,\n    task_lifecycle=\"SPOT\",\n    task_ebs_optimized=False,\n    task_unit=\"instance\",\n    task_ebs_block_devices=[{\n        \"volumes_per_instance\": 2,\n        \"volume_type\": \"gp2\",\n        \"size_in_gb\": 40,\n    }],\n    tags=[{\n        \"key\": \"Creator\",\n        \"value\": \"Pulumi\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a Mr Scaler with New strategy\n    var sample_MrScaler_01 = new SpotInst.Aws.MrScalar(\"sample-MrScaler-01\", new()\n    {\n        Name = \"sample-MrScaler-01\",\n        Description = \"Testing MrScaler creation\",\n        Region = \"us-west-2\",\n        Strategy = \"new\",\n        ReleaseLabel = \"emr-5.17.0\",\n        Retries = 2,\n        AvailabilityZones = new[]\n        {\n            \"us-west-2a:subnet-123456\",\n        },\n        ProvisioningTimeout = new SpotInst.Aws.Inputs.MrScalarProvisioningTimeoutArgs\n        {\n            Timeout = 15,\n            TimeoutAction = \"terminateAndRetry\",\n        },\n        LogUri = \"s3://example-logs\",\n        AdditionalInfo = \"{'test':'more information'}\",\n        JobFlowRole = \"EMR_EC2_ExampleRole\",\n        SecurityConfig = \"example-config\",\n        ServiceRole = \"example-role\",\n        TerminationProtected = false,\n        KeepJobFlowAlive = true,\n        CustomAmiId = \"ami-123456\",\n        RepoUpgradeOnBoot = \"NONE\",\n        Ec2KeyName = \"test-key\",\n        ManagedPrimarySecurityGroup = \"sg-123456\",\n        ManagedReplicaSecurityGroup = \"sg-987654\",\n        ServiceAccessSecurityGroup = \"access-example\",\n        AdditionalPrimarySecurityGroups = new[]\n        {\n            \"sg-456321\",\n        },\n        AdditionalReplicaSecurityGroups = new[]\n        {\n            \"sg-123654\",\n        },\n        Applications = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarApplicationArgs\n            {\n                Name = \"Ganglia\",\n                Version = \"1.0\",\n            },\n            new SpotInst.Aws.Inputs.MrScalarApplicationArgs\n            {\n                Name = \"Hadoop\",\n            },\n            new SpotInst.Aws.Inputs.MrScalarApplicationArgs\n            {\n                Name = \"Pig\",\n                Args = new[]\n                {\n                    \"fake\",\n                    \"args\",\n                },\n            },\n        },\n        InstanceWeights = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarInstanceWeightArgs\n            {\n                InstanceType = \"t2.small\",\n                WeightedCapacity = 10,\n            },\n            new SpotInst.Aws.Inputs.MrScalarInstanceWeightArgs\n            {\n                InstanceType = \"t2.medium\",\n                WeightedCapacity = 90,\n            },\n        },\n        StepsFiles = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarStepsFileArgs\n            {\n                Bucket = \"example-bucket\",\n                Key = \"steps.json\",\n            },\n        },\n        ConfigurationsFiles = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarConfigurationsFileArgs\n            {\n                Bucket = \"example-bucket\",\n                Key = \"configurations.json\",\n            },\n        },\n        BootstrapActionsFiles = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarBootstrapActionsFileArgs\n            {\n                Bucket = \"sample-emr-test\",\n                Key = \"bootstrap-actions.json\",\n            },\n        },\n        MasterInstanceTypes = new[]\n        {\n            \"c3.xlarge\",\n        },\n        MasterLifecycle = \"SPOT\",\n        MasterEbsOptimized = true,\n        MasterTarget = 1,\n        MasterEbsBlockDevices = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarMasterEbsBlockDeviceArgs\n            {\n                VolumesPerInstance = 1,\n                VolumeType = \"gp2\",\n                SizeInGb = 30,\n            },\n        },\n        CoreInstanceTypes = new[]\n        {\n            \"c3.xlarge\",\n            \"c4.xlarge\",\n        },\n        CoreMinSize = 1,\n        CoreMaxSize = 1,\n        CoreDesiredCapacity = 1,\n        CoreLifecycle = \"ON_DEMAND\",\n        CoreEbsOptimized = false,\n        CoreUnit = \"instance\",\n        CoreEbsBlockDevices = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarCoreEbsBlockDeviceArgs\n            {\n                VolumesPerInstance = 2,\n                VolumeType = \"gp2\",\n                SizeInGb = 40,\n            },\n        },\n        TaskInstanceTypes = new[]\n        {\n            \"c3.xlarge\",\n            \"c4.xlarge\",\n        },\n        TaskMinSize = 0,\n        TaskMaxSize = 30,\n        TaskDesiredCapacity = 1,\n        TaskLifecycle = \"SPOT\",\n        TaskEbsOptimized = false,\n        TaskUnit = \"instance\",\n        TaskEbsBlockDevices = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarTaskEbsBlockDeviceArgs\n            {\n                VolumesPerInstance = 2,\n                VolumeType = \"gp2\",\n                SizeInGb = 40,\n            },\n        },\n        Tags = new[]\n        {\n            new SpotInst.Aws.Inputs.MrScalarTagArgs\n            {\n                Key = \"Creator\",\n                Value = \"Pulumi\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a Mr Scaler with New strategy\n\t\t_, err := aws.NewMrScalar(ctx, \"sample-MrScaler-01\", \u0026aws.MrScalarArgs{\n\t\t\tName:         pulumi.String(\"sample-MrScaler-01\"),\n\t\t\tDescription:  pulumi.String(\"Testing MrScaler creation\"),\n\t\t\tRegion:       pulumi.String(\"us-west-2\"),\n\t\t\tStrategy:     pulumi.String(\"new\"),\n\t\t\tReleaseLabel: pulumi.String(\"emr-5.17.0\"),\n\t\t\tRetries:      pulumi.Int(2),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-west-2a:subnet-123456\"),\n\t\t\t},\n\t\t\tProvisioningTimeout: \u0026aws.MrScalarProvisioningTimeoutArgs{\n\t\t\t\tTimeout:       pulumi.Int(15),\n\t\t\t\tTimeoutAction: pulumi.String(\"terminateAndRetry\"),\n\t\t\t},\n\t\t\tLogUri:                      pulumi.String(\"s3://example-logs\"),\n\t\t\tAdditionalInfo:              pulumi.String(\"{'test':'more information'}\"),\n\t\t\tJobFlowRole:                 pulumi.String(\"EMR_EC2_ExampleRole\"),\n\t\t\tSecurityConfig:              pulumi.String(\"example-config\"),\n\t\t\tServiceRole:                 pulumi.String(\"example-role\"),\n\t\t\tTerminationProtected:        pulumi.Bool(false),\n\t\t\tKeepJobFlowAlive:            pulumi.Bool(true),\n\t\t\tCustomAmiId:                 pulumi.String(\"ami-123456\"),\n\t\t\tRepoUpgradeOnBoot:           pulumi.String(\"NONE\"),\n\t\t\tEc2KeyName:                  pulumi.String(\"test-key\"),\n\t\t\tManagedPrimarySecurityGroup: pulumi.String(\"sg-123456\"),\n\t\t\tManagedReplicaSecurityGroup: pulumi.String(\"sg-987654\"),\n\t\t\tServiceAccessSecurityGroup:  pulumi.String(\"access-example\"),\n\t\t\tAdditionalPrimarySecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sg-456321\"),\n\t\t\t},\n\t\t\tAdditionalReplicaSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sg-123654\"),\n\t\t\t},\n\t\t\tApplications: aws.MrScalarApplicationArray{\n\t\t\t\t\u0026aws.MrScalarApplicationArgs{\n\t\t\t\t\tName:    pulumi.String(\"Ganglia\"),\n\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t},\n\t\t\t\t\u0026aws.MrScalarApplicationArgs{\n\t\t\t\t\tName: pulumi.String(\"Hadoop\"),\n\t\t\t\t},\n\t\t\t\t\u0026aws.MrScalarApplicationArgs{\n\t\t\t\t\tName: pulumi.String(\"Pig\"),\n\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"fake\"),\n\t\t\t\t\t\tpulumi.String(\"args\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceWeights: aws.MrScalarInstanceWeightArray{\n\t\t\t\t\u0026aws.MrScalarInstanceWeightArgs{\n\t\t\t\t\tInstanceType:     pulumi.String(\"t2.small\"),\n\t\t\t\t\tWeightedCapacity: pulumi.Int(10),\n\t\t\t\t},\n\t\t\t\t\u0026aws.MrScalarInstanceWeightArgs{\n\t\t\t\t\tInstanceType:     pulumi.String(\"t2.medium\"),\n\t\t\t\t\tWeightedCapacity: pulumi.Int(90),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStepsFiles: aws.MrScalarStepsFileArray{\n\t\t\t\t\u0026aws.MrScalarStepsFileArgs{\n\t\t\t\t\tBucket: pulumi.String(\"example-bucket\"),\n\t\t\t\t\tKey:    pulumi.String(\"steps.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tConfigurationsFiles: aws.MrScalarConfigurationsFileArray{\n\t\t\t\t\u0026aws.MrScalarConfigurationsFileArgs{\n\t\t\t\t\tBucket: pulumi.String(\"example-bucket\"),\n\t\t\t\t\tKey:    pulumi.String(\"configurations.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBootstrapActionsFiles: aws.MrScalarBootstrapActionsFileArray{\n\t\t\t\t\u0026aws.MrScalarBootstrapActionsFileArgs{\n\t\t\t\t\tBucket: pulumi.String(\"sample-emr-test\"),\n\t\t\t\t\tKey:    pulumi.String(\"bootstrap-actions.json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterInstanceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"c3.xlarge\"),\n\t\t\t},\n\t\t\tMasterLifecycle:    pulumi.String(\"SPOT\"),\n\t\t\tMasterEbsOptimized: pulumi.Bool(true),\n\t\t\tMasterTarget:       pulumi.Int(1),\n\t\t\tMasterEbsBlockDevices: aws.MrScalarMasterEbsBlockDeviceArray{\n\t\t\t\t\u0026aws.MrScalarMasterEbsBlockDeviceArgs{\n\t\t\t\t\tVolumesPerInstance: pulumi.Int(1),\n\t\t\t\t\tVolumeType:         pulumi.String(\"gp2\"),\n\t\t\t\t\tSizeInGb:           pulumi.Int(30),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCoreInstanceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"c3.xlarge\"),\n\t\t\t\tpulumi.String(\"c4.xlarge\"),\n\t\t\t},\n\t\t\tCoreMinSize:         pulumi.Int(1),\n\t\t\tCoreMaxSize:         pulumi.Int(1),\n\t\t\tCoreDesiredCapacity: pulumi.Int(1),\n\t\t\tCoreLifecycle:       pulumi.String(\"ON_DEMAND\"),\n\t\t\tCoreEbsOptimized:    pulumi.Bool(false),\n\t\t\tCoreUnit:            pulumi.String(\"instance\"),\n\t\t\tCoreEbsBlockDevices: aws.MrScalarCoreEbsBlockDeviceArray{\n\t\t\t\t\u0026aws.MrScalarCoreEbsBlockDeviceArgs{\n\t\t\t\t\tVolumesPerInstance: pulumi.Int(2),\n\t\t\t\t\tVolumeType:         pulumi.String(\"gp2\"),\n\t\t\t\t\tSizeInGb:           pulumi.Int(40),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTaskInstanceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"c3.xlarge\"),\n\t\t\t\tpulumi.String(\"c4.xlarge\"),\n\t\t\t},\n\t\t\tTaskMinSize:         pulumi.Int(0),\n\t\t\tTaskMaxSize:         pulumi.Int(30),\n\t\t\tTaskDesiredCapacity: pulumi.Int(1),\n\t\t\tTaskLifecycle:       pulumi.String(\"SPOT\"),\n\t\t\tTaskEbsOptimized:    pulumi.Bool(false),\n\t\t\tTaskUnit:            pulumi.String(\"instance\"),\n\t\t\tTaskEbsBlockDevices: aws.MrScalarTaskEbsBlockDeviceArray{\n\t\t\t\t\u0026aws.MrScalarTaskEbsBlockDeviceArgs{\n\t\t\t\t\tVolumesPerInstance: pulumi.Int(2),\n\t\t\t\t\tVolumeType:         pulumi.String(\"gp2\"),\n\t\t\t\t\tSizeInGb:           pulumi.Int(40),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: aws.MrScalarTagArray{\n\t\t\t\t\u0026aws.MrScalarTagArgs{\n\t\t\t\t\tKey:   pulumi.String(\"Creator\"),\n\t\t\t\t\tValue: pulumi.String(\"Pulumi\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.MrScalar;\nimport com.pulumi.spotinst.aws.MrScalarArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarProvisioningTimeoutArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarApplicationArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarInstanceWeightArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarStepsFileArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarConfigurationsFileArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarBootstrapActionsFileArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarMasterEbsBlockDeviceArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarCoreEbsBlockDeviceArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarTaskEbsBlockDeviceArgs;\nimport com.pulumi.spotinst.aws.inputs.MrScalarTagArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a Mr Scaler with New strategy\n        var sample_MrScaler_01 = new MrScalar(\"sample-MrScaler-01\", MrScalarArgs.builder()\n            .name(\"sample-MrScaler-01\")\n            .description(\"Testing MrScaler creation\")\n            .region(\"us-west-2\")\n            .strategy(\"new\")\n            .releaseLabel(\"emr-5.17.0\")\n            .retries(2)\n            .availabilityZones(\"us-west-2a:subnet-123456\")\n            .provisioningTimeout(MrScalarProvisioningTimeoutArgs.builder()\n                .timeout(15)\n                .timeoutAction(\"terminateAndRetry\")\n                .build())\n            .logUri(\"s3://example-logs\")\n            .additionalInfo(\"{'test':'more information'}\")\n            .jobFlowRole(\"EMR_EC2_ExampleRole\")\n            .securityConfig(\"example-config\")\n            .serviceRole(\"example-role\")\n            .terminationProtected(false)\n            .keepJobFlowAlive(true)\n            .customAmiId(\"ami-123456\")\n            .repoUpgradeOnBoot(\"NONE\")\n            .ec2KeyName(\"test-key\")\n            .managedPrimarySecurityGroup(\"sg-123456\")\n            .managedReplicaSecurityGroup(\"sg-987654\")\n            .serviceAccessSecurityGroup(\"access-example\")\n            .additionalPrimarySecurityGroups(\"sg-456321\")\n            .additionalReplicaSecurityGroups(\"sg-123654\")\n            .applications(            \n                MrScalarApplicationArgs.builder()\n                    .name(\"Ganglia\")\n                    .version(\"1.0\")\n                    .build(),\n                MrScalarApplicationArgs.builder()\n                    .name(\"Hadoop\")\n                    .build(),\n                MrScalarApplicationArgs.builder()\n                    .name(\"Pig\")\n                    .args(                    \n                        \"fake\",\n                        \"args\")\n                    .build())\n            .instanceWeights(            \n                MrScalarInstanceWeightArgs.builder()\n                    .instanceType(\"t2.small\")\n                    .weightedCapacity(10)\n                    .build(),\n                MrScalarInstanceWeightArgs.builder()\n                    .instanceType(\"t2.medium\")\n                    .weightedCapacity(90)\n                    .build())\n            .stepsFiles(MrScalarStepsFileArgs.builder()\n                .bucket(\"example-bucket\")\n                .key(\"steps.json\")\n                .build())\n            .configurationsFiles(MrScalarConfigurationsFileArgs.builder()\n                .bucket(\"example-bucket\")\n                .key(\"configurations.json\")\n                .build())\n            .bootstrapActionsFiles(MrScalarBootstrapActionsFileArgs.builder()\n                .bucket(\"sample-emr-test\")\n                .key(\"bootstrap-actions.json\")\n                .build())\n            .masterInstanceTypes(\"c3.xlarge\")\n            .masterLifecycle(\"SPOT\")\n            .masterEbsOptimized(true)\n            .masterTarget(1)\n            .masterEbsBlockDevices(MrScalarMasterEbsBlockDeviceArgs.builder()\n                .volumesPerInstance(1)\n                .volumeType(\"gp2\")\n                .sizeInGb(30)\n                .build())\n            .coreInstanceTypes(            \n                \"c3.xlarge\",\n                \"c4.xlarge\")\n            .coreMinSize(1)\n            .coreMaxSize(1)\n            .coreDesiredCapacity(1)\n            .coreLifecycle(\"ON_DEMAND\")\n            .coreEbsOptimized(false)\n            .coreUnit(\"instance\")\n            .coreEbsBlockDevices(MrScalarCoreEbsBlockDeviceArgs.builder()\n                .volumesPerInstance(2)\n                .volumeType(\"gp2\")\n                .sizeInGb(40)\n                .build())\n            .taskInstanceTypes(            \n                \"c3.xlarge\",\n                \"c4.xlarge\")\n            .taskMinSize(0)\n            .taskMaxSize(30)\n            .taskDesiredCapacity(1)\n            .taskLifecycle(\"SPOT\")\n            .taskEbsOptimized(false)\n            .taskUnit(\"instance\")\n            .taskEbsBlockDevices(MrScalarTaskEbsBlockDeviceArgs.builder()\n                .volumesPerInstance(2)\n                .volumeType(\"gp2\")\n                .sizeInGb(40)\n                .build())\n            .tags(MrScalarTagArgs.builder()\n                .key(\"Creator\")\n                .value(\"Pulumi\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a Mr Scaler with New strategy\n  sample-MrScaler-01:\n    type: spotinst:aws:MrScalar\n    properties:\n      name: sample-MrScaler-01\n      description: Testing MrScaler creation\n      region: us-west-2\n      strategy: new\n      releaseLabel: emr-5.17.0\n      retries: 2\n      availabilityZones:\n        - us-west-2a:subnet-123456\n      provisioningTimeout:\n        timeout: 15\n        timeoutAction: terminateAndRetry\n      logUri: s3://example-logs\n      additionalInfo: '{''test'':''more information''}'\n      jobFlowRole: EMR_EC2_ExampleRole\n      securityConfig: example-config\n      serviceRole: example-role\n      terminationProtected: false\n      keepJobFlowAlive: true # --- OPTONAL COMPUTE -----\n      customAmiId: ami-123456\n      repoUpgradeOnBoot: NONE\n      ec2KeyName: test-key\n      managedPrimarySecurityGroup: sg-123456\n      managedReplicaSecurityGroup: sg-987654\n      serviceAccessSecurityGroup: access-example\n      additionalPrimarySecurityGroups:\n        - sg-456321\n      additionalReplicaSecurityGroups:\n        - sg-123654\n      applications:\n        - name: Ganglia\n          version: '1.0'\n        - name: Hadoop\n        - name: Pig\n          args:\n            - fake\n            - args\n      instanceWeights:\n        - instanceType: t2.small\n          weightedCapacity: 10\n        - instanceType: t2.medium\n          weightedCapacity: 90\n      stepsFiles:\n        - bucket: example-bucket\n          key: steps.json\n      configurationsFiles:\n        - bucket: example-bucket\n          key: configurations.json\n      bootstrapActionsFiles:\n        - bucket: sample-emr-test\n          key: bootstrap-actions.json\n      masterInstanceTypes:\n        - c3.xlarge\n      masterLifecycle: SPOT\n      masterEbsOptimized: true\n      masterTarget: 1\n      masterEbsBlockDevices:\n        - volumesPerInstance: 1\n          volumeType: gp2\n          sizeInGb: 30\n      coreInstanceTypes:\n        - c3.xlarge\n        - c4.xlarge\n      coreMinSize: 1\n      coreMaxSize: 1\n      coreDesiredCapacity: 1\n      coreLifecycle: ON_DEMAND\n      coreEbsOptimized: false\n      coreUnit: instance\n      coreEbsBlockDevices:\n        - volumesPerInstance: 2\n          volumeType: gp2\n          sizeInGb: 40\n      taskInstanceTypes:\n        - c3.xlarge\n        - c4.xlarge\n      taskMinSize: 0\n      taskMaxSize: 30\n      taskDesiredCapacity: 1\n      taskLifecycle: SPOT\n      taskEbsOptimized: false\n      taskUnit: instance\n      taskEbsBlockDevices:\n        - volumesPerInstance: 2\n          volumeType: gp2\n          sizeInGb: 40\n      tags:\n        - key: Creator\n          value: Pulumi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"additionalInfo":{"type":"string"},"additionalPrimarySecurityGroups":{"type":"array","items":{"type":"string"}},"additionalReplicaSecurityGroups":{"type":"array","items":{"type":"string"}},"applications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarApplication:MrScalarApplication"}},"availabilityZones":{"type":"array","items":{"type":"string"}},"bootstrapActionsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarBootstrapActionsFile:MrScalarBootstrapActionsFile"}},"clusterId":{"type":"string","description":"The MrScaler cluster id.\n"},"configurationsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarConfigurationsFile:MrScalarConfigurationsFile"}},"coreDesiredCapacity":{"type":"integer"},"coreEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreEbsBlockDevice:MrScalarCoreEbsBlockDevice"}},"coreEbsOptimized":{"type":"boolean"},"coreInstanceTypes":{"type":"array","items":{"type":"string"}},"coreLifecycle":{"type":"string"},"coreMaxSize":{"type":"integer"},"coreMinSize":{"type":"integer"},"coreScalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreScalingDownPolicy:MrScalarCoreScalingDownPolicy"}},"coreScalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreScalingUpPolicy:MrScalarCoreScalingUpPolicy"}},"coreUnit":{"type":"string"},"customAmiId":{"type":"string"},"description":{"type":"string","description":"The MrScaler description.\n"},"ebsRootVolumeSize":{"type":"integer"},"ec2KeyName":{"type":"string"},"exposeClusterId":{"type":"boolean","description":"Allow the \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`cluster_id`\u003c/span\u003e to set a provider output variable.\n"},"instanceWeights":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarInstanceWeight:MrScalarInstanceWeight"}},"jobFlowRole":{"type":"string"},"keepJobFlowAlive":{"type":"boolean"},"logUri":{"type":"string"},"managedPrimarySecurityGroup":{"type":"string"},"managedReplicaSecurityGroup":{"type":"string"},"masterEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarMasterEbsBlockDevice:MrScalarMasterEbsBlockDevice"}},"masterEbsOptimized":{"type":"boolean"},"masterInstanceTypes":{"type":"array","items":{"type":"string"}},"masterLifecycle":{"type":"string"},"masterTarget":{"type":"integer"},"name":{"type":"string","description":"The MrScaler name.\n"},"outputClusterId":{"type":"string"},"provisioningTimeout":{"$ref":"#/types/spotinst:aws/MrScalarProvisioningTimeout:MrScalarProvisioningTimeout"},"region":{"type":"string","description":"The MrScaler region.\n"},"releaseLabel":{"type":"string"},"repoUpgradeOnBoot":{"type":"string"},"retries":{"type":"integer"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarScheduledTask:MrScalarScheduledTask"}},"securityConfig":{"type":"string"},"serviceAccessSecurityGroup":{"type":"string"},"serviceRole":{"type":"string"},"stepsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarStepsFile:MrScalarStepsFile"}},"strategy":{"type":"string","description":"The MrScaler strategy. Allowed values are \u003cspan pulumi-lang-nodejs=\"`new`\" pulumi-lang-dotnet=\"`New`\" pulumi-lang-go=\"`new`\" pulumi-lang-python=\"`new`\" pulumi-lang-yaml=\"`new`\" pulumi-lang-java=\"`new`\"\u003e`new`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`clone`\" pulumi-lang-dotnet=\"`Clone`\" pulumi-lang-go=\"`clone`\" pulumi-lang-python=\"`clone`\" pulumi-lang-yaml=\"`clone`\" pulumi-lang-java=\"`clone`\"\u003e`clone`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wrap`\" pulumi-lang-dotnet=\"`Wrap`\" pulumi-lang-go=\"`wrap`\" pulumi-lang-python=\"`wrap`\" pulumi-lang-yaml=\"`wrap`\" pulumi-lang-java=\"`wrap`\"\u003e`wrap`\u003c/span\u003e.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTag:MrScalarTag"}},"taskDesiredCapacity":{"type":"integer"},"taskEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskEbsBlockDevice:MrScalarTaskEbsBlockDevice"}},"taskEbsOptimized":{"type":"boolean"},"taskInstanceTypes":{"type":"array","items":{"type":"string"}},"taskLifecycle":{"type":"string"},"taskMaxSize":{"type":"integer"},"taskMinSize":{"type":"integer"},"taskScalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskScalingDownPolicy:MrScalarTaskScalingDownPolicy"}},"taskScalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskScalingUpPolicy:MrScalarTaskScalingUpPolicy"}},"taskUnit":{"type":"string"},"terminationPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTerminationPolicy:MrScalarTerminationPolicy"},"description":"Allows defining termination policies for EMR clusters based on CloudWatch Metrics.\n"},"terminationProtected":{"type":"boolean"},"visibleToAllUsers":{"type":"boolean","deprecationMessage":"This field has been removed from our API and is no longer functional."}},"required":["name","outputClusterId","strategy"],"inputProperties":{"additionalInfo":{"type":"string"},"additionalPrimarySecurityGroups":{"type":"array","items":{"type":"string"}},"additionalReplicaSecurityGroups":{"type":"array","items":{"type":"string"}},"applications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarApplication:MrScalarApplication"}},"availabilityZones":{"type":"array","items":{"type":"string"}},"bootstrapActionsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarBootstrapActionsFile:MrScalarBootstrapActionsFile"}},"clusterId":{"type":"string","description":"The MrScaler cluster id.\n","willReplaceOnChanges":true},"configurationsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarConfigurationsFile:MrScalarConfigurationsFile"}},"coreDesiredCapacity":{"type":"integer"},"coreEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreEbsBlockDevice:MrScalarCoreEbsBlockDevice"}},"coreEbsOptimized":{"type":"boolean"},"coreInstanceTypes":{"type":"array","items":{"type":"string"}},"coreLifecycle":{"type":"string"},"coreMaxSize":{"type":"integer"},"coreMinSize":{"type":"integer"},"coreScalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreScalingDownPolicy:MrScalarCoreScalingDownPolicy"}},"coreScalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreScalingUpPolicy:MrScalarCoreScalingUpPolicy"}},"coreUnit":{"type":"string","willReplaceOnChanges":true},"customAmiId":{"type":"string"},"description":{"type":"string","description":"The MrScaler description.\n"},"ebsRootVolumeSize":{"type":"integer"},"ec2KeyName":{"type":"string"},"exposeClusterId":{"type":"boolean","description":"Allow the \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`cluster_id`\u003c/span\u003e to set a provider output variable.\n"},"instanceWeights":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarInstanceWeight:MrScalarInstanceWeight"}},"jobFlowRole":{"type":"string"},"keepJobFlowAlive":{"type":"boolean"},"logUri":{"type":"string"},"managedPrimarySecurityGroup":{"type":"string"},"managedReplicaSecurityGroup":{"type":"string"},"masterEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarMasterEbsBlockDevice:MrScalarMasterEbsBlockDevice"}},"masterEbsOptimized":{"type":"boolean"},"masterInstanceTypes":{"type":"array","items":{"type":"string"}},"masterLifecycle":{"type":"string"},"masterTarget":{"type":"integer"},"name":{"type":"string","description":"The MrScaler name.\n"},"provisioningTimeout":{"$ref":"#/types/spotinst:aws/MrScalarProvisioningTimeout:MrScalarProvisioningTimeout"},"region":{"type":"string","description":"The MrScaler region.\n"},"releaseLabel":{"type":"string"},"repoUpgradeOnBoot":{"type":"string"},"retries":{"type":"integer"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarScheduledTask:MrScalarScheduledTask"}},"securityConfig":{"type":"string"},"serviceAccessSecurityGroup":{"type":"string"},"serviceRole":{"type":"string"},"stepsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarStepsFile:MrScalarStepsFile"}},"strategy":{"type":"string","description":"The MrScaler strategy. Allowed values are \u003cspan pulumi-lang-nodejs=\"`new`\" pulumi-lang-dotnet=\"`New`\" pulumi-lang-go=\"`new`\" pulumi-lang-python=\"`new`\" pulumi-lang-yaml=\"`new`\" pulumi-lang-java=\"`new`\"\u003e`new`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`clone`\" pulumi-lang-dotnet=\"`Clone`\" pulumi-lang-go=\"`clone`\" pulumi-lang-python=\"`clone`\" pulumi-lang-yaml=\"`clone`\" pulumi-lang-java=\"`clone`\"\u003e`clone`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wrap`\" pulumi-lang-dotnet=\"`Wrap`\" pulumi-lang-go=\"`wrap`\" pulumi-lang-python=\"`wrap`\" pulumi-lang-yaml=\"`wrap`\" pulumi-lang-java=\"`wrap`\"\u003e`wrap`\u003c/span\u003e.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTag:MrScalarTag"}},"taskDesiredCapacity":{"type":"integer"},"taskEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskEbsBlockDevice:MrScalarTaskEbsBlockDevice"}},"taskEbsOptimized":{"type":"boolean"},"taskInstanceTypes":{"type":"array","items":{"type":"string"}},"taskLifecycle":{"type":"string"},"taskMaxSize":{"type":"integer"},"taskMinSize":{"type":"integer"},"taskScalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskScalingDownPolicy:MrScalarTaskScalingDownPolicy"}},"taskScalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskScalingUpPolicy:MrScalarTaskScalingUpPolicy"}},"taskUnit":{"type":"string","willReplaceOnChanges":true},"terminationPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTerminationPolicy:MrScalarTerminationPolicy"},"description":"Allows defining termination policies for EMR clusters based on CloudWatch Metrics.\n"},"terminationProtected":{"type":"boolean"},"visibleToAllUsers":{"type":"boolean","deprecationMessage":"This field has been removed from our API and is no longer functional."}},"requiredInputs":["strategy"],"stateInputs":{"description":"Input properties used for looking up and filtering MrScalar resources.\n","properties":{"additionalInfo":{"type":"string"},"additionalPrimarySecurityGroups":{"type":"array","items":{"type":"string"}},"additionalReplicaSecurityGroups":{"type":"array","items":{"type":"string"}},"applications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarApplication:MrScalarApplication"}},"availabilityZones":{"type":"array","items":{"type":"string"}},"bootstrapActionsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarBootstrapActionsFile:MrScalarBootstrapActionsFile"}},"clusterId":{"type":"string","description":"The MrScaler cluster id.\n","willReplaceOnChanges":true},"configurationsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarConfigurationsFile:MrScalarConfigurationsFile"}},"coreDesiredCapacity":{"type":"integer"},"coreEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreEbsBlockDevice:MrScalarCoreEbsBlockDevice"}},"coreEbsOptimized":{"type":"boolean"},"coreInstanceTypes":{"type":"array","items":{"type":"string"}},"coreLifecycle":{"type":"string"},"coreMaxSize":{"type":"integer"},"coreMinSize":{"type":"integer"},"coreScalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreScalingDownPolicy:MrScalarCoreScalingDownPolicy"}},"coreScalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarCoreScalingUpPolicy:MrScalarCoreScalingUpPolicy"}},"coreUnit":{"type":"string","willReplaceOnChanges":true},"customAmiId":{"type":"string"},"description":{"type":"string","description":"The MrScaler description.\n"},"ebsRootVolumeSize":{"type":"integer"},"ec2KeyName":{"type":"string"},"exposeClusterId":{"type":"boolean","description":"Allow the \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`cluster_id`\u003c/span\u003e to set a provider output variable.\n"},"instanceWeights":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarInstanceWeight:MrScalarInstanceWeight"}},"jobFlowRole":{"type":"string"},"keepJobFlowAlive":{"type":"boolean"},"logUri":{"type":"string"},"managedPrimarySecurityGroup":{"type":"string"},"managedReplicaSecurityGroup":{"type":"string"},"masterEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarMasterEbsBlockDevice:MrScalarMasterEbsBlockDevice"}},"masterEbsOptimized":{"type":"boolean"},"masterInstanceTypes":{"type":"array","items":{"type":"string"}},"masterLifecycle":{"type":"string"},"masterTarget":{"type":"integer"},"name":{"type":"string","description":"The MrScaler name.\n"},"outputClusterId":{"type":"string"},"provisioningTimeout":{"$ref":"#/types/spotinst:aws/MrScalarProvisioningTimeout:MrScalarProvisioningTimeout"},"region":{"type":"string","description":"The MrScaler region.\n"},"releaseLabel":{"type":"string"},"repoUpgradeOnBoot":{"type":"string"},"retries":{"type":"integer"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarScheduledTask:MrScalarScheduledTask"}},"securityConfig":{"type":"string"},"serviceAccessSecurityGroup":{"type":"string"},"serviceRole":{"type":"string"},"stepsFiles":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarStepsFile:MrScalarStepsFile"}},"strategy":{"type":"string","description":"The MrScaler strategy. Allowed values are \u003cspan pulumi-lang-nodejs=\"`new`\" pulumi-lang-dotnet=\"`New`\" pulumi-lang-go=\"`new`\" pulumi-lang-python=\"`new`\" pulumi-lang-yaml=\"`new`\" pulumi-lang-java=\"`new`\"\u003e`new`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`clone`\" pulumi-lang-dotnet=\"`Clone`\" pulumi-lang-go=\"`clone`\" pulumi-lang-python=\"`clone`\" pulumi-lang-yaml=\"`clone`\" pulumi-lang-java=\"`clone`\"\u003e`clone`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wrap`\" pulumi-lang-dotnet=\"`Wrap`\" pulumi-lang-go=\"`wrap`\" pulumi-lang-python=\"`wrap`\" pulumi-lang-yaml=\"`wrap`\" pulumi-lang-java=\"`wrap`\"\u003e`wrap`\u003c/span\u003e.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTag:MrScalarTag"}},"taskDesiredCapacity":{"type":"integer"},"taskEbsBlockDevices":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskEbsBlockDevice:MrScalarTaskEbsBlockDevice"}},"taskEbsOptimized":{"type":"boolean"},"taskInstanceTypes":{"type":"array","items":{"type":"string"}},"taskLifecycle":{"type":"string"},"taskMaxSize":{"type":"integer"},"taskMinSize":{"type":"integer"},"taskScalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskScalingDownPolicy:MrScalarTaskScalingDownPolicy"}},"taskScalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTaskScalingUpPolicy:MrScalarTaskScalingUpPolicy"}},"taskUnit":{"type":"string","willReplaceOnChanges":true},"terminationPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/MrScalarTerminationPolicy:MrScalarTerminationPolicy"},"description":"Allows defining termination policies for EMR clusters based on CloudWatch Metrics.\n"},"terminationProtected":{"type":"boolean"},"visibleToAllUsers":{"type":"boolean","deprecationMessage":"This field has been removed from our API and is no longer functional."}},"type":"object"}},"spotinst:aws/ocean:Ocean":{"description":"## Example Usage\n\n## Import\n\nClusters can be imported using the Ocean `id`, e.g.,\n\nhcl\n\n```sh\n$ pulumi import spotinst:aws/ocean:Ocean nameOfTheResource o-12345678\n```\n\n","properties":{"associateIpv6Address":{"type":"boolean","description":"Configure IPv6 address allocation.\n"},"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"attachLoadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanAttachLoadBalancer:OceanAttachLoadBalancer"},"description":"Attach load balancers to the cluster.\n"},"autoscaler":{"$ref":"#/types/spotinst:aws/OceanAutoscaler:OceanAutoscaler","description":"Describes the Ocean Kubernetes Auto Scaler.\n"},"blacklists":{"type":"array","items":{"type":"string"}},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanBlockDeviceMapping:OceanBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"clusterOrientations":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanClusterOrientation:OceanClusterOrientation"}},"controllerId":{"type":"string","description":"A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier.\n"},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"detachLoadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanDetachLoadBalancer:OceanDetachLoadBalancer"},"description":"Detach load balancers from the cluster.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsOptimized":{"type":"boolean","description":"Enable EBS optimized for cluster. Flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized this flag will be ignored.\n"},"fallbackToOndemand":{"type":"boolean","description":"If not Spot instance markets are available, enable Ocean to launch On-Demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:aws/OceanFilters:OceanFilters"},"gracePeriod":{"type":"integer","description":"The amount of time, in seconds, after the instance has launched to start checking its health.\n"},"healthCheckUnhealthyDurationBeforeReplacement":{"type":"integer","description":"The amount of time, in seconds, an existing instance should remain active after becoming unhealthy. After the set time out the instance will be replaced. The minimum value allowed is 60, and it must be a multiple of 60.\n"},"iamInstanceProfile":{"type":"string","description":"The instance profile iam role.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:aws/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceStorePolicy":{"$ref":"#/types/spotinst:aws/OceanInstanceStorePolicy:OceanInstanceStorePolicy","description":"Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.\n"},"keyName":{"type":"string","description":"The key pair to attach the instances.\n"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLoadBalancer:OceanLoadBalancer"},"description":"Array of load balancer objects to add to ocean cluster\n"},"logging":{"$ref":"#/types/spotinst:aws/OceanLogging:OceanLogging","description":"Logging configuration.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"monitoring":{"type":"boolean","description":"Enable detailed monitoring for cluster. Flag will enable Cloud Watch detailed monitoring (one minute increments). Note: there are additional hourly costs for this service based on the region used.\n"},"name":{"type":"string","description":"The cluster name.\n"},"primaryIpv6":{"type":"boolean","description":"Enables assignment of a primary IPv6 address to the cluster. This feature is only available when \u003cspan pulumi-lang-nodejs=\"`associateIpv6Address`\" pulumi-lang-dotnet=\"`AssociateIpv6Address`\" pulumi-lang-go=\"`associateIpv6Address`\" pulumi-lang-python=\"`associate_ipv6_address`\" pulumi-lang-yaml=\"`associateIpv6Address`\" pulumi-lang-java=\"`associateIpv6Address`\"\u003e`associate_ipv6_address`\u003c/span\u003e is explicitly set to true. Additionally, the cluster must have been initially created as an EKS cluster in IPv6 mode.\n"},"region":{"type":"string","description":"The region the cluster will run in.\n"},"reservedEnis":{"type":"integer","description":"Specifies the count of ENIs to reserve per instance type for scaling purposes.\n"},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanResourceTagSpecification:OceanResourceTagSpecification"},"description":"Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags.\n"},"rootVolumeSize":{"type":"integer","description":"The size (in Gb) to allocate for the root volume. Minimum \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanScheduledTask:OceanScheduledTask"},"description":"Set scheduling object.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"spotPercentage":{"type":"integer","description":"The desired percentage of Spot instances out of all running instances. Only available when the field is not set in any VNG directly (launchSpec.strategy.spotPercentage).\n"},"spreadNodesBy":{"type":"string","description":"Ocean will spread the nodes across markets by this value. Possible values: \u003cspan pulumi-lang-nodejs=\"`vcpu`\" pulumi-lang-dotnet=\"`Vcpu`\" pulumi-lang-go=\"`vcpu`\" pulumi-lang-python=\"`vcpu`\" pulumi-lang-yaml=\"`vcpu`\" pulumi-lang-java=\"`vcpu`\"\u003e`vcpu`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`count`\" pulumi-lang-dotnet=\"`Count`\" pulumi-lang-go=\"`count`\" pulumi-lang-python=\"`count`\" pulumi-lang-yaml=\"`count`\" pulumi-lang-java=\"`count`\"\u003e`count`\u003c/span\u003e.\n"},"startupTaints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanStartupTaint:OceanStartupTaint"},"description":"Temporary taints applied to a node during its initialization phase. For a startup taint to work, it must also be set as a regular taint in the userData for the cluster.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of subnet identifiers for the Ocean cluster. Subnet IDs should be configured with auto assign public IP.\n* `instanceTypes` - (Optional) The type of instances that may or may not be a part of the Ocean cluster.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanTag:OceanTag"},"description":"Optionally adds tags to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:aws/OceanUpdatePolicy:OceanUpdatePolicy"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\nWhen set to true, on Ocean resource creation please make sure your custom VNG has an\u003cspan pulumi-lang-nodejs=\" initialNodes \" pulumi-lang-dotnet=\" InitialNodes \" pulumi-lang-go=\" initialNodes \" pulumi-lang-python=\" initial_nodes \" pulumi-lang-yaml=\" initialNodes \" pulumi-lang-java=\" initialNodes \"\u003e initial_nodes \u003c/span\u003eparameter to create nodes for your VNG.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"},"utilizeCommitments":{"type":"boolean","description":"If savings plans exist, Ocean will utilize them before launching Spot instances.\n"},"utilizeReservedInstances":{"type":"boolean","description":"If Reserved instances exist, Ocean will utilize them before launching Spot instances.\n"},"whitelists":{"type":"array","items":{"type":"string"}}},"required":["desiredCapacity","imageId","minSize","name","securityGroups","subnetIds"],"inputProperties":{"associateIpv6Address":{"type":"boolean","description":"Configure IPv6 address allocation.\n"},"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"attachLoadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanAttachLoadBalancer:OceanAttachLoadBalancer"},"description":"Attach load balancers to the cluster.\n"},"autoscaler":{"$ref":"#/types/spotinst:aws/OceanAutoscaler:OceanAutoscaler","description":"Describes the Ocean Kubernetes Auto Scaler.\n"},"blacklists":{"type":"array","items":{"type":"string"}},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanBlockDeviceMapping:OceanBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"clusterOrientations":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanClusterOrientation:OceanClusterOrientation"}},"controllerId":{"type":"string","description":"A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier.\n"},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"detachLoadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanDetachLoadBalancer:OceanDetachLoadBalancer"},"description":"Detach load balancers from the cluster.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsOptimized":{"type":"boolean","description":"Enable EBS optimized for cluster. Flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized this flag will be ignored.\n"},"fallbackToOndemand":{"type":"boolean","description":"If not Spot instance markets are available, enable Ocean to launch On-Demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:aws/OceanFilters:OceanFilters"},"gracePeriod":{"type":"integer","description":"The amount of time, in seconds, after the instance has launched to start checking its health.\n"},"healthCheckUnhealthyDurationBeforeReplacement":{"type":"integer","description":"The amount of time, in seconds, an existing instance should remain active after becoming unhealthy. After the set time out the instance will be replaced. The minimum value allowed is 60, and it must be a multiple of 60.\n"},"iamInstanceProfile":{"type":"string","description":"The instance profile iam role.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:aws/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceStorePolicy":{"$ref":"#/types/spotinst:aws/OceanInstanceStorePolicy:OceanInstanceStorePolicy","description":"Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.\n"},"keyName":{"type":"string","description":"The key pair to attach the instances.\n"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLoadBalancer:OceanLoadBalancer"},"description":"Array of load balancer objects to add to ocean cluster\n"},"logging":{"$ref":"#/types/spotinst:aws/OceanLogging:OceanLogging","description":"Logging configuration.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"monitoring":{"type":"boolean","description":"Enable detailed monitoring for cluster. Flag will enable Cloud Watch detailed monitoring (one minute increments). Note: there are additional hourly costs for this service based on the region used.\n"},"name":{"type":"string","description":"The cluster name.\n"},"primaryIpv6":{"type":"boolean","description":"Enables assignment of a primary IPv6 address to the cluster. This feature is only available when \u003cspan pulumi-lang-nodejs=\"`associateIpv6Address`\" pulumi-lang-dotnet=\"`AssociateIpv6Address`\" pulumi-lang-go=\"`associateIpv6Address`\" pulumi-lang-python=\"`associate_ipv6_address`\" pulumi-lang-yaml=\"`associateIpv6Address`\" pulumi-lang-java=\"`associateIpv6Address`\"\u003e`associate_ipv6_address`\u003c/span\u003e is explicitly set to true. Additionally, the cluster must have been initially created as an EKS cluster in IPv6 mode.\n"},"region":{"type":"string","description":"The region the cluster will run in.\n"},"reservedEnis":{"type":"integer","description":"Specifies the count of ENIs to reserve per instance type for scaling purposes.\n"},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanResourceTagSpecification:OceanResourceTagSpecification"},"description":"Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags.\n"},"rootVolumeSize":{"type":"integer","description":"The size (in Gb) to allocate for the root volume. Minimum \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanScheduledTask:OceanScheduledTask"},"description":"Set scheduling object.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"spotPercentage":{"type":"integer","description":"The desired percentage of Spot instances out of all running instances. Only available when the field is not set in any VNG directly (launchSpec.strategy.spotPercentage).\n"},"spreadNodesBy":{"type":"string","description":"Ocean will spread the nodes across markets by this value. Possible values: \u003cspan pulumi-lang-nodejs=\"`vcpu`\" pulumi-lang-dotnet=\"`Vcpu`\" pulumi-lang-go=\"`vcpu`\" pulumi-lang-python=\"`vcpu`\" pulumi-lang-yaml=\"`vcpu`\" pulumi-lang-java=\"`vcpu`\"\u003e`vcpu`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`count`\" pulumi-lang-dotnet=\"`Count`\" pulumi-lang-go=\"`count`\" pulumi-lang-python=\"`count`\" pulumi-lang-yaml=\"`count`\" pulumi-lang-java=\"`count`\"\u003e`count`\u003c/span\u003e.\n"},"startupTaints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanStartupTaint:OceanStartupTaint"},"description":"Temporary taints applied to a node during its initialization phase. For a startup taint to work, it must also be set as a regular taint in the userData for the cluster.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of subnet identifiers for the Ocean cluster. Subnet IDs should be configured with auto assign public IP.\n* `instanceTypes` - (Optional) The type of instances that may or may not be a part of the Ocean cluster.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanTag:OceanTag"},"description":"Optionally adds tags to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:aws/OceanUpdatePolicy:OceanUpdatePolicy"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\nWhen set to true, on Ocean resource creation please make sure your custom VNG has an\u003cspan pulumi-lang-nodejs=\" initialNodes \" pulumi-lang-dotnet=\" InitialNodes \" pulumi-lang-go=\" initialNodes \" pulumi-lang-python=\" initial_nodes \" pulumi-lang-yaml=\" initialNodes \" pulumi-lang-java=\" initialNodes \"\u003e initial_nodes \u003c/span\u003eparameter to create nodes for your VNG.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"},"utilizeCommitments":{"type":"boolean","description":"If savings plans exist, Ocean will utilize them before launching Spot instances.\n"},"utilizeReservedInstances":{"type":"boolean","description":"If Reserved instances exist, Ocean will utilize them before launching Spot instances.\n"},"whitelists":{"type":"array","items":{"type":"string"}}},"requiredInputs":["imageId","securityGroups","subnetIds"],"stateInputs":{"description":"Input properties used for looking up and filtering Ocean resources.\n","properties":{"associateIpv6Address":{"type":"boolean","description":"Configure IPv6 address allocation.\n"},"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"attachLoadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanAttachLoadBalancer:OceanAttachLoadBalancer"},"description":"Attach load balancers to the cluster.\n"},"autoscaler":{"$ref":"#/types/spotinst:aws/OceanAutoscaler:OceanAutoscaler","description":"Describes the Ocean Kubernetes Auto Scaler.\n"},"blacklists":{"type":"array","items":{"type":"string"}},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanBlockDeviceMapping:OceanBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"clusterOrientations":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanClusterOrientation:OceanClusterOrientation"}},"controllerId":{"type":"string","description":"A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier.\n"},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"detachLoadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanDetachLoadBalancer:OceanDetachLoadBalancer"},"description":"Detach load balancers from the cluster.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsOptimized":{"type":"boolean","description":"Enable EBS optimized for cluster. Flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized this flag will be ignored.\n"},"fallbackToOndemand":{"type":"boolean","description":"If not Spot instance markets are available, enable Ocean to launch On-Demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:aws/OceanFilters:OceanFilters"},"gracePeriod":{"type":"integer","description":"The amount of time, in seconds, after the instance has launched to start checking its health.\n"},"healthCheckUnhealthyDurationBeforeReplacement":{"type":"integer","description":"The amount of time, in seconds, an existing instance should remain active after becoming unhealthy. After the set time out the instance will be replaced. The minimum value allowed is 60, and it must be a multiple of 60.\n"},"iamInstanceProfile":{"type":"string","description":"The instance profile iam role.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:aws/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceStorePolicy":{"$ref":"#/types/spotinst:aws/OceanInstanceStorePolicy:OceanInstanceStorePolicy","description":"Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.\n"},"keyName":{"type":"string","description":"The key pair to attach the instances.\n"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLoadBalancer:OceanLoadBalancer"},"description":"Array of load balancer objects to add to ocean cluster\n"},"logging":{"$ref":"#/types/spotinst:aws/OceanLogging:OceanLogging","description":"Logging configuration.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"monitoring":{"type":"boolean","description":"Enable detailed monitoring for cluster. Flag will enable Cloud Watch detailed monitoring (one minute increments). Note: there are additional hourly costs for this service based on the region used.\n"},"name":{"type":"string","description":"The cluster name.\n"},"primaryIpv6":{"type":"boolean","description":"Enables assignment of a primary IPv6 address to the cluster. This feature is only available when \u003cspan pulumi-lang-nodejs=\"`associateIpv6Address`\" pulumi-lang-dotnet=\"`AssociateIpv6Address`\" pulumi-lang-go=\"`associateIpv6Address`\" pulumi-lang-python=\"`associate_ipv6_address`\" pulumi-lang-yaml=\"`associateIpv6Address`\" pulumi-lang-java=\"`associateIpv6Address`\"\u003e`associate_ipv6_address`\u003c/span\u003e is explicitly set to true. Additionally, the cluster must have been initially created as an EKS cluster in IPv6 mode.\n"},"region":{"type":"string","description":"The region the cluster will run in.\n"},"reservedEnis":{"type":"integer","description":"Specifies the count of ENIs to reserve per instance type for scaling purposes.\n"},"resourceTagSpecifications":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanResourceTagSpecification:OceanResourceTagSpecification"},"description":"Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags.\n"},"rootVolumeSize":{"type":"integer","description":"The size (in Gb) to allocate for the root volume. Minimum \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanScheduledTask:OceanScheduledTask"},"description":"Set scheduling object.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"spotPercentage":{"type":"integer","description":"The desired percentage of Spot instances out of all running instances. Only available when the field is not set in any VNG directly (launchSpec.strategy.spotPercentage).\n"},"spreadNodesBy":{"type":"string","description":"Ocean will spread the nodes across markets by this value. Possible values: \u003cspan pulumi-lang-nodejs=\"`vcpu`\" pulumi-lang-dotnet=\"`Vcpu`\" pulumi-lang-go=\"`vcpu`\" pulumi-lang-python=\"`vcpu`\" pulumi-lang-yaml=\"`vcpu`\" pulumi-lang-java=\"`vcpu`\"\u003e`vcpu`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`count`\" pulumi-lang-dotnet=\"`Count`\" pulumi-lang-go=\"`count`\" pulumi-lang-python=\"`count`\" pulumi-lang-yaml=\"`count`\" pulumi-lang-java=\"`count`\"\u003e`count`\u003c/span\u003e.\n"},"startupTaints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanStartupTaint:OceanStartupTaint"},"description":"Temporary taints applied to a node during its initialization phase. For a startup taint to work, it must also be set as a regular taint in the userData for the cluster.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of subnet identifiers for the Ocean cluster. Subnet IDs should be configured with auto assign public IP.\n* `instanceTypes` - (Optional) The type of instances that may or may not be a part of the Ocean cluster.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanTag:OceanTag"},"description":"Optionally adds tags to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:aws/OceanUpdatePolicy:OceanUpdatePolicy"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\nWhen set to true, on Ocean resource creation please make sure your custom VNG has an\u003cspan pulumi-lang-nodejs=\" initialNodes \" pulumi-lang-dotnet=\" InitialNodes \" pulumi-lang-go=\" initialNodes \" pulumi-lang-python=\" initial_nodes \" pulumi-lang-yaml=\" initialNodes \" pulumi-lang-java=\" initialNodes \"\u003e initial_nodes \u003c/span\u003eparameter to create nodes for your VNG.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"},"utilizeCommitments":{"type":"boolean","description":"If savings plans exist, Ocean will utilize them before launching Spot instances.\n"},"utilizeReservedInstances":{"type":"boolean","description":"If Reserved instances exist, Ocean will utilize them before launching Spot instances.\n"},"whitelists":{"type":"array","items":{"type":"string"}}},"type":"object"}},"spotinst:aws/oceanExtendedResourceDefinition:OceanExtendedResourceDefinition":{"description":"Provides a Spotinst Ocean AWS Extended Resource Definition resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.aws.OceanExtendedResourceDefinition(\"example\", {\n    name: \"terraform_extended_resource_definition\",\n    resourceMapping: {\n        \"c3.large\": \"2Ki\",\n        \"c3.xlarge\": \"4Ki\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.aws.OceanExtendedResourceDefinition(\"example\",\n    name=\"terraform_extended_resource_definition\",\n    resource_mapping={\n        \"c3.large\": \"2Ki\",\n        \"c3.xlarge\": \"4Ki\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Aws.OceanExtendedResourceDefinition(\"example\", new()\n    {\n        Name = \"terraform_extended_resource_definition\",\n        ResourceMapping = \n        {\n            { \"c3.large\", \"2Ki\" },\n            { \"c3.xlarge\", \"4Ki\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := aws.NewOceanExtendedResourceDefinition(ctx, \"example\", \u0026aws.OceanExtendedResourceDefinitionArgs{\n\t\t\tName: pulumi.String(\"terraform_extended_resource_definition\"),\n\t\t\tResourceMapping: pulumi.StringMap{\n\t\t\t\t\"c3.large\":  pulumi.String(\"2Ki\"),\n\t\t\t\t\"c3.xlarge\": pulumi.String(\"4Ki\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.OceanExtendedResourceDefinition;\nimport com.pulumi.spotinst.aws.OceanExtendedResourceDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanExtendedResourceDefinition(\"example\", OceanExtendedResourceDefinitionArgs.builder()\n            .name(\"terraform_extended_resource_definition\")\n            .resourceMapping(Map.ofEntries(\n                Map.entry(\"c3.large\", \"2Ki\"),\n                Map.entry(\"c3.xlarge\", \"4Ki\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:aws:OceanExtendedResourceDefinition\n    properties:\n      name: terraform_extended_resource_definition\n      resourceMapping:\n        c3.large: 2Ki\n        c3.xlarge: 4Ki\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"The extended resource name as should be requested by your pods and registered to the nodes. Cannot be updated.\nThe name should be a valid Kubernetes extended resource name.\n"},"resourceMapping":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping between AWS instanceType or * as default and its value for the given extended resource.\n"}},"required":["name","resourceMapping"],"inputProperties":{"name":{"type":"string","description":"The extended resource name as should be requested by your pods and registered to the nodes. Cannot be updated.\nThe name should be a valid Kubernetes extended resource name.\n"},"resourceMapping":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping between AWS instanceType or * as default and its value for the given extended resource.\n"}},"requiredInputs":["resourceMapping"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanExtendedResourceDefinition resources.\n","properties":{"name":{"type":"string","description":"The extended resource name as should be requested by your pods and registered to the nodes. Cannot be updated.\nThe name should be a valid Kubernetes extended resource name.\n"},"resourceMapping":{"type":"object","additionalProperties":{"type":"string"},"description":"A mapping between AWS instanceType or * as default and its value for the given extended resource.\n"}},"type":"object"}},"spotinst:aws/oceanLaunchSpec:OceanLaunchSpec":{"description":"Manages a Spotinst Ocean AWS [Virtual Node Group](https://docs.spot.io/ocean/features/launch-specifications) resource.\n\n## Import\n\nLaunch_Specs can be imported using the Launch_Spec `id`, e.g.,\n\nhcl\n\n```sh\n$ pulumi import spotinst:aws/oceanLaunchSpec:OceanLaunchSpec nameOfTheResource ols-1a2b576\n```\n\n","properties":{"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"autoscaleDowns":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleDown:OceanLaunchSpecAutoscaleDown"},"description":"Auto Scaling scale down operations.\n"},"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per Virtual Node Group. Provide a list of headrooms object.\n"},"autoscaleHeadroomsAutomatics":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic"},"description":"Set automatic headroom per launch spec.\n"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"createOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions"},"deleteOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecDeleteOptions:OceanLaunchSpecDeleteOptions"},"elasticIpPools":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecElasticIpPool:OceanLaunchSpecElasticIpPool"},"description":"Assign an Elastic IP to the instances spun by the Virtual Node Group. Can be null.\n"},"ephemeralStorages":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecEphemeralStorage:OceanLaunchSpecEphemeralStorage"}},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecImage:OceanLaunchSpecImage"},"description":"Array of objects (Image object, containing the id of the image used to launch instances.) You can configure VNG with either the imageId or images objects, but not both simultaneously.\nFor each architecture type (amd64, arm64) only one AMI is allowed. Valid values: null, or an array with at least one element.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceStorePolicy":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceStorePolicy:OceanLaunchSpecInstanceStorePolicy","description":"Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types allowed to be provisioned for pods pending under the specified launch specification. The list overrides the list defined for the cluster.\n"},"instanceTypesFilters":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceTypesFilters:OceanLaunchSpecInstanceTypesFilters","description":"The instance types that match with all filters compose the Virtual Node Group's instanceTypes parameter.\nThe architectures that come from the Virtual Node Group's images will be taken into account when using this parameter. Cannot be configured together with Virtual Node Group's instanceTypes and with the Cluster's whitelist/blacklist/filters.\n"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecLabel:OceanLaunchSpecLabel"},"description":"Optionally adds labels to instances launched in the cluster.\n"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecLoadBalancer:OceanLaunchSpecLoadBalancer"},"description":"Array of load balancer objects to add to VNG\n"},"name":{"type":"string","description":"The name of the Virtual Node Group.\n"},"oceanId":{"type":"string","description":"The ID of the Ocean cluster.\n"},"preferredOdTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"preferredSpotTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"reservedEnis":{"type":"integer","description":"Specifies the count of ENIs to reserve per instance type for scaling purposes.\n"},"resourceLimits":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecResourceLimit:OceanLaunchSpecResourceLimit"}},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"rootVolumeSize":{"type":"integer","description":"Set root volume size (in GB).\n"},"schedulingShutdownHours":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingShutdownHours:OceanLaunchSpecSchedulingShutdownHours","description":"Used to specify times that the nodes in the virtual node group will be taken down.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"Optionally adds security group IDs.\n"},"startupTaints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStartupTaint:OceanLaunchSpecStartupTaint"},"description":"Temporary taints applied to a node during its initialization phase. For a startup taint to work, it must also be set as a regular taint in the userData for the cluster.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A list of subnet IDs.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecTag:OceanLaunchSpecTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecTaint:OceanLaunchSpecTaint"},"description":"Optionally adds labels to instances launched in the cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"}},"required":["name","oceanId"],"inputProperties":{"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"autoscaleDowns":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleDown:OceanLaunchSpecAutoscaleDown"},"description":"Auto Scaling scale down operations.\n"},"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per Virtual Node Group. Provide a list of headrooms object.\n"},"autoscaleHeadroomsAutomatics":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic"},"description":"Set automatic headroom per launch spec.\n"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"createOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions"},"deleteOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecDeleteOptions:OceanLaunchSpecDeleteOptions"},"elasticIpPools":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecElasticIpPool:OceanLaunchSpecElasticIpPool"},"description":"Assign an Elastic IP to the instances spun by the Virtual Node Group. Can be null.\n"},"ephemeralStorages":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecEphemeralStorage:OceanLaunchSpecEphemeralStorage"}},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecImage:OceanLaunchSpecImage"},"description":"Array of objects (Image object, containing the id of the image used to launch instances.) You can configure VNG with either the imageId or images objects, but not both simultaneously.\nFor each architecture type (amd64, arm64) only one AMI is allowed. Valid values: null, or an array with at least one element.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceStorePolicy":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceStorePolicy:OceanLaunchSpecInstanceStorePolicy","description":"Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types allowed to be provisioned for pods pending under the specified launch specification. The list overrides the list defined for the cluster.\n"},"instanceTypesFilters":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceTypesFilters:OceanLaunchSpecInstanceTypesFilters","description":"The instance types that match with all filters compose the Virtual Node Group's instanceTypes parameter.\nThe architectures that come from the Virtual Node Group's images will be taken into account when using this parameter. Cannot be configured together with Virtual Node Group's instanceTypes and with the Cluster's whitelist/blacklist/filters.\n"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecLabel:OceanLaunchSpecLabel"},"description":"Optionally adds labels to instances launched in the cluster.\n"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecLoadBalancer:OceanLaunchSpecLoadBalancer"},"description":"Array of load balancer objects to add to VNG\n"},"name":{"type":"string","description":"The name of the Virtual Node Group.\n"},"oceanId":{"type":"string","description":"The ID of the Ocean cluster.\n","willReplaceOnChanges":true},"preferredOdTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"preferredSpotTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"reservedEnis":{"type":"integer","description":"Specifies the count of ENIs to reserve per instance type for scaling purposes.\n"},"resourceLimits":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecResourceLimit:OceanLaunchSpecResourceLimit"}},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"rootVolumeSize":{"type":"integer","description":"Set root volume size (in GB).\n"},"schedulingShutdownHours":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingShutdownHours:OceanLaunchSpecSchedulingShutdownHours","description":"Used to specify times that the nodes in the virtual node group will be taken down.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"Optionally adds security group IDs.\n"},"startupTaints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStartupTaint:OceanLaunchSpecStartupTaint"},"description":"Temporary taints applied to a node during its initialization phase. For a startup taint to work, it must also be set as a regular taint in the userData for the cluster.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A list of subnet IDs.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecTag:OceanLaunchSpecTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecTaint:OceanLaunchSpecTaint"},"description":"Optionally adds labels to instances launched in the cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"}},"requiredInputs":["oceanId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanLaunchSpec resources.\n","properties":{"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"autoscaleDowns":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleDown:OceanLaunchSpecAutoscaleDown"},"description":"Auto Scaling scale down operations.\n"},"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per Virtual Node Group. Provide a list of headrooms object.\n"},"autoscaleHeadroomsAutomatics":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic"},"description":"Set automatic headroom per launch spec.\n"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"createOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions"},"deleteOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecDeleteOptions:OceanLaunchSpecDeleteOptions"},"elasticIpPools":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecElasticIpPool:OceanLaunchSpecElasticIpPool"},"description":"Assign an Elastic IP to the instances spun by the Virtual Node Group. Can be null.\n"},"ephemeralStorages":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecEphemeralStorage:OceanLaunchSpecEphemeralStorage"}},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecImage:OceanLaunchSpecImage"},"description":"Array of objects (Image object, containing the id of the image used to launch instances.) You can configure VNG with either the imageId or images objects, but not both simultaneously.\nFor each architecture type (amd64, arm64) only one AMI is allowed. Valid values: null, or an array with at least one element.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceStorePolicy":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceStorePolicy:OceanLaunchSpecInstanceStorePolicy","description":"Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types allowed to be provisioned for pods pending under the specified launch specification. The list overrides the list defined for the cluster.\n"},"instanceTypesFilters":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecInstanceTypesFilters:OceanLaunchSpecInstanceTypesFilters","description":"The instance types that match with all filters compose the Virtual Node Group's instanceTypes parameter.\nThe architectures that come from the Virtual Node Group's images will be taken into account when using this parameter. Cannot be configured together with Virtual Node Group's instanceTypes and with the Cluster's whitelist/blacklist/filters.\n"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecLabel:OceanLaunchSpecLabel"},"description":"Optionally adds labels to instances launched in the cluster.\n"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecLoadBalancer:OceanLaunchSpecLoadBalancer"},"description":"Array of load balancer objects to add to VNG\n"},"name":{"type":"string","description":"The name of the Virtual Node Group.\n"},"oceanId":{"type":"string","description":"The ID of the Ocean cluster.\n","willReplaceOnChanges":true},"preferredOdTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"preferredSpotTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types. Takes the preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"reservedEnis":{"type":"integer","description":"Specifies the count of ENIs to reserve per instance type for scaling purposes.\n"},"resourceLimits":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecResourceLimit:OceanLaunchSpecResourceLimit"}},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"rootVolumeSize":{"type":"integer","description":"Set root volume size (in GB).\n"},"schedulingShutdownHours":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingShutdownHours:OceanLaunchSpecSchedulingShutdownHours","description":"Used to specify times that the nodes in the virtual node group will be taken down.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"Optionally adds security group IDs.\n"},"startupTaints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStartupTaint:OceanLaunchSpecStartupTaint"},"description":"Temporary taints applied to a node during its initialization phase. For a startup taint to work, it must also be set as a regular taint in the userData for the cluster.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A list of subnet IDs.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecTag:OceanLaunchSpecTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecTaint:OceanLaunchSpecTaint"},"description":"Optionally adds labels to instances launched in the cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:aws/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"}},"type":"object"}},"spotinst:aws/suspension:Suspension":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create a suspension for Elastigroup\nconst resourceName = new spotinst.aws.Suspension(\"resource_name\", {\n    groupId: \"sig-12345678\",\n    suspensions: [\n        {\n            name: \"OUT_OF_STRATEGY\",\n        },\n        {\n            name: \"REVERT_PREFERRED\",\n        },\n        {\n            name: \"PREVENTIVE_REPLACEMENT\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create a suspension for Elastigroup\nresource_name = spotinst.aws.Suspension(\"resource_name\",\n    group_id=\"sig-12345678\",\n    suspensions=[\n        {\n            \"name\": \"OUT_OF_STRATEGY\",\n        },\n        {\n            \"name\": \"REVERT_PREFERRED\",\n        },\n        {\n            \"name\": \"PREVENTIVE_REPLACEMENT\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a suspension for Elastigroup\n    var resourceName = new SpotInst.Aws.Suspension(\"resource_name\", new()\n    {\n        GroupId = \"sig-12345678\",\n        Suspensions = new[]\n        {\n            new SpotInst.Aws.Inputs.SuspensionSuspensionArgs\n            {\n                Name = \"OUT_OF_STRATEGY\",\n            },\n            new SpotInst.Aws.Inputs.SuspensionSuspensionArgs\n            {\n                Name = \"REVERT_PREFERRED\",\n            },\n            new SpotInst.Aws.Inputs.SuspensionSuspensionArgs\n            {\n                Name = \"PREVENTIVE_REPLACEMENT\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a suspension for Elastigroup\n\t\t_, err := aws.NewSuspension(ctx, \"resource_name\", \u0026aws.SuspensionArgs{\n\t\t\tGroupId: pulumi.String(\"sig-12345678\"),\n\t\t\tSuspensions: aws.SuspensionSuspensionArray{\n\t\t\t\t\u0026aws.SuspensionSuspensionArgs{\n\t\t\t\t\tName: pulumi.String(\"OUT_OF_STRATEGY\"),\n\t\t\t\t},\n\t\t\t\t\u0026aws.SuspensionSuspensionArgs{\n\t\t\t\t\tName: pulumi.String(\"REVERT_PREFERRED\"),\n\t\t\t\t},\n\t\t\t\t\u0026aws.SuspensionSuspensionArgs{\n\t\t\t\t\tName: pulumi.String(\"PREVENTIVE_REPLACEMENT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.aws.Suspension;\nimport com.pulumi.spotinst.aws.SuspensionArgs;\nimport com.pulumi.spotinst.aws.inputs.SuspensionSuspensionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a suspension for Elastigroup\n        var resourceName = new Suspension(\"resourceName\", SuspensionArgs.builder()\n            .groupId(\"sig-12345678\")\n            .suspensions(            \n                SuspensionSuspensionArgs.builder()\n                    .name(\"OUT_OF_STRATEGY\")\n                    .build(),\n                SuspensionSuspensionArgs.builder()\n                    .name(\"REVERT_PREFERRED\")\n                    .build(),\n                SuspensionSuspensionArgs.builder()\n                    .name(\"PREVENTIVE_REPLACEMENT\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a suspension for Elastigroup\n  resourceName:\n    type: spotinst:aws:Suspension\n    name: resource_name\n    properties:\n      groupId: sig-12345678\n      suspensions:\n        - name: OUT_OF_STRATEGY\n        - name: REVERT_PREFERRED\n        - name: PREVENTIVE_REPLACEMENT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"groupId":{"type":"string","description":"Elastigroup ID to apply the suspensions on.\n"},"suspensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/SuspensionSuspension:SuspensionSuspension"},"description":"block of single process to suspend.\n"}},"required":["groupId","suspensions"],"inputProperties":{"groupId":{"type":"string","description":"Elastigroup ID to apply the suspensions on.\n","willReplaceOnChanges":true},"suspensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/SuspensionSuspension:SuspensionSuspension"},"description":"block of single process to suspend.\n"}},"requiredInputs":["groupId","suspensions"],"stateInputs":{"description":"Input properties used for looking up and filtering Suspension resources.\n","properties":{"groupId":{"type":"string","description":"Elastigroup ID to apply the suspensions on.\n","willReplaceOnChanges":true},"suspensions":{"type":"array","items":{"$ref":"#/types/spotinst:aws/SuspensionSuspension:SuspensionSuspension"},"description":"block of single process to suspend.\n"}},"type":"object"}},"spotinst:azure/oceanNp:OceanNp":{"properties":{"aksClusterName":{"type":"string"},"aksInfrastructureResourceGroupName":{"type":"string"},"aksRegion":{"type":"string"},"aksResourceGroupName":{"type":"string"},"autoscaler":{"$ref":"#/types/spotinst:azure/OceanNpAutoscaler:OceanNpAutoscaler","description":"The Ocean Kubernetes Autoscaler object.\n"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n"},"controllerClusterId":{"type":"string","description":"Enter a unique Ocean cluster identifier. Cannot be updated. This needs to match with string that was used to install the controller in the cluster, typically clusterName + 8 digit string.\n"},"enableNodePublicIp":{"type":"boolean","description":"Enable node public IP.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no spot VM markets are available, enable Ocean to launch regular (pay-as-you-go) nodes instead.\n"},"filters":{"$ref":"#/types/spotinst:azure/OceanNpFilters:OceanNpFilters","description":"Filters for the VM sizes that can be launched from the virtual node group.\n"},"headrooms":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpHeadroom:OceanNpHeadroom"},"description":"Specify the custom headroom per VNG. Provide a list of headroom objects.\n"},"health":{"$ref":"#/types/spotinst:azure/OceanNpHealth:OceanNpHealth","description":"The Ocean AKS Health object.\n"},"kubernetesVersion":{"type":"string","description":"The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"An array of labels to add to the virtual node group. Only custom user labels are allowed, and not [Kubernetes well-known labels](https://kubernetes.io/docs/reference/labels-annotations-taints/) or [ Azure AKS labels](https://learn.microsoft.com/en-us/azure/aks/use-labels) or [Spot labels](https://docs.spot.io/ocean/features/labels-and-taints?id=spot-labels).\n"},"linuxOsConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpLinuxOsConfig:OceanNpLinuxOsConfig"},"description":"Custom Linux OS configuration.\n"},"logging":{"$ref":"#/types/spotinst:azure/OceanNpLogging:OceanNpLogging","description":"The Ocean AKS Logging Object.\n"},"maxCount":{"type":"integer","description":"Maximum node count limit.\n"},"maxPodsPerNode":{"type":"integer","description":"The maximum number of pods per node in the node pools.\n"},"minCount":{"type":"integer","description":"Minimum node count limit.\n"},"name":{"type":"string","description":"Add a name for the Ocean cluster.\n"},"osDiskSizeGb":{"type":"integer","description":"The size of the OS disk in GB.\n"},"osDiskType":{"type":"string","description":"The type of the OS disk.\n"},"osSku":{"type":"string","description":"The OS SKU of the OS type. Must correlate with the os type.\n"},"osType":{"type":"string","description":"The OS type of the OS disk. Can't be modified once set.\n"},"podSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n"},"scheduling":{"$ref":"#/types/spotinst:azure/OceanNpScheduling:OceanNpScheduling"},"spotPercentage":{"type":"integer","description":"Percentage of spot VMs to maintain.\n"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpTaint:OceanNpTaint"},"description":"Add taints to a virtual node group. Only custom user taints are allowed, and not [Kubernetes well-known taints](https://kubernetes.io/docs/reference/labels-annotations-taints/) or Azure AKS [ScaleSetPrioirty (Spot VM) taint](https://learn.microsoft.com/en-us/azure/aks/spot-node-pool). For all Spot VMs, AKS injects a taint kubernetes.azure.com/scalesetpriority=spot:NoSchedule, to ensure that only workloads that can handle interruptions are scheduled on Spot nodes. To [schedule a pod to run on Spot node](https://learn.microsoft.com/en-us/azure/aks/spot-node-pool#schedule-a-pod-to-run-on-the-spot-node), add a toleration but dont include the nodeAffinity (not supported for Spot Ocean), this will prevent the pod from being scheduled using Spot Ocean.\n"},"updatePolicy":{"$ref":"#/types/spotinst:azure/OceanNpUpdatePolicy:OceanNpUpdatePolicy"},"vnetSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n"},"vngTemplateScheduling":{"$ref":"#/types/spotinst:azure/OceanNpVngTemplateScheduling:OceanNpVngTemplateScheduling","description":"An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n"}},"required":["aksClusterName","aksInfrastructureResourceGroupName","aksRegion","aksResourceGroupName","availabilityZones","controllerClusterId","name"],"inputProperties":{"aksClusterName":{"type":"string"},"aksInfrastructureResourceGroupName":{"type":"string"},"aksRegion":{"type":"string"},"aksResourceGroupName":{"type":"string"},"autoscaler":{"$ref":"#/types/spotinst:azure/OceanNpAutoscaler:OceanNpAutoscaler","description":"The Ocean Kubernetes Autoscaler object.\n"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n"},"controllerClusterId":{"type":"string","description":"Enter a unique Ocean cluster identifier. Cannot be updated. This needs to match with string that was used to install the controller in the cluster, typically clusterName + 8 digit string.\n"},"enableNodePublicIp":{"type":"boolean","description":"Enable node public IP.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no spot VM markets are available, enable Ocean to launch regular (pay-as-you-go) nodes instead.\n"},"filters":{"$ref":"#/types/spotinst:azure/OceanNpFilters:OceanNpFilters","description":"Filters for the VM sizes that can be launched from the virtual node group.\n"},"headrooms":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpHeadroom:OceanNpHeadroom"},"description":"Specify the custom headroom per VNG. Provide a list of headroom objects.\n"},"health":{"$ref":"#/types/spotinst:azure/OceanNpHealth:OceanNpHealth","description":"The Ocean AKS Health object.\n"},"kubernetesVersion":{"type":"string","description":"The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"An array of labels to add to the virtual node group. Only custom user labels are allowed, and not [Kubernetes well-known labels](https://kubernetes.io/docs/reference/labels-annotations-taints/) or [ Azure AKS labels](https://learn.microsoft.com/en-us/azure/aks/use-labels) or [Spot labels](https://docs.spot.io/ocean/features/labels-and-taints?id=spot-labels).\n"},"linuxOsConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpLinuxOsConfig:OceanNpLinuxOsConfig"},"description":"Custom Linux OS configuration.\n"},"logging":{"$ref":"#/types/spotinst:azure/OceanNpLogging:OceanNpLogging","description":"The Ocean AKS Logging Object.\n"},"maxCount":{"type":"integer","description":"Maximum node count limit.\n"},"maxPodsPerNode":{"type":"integer","description":"The maximum number of pods per node in the node pools.\n"},"minCount":{"type":"integer","description":"Minimum node count limit.\n"},"name":{"type":"string","description":"Add a name for the Ocean cluster.\n"},"osDiskSizeGb":{"type":"integer","description":"The size of the OS disk in GB.\n"},"osDiskType":{"type":"string","description":"The type of the OS disk.\n"},"osSku":{"type":"string","description":"The OS SKU of the OS type. Must correlate with the os type.\n"},"osType":{"type":"string","description":"The OS type of the OS disk. Can't be modified once set.\n"},"podSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n"},"scheduling":{"$ref":"#/types/spotinst:azure/OceanNpScheduling:OceanNpScheduling"},"spotPercentage":{"type":"integer","description":"Percentage of spot VMs to maintain.\n"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpTaint:OceanNpTaint"},"description":"Add taints to a virtual node group. Only custom user taints are allowed, and not [Kubernetes well-known taints](https://kubernetes.io/docs/reference/labels-annotations-taints/) or Azure AKS [ScaleSetPrioirty (Spot VM) taint](https://learn.microsoft.com/en-us/azure/aks/spot-node-pool). For all Spot VMs, AKS injects a taint kubernetes.azure.com/scalesetpriority=spot:NoSchedule, to ensure that only workloads that can handle interruptions are scheduled on Spot nodes. To [schedule a pod to run on Spot node](https://learn.microsoft.com/en-us/azure/aks/spot-node-pool#schedule-a-pod-to-run-on-the-spot-node), add a toleration but dont include the nodeAffinity (not supported for Spot Ocean), this will prevent the pod from being scheduled using Spot Ocean.\n"},"updatePolicy":{"$ref":"#/types/spotinst:azure/OceanNpUpdatePolicy:OceanNpUpdatePolicy"},"vnetSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n"},"vngTemplateScheduling":{"$ref":"#/types/spotinst:azure/OceanNpVngTemplateScheduling:OceanNpVngTemplateScheduling","description":"An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n"}},"requiredInputs":["aksClusterName","aksInfrastructureResourceGroupName","aksRegion","aksResourceGroupName","availabilityZones","controllerClusterId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanNp resources.\n","properties":{"aksClusterName":{"type":"string"},"aksInfrastructureResourceGroupName":{"type":"string"},"aksRegion":{"type":"string"},"aksResourceGroupName":{"type":"string"},"autoscaler":{"$ref":"#/types/spotinst:azure/OceanNpAutoscaler:OceanNpAutoscaler","description":"The Ocean Kubernetes Autoscaler object.\n"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n"},"controllerClusterId":{"type":"string","description":"Enter a unique Ocean cluster identifier. Cannot be updated. This needs to match with string that was used to install the controller in the cluster, typically clusterName + 8 digit string.\n"},"enableNodePublicIp":{"type":"boolean","description":"Enable node public IP.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no spot VM markets are available, enable Ocean to launch regular (pay-as-you-go) nodes instead.\n"},"filters":{"$ref":"#/types/spotinst:azure/OceanNpFilters:OceanNpFilters","description":"Filters for the VM sizes that can be launched from the virtual node group.\n"},"headrooms":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpHeadroom:OceanNpHeadroom"},"description":"Specify the custom headroom per VNG. Provide a list of headroom objects.\n"},"health":{"$ref":"#/types/spotinst:azure/OceanNpHealth:OceanNpHealth","description":"The Ocean AKS Health object.\n"},"kubernetesVersion":{"type":"string","description":"The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"An array of labels to add to the virtual node group. Only custom user labels are allowed, and not [Kubernetes well-known labels](https://kubernetes.io/docs/reference/labels-annotations-taints/) or [ Azure AKS labels](https://learn.microsoft.com/en-us/azure/aks/use-labels) or [Spot labels](https://docs.spot.io/ocean/features/labels-and-taints?id=spot-labels).\n"},"linuxOsConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpLinuxOsConfig:OceanNpLinuxOsConfig"},"description":"Custom Linux OS configuration.\n"},"logging":{"$ref":"#/types/spotinst:azure/OceanNpLogging:OceanNpLogging","description":"The Ocean AKS Logging Object.\n"},"maxCount":{"type":"integer","description":"Maximum node count limit.\n"},"maxPodsPerNode":{"type":"integer","description":"The maximum number of pods per node in the node pools.\n"},"minCount":{"type":"integer","description":"Minimum node count limit.\n"},"name":{"type":"string","description":"Add a name for the Ocean cluster.\n"},"osDiskSizeGb":{"type":"integer","description":"The size of the OS disk in GB.\n"},"osDiskType":{"type":"string","description":"The type of the OS disk.\n"},"osSku":{"type":"string","description":"The OS SKU of the OS type. Must correlate with the os type.\n"},"osType":{"type":"string","description":"The OS type of the OS disk. Can't be modified once set.\n"},"podSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n"},"scheduling":{"$ref":"#/types/spotinst:azure/OceanNpScheduling:OceanNpScheduling"},"spotPercentage":{"type":"integer","description":"Percentage of spot VMs to maintain.\n"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpTaint:OceanNpTaint"},"description":"Add taints to a virtual node group. Only custom user taints are allowed, and not [Kubernetes well-known taints](https://kubernetes.io/docs/reference/labels-annotations-taints/) or Azure AKS [ScaleSetPrioirty (Spot VM) taint](https://learn.microsoft.com/en-us/azure/aks/spot-node-pool). For all Spot VMs, AKS injects a taint kubernetes.azure.com/scalesetpriority=spot:NoSchedule, to ensure that only workloads that can handle interruptions are scheduled on Spot nodes. To [schedule a pod to run on Spot node](https://learn.microsoft.com/en-us/azure/aks/spot-node-pool#schedule-a-pod-to-run-on-the-spot-node), add a toleration but dont include the nodeAffinity (not supported for Spot Ocean), this will prevent the pod from being scheduled using Spot Ocean.\n"},"updatePolicy":{"$ref":"#/types/spotinst:azure/OceanNpUpdatePolicy:OceanNpUpdatePolicy"},"vnetSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n"},"vngTemplateScheduling":{"$ref":"#/types/spotinst:azure/OceanNpVngTemplateScheduling:OceanNpVngTemplateScheduling","description":"An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n"}},"type":"object"}},"spotinst:azure/oceanNpVirtualNodeGroup:OceanNpVirtualNodeGroup":{"description":"Manages a Spotinst Ocean AKS Virtual Node Groups resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.azure.OceanNpVirtualNodeGroup(\"example\", {\n    name: \"testVng\",\n    oceanId: \"o-134abcd\",\n    headrooms: [{\n        cpuPerUnit: 1024,\n        memoryPerUnit: 512,\n        gpuPerUnit: 0,\n        numOfUnits: 2,\n    }],\n    availabilityZones: [\n        \"1\",\n        \"2\",\n        \"3\",\n    ],\n    labels: {\n        key: \"env\",\n        value: \"test\",\n    },\n    minCount: 1,\n    maxCount: 100,\n    maxPodsPerNode: 30,\n    enableNodePublicIp: true,\n    osDiskSizeGb: 30,\n    osDiskType: \"Managed\",\n    osType: \"Linux\",\n    osSku: \"Ubuntu\",\n    kubernetesVersion: \"1.26\",\n    podSubnetIds: [\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\"],\n    vnetSubnetIds: [\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\"],\n    linuxOsConfigs: [{\n        sysctls: [{\n            vmMaxMapCount: 79550,\n        }],\n    }],\n    spotPercentage: 50,\n    fallbackToOndemand: true,\n    taints: [{\n        key: \"taintKey\",\n        value: \"taintValue\",\n        effect: \"NoSchedule\",\n    }],\n    tags: {\n        tagKey: \"env\",\n        tagValue: \"staging\",\n    },\n    filters: {\n        minVcpu: 2,\n        maxVcpu: 16,\n        minMemoryGib: 8,\n        maxMemoryGib: 128,\n        architectures: [\n            \"x86_64\",\n            \"arm64\",\n        ],\n        series: [\n            \"D v3\",\n            \"Dds_v4\",\n            \"Dsv2\",\n        ],\n        excludeSeries: [\n            \"Av2\",\n            \"A\",\n            \"Bs\",\n            \"D\",\n            \"E\",\n        ],\n        acceleratedNetworking: \"Enabled\",\n        diskPerformance: \"Premium\",\n        minGpu: 1,\n        maxGpu: 2,\n        minNics: 1,\n        vmTypes: [\n            \"generalPurpose\",\n            \"GPU\",\n        ],\n        minDisk: 1,\n        gpuTypes: [\"nvidia-tesla-t4\"],\n    },\n    scheduling: {\n        shutdownHours: {\n            isEnabled: true,\n            timeWindows: [\n                \"Fri:15:30-Sat:20:30\",\n                \"Sun:08:30-Mon:08:30\",\n            ],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.azure.OceanNpVirtualNodeGroup(\"example\",\n    name=\"testVng\",\n    ocean_id=\"o-134abcd\",\n    headrooms=[{\n        \"cpu_per_unit\": 1024,\n        \"memory_per_unit\": 512,\n        \"gpu_per_unit\": 0,\n        \"num_of_units\": 2,\n    }],\n    availability_zones=[\n        \"1\",\n        \"2\",\n        \"3\",\n    ],\n    labels={\n        \"key\": \"env\",\n        \"value\": \"test\",\n    },\n    min_count=1,\n    max_count=100,\n    max_pods_per_node=30,\n    enable_node_public_ip=True,\n    os_disk_size_gb=30,\n    os_disk_type=\"Managed\",\n    os_type=\"Linux\",\n    os_sku=\"Ubuntu\",\n    kubernetes_version=\"1.26\",\n    pod_subnet_ids=[\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\"],\n    vnet_subnet_ids=[\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\"],\n    linux_os_configs=[{\n        \"sysctls\": [{\n            \"vm_max_map_count\": 79550,\n        }],\n    }],\n    spot_percentage=50,\n    fallback_to_ondemand=True,\n    taints=[{\n        \"key\": \"taintKey\",\n        \"value\": \"taintValue\",\n        \"effect\": \"NoSchedule\",\n    }],\n    tags={\n        \"tagKey\": \"env\",\n        \"tagValue\": \"staging\",\n    },\n    filters={\n        \"min_vcpu\": 2,\n        \"max_vcpu\": 16,\n        \"min_memory_gib\": 8,\n        \"max_memory_gib\": 128,\n        \"architectures\": [\n            \"x86_64\",\n            \"arm64\",\n        ],\n        \"series\": [\n            \"D v3\",\n            \"Dds_v4\",\n            \"Dsv2\",\n        ],\n        \"exclude_series\": [\n            \"Av2\",\n            \"A\",\n            \"Bs\",\n            \"D\",\n            \"E\",\n        ],\n        \"accelerated_networking\": \"Enabled\",\n        \"disk_performance\": \"Premium\",\n        \"min_gpu\": 1,\n        \"max_gpu\": 2,\n        \"min_nics\": 1,\n        \"vm_types\": [\n            \"generalPurpose\",\n            \"GPU\",\n        ],\n        \"min_disk\": 1,\n        \"gpu_types\": [\"nvidia-tesla-t4\"],\n    },\n    scheduling={\n        \"shutdown_hours\": {\n            \"is_enabled\": True,\n            \"time_windows\": [\n                \"Fri:15:30-Sat:20:30\",\n                \"Sun:08:30-Mon:08:30\",\n            ],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Azure.OceanNpVirtualNodeGroup(\"example\", new()\n    {\n        Name = \"testVng\",\n        OceanId = \"o-134abcd\",\n        Headrooms = new[]\n        {\n            new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupHeadroomArgs\n            {\n                CpuPerUnit = 1024,\n                MemoryPerUnit = 512,\n                GpuPerUnit = 0,\n                NumOfUnits = 2,\n            },\n        },\n        AvailabilityZones = new[]\n        {\n            \"1\",\n            \"2\",\n            \"3\",\n        },\n        Labels = \n        {\n            { \"key\", \"env\" },\n            { \"value\", \"test\" },\n        },\n        MinCount = 1,\n        MaxCount = 100,\n        MaxPodsPerNode = 30,\n        EnableNodePublicIp = true,\n        OsDiskSizeGb = 30,\n        OsDiskType = \"Managed\",\n        OsType = \"Linux\",\n        OsSku = \"Ubuntu\",\n        KubernetesVersion = \"1.26\",\n        PodSubnetIds = new[]\n        {\n            \"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\",\n        },\n        VnetSubnetIds = new[]\n        {\n            \"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\",\n        },\n        LinuxOsConfigs = new[]\n        {\n            new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupLinuxOsConfigArgs\n            {\n                Sysctls = new[]\n                {\n                    new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupLinuxOsConfigSysctlArgs\n                    {\n                        VmMaxMapCount = 79550,\n                    },\n                },\n            },\n        },\n        SpotPercentage = 50,\n        FallbackToOndemand = true,\n        Taints = new[]\n        {\n            new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupTaintArgs\n            {\n                Key = \"taintKey\",\n                Value = \"taintValue\",\n                Effect = \"NoSchedule\",\n            },\n        },\n        Tags = \n        {\n            { \"tagKey\", \"env\" },\n            { \"tagValue\", \"staging\" },\n        },\n        Filters = new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupFiltersArgs\n        {\n            MinVcpu = 2,\n            MaxVcpu = 16,\n            MinMemoryGib = 8,\n            MaxMemoryGib = 128,\n            Architectures = new[]\n            {\n                \"x86_64\",\n                \"arm64\",\n            },\n            Series = new[]\n            {\n                \"D v3\",\n                \"Dds_v4\",\n                \"Dsv2\",\n            },\n            ExcludeSeries = new[]\n            {\n                \"Av2\",\n                \"A\",\n                \"Bs\",\n                \"D\",\n                \"E\",\n            },\n            AcceleratedNetworking = \"Enabled\",\n            DiskPerformance = \"Premium\",\n            MinGpu = 1,\n            MaxGpu = 2,\n            MinNics = 1,\n            VmTypes = new[]\n            {\n                \"generalPurpose\",\n                \"GPU\",\n            },\n            MinDisk = 1,\n            GpuTypes = new[]\n            {\n                \"nvidia-tesla-t4\",\n            },\n        },\n        Scheduling = new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupSchedulingArgs\n        {\n            ShutdownHours = new SpotInst.Azure.Inputs.OceanNpVirtualNodeGroupSchedulingShutdownHoursArgs\n            {\n                IsEnabled = true,\n                TimeWindows = new[]\n                {\n                    \"Fri:15:30-Sat:20:30\",\n                    \"Sun:08:30-Mon:08:30\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/azure\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azure.NewOceanNpVirtualNodeGroup(ctx, \"example\", \u0026azure.OceanNpVirtualNodeGroupArgs{\n\t\t\tName:    pulumi.String(\"testVng\"),\n\t\t\tOceanId: pulumi.String(\"o-134abcd\"),\n\t\t\tHeadrooms: azure.OceanNpVirtualNodeGroupHeadroomArray{\n\t\t\t\t\u0026azure.OceanNpVirtualNodeGroupHeadroomArgs{\n\t\t\t\t\tCpuPerUnit:    pulumi.Int(1024),\n\t\t\t\t\tMemoryPerUnit: pulumi.Int(512),\n\t\t\t\t\tGpuPerUnit:    pulumi.Int(0),\n\t\t\t\t\tNumOfUnits:    pulumi.Int(2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\tpulumi.String(\"2\"),\n\t\t\t\tpulumi.String(\"3\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\":   pulumi.String(\"env\"),\n\t\t\t\t\"value\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tMinCount:           pulumi.Int(1),\n\t\t\tMaxCount:           pulumi.Int(100),\n\t\t\tMaxPodsPerNode:     pulumi.Int(30),\n\t\t\tEnableNodePublicIp: pulumi.Bool(true),\n\t\t\tOsDiskSizeGb:       pulumi.Int(30),\n\t\t\tOsDiskType:         pulumi.String(\"Managed\"),\n\t\t\tOsType:             pulumi.String(\"Linux\"),\n\t\t\tOsSku:              pulumi.String(\"Ubuntu\"),\n\t\t\tKubernetesVersion:  pulumi.String(\"1.26\"),\n\t\t\tPodSubnetIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\"),\n\t\t\t},\n\t\t\tVnetSubnetIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\"),\n\t\t\t},\n\t\t\tLinuxOsConfigs: azure.OceanNpVirtualNodeGroupLinuxOsConfigArray{\n\t\t\t\t\u0026azure.OceanNpVirtualNodeGroupLinuxOsConfigArgs{\n\t\t\t\t\tSysctls: azure.OceanNpVirtualNodeGroupLinuxOsConfigSysctlArray{\n\t\t\t\t\t\t\u0026azure.OceanNpVirtualNodeGroupLinuxOsConfigSysctlArgs{\n\t\t\t\t\t\t\tVmMaxMapCount: pulumi.Int(79550),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpotPercentage:     pulumi.Int(50),\n\t\t\tFallbackToOndemand: pulumi.Bool(true),\n\t\t\tTaints: azure.OceanNpVirtualNodeGroupTaintArray{\n\t\t\t\t\u0026azure.OceanNpVirtualNodeGroupTaintArgs{\n\t\t\t\t\tKey:    pulumi.String(\"taintKey\"),\n\t\t\t\t\tValue:  pulumi.String(\"taintValue\"),\n\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"tagKey\":   pulumi.String(\"env\"),\n\t\t\t\t\"tagValue\": pulumi.String(\"staging\"),\n\t\t\t},\n\t\t\tFilters: \u0026azure.OceanNpVirtualNodeGroupFiltersArgs{\n\t\t\t\tMinVcpu:      pulumi.Int(2),\n\t\t\t\tMaxVcpu:      pulumi.Int(16),\n\t\t\t\tMinMemoryGib: pulumi.Float64(8),\n\t\t\t\tMaxMemoryGib: pulumi.Float64(128),\n\t\t\t\tArchitectures: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"x86_64\"),\n\t\t\t\t\tpulumi.String(\"arm64\"),\n\t\t\t\t},\n\t\t\t\tSeries: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"D v3\"),\n\t\t\t\t\tpulumi.String(\"Dds_v4\"),\n\t\t\t\t\tpulumi.String(\"Dsv2\"),\n\t\t\t\t},\n\t\t\t\tExcludeSeries: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"Av2\"),\n\t\t\t\t\tpulumi.String(\"A\"),\n\t\t\t\t\tpulumi.String(\"Bs\"),\n\t\t\t\t\tpulumi.String(\"D\"),\n\t\t\t\t\tpulumi.String(\"E\"),\n\t\t\t\t},\n\t\t\t\tAcceleratedNetworking: pulumi.String(\"Enabled\"),\n\t\t\t\tDiskPerformance:       pulumi.String(\"Premium\"),\n\t\t\t\tMinGpu:                pulumi.Float64(1),\n\t\t\t\tMaxGpu:                pulumi.Float64(2),\n\t\t\t\tMinNics:               pulumi.Int(1),\n\t\t\t\tVmTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"generalPurpose\"),\n\t\t\t\t\tpulumi.String(\"GPU\"),\n\t\t\t\t},\n\t\t\t\tMinDisk: pulumi.Int(1),\n\t\t\t\tGpuTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduling: \u0026azure.OceanNpVirtualNodeGroupSchedulingArgs{\n\t\t\t\tShutdownHours: \u0026azure.OceanNpVirtualNodeGroupSchedulingShutdownHoursArgs{\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tTimeWindows: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Fri:15:30-Sat:20:30\"),\n\t\t\t\t\t\tpulumi.String(\"Sun:08:30-Mon:08:30\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.azure.OceanNpVirtualNodeGroup;\nimport com.pulumi.spotinst.azure.OceanNpVirtualNodeGroupArgs;\nimport com.pulumi.spotinst.azure.inputs.OceanNpVirtualNodeGroupHeadroomArgs;\nimport com.pulumi.spotinst.azure.inputs.OceanNpVirtualNodeGroupLinuxOsConfigArgs;\nimport com.pulumi.spotinst.azure.inputs.OceanNpVirtualNodeGroupTaintArgs;\nimport com.pulumi.spotinst.azure.inputs.OceanNpVirtualNodeGroupFiltersArgs;\nimport com.pulumi.spotinst.azure.inputs.OceanNpVirtualNodeGroupSchedulingArgs;\nimport com.pulumi.spotinst.azure.inputs.OceanNpVirtualNodeGroupSchedulingShutdownHoursArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanNpVirtualNodeGroup(\"example\", OceanNpVirtualNodeGroupArgs.builder()\n            .name(\"testVng\")\n            .oceanId(\"o-134abcd\")\n            .headrooms(OceanNpVirtualNodeGroupHeadroomArgs.builder()\n                .cpuPerUnit(1024)\n                .memoryPerUnit(512)\n                .gpuPerUnit(0)\n                .numOfUnits(2)\n                .build())\n            .availabilityZones(            \n                \"1\",\n                \"2\",\n                \"3\")\n            .labels(Map.ofEntries(\n                Map.entry(\"key\", \"env\"),\n                Map.entry(\"value\", \"test\")\n            ))\n            .minCount(1)\n            .maxCount(100)\n            .maxPodsPerNode(30)\n            .enableNodePublicIp(true)\n            .osDiskSizeGb(30)\n            .osDiskType(\"Managed\")\n            .osType(\"Linux\")\n            .osSku(\"Ubuntu\")\n            .kubernetesVersion(\"1.26\")\n            .podSubnetIds(\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\")\n            .vnetSubnetIds(\"/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\")\n            .linuxOsConfigs(OceanNpVirtualNodeGroupLinuxOsConfigArgs.builder()\n                .sysctls(OceanNpVirtualNodeGroupLinuxOsConfigSysctlArgs.builder()\n                    .vmMaxMapCount(79550)\n                    .build())\n                .build())\n            .spotPercentage(50)\n            .fallbackToOndemand(true)\n            .taints(OceanNpVirtualNodeGroupTaintArgs.builder()\n                .key(\"taintKey\")\n                .value(\"taintValue\")\n                .effect(\"NoSchedule\")\n                .build())\n            .tags(Map.ofEntries(\n                Map.entry(\"tagKey\", \"env\"),\n                Map.entry(\"tagValue\", \"staging\")\n            ))\n            .filters(OceanNpVirtualNodeGroupFiltersArgs.builder()\n                .minVcpu(2)\n                .maxVcpu(16)\n                .minMemoryGib(8.0)\n                .maxMemoryGib(128.0)\n                .architectures(                \n                    \"x86_64\",\n                    \"arm64\")\n                .series(                \n                    \"D v3\",\n                    \"Dds_v4\",\n                    \"Dsv2\")\n                .excludeSeries(                \n                    \"Av2\",\n                    \"A\",\n                    \"Bs\",\n                    \"D\",\n                    \"E\")\n                .acceleratedNetworking(\"Enabled\")\n                .diskPerformance(\"Premium\")\n                .minGpu(1.0)\n                .maxGpu(2.0)\n                .minNics(1)\n                .vmTypes(                \n                    \"generalPurpose\",\n                    \"GPU\")\n                .minDisk(1)\n                .gpuTypes(\"nvidia-tesla-t4\")\n                .build())\n            .scheduling(OceanNpVirtualNodeGroupSchedulingArgs.builder()\n                .shutdownHours(OceanNpVirtualNodeGroupSchedulingShutdownHoursArgs.builder()\n                    .isEnabled(true)\n                    .timeWindows(                    \n                        \"Fri:15:30-Sat:20:30\",\n                        \"Sun:08:30-Mon:08:30\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:azure:OceanNpVirtualNodeGroup\n    properties:\n      name: testVng\n      oceanId: o-134abcd\n      headrooms:\n        - cpuPerUnit: 1024\n          memoryPerUnit: 512\n          gpuPerUnit: 0\n          numOfUnits: 2\n      availabilityZones:\n        - '1'\n        - '2'\n        - '3'\n      labels:\n        key: env\n        value: test\n      minCount: 1\n      maxCount: 100 # --- nodePoolProperties --------------------------------------------------\n      maxPodsPerNode: 30\n      enableNodePublicIp: true\n      osDiskSizeGb: 30\n      osDiskType: Managed\n      osType: Linux\n      osSku: Ubuntu\n      kubernetesVersion: '1.26'\n      podSubnetIds:\n        - /subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\n      vnetSubnetIds:\n        - /subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default\n      linuxOsConfigs:\n        - sysctls:\n            - vmMaxMapCount: 79550\n      spotPercentage: 50\n      fallbackToOndemand: true # ---------------------------------------------------------------------------\n      taints:\n        - key: taintKey\n          value: taintValue\n          effect: NoSchedule\n      tags:\n        tagKey: env\n        tagValue: staging\n      filters:\n        minVcpu: 2\n        maxVcpu: 16\n        minMemoryGib: 8\n        maxMemoryGib: 128\n        architectures:\n          - x86_64\n          - arm64\n        series:\n          - D v3\n          - Dds_v4\n          - Dsv2\n        excludeSeries:\n          - Av2\n          - A\n          - Bs\n          - D\n          - E\n        acceleratedNetworking: Enabled\n        diskPerformance: Premium\n        minGpu: 1\n        maxGpu: 2\n        minNics: 1\n        vmTypes:\n          - generalPurpose\n          - GPU\n        minDisk: 1\n        gpuTypes:\n          - nvidia-tesla-t4\n      scheduling:\n        shutdownHours:\n          isEnabled: true\n          timeWindows:\n            - Fri:15:30-Sat:20:30\n            - Sun:08:30-Mon:08:30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\noutput \"vng_id\" {\n  value = spotinst_ocean_aks_np_virtual_node_group.example.id\n}\n```\n","properties":{"availabilityZones":{"type":"array","items":{"type":"string"},"description":"An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n"},"enableNodePublicIp":{"type":"boolean","description":"Enable node public IP.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no spot instance markets are available, enable Ocean to launch on-demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupFilters:OceanNpVirtualNodeGroupFilters","description":"Filters for the VM sizes that can be launched from the virtual node group.\n"},"headrooms":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupHeadroom:OceanNpVirtualNodeGroupHeadroom"},"description":"Specify the custom headroom per VNG. Provide a list of headroom objects.\n"},"kubernetesVersion":{"type":"string","description":"The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"An array of labels to add to the virtual node group.Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\n"},"linuxOsConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupLinuxOsConfig:OceanNpVirtualNodeGroupLinuxOsConfig"},"description":"Custom Linux OS configuration.\n"},"maxCount":{"type":"integer","description":"Maximum node count limit.\n"},"maxPodsPerNode":{"type":"integer","description":"The maximum number of pods per node in the node pools.\n"},"minCount":{"type":"integer","description":"Minimum node count limit.\n"},"name":{"type":"string","description":"Enter a name for the virtual node group.\n"},"oceanId":{"type":"string","description":"The Ocean cluster identifier. Required for Launch Spec creation.\n"},"osDiskSizeGb":{"type":"integer","description":"The size of the OS disk in GB.\n"},"osDiskType":{"type":"string","description":"The type of the OS disk.\n"},"osSku":{"type":"string","description":"The OS SKU of the OS type. Must correlate with the os type.\n"},"osType":{"type":"string","description":"The OS type of the OS disk. Can't be modified once set.\n"},"podSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n"},"scheduling":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupScheduling:OceanNpVirtualNodeGroupScheduling","description":"An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n"},"spotPercentage":{"type":"integer","description":"Percentage of spot VMs to maintain.\n"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupTaint:OceanNpVirtualNodeGroupTaint"},"description":"Add taints to a virtual node group.\n"},"updatePolicy":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupUpdatePolicy:OceanNpVirtualNodeGroupUpdatePolicy"},"vnetSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n"}},"required":["name","oceanId"],"inputProperties":{"availabilityZones":{"type":"array","items":{"type":"string"},"description":"An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n"},"enableNodePublicIp":{"type":"boolean","description":"Enable node public IP.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no spot instance markets are available, enable Ocean to launch on-demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupFilters:OceanNpVirtualNodeGroupFilters","description":"Filters for the VM sizes that can be launched from the virtual node group.\n"},"headrooms":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupHeadroom:OceanNpVirtualNodeGroupHeadroom"},"description":"Specify the custom headroom per VNG. Provide a list of headroom objects.\n"},"kubernetesVersion":{"type":"string","description":"The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"An array of labels to add to the virtual node group.Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\n"},"linuxOsConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupLinuxOsConfig:OceanNpVirtualNodeGroupLinuxOsConfig"},"description":"Custom Linux OS configuration.\n"},"maxCount":{"type":"integer","description":"Maximum node count limit.\n"},"maxPodsPerNode":{"type":"integer","description":"The maximum number of pods per node in the node pools.\n"},"minCount":{"type":"integer","description":"Minimum node count limit.\n"},"name":{"type":"string","description":"Enter a name for the virtual node group.\n"},"oceanId":{"type":"string","description":"The Ocean cluster identifier. Required for Launch Spec creation.\n"},"osDiskSizeGb":{"type":"integer","description":"The size of the OS disk in GB.\n"},"osDiskType":{"type":"string","description":"The type of the OS disk.\n"},"osSku":{"type":"string","description":"The OS SKU of the OS type. Must correlate with the os type.\n"},"osType":{"type":"string","description":"The OS type of the OS disk. Can't be modified once set.\n"},"podSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n"},"scheduling":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupScheduling:OceanNpVirtualNodeGroupScheduling","description":"An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n"},"spotPercentage":{"type":"integer","description":"Percentage of spot VMs to maintain.\n"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupTaint:OceanNpVirtualNodeGroupTaint"},"description":"Add taints to a virtual node group.\n"},"updatePolicy":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupUpdatePolicy:OceanNpVirtualNodeGroupUpdatePolicy"},"vnetSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n"}},"requiredInputs":["oceanId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanNpVirtualNodeGroup resources.\n","properties":{"availabilityZones":{"type":"array","items":{"type":"string"},"description":"An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n"},"enableNodePublicIp":{"type":"boolean","description":"Enable node public IP.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no spot instance markets are available, enable Ocean to launch on-demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupFilters:OceanNpVirtualNodeGroupFilters","description":"Filters for the VM sizes that can be launched from the virtual node group.\n"},"headrooms":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupHeadroom:OceanNpVirtualNodeGroupHeadroom"},"description":"Specify the custom headroom per VNG. Provide a list of headroom objects.\n"},"kubernetesVersion":{"type":"string","description":"The desired Kubernetes version of the launched nodes. In case the value is null, the Kubernetes version of the control plane is used.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"An array of labels to add to the virtual node group.Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\n"},"linuxOsConfigs":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupLinuxOsConfig:OceanNpVirtualNodeGroupLinuxOsConfig"},"description":"Custom Linux OS configuration.\n"},"maxCount":{"type":"integer","description":"Maximum node count limit.\n"},"maxPodsPerNode":{"type":"integer","description":"The maximum number of pods per node in the node pools.\n"},"minCount":{"type":"integer","description":"Minimum node count limit.\n"},"name":{"type":"string","description":"Enter a name for the virtual node group.\n"},"oceanId":{"type":"string","description":"The Ocean cluster identifier. Required for Launch Spec creation.\n"},"osDiskSizeGb":{"type":"integer","description":"The size of the OS disk in GB.\n"},"osDiskType":{"type":"string","description":"The type of the OS disk.\n"},"osSku":{"type":"string","description":"The OS SKU of the OS type. Must correlate with the os type.\n"},"osType":{"type":"string","description":"The OS type of the OS disk. Can't be modified once set.\n"},"podSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n"},"scheduling":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupScheduling:OceanNpVirtualNodeGroupScheduling","description":"An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n"},"spotPercentage":{"type":"integer","description":"Percentage of spot VMs to maintain.\n"},"tags":{"type":"object","additionalProperties":{"type":"string"}},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupTaint:OceanNpVirtualNodeGroupTaint"},"description":"Add taints to a virtual node group.\n"},"updatePolicy":{"$ref":"#/types/spotinst:azure/OceanNpVirtualNodeGroupUpdatePolicy:OceanNpVirtualNodeGroupUpdatePolicy"},"vnetSubnetIds":{"type":"array","items":{"type":"string"},"description":"The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n"}},"type":"object"}},"spotinst:ecs/ocean:Ocean":{"description":"Manages a Spotinst Ocean ECS resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.ecs.Ocean(\"example\", {\n    region: \"us-west-2\",\n    name: \"sample-ecs-cluster\",\n    clusterName: \"sample-ecs-cluster\",\n    minSize: 0,\n    maxSize: 1,\n    desiredCapacity: 0,\n    subnetIds: [\"subnet-12345\"],\n    instanceTypes: [{\n        filters: [{\n            architectures: [\n                \"x86_64\",\n                \"i386\",\n            ],\n            categories: [\n                \"Accelerated_computing\",\n                \"Compute_optimized\",\n            ],\n            diskTypes: [\n                \"EBS\",\n                \"SSD\",\n            ],\n            excludeFamilies: [\"m*\"],\n            excludeMetal: false,\n            hypervisor: [\"xen\"],\n            includeFamilies: [\n                \"c*\",\n                \"t*\",\n            ],\n            isEnaSupported: false,\n            maxGpu: 4,\n            minGpu: 0,\n            maxMemoryGib: 16,\n            maxNetworkPerformance: 20,\n            maxVcpu: 16,\n            minEnis: 2,\n            minMemoryGib: 8,\n            minNetworkPerformance: 2,\n            minVcpu: 2,\n            rootDeviceTypes: [\"ebs\"],\n            virtualizationTypes: [\"hvm\"],\n        }],\n    }],\n    securityGroupIds: [\"sg-12345\"],\n    imageId: \"ami-12345\",\n    iamInstanceProfile: \"iam-profile\",\n    keyPair: \"KeyPair\",\n    userData: \"echo hello world\",\n    associatePublicIpAddress: false,\n    utilizeReservedInstances: false,\n    drainingTimeout: 120,\n    monitoring: true,\n    ebsOptimized: true,\n    useAsTemplateOnly: true,\n    spotPercentage: 100,\n    utilizeCommitments: false,\n    fallbackToOndemand: true,\n    clusterOrientations: [{\n        availabilityVsCost: \"balanced\",\n    }],\n    instanceMetadataOptions: {\n        httpTokens: \"required\",\n        httpPutResponseHopLimit: 10,\n    },\n    blockDeviceMappings: [{\n        deviceName: \"/dev/xvda1\",\n        ebs: {\n            deleteOnTermination: true,\n            encrypted: false,\n            volumeType: \"gp2\",\n            volumeSize: 50,\n            throughput: 500,\n            dynamicVolumeSize: {\n                baseSize: 50,\n                resource: \"CPU\",\n                sizePerResourceUnit: 20,\n            },\n        },\n    }],\n    optimizeImages: {\n        performAt: \"timeWindow\",\n        timeWindows: [\n            \"Sun:02:00-Sun:12:00\",\n            \"Sun:05:00-Sun:16:00\",\n        ],\n        shouldOptimizeEcsAmi: true,\n    },\n    tags: [{\n        key: \"fakeKey\",\n        value: \"fakeValue\",\n    }],\n    logging: {\n        \"export\": {\n            s3s: [{\n                id: \"di-abcd123\",\n            }],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.ecs.Ocean(\"example\",\n    region=\"us-west-2\",\n    name=\"sample-ecs-cluster\",\n    cluster_name=\"sample-ecs-cluster\",\n    min_size=0,\n    max_size=1,\n    desired_capacity=0,\n    subnet_ids=[\"subnet-12345\"],\n    instance_types=[{\n        \"filters\": [{\n            \"architectures\": [\n                \"x86_64\",\n                \"i386\",\n            ],\n            \"categories\": [\n                \"Accelerated_computing\",\n                \"Compute_optimized\",\n            ],\n            \"diskTypes\": [\n                \"EBS\",\n                \"SSD\",\n            ],\n            \"excludeFamilies\": [\"m*\"],\n            \"excludeMetal\": False,\n            \"hypervisor\": [\"xen\"],\n            \"includeFamilies\": [\n                \"c*\",\n                \"t*\",\n            ],\n            \"isEnaSupported\": False,\n            \"maxGpu\": 4,\n            \"minGpu\": 0,\n            \"maxMemoryGib\": 16,\n            \"maxNetworkPerformance\": 20,\n            \"maxVcpu\": 16,\n            \"minEnis\": 2,\n            \"minMemoryGib\": 8,\n            \"minNetworkPerformance\": 2,\n            \"minVcpu\": 2,\n            \"rootDeviceTypes\": [\"ebs\"],\n            \"virtualizationTypes\": [\"hvm\"],\n        }],\n    }],\n    security_group_ids=[\"sg-12345\"],\n    image_id=\"ami-12345\",\n    iam_instance_profile=\"iam-profile\",\n    key_pair=\"KeyPair\",\n    user_data=\"echo hello world\",\n    associate_public_ip_address=False,\n    utilize_reserved_instances=False,\n    draining_timeout=120,\n    monitoring=True,\n    ebs_optimized=True,\n    use_as_template_only=True,\n    spot_percentage=100,\n    utilize_commitments=False,\n    fallback_to_ondemand=True,\n    cluster_orientations=[{\n        \"availability_vs_cost\": \"balanced\",\n    }],\n    instance_metadata_options={\n        \"http_tokens\": \"required\",\n        \"http_put_response_hop_limit\": 10,\n    },\n    block_device_mappings=[{\n        \"device_name\": \"/dev/xvda1\",\n        \"ebs\": {\n            \"delete_on_termination\": True,\n            \"encrypted\": False,\n            \"volume_type\": \"gp2\",\n            \"volume_size\": 50,\n            \"throughput\": 500,\n            \"dynamic_volume_size\": {\n                \"base_size\": 50,\n                \"resource\": \"CPU\",\n                \"size_per_resource_unit\": 20,\n            },\n        },\n    }],\n    optimize_images={\n        \"perform_at\": \"timeWindow\",\n        \"time_windows\": [\n            \"Sun:02:00-Sun:12:00\",\n            \"Sun:05:00-Sun:16:00\",\n        ],\n        \"should_optimize_ecs_ami\": True,\n    },\n    tags=[{\n        \"key\": \"fakeKey\",\n        \"value\": \"fakeValue\",\n    }],\n    logging={\n        \"export\": {\n            \"s3s\": [{\n                \"id\": \"di-abcd123\",\n            }],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Ecs.Ocean(\"example\", new()\n    {\n        Region = \"us-west-2\",\n        Name = \"sample-ecs-cluster\",\n        ClusterName = \"sample-ecs-cluster\",\n        MinSize = 0,\n        MaxSize = 1,\n        DesiredCapacity = 0,\n        SubnetIds = new[]\n        {\n            \"subnet-12345\",\n        },\n        InstanceTypes = new[]\n        {\n            \n            {\n                { \"filters\", new[]\n                {\n                    \n                    {\n                        { \"architectures\", new[]\n                        {\n                            \"x86_64\",\n                            \"i386\",\n                        } },\n                        { \"categories\", new[]\n                        {\n                            \"Accelerated_computing\",\n                            \"Compute_optimized\",\n                        } },\n                        { \"diskTypes\", new[]\n                        {\n                            \"EBS\",\n                            \"SSD\",\n                        } },\n                        { \"excludeFamilies\", new[]\n                        {\n                            \"m*\",\n                        } },\n                        { \"excludeMetal\", false },\n                        { \"hypervisor\", new[]\n                        {\n                            \"xen\",\n                        } },\n                        { \"includeFamilies\", new[]\n                        {\n                            \"c*\",\n                            \"t*\",\n                        } },\n                        { \"isEnaSupported\", false },\n                        { \"maxGpu\", 4 },\n                        { \"minGpu\", 0 },\n                        { \"maxMemoryGib\", 16 },\n                        { \"maxNetworkPerformance\", 20 },\n                        { \"maxVcpu\", 16 },\n                        { \"minEnis\", 2 },\n                        { \"minMemoryGib\", 8 },\n                        { \"minNetworkPerformance\", 2 },\n                        { \"minVcpu\", 2 },\n                        { \"rootDeviceTypes\", new[]\n                        {\n                            \"ebs\",\n                        } },\n                        { \"virtualizationTypes\", new[]\n                        {\n                            \"hvm\",\n                        } },\n                    },\n                } },\n            },\n        },\n        SecurityGroupIds = new[]\n        {\n            \"sg-12345\",\n        },\n        ImageId = \"ami-12345\",\n        IamInstanceProfile = \"iam-profile\",\n        KeyPair = \"KeyPair\",\n        UserData = \"echo hello world\",\n        AssociatePublicIpAddress = false,\n        UtilizeReservedInstances = false,\n        DrainingTimeout = 120,\n        Monitoring = true,\n        EbsOptimized = true,\n        UseAsTemplateOnly = true,\n        SpotPercentage = 100,\n        UtilizeCommitments = false,\n        FallbackToOndemand = true,\n        ClusterOrientations = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanClusterOrientationArgs\n            {\n                AvailabilityVsCost = \"balanced\",\n            },\n        },\n        InstanceMetadataOptions = new SpotInst.Ecs.Inputs.OceanInstanceMetadataOptionsArgs\n        {\n            HttpTokens = \"required\",\n            HttpPutResponseHopLimit = 10,\n        },\n        BlockDeviceMappings = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanBlockDeviceMappingArgs\n            {\n                DeviceName = \"/dev/xvda1\",\n                Ebs = new SpotInst.Ecs.Inputs.OceanBlockDeviceMappingEbsArgs\n                {\n                    DeleteOnTermination = true,\n                    Encrypted = false,\n                    VolumeType = \"gp2\",\n                    VolumeSize = 50,\n                    Throughput = 500,\n                    DynamicVolumeSize = new SpotInst.Ecs.Inputs.OceanBlockDeviceMappingEbsDynamicVolumeSizeArgs\n                    {\n                        BaseSize = 50,\n                        Resource = \"CPU\",\n                        SizePerResourceUnit = 20,\n                    },\n                },\n            },\n        },\n        OptimizeImages = new SpotInst.Ecs.Inputs.OceanOptimizeImagesArgs\n        {\n            PerformAt = \"timeWindow\",\n            TimeWindows = new[]\n            {\n                \"Sun:02:00-Sun:12:00\",\n                \"Sun:05:00-Sun:16:00\",\n            },\n            ShouldOptimizeEcsAmi = true,\n        },\n        Tags = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanTagArgs\n            {\n                Key = \"fakeKey\",\n                Value = \"fakeValue\",\n            },\n        },\n        Logging = new SpotInst.Ecs.Inputs.OceanLoggingArgs\n        {\n            Export = new SpotInst.Ecs.Inputs.OceanLoggingExportArgs\n            {\n                S3s = new[]\n                {\n                    new SpotInst.Ecs.Inputs.OceanLoggingExportS3Args\n                    {\n                        Id = \"di-abcd123\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/ecs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ecs.NewOcean(ctx, \"example\", \u0026ecs.OceanArgs{\n\t\t\tRegion:          pulumi.String(\"us-west-2\"),\n\t\t\tName:            pulumi.String(\"sample-ecs-cluster\"),\n\t\t\tClusterName:     pulumi.String(\"sample-ecs-cluster\"),\n\t\t\tMinSize:         pulumi.Int(0),\n\t\t\tMaxSize:         pulumi.Int(1),\n\t\t\tDesiredCapacity: pulumi.Int(0),\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subnet-12345\"),\n\t\t\t},\n\t\t\tInstanceTypes: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"filters\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"architectures\": []string{\n\t\t\t\t\t\t\t\t\"x86_64\",\n\t\t\t\t\t\t\t\t\"i386\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"categories\": []string{\n\t\t\t\t\t\t\t\t\"Accelerated_computing\",\n\t\t\t\t\t\t\t\t\"Compute_optimized\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"diskTypes\": []string{\n\t\t\t\t\t\t\t\t\"EBS\",\n\t\t\t\t\t\t\t\t\"SSD\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"excludeFamilies\": []string{\n\t\t\t\t\t\t\t\t\"m*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"excludeMetal\": false,\n\t\t\t\t\t\t\t\"hypervisor\": []string{\n\t\t\t\t\t\t\t\t\"xen\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"includeFamilies\": []string{\n\t\t\t\t\t\t\t\t\"c*\",\n\t\t\t\t\t\t\t\t\"t*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"isEnaSupported\":        false,\n\t\t\t\t\t\t\t\"maxGpu\":                4,\n\t\t\t\t\t\t\t\"minGpu\":                0,\n\t\t\t\t\t\t\t\"maxMemoryGib\":          16,\n\t\t\t\t\t\t\t\"maxNetworkPerformance\": 20,\n\t\t\t\t\t\t\t\"maxVcpu\":               16,\n\t\t\t\t\t\t\t\"minEnis\":               2,\n\t\t\t\t\t\t\t\"minMemoryGib\":          8,\n\t\t\t\t\t\t\t\"minNetworkPerformance\": 2,\n\t\t\t\t\t\t\t\"minVcpu\":               2,\n\t\t\t\t\t\t\t\"rootDeviceTypes\": []string{\n\t\t\t\t\t\t\t\t\"ebs\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"virtualizationTypes\": []string{\n\t\t\t\t\t\t\t\t\"hvm\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sg-12345\"),\n\t\t\t},\n\t\t\tImageId:                  pulumi.String(\"ami-12345\"),\n\t\t\tIamInstanceProfile:       pulumi.String(\"iam-profile\"),\n\t\t\tKeyPair:                  pulumi.String(\"KeyPair\"),\n\t\t\tUserData:                 pulumi.String(\"echo hello world\"),\n\t\t\tAssociatePublicIpAddress: pulumi.Bool(false),\n\t\t\tUtilizeReservedInstances: pulumi.Bool(false),\n\t\t\tDrainingTimeout:          pulumi.Int(120),\n\t\t\tMonitoring:               pulumi.Bool(true),\n\t\t\tEbsOptimized:             pulumi.Bool(true),\n\t\t\tUseAsTemplateOnly:        pulumi.Bool(true),\n\t\t\tSpotPercentage:           pulumi.Int(100),\n\t\t\tUtilizeCommitments:       pulumi.Bool(false),\n\t\t\tFallbackToOndemand:       pulumi.Bool(true),\n\t\t\tClusterOrientations: ecs.OceanClusterOrientationArray{\n\t\t\t\t\u0026ecs.OceanClusterOrientationArgs{\n\t\t\t\t\tAvailabilityVsCost: pulumi.String(\"balanced\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceMetadataOptions: \u0026ecs.OceanInstanceMetadataOptionsArgs{\n\t\t\t\tHttpTokens:              pulumi.String(\"required\"),\n\t\t\t\tHttpPutResponseHopLimit: pulumi.Int(10),\n\t\t\t},\n\t\t\tBlockDeviceMappings: ecs.OceanBlockDeviceMappingArray{\n\t\t\t\t\u0026ecs.OceanBlockDeviceMappingArgs{\n\t\t\t\t\tDeviceName: pulumi.String(\"/dev/xvda1\"),\n\t\t\t\t\tEbs: \u0026ecs.OceanBlockDeviceMappingEbsArgs{\n\t\t\t\t\t\tDeleteOnTermination: pulumi.Bool(true),\n\t\t\t\t\t\tEncrypted:           pulumi.Bool(false),\n\t\t\t\t\t\tVolumeType:          pulumi.String(\"gp2\"),\n\t\t\t\t\t\tVolumeSize:          pulumi.Int(50),\n\t\t\t\t\t\tThroughput:          pulumi.Int(500),\n\t\t\t\t\t\tDynamicVolumeSize: \u0026ecs.OceanBlockDeviceMappingEbsDynamicVolumeSizeArgs{\n\t\t\t\t\t\t\tBaseSize:            pulumi.Int(50),\n\t\t\t\t\t\t\tResource:            pulumi.String(\"CPU\"),\n\t\t\t\t\t\t\tSizePerResourceUnit: pulumi.Int(20),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOptimizeImages: \u0026ecs.OceanOptimizeImagesArgs{\n\t\t\t\tPerformAt: pulumi.String(\"timeWindow\"),\n\t\t\t\tTimeWindows: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"Sun:02:00-Sun:12:00\"),\n\t\t\t\t\tpulumi.String(\"Sun:05:00-Sun:16:00\"),\n\t\t\t\t},\n\t\t\t\tShouldOptimizeEcsAmi: pulumi.Bool(true),\n\t\t\t},\n\t\t\tTags: ecs.OceanTagArray{\n\t\t\t\t\u0026ecs.OceanTagArgs{\n\t\t\t\t\tKey:   pulumi.String(\"fakeKey\"),\n\t\t\t\t\tValue: pulumi.String(\"fakeValue\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLogging: \u0026ecs.OceanLoggingArgs{\n\t\t\t\tExport: \u0026ecs.OceanLoggingExportArgs{\n\t\t\t\t\tS3s: ecs.OceanLoggingExportS3Array{\n\t\t\t\t\t\t\u0026ecs.OceanLoggingExportS3Args{\n\t\t\t\t\t\t\tId: pulumi.String(\"di-abcd123\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.ecs.Ocean;\nimport com.pulumi.spotinst.ecs.OceanArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanClusterOrientationArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanInstanceMetadataOptionsArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanBlockDeviceMappingArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanBlockDeviceMappingEbsArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanBlockDeviceMappingEbsDynamicVolumeSizeArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanOptimizeImagesArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanTagArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLoggingArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLoggingExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Ocean(\"example\", OceanArgs.builder()\n            .region(\"us-west-2\")\n            .name(\"sample-ecs-cluster\")\n            .clusterName(\"sample-ecs-cluster\")\n            .minSize(0)\n            .maxSize(1)\n            .desiredCapacity(0)\n            .subnetIds(\"subnet-12345\")\n            .instanceTypes(List.of(Map.of(\"filters\", List.of(Map.ofEntries(\n                Map.entry(\"architectures\", List.of(                \n                    \"x86_64\",\n                    \"i386\")),\n                Map.entry(\"categories\", List.of(                \n                    \"Accelerated_computing\",\n                    \"Compute_optimized\")),\n                Map.entry(\"diskTypes\", List.of(                \n                    \"EBS\",\n                    \"SSD\")),\n                Map.entry(\"excludeFamilies\", List.of(\"m*\")),\n                Map.entry(\"excludeMetal\", false),\n                Map.entry(\"hypervisor\", List.of(\"xen\")),\n                Map.entry(\"includeFamilies\", List.of(                \n                    \"c*\",\n                    \"t*\")),\n                Map.entry(\"isEnaSupported\", false),\n                Map.entry(\"maxGpu\", 4),\n                Map.entry(\"minGpu\", 0),\n                Map.entry(\"maxMemoryGib\", 16),\n                Map.entry(\"maxNetworkPerformance\", 20),\n                Map.entry(\"maxVcpu\", 16),\n                Map.entry(\"minEnis\", 2),\n                Map.entry(\"minMemoryGib\", 8),\n                Map.entry(\"minNetworkPerformance\", 2),\n                Map.entry(\"minVcpu\", 2),\n                Map.entry(\"rootDeviceTypes\", List.of(\"ebs\")),\n                Map.entry(\"virtualizationTypes\", List.of(\"hvm\"))\n            )))))\n            .securityGroupIds(\"sg-12345\")\n            .imageId(\"ami-12345\")\n            .iamInstanceProfile(\"iam-profile\")\n            .keyPair(\"KeyPair\")\n            .userData(\"echo hello world\")\n            .associatePublicIpAddress(false)\n            .utilizeReservedInstances(false)\n            .drainingTimeout(120)\n            .monitoring(true)\n            .ebsOptimized(true)\n            .useAsTemplateOnly(true)\n            .spotPercentage(100)\n            .utilizeCommitments(false)\n            .fallbackToOndemand(true)\n            .clusterOrientations(OceanClusterOrientationArgs.builder()\n                .availabilityVsCost(\"balanced\")\n                .build())\n            .instanceMetadataOptions(OceanInstanceMetadataOptionsArgs.builder()\n                .httpTokens(\"required\")\n                .httpPutResponseHopLimit(10)\n                .build())\n            .blockDeviceMappings(OceanBlockDeviceMappingArgs.builder()\n                .deviceName(\"/dev/xvda1\")\n                .ebs(OceanBlockDeviceMappingEbsArgs.builder()\n                    .deleteOnTermination(true)\n                    .encrypted(false)\n                    .volumeType(\"gp2\")\n                    .volumeSize(50)\n                    .throughput(500)\n                    .dynamicVolumeSize(OceanBlockDeviceMappingEbsDynamicVolumeSizeArgs.builder()\n                        .baseSize(50)\n                        .resource(\"CPU\")\n                        .sizePerResourceUnit(20)\n                        .build())\n                    .build())\n                .build())\n            .optimizeImages(OceanOptimizeImagesArgs.builder()\n                .performAt(\"timeWindow\")\n                .timeWindows(                \n                    \"Sun:02:00-Sun:12:00\",\n                    \"Sun:05:00-Sun:16:00\")\n                .shouldOptimizeEcsAmi(true)\n                .build())\n            .tags(OceanTagArgs.builder()\n                .key(\"fakeKey\")\n                .value(\"fakeValue\")\n                .build())\n            .logging(OceanLoggingArgs.builder()\n                .export(OceanLoggingExportArgs.builder()\n                    .s3s(OceanLoggingExportS3Args.builder()\n                        .id(\"di-abcd123\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:ecs:Ocean\n    properties:\n      region: us-west-2\n      name: sample-ecs-cluster\n      clusterName: sample-ecs-cluster\n      minSize: '0'\n      maxSize: '1'\n      desiredCapacity: '0'\n      subnetIds:\n        - subnet-12345\n      instanceTypes:\n        - filters:\n            - architectures:\n                - x86_64\n                - i386\n              categories:\n                - Accelerated_computing\n                - Compute_optimized\n              diskTypes:\n                - EBS\n                - SSD\n              excludeFamilies:\n                - m*\n              excludeMetal: false\n              hypervisor:\n                - xen\n              includeFamilies:\n                - c*\n                - t*\n              isEnaSupported: false\n              maxGpu: 4\n              minGpu: 0\n              maxMemoryGib: 16\n              maxNetworkPerformance: 20\n              maxVcpu: 16\n              minEnis: 2\n              minMemoryGib: 8\n              minNetworkPerformance: 2\n              minVcpu: 2\n              rootDeviceTypes:\n                - ebs\n              virtualizationTypes:\n                - hvm\n      securityGroupIds:\n        - sg-12345\n      imageId: ami-12345\n      iamInstanceProfile: iam-profile\n      keyPair: KeyPair\n      userData: echo hello world\n      associatePublicIpAddress: false\n      utilizeReservedInstances: false\n      drainingTimeout: 120\n      monitoring: true\n      ebsOptimized: true\n      useAsTemplateOnly: true\n      spotPercentage: 100\n      utilizeCommitments: false\n      fallbackToOndemand: true\n      clusterOrientations:\n        - availabilityVsCost: balanced\n      instanceMetadataOptions:\n        httpTokens: required\n        httpPutResponseHopLimit: 10\n      blockDeviceMappings:\n        - deviceName: /dev/xvda1\n          ebs:\n            deleteOnTermination: 'true'\n            encrypted: 'false'\n            volumeType: gp2\n            volumeSize: 50\n            throughput: 500\n            dynamicVolumeSize:\n              baseSize: 50\n              resource: CPU\n              sizePerResourceUnit: 20\n      optimizeImages:\n        performAt: timeWindow\n        timeWindows:\n          - Sun:02:00-Sun:12:00\n          - Sun:05:00-Sun:16:00\n        shouldOptimizeEcsAmi: true\n      tags:\n        - key: fakeKey\n          value: fakeValue\n      logging:\n        export:\n          s3s:\n            - id: di-abcd123\n```\n\u003c!--End PulumiCodeChooser --\u003e\n```\noutput \"ocean_id\" {\n  value = spotinst_ocean_ecs.example.id\n}\n```\n\n## Import\n\nClusters can be imported using the Ocean `id`, e.g.,\n\nhcl\n\n```sh\n$ pulumi import spotinst:ecs/ocean:Ocean nameOfTheResource o-12345678\n```\n\n","properties":{"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"autoscaler":{"$ref":"#/types/spotinst:ecs/OceanAutoscaler:OceanAutoscaler","description":"Describes the Ocean ECS autoscaler.\n"},"blacklists":{"type":"array","items":{"type":"string"}},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanBlockDeviceMapping:OceanBlockDeviceMapping"},"description":"Object. List of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"clusterName":{"type":"string","description":"The name of the ECS cluster.\n"},"clusterOrientations":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanClusterOrientation:OceanClusterOrientation"}},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsOptimized":{"type":"boolean","description":"Enable EBS optimized for cluster. Flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized this flag will be ignored.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no Spot instance markets are available, enable Ocean to launch On-Demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:ecs/OceanFilters:OceanFilters"},"iamInstanceProfile":{"type":"string","description":"The instance profile iam role.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:ecs/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"keyPair":{"type":"string","description":"The key pair to attach the instances.\n"},"logging":{"$ref":"#/types/spotinst:ecs/OceanLogging:OceanLogging","description":"Logging configuration.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"monitoring":{"type":"boolean","description":"Enable detailed monitoring for cluster. Flag will enable Cloud Watch detailed monitoring (one minute increments). Note: there are additional hourly costs for this service based on the region used.\n"},"name":{"type":"string","description":"The Ocean cluster name.\n"},"optimizeImages":{"$ref":"#/types/spotinst:ecs/OceanOptimizeImages:OceanOptimizeImages","description":"Object. Set auto image update settings.\n"},"region":{"type":"string","description":"The region the cluster will run in.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanScheduledTask:OceanScheduledTask"},"description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"spotPercentage":{"type":"integer","description":"The percentage of Spot instances that would spin up from the \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e number.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of subnet identifiers for the Ocean cluster. Subnet IDs should be configured with auto assign public ip.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanTag:OceanTag"},"description":"Optionally adds tags to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:ecs/OceanUpdatePolicy:OceanUpdatePolicy","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"},"utilizeCommitments":{"type":"boolean","description":"If savings plans exist, Ocean will utilize them before launching Spot instances.\n"},"utilizeReservedInstances":{"type":"boolean","description":"If Reserved instances exist, Ocean will utilize them before launching Spot instances.\n"},"whitelists":{"type":"array","items":{"type":"string"}}},"required":["clusterName","desiredCapacity","imageId","maxSize","minSize","name","region","securityGroupIds","subnetIds"],"inputProperties":{"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"autoscaler":{"$ref":"#/types/spotinst:ecs/OceanAutoscaler:OceanAutoscaler","description":"Describes the Ocean ECS autoscaler.\n"},"blacklists":{"type":"array","items":{"type":"string"}},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanBlockDeviceMapping:OceanBlockDeviceMapping"},"description":"Object. List of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"clusterName":{"type":"string","description":"The name of the ECS cluster.\n"},"clusterOrientations":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanClusterOrientation:OceanClusterOrientation"}},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsOptimized":{"type":"boolean","description":"Enable EBS optimized for cluster. Flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized this flag will be ignored.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no Spot instance markets are available, enable Ocean to launch On-Demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:ecs/OceanFilters:OceanFilters"},"iamInstanceProfile":{"type":"string","description":"The instance profile iam role.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:ecs/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"keyPair":{"type":"string","description":"The key pair to attach the instances.\n"},"logging":{"$ref":"#/types/spotinst:ecs/OceanLogging:OceanLogging","description":"Logging configuration.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"monitoring":{"type":"boolean","description":"Enable detailed monitoring for cluster. Flag will enable Cloud Watch detailed monitoring (one minute increments). Note: there are additional hourly costs for this service based on the region used.\n"},"name":{"type":"string","description":"The Ocean cluster name.\n"},"optimizeImages":{"$ref":"#/types/spotinst:ecs/OceanOptimizeImages:OceanOptimizeImages","description":"Object. Set auto image update settings.\n"},"region":{"type":"string","description":"The region the cluster will run in.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanScheduledTask:OceanScheduledTask"},"description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"spotPercentage":{"type":"integer","description":"The percentage of Spot instances that would spin up from the \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e number.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of subnet identifiers for the Ocean cluster. Subnet IDs should be configured with auto assign public ip.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanTag:OceanTag"},"description":"Optionally adds tags to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:ecs/OceanUpdatePolicy:OceanUpdatePolicy","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"},"utilizeCommitments":{"type":"boolean","description":"If savings plans exist, Ocean will utilize them before launching Spot instances.\n"},"utilizeReservedInstances":{"type":"boolean","description":"If Reserved instances exist, Ocean will utilize them before launching Spot instances.\n"},"whitelists":{"type":"array","items":{"type":"string"}}},"requiredInputs":["clusterName","imageId","region","securityGroupIds","subnetIds"],"stateInputs":{"description":"Input properties used for looking up and filtering Ocean resources.\n","properties":{"associatePublicIpAddress":{"type":"boolean","description":"Configure public IP address allocation.\n"},"autoscaler":{"$ref":"#/types/spotinst:ecs/OceanAutoscaler:OceanAutoscaler","description":"Describes the Ocean ECS autoscaler.\n"},"blacklists":{"type":"array","items":{"type":"string"}},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanBlockDeviceMapping:OceanBlockDeviceMapping"},"description":"Object. List of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"clusterName":{"type":"string","description":"The name of the ECS cluster.\n"},"clusterOrientations":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanClusterOrientation:OceanClusterOrientation"}},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"drainingTimeout":{"type":"integer","description":"The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.\n"},"ebsOptimized":{"type":"boolean","description":"Enable EBS optimized for cluster. Flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized this flag will be ignored.\n"},"fallbackToOndemand":{"type":"boolean","description":"If no Spot instance markets are available, enable Ocean to launch On-Demand instances instead.\n"},"filters":{"$ref":"#/types/spotinst:ecs/OceanFilters:OceanFilters"},"iamInstanceProfile":{"type":"string","description":"The instance profile iam role.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:ecs/OceanInstanceMetadataOptions:OceanInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"keyPair":{"type":"string","description":"The key pair to attach the instances.\n"},"logging":{"$ref":"#/types/spotinst:ecs/OceanLogging:OceanLogging","description":"Logging configuration.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"monitoring":{"type":"boolean","description":"Enable detailed monitoring for cluster. Flag will enable Cloud Watch detailed monitoring (one minute increments). Note: there are additional hourly costs for this service based on the region used.\n"},"name":{"type":"string","description":"The Ocean cluster name.\n"},"optimizeImages":{"$ref":"#/types/spotinst:ecs/OceanOptimizeImages:OceanOptimizeImages","description":"Object. Set auto image update settings.\n"},"region":{"type":"string","description":"The region the cluster will run in.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanScheduledTask:OceanScheduledTask"},"description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"spotPercentage":{"type":"integer","description":"The percentage of Spot instances that would spin up from the \u003cspan pulumi-lang-nodejs=\"`desiredCapacity`\" pulumi-lang-dotnet=\"`DesiredCapacity`\" pulumi-lang-go=\"`desiredCapacity`\" pulumi-lang-python=\"`desired_capacity`\" pulumi-lang-yaml=\"`desiredCapacity`\" pulumi-lang-java=\"`desiredCapacity`\"\u003e`desired_capacity`\u003c/span\u003e number.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of subnet identifiers for the Ocean cluster. Subnet IDs should be configured with auto assign public ip.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanTag:OceanTag"},"description":"Optionally adds tags to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:ecs/OceanUpdatePolicy:OceanUpdatePolicy","description":"While used, you can control whether the group should perform a deployment after an update to the configuration.\n"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"},"utilizeCommitments":{"type":"boolean","description":"If savings plans exist, Ocean will utilize them before launching Spot instances.\n"},"utilizeReservedInstances":{"type":"boolean","description":"If Reserved instances exist, Ocean will utilize them before launching Spot instances.\n"},"whitelists":{"type":"array","items":{"type":"string"}}},"type":"object"}},"spotinst:ecs/oceanLaunchSpec:OceanLaunchSpec":{"description":"Manages a custom Spotinst Ocean ECS Launch Spec resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.ecs.OceanLaunchSpec(\"example\", {\n    oceanId: \"o-123456\",\n    imageId: \"ami-123456\",\n    userData: \"echo hello world\",\n    iamInstanceProfile: \"iam-profile\",\n    subnetIds: [\"subnet-12345\"],\n    securityGroupIds: [\"awseb-12345\"],\n    restrictScaleDown: true,\n    instanceTypes: [\n        \"m3.large\",\n        \"m3.xlarge\",\n        \"m3.2xlarge\",\n        \"m4.large\",\n        \"m4.xlarge\",\n        \"m4.4xlarge\",\n        \"m4.2xlarge\",\n        \"m4.10xlarge\",\n        \"m4.16xlarge\",\n        \"m5.large\",\n        \"m5.xlarge\",\n        \"m5.2xlarge\",\n        \"m5.4xlarge\",\n        \"m5.12xlarge\",\n        \"m5.24xlarge\",\n    ],\n    preferredSpotTypes: [\n        \"m3.large\",\n        \"m3.xlarge\",\n        \"m3.2xlarge\",\n        \"m4.large\",\n        \"m4.xlarge\",\n    ],\n    blockDeviceMappings: [{\n        deviceName: \"/dev/xvda1\",\n        ebs: {\n            deleteOnTermination: true,\n            encrypted: false,\n            volumeType: \"gp2\",\n            volumeSize: 50,\n            throughput: 500,\n            dynamicVolumeSize: {\n                baseSize: 50,\n                resource: \"CPU\",\n                sizePerResourceUnit: 20,\n            },\n        },\n    }],\n    attributes: [{\n        key: \"fakeKey\",\n        value: \"fakeValue\",\n    }],\n    instanceMetadataOptions: {\n        httpTokens: \"required\",\n        httpPutResponseHopLimit: 10,\n    },\n    autoscaleHeadrooms: [{\n        numOfUnits: 5,\n        cpuPerUnit: 1000,\n        memoryPerUnit: 2048,\n    }],\n    strategies: [{\n        spotPercentage: 50,\n    }],\n    tags: [{\n        key: \"Env\",\n        value: \"production\",\n    }],\n    images: [\n        {\n            imageId: \"ami-12345\",\n        },\n        {\n            imageId: \"ami-67890\",\n        },\n    ],\n    schedulingTasks: [{\n        isEnabled: true,\n        cronExpression: \"0 1 * * *\",\n        taskType: \"manualHeadroomUpdate\",\n        taskHeadrooms: [{\n            numOfUnits: 5,\n            cpuPerUnit: 1000,\n            memoryPerUnit: 2048,\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.ecs.OceanLaunchSpec(\"example\",\n    ocean_id=\"o-123456\",\n    image_id=\"ami-123456\",\n    user_data=\"echo hello world\",\n    iam_instance_profile=\"iam-profile\",\n    subnet_ids=[\"subnet-12345\"],\n    security_group_ids=[\"awseb-12345\"],\n    restrict_scale_down=True,\n    instance_types=[\n        \"m3.large\",\n        \"m3.xlarge\",\n        \"m3.2xlarge\",\n        \"m4.large\",\n        \"m4.xlarge\",\n        \"m4.4xlarge\",\n        \"m4.2xlarge\",\n        \"m4.10xlarge\",\n        \"m4.16xlarge\",\n        \"m5.large\",\n        \"m5.xlarge\",\n        \"m5.2xlarge\",\n        \"m5.4xlarge\",\n        \"m5.12xlarge\",\n        \"m5.24xlarge\",\n    ],\n    preferred_spot_types=[\n        \"m3.large\",\n        \"m3.xlarge\",\n        \"m3.2xlarge\",\n        \"m4.large\",\n        \"m4.xlarge\",\n    ],\n    block_device_mappings=[{\n        \"device_name\": \"/dev/xvda1\",\n        \"ebs\": {\n            \"delete_on_termination\": True,\n            \"encrypted\": False,\n            \"volume_type\": \"gp2\",\n            \"volume_size\": 50,\n            \"throughput\": 500,\n            \"dynamic_volume_size\": {\n                \"base_size\": 50,\n                \"resource\": \"CPU\",\n                \"size_per_resource_unit\": 20,\n            },\n        },\n    }],\n    attributes=[{\n        \"key\": \"fakeKey\",\n        \"value\": \"fakeValue\",\n    }],\n    instance_metadata_options={\n        \"http_tokens\": \"required\",\n        \"http_put_response_hop_limit\": 10,\n    },\n    autoscale_headrooms=[{\n        \"num_of_units\": 5,\n        \"cpu_per_unit\": 1000,\n        \"memory_per_unit\": 2048,\n    }],\n    strategies=[{\n        \"spot_percentage\": 50,\n    }],\n    tags=[{\n        \"key\": \"Env\",\n        \"value\": \"production\",\n    }],\n    images=[\n        {\n            \"image_id\": \"ami-12345\",\n        },\n        {\n            \"image_id\": \"ami-67890\",\n        },\n    ],\n    scheduling_tasks=[{\n        \"is_enabled\": True,\n        \"cron_expression\": \"0 1 * * *\",\n        \"task_type\": \"manualHeadroomUpdate\",\n        \"task_headrooms\": [{\n            \"num_of_units\": 5,\n            \"cpu_per_unit\": 1000,\n            \"memory_per_unit\": 2048,\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Ecs.OceanLaunchSpec(\"example\", new()\n    {\n        OceanId = \"o-123456\",\n        ImageId = \"ami-123456\",\n        UserData = \"echo hello world\",\n        IamInstanceProfile = \"iam-profile\",\n        SubnetIds = new[]\n        {\n            \"subnet-12345\",\n        },\n        SecurityGroupIds = new[]\n        {\n            \"awseb-12345\",\n        },\n        RestrictScaleDown = true,\n        InstanceTypes = new[]\n        {\n            \"m3.large\",\n            \"m3.xlarge\",\n            \"m3.2xlarge\",\n            \"m4.large\",\n            \"m4.xlarge\",\n            \"m4.4xlarge\",\n            \"m4.2xlarge\",\n            \"m4.10xlarge\",\n            \"m4.16xlarge\",\n            \"m5.large\",\n            \"m5.xlarge\",\n            \"m5.2xlarge\",\n            \"m5.4xlarge\",\n            \"m5.12xlarge\",\n            \"m5.24xlarge\",\n        },\n        PreferredSpotTypes = new[]\n        {\n            \"m3.large\",\n            \"m3.xlarge\",\n            \"m3.2xlarge\",\n            \"m4.large\",\n            \"m4.xlarge\",\n        },\n        BlockDeviceMappings = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecBlockDeviceMappingArgs\n            {\n                DeviceName = \"/dev/xvda1\",\n                Ebs = new SpotInst.Ecs.Inputs.OceanLaunchSpecBlockDeviceMappingEbsArgs\n                {\n                    DeleteOnTermination = true,\n                    Encrypted = false,\n                    VolumeType = \"gp2\",\n                    VolumeSize = 50,\n                    Throughput = 500,\n                    DynamicVolumeSize = new SpotInst.Ecs.Inputs.OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSizeArgs\n                    {\n                        BaseSize = 50,\n                        Resource = \"CPU\",\n                        SizePerResourceUnit = 20,\n                    },\n                },\n            },\n        },\n        Attributes = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecAttributeArgs\n            {\n                Key = \"fakeKey\",\n                Value = \"fakeValue\",\n            },\n        },\n        InstanceMetadataOptions = new SpotInst.Ecs.Inputs.OceanLaunchSpecInstanceMetadataOptionsArgs\n        {\n            HttpTokens = \"required\",\n            HttpPutResponseHopLimit = 10,\n        },\n        AutoscaleHeadrooms = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecAutoscaleHeadroomArgs\n            {\n                NumOfUnits = 5,\n                CpuPerUnit = 1000,\n                MemoryPerUnit = 2048,\n            },\n        },\n        Strategies = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecStrategyArgs\n            {\n                SpotPercentage = 50,\n            },\n        },\n        Tags = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecTagArgs\n            {\n                Key = \"Env\",\n                Value = \"production\",\n            },\n        },\n        Images = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecImageArgs\n            {\n                ImageId = \"ami-12345\",\n            },\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecImageArgs\n            {\n                ImageId = \"ami-67890\",\n            },\n        },\n        SchedulingTasks = new[]\n        {\n            new SpotInst.Ecs.Inputs.OceanLaunchSpecSchedulingTaskArgs\n            {\n                IsEnabled = true,\n                CronExpression = \"0 1 * * *\",\n                TaskType = \"manualHeadroomUpdate\",\n                TaskHeadrooms = new[]\n                {\n                    new SpotInst.Ecs.Inputs.OceanLaunchSpecSchedulingTaskTaskHeadroomArgs\n                    {\n                        NumOfUnits = 5,\n                        CpuPerUnit = 1000,\n                        MemoryPerUnit = 2048,\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/ecs\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ecs.NewOceanLaunchSpec(ctx, \"example\", \u0026ecs.OceanLaunchSpecArgs{\n\t\t\tOceanId:            pulumi.String(\"o-123456\"),\n\t\t\tImageId:            pulumi.String(\"ami-123456\"),\n\t\t\tUserData:           pulumi.String(\"echo hello world\"),\n\t\t\tIamInstanceProfile: pulumi.String(\"iam-profile\"),\n\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subnet-12345\"),\n\t\t\t},\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"awseb-12345\"),\n\t\t\t},\n\t\t\tRestrictScaleDown: pulumi.Bool(true),\n\t\t\tInstanceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"m3.large\"),\n\t\t\t\tpulumi.String(\"m3.xlarge\"),\n\t\t\t\tpulumi.String(\"m3.2xlarge\"),\n\t\t\t\tpulumi.String(\"m4.large\"),\n\t\t\t\tpulumi.String(\"m4.xlarge\"),\n\t\t\t\tpulumi.String(\"m4.4xlarge\"),\n\t\t\t\tpulumi.String(\"m4.2xlarge\"),\n\t\t\t\tpulumi.String(\"m4.10xlarge\"),\n\t\t\t\tpulumi.String(\"m4.16xlarge\"),\n\t\t\t\tpulumi.String(\"m5.large\"),\n\t\t\t\tpulumi.String(\"m5.xlarge\"),\n\t\t\t\tpulumi.String(\"m5.2xlarge\"),\n\t\t\t\tpulumi.String(\"m5.4xlarge\"),\n\t\t\t\tpulumi.String(\"m5.12xlarge\"),\n\t\t\t\tpulumi.String(\"m5.24xlarge\"),\n\t\t\t},\n\t\t\tPreferredSpotTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"m3.large\"),\n\t\t\t\tpulumi.String(\"m3.xlarge\"),\n\t\t\t\tpulumi.String(\"m3.2xlarge\"),\n\t\t\t\tpulumi.String(\"m4.large\"),\n\t\t\t\tpulumi.String(\"m4.xlarge\"),\n\t\t\t},\n\t\t\tBlockDeviceMappings: ecs.OceanLaunchSpecBlockDeviceMappingArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecBlockDeviceMappingArgs{\n\t\t\t\t\tDeviceName: pulumi.String(\"/dev/xvda1\"),\n\t\t\t\t\tEbs: \u0026ecs.OceanLaunchSpecBlockDeviceMappingEbsArgs{\n\t\t\t\t\t\tDeleteOnTermination: pulumi.Bool(true),\n\t\t\t\t\t\tEncrypted:           pulumi.Bool(false),\n\t\t\t\t\t\tVolumeType:          pulumi.String(\"gp2\"),\n\t\t\t\t\t\tVolumeSize:          pulumi.Int(50),\n\t\t\t\t\t\tThroughput:          pulumi.Int(500),\n\t\t\t\t\t\tDynamicVolumeSize: \u0026ecs.OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSizeArgs{\n\t\t\t\t\t\t\tBaseSize:            pulumi.Int(50),\n\t\t\t\t\t\t\tResource:            pulumi.String(\"CPU\"),\n\t\t\t\t\t\t\tSizePerResourceUnit: pulumi.Int(20),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAttributes: ecs.OceanLaunchSpecAttributeArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecAttributeArgs{\n\t\t\t\t\tKey:   pulumi.String(\"fakeKey\"),\n\t\t\t\t\tValue: pulumi.String(\"fakeValue\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceMetadataOptions: \u0026ecs.OceanLaunchSpecInstanceMetadataOptionsArgs{\n\t\t\t\tHttpTokens:              pulumi.String(\"required\"),\n\t\t\t\tHttpPutResponseHopLimit: pulumi.Int(10),\n\t\t\t},\n\t\t\tAutoscaleHeadrooms: ecs.OceanLaunchSpecAutoscaleHeadroomArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecAutoscaleHeadroomArgs{\n\t\t\t\t\tNumOfUnits:    pulumi.Int(5),\n\t\t\t\t\tCpuPerUnit:    pulumi.Int(1000),\n\t\t\t\t\tMemoryPerUnit: pulumi.Int(2048),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStrategies: ecs.OceanLaunchSpecStrategyArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecStrategyArgs{\n\t\t\t\t\tSpotPercentage: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: ecs.OceanLaunchSpecTagArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecTagArgs{\n\t\t\t\t\tKey:   pulumi.String(\"Env\"),\n\t\t\t\t\tValue: pulumi.String(\"production\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tImages: ecs.OceanLaunchSpecImageArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecImageArgs{\n\t\t\t\t\tImageId: pulumi.String(\"ami-12345\"),\n\t\t\t\t},\n\t\t\t\t\u0026ecs.OceanLaunchSpecImageArgs{\n\t\t\t\t\tImageId: pulumi.String(\"ami-67890\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchedulingTasks: ecs.OceanLaunchSpecSchedulingTaskArray{\n\t\t\t\t\u0026ecs.OceanLaunchSpecSchedulingTaskArgs{\n\t\t\t\t\tIsEnabled:      pulumi.Bool(true),\n\t\t\t\t\tCronExpression: pulumi.String(\"0 1 * * *\"),\n\t\t\t\t\tTaskType:       pulumi.String(\"manualHeadroomUpdate\"),\n\t\t\t\t\tTaskHeadrooms: ecs.OceanLaunchSpecSchedulingTaskTaskHeadroomArray{\n\t\t\t\t\t\t\u0026ecs.OceanLaunchSpecSchedulingTaskTaskHeadroomArgs{\n\t\t\t\t\t\t\tNumOfUnits:    pulumi.Int(5),\n\t\t\t\t\t\t\tCpuPerUnit:    pulumi.Int(1000),\n\t\t\t\t\t\t\tMemoryPerUnit: pulumi.Int(2048),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.ecs.OceanLaunchSpec;\nimport com.pulumi.spotinst.ecs.OceanLaunchSpecArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecBlockDeviceMappingArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecBlockDeviceMappingEbsArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSizeArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecAttributeArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecInstanceMetadataOptionsArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecAutoscaleHeadroomArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecStrategyArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecTagArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecImageArgs;\nimport com.pulumi.spotinst.ecs.inputs.OceanLaunchSpecSchedulingTaskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanLaunchSpec(\"example\", OceanLaunchSpecArgs.builder()\n            .oceanId(\"o-123456\")\n            .imageId(\"ami-123456\")\n            .userData(\"echo hello world\")\n            .iamInstanceProfile(\"iam-profile\")\n            .subnetIds(\"subnet-12345\")\n            .securityGroupIds(\"awseb-12345\")\n            .restrictScaleDown(true)\n            .instanceTypes(            \n                \"m3.large\",\n                \"m3.xlarge\",\n                \"m3.2xlarge\",\n                \"m4.large\",\n                \"m4.xlarge\",\n                \"m4.4xlarge\",\n                \"m4.2xlarge\",\n                \"m4.10xlarge\",\n                \"m4.16xlarge\",\n                \"m5.large\",\n                \"m5.xlarge\",\n                \"m5.2xlarge\",\n                \"m5.4xlarge\",\n                \"m5.12xlarge\",\n                \"m5.24xlarge\")\n            .preferredSpotTypes(            \n                \"m3.large\",\n                \"m3.xlarge\",\n                \"m3.2xlarge\",\n                \"m4.large\",\n                \"m4.xlarge\")\n            .blockDeviceMappings(OceanLaunchSpecBlockDeviceMappingArgs.builder()\n                .deviceName(\"/dev/xvda1\")\n                .ebs(OceanLaunchSpecBlockDeviceMappingEbsArgs.builder()\n                    .deleteOnTermination(true)\n                    .encrypted(false)\n                    .volumeType(\"gp2\")\n                    .volumeSize(50)\n                    .throughput(500)\n                    .dynamicVolumeSize(OceanLaunchSpecBlockDeviceMappingEbsDynamicVolumeSizeArgs.builder()\n                        .baseSize(50)\n                        .resource(\"CPU\")\n                        .sizePerResourceUnit(20)\n                        .build())\n                    .build())\n                .build())\n            .attributes(OceanLaunchSpecAttributeArgs.builder()\n                .key(\"fakeKey\")\n                .value(\"fakeValue\")\n                .build())\n            .instanceMetadataOptions(OceanLaunchSpecInstanceMetadataOptionsArgs.builder()\n                .httpTokens(\"required\")\n                .httpPutResponseHopLimit(10)\n                .build())\n            .autoscaleHeadrooms(OceanLaunchSpecAutoscaleHeadroomArgs.builder()\n                .numOfUnits(5)\n                .cpuPerUnit(1000)\n                .memoryPerUnit(2048)\n                .build())\n            .strategies(OceanLaunchSpecStrategyArgs.builder()\n                .spotPercentage(50)\n                .build())\n            .tags(OceanLaunchSpecTagArgs.builder()\n                .key(\"Env\")\n                .value(\"production\")\n                .build())\n            .images(            \n                OceanLaunchSpecImageArgs.builder()\n                    .imageId(\"ami-12345\")\n                    .build(),\n                OceanLaunchSpecImageArgs.builder()\n                    .imageId(\"ami-67890\")\n                    .build())\n            .schedulingTasks(OceanLaunchSpecSchedulingTaskArgs.builder()\n                .isEnabled(true)\n                .cronExpression(\"0 1 * * *\")\n                .taskType(\"manualHeadroomUpdate\")\n                .taskHeadrooms(OceanLaunchSpecSchedulingTaskTaskHeadroomArgs.builder()\n                    .numOfUnits(5)\n                    .cpuPerUnit(1000)\n                    .memoryPerUnit(2048)\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:ecs:OceanLaunchSpec\n    properties:\n      oceanId: o-123456\n      imageId: ami-123456\n      userData: echo hello world\n      iamInstanceProfile: iam-profile\n      subnetIds:\n        - subnet-12345\n      securityGroupIds:\n        - awseb-12345\n      restrictScaleDown: true\n      instanceTypes:\n        - m3.large\n        - m3.xlarge\n        - m3.2xlarge\n        - m4.large\n        - m4.xlarge\n        - m4.4xlarge\n        - m4.2xlarge\n        - m4.10xlarge\n        - m4.16xlarge\n        - m5.large\n        - m5.xlarge\n        - m5.2xlarge\n        - m5.4xlarge\n        - m5.12xlarge\n        - m5.24xlarge\n      preferredSpotTypes:\n        - m3.large\n        - m3.xlarge\n        - m3.2xlarge\n        - m4.large\n        - m4.xlarge\n      blockDeviceMappings:\n        - deviceName: /dev/xvda1\n          ebs:\n            deleteOnTermination: 'true'\n            encrypted: 'false'\n            volumeType: gp2\n            volumeSize: 50\n            throughput: 500\n            dynamicVolumeSize:\n              baseSize: 50\n              resource: CPU\n              sizePerResourceUnit: 20\n      attributes:\n        - key: fakeKey\n          value: fakeValue\n      instanceMetadataOptions:\n        httpTokens: required\n        httpPutResponseHopLimit: 10\n      autoscaleHeadrooms:\n        - numOfUnits: 5\n          cpuPerUnit: 1000\n          memoryPerUnit: 2048\n      strategies:\n        - spotPercentage: 50\n      tags:\n        - key: Env\n          value: production\n      images:\n        - imageId: ami-12345\n        - imageId: ami-67890\n      schedulingTasks:\n        - isEnabled: true\n          cronExpression: 0 1 * * *\n          taskType: manualHeadroomUpdate\n          taskHeadrooms:\n            - numOfUnits: 5\n              cpuPerUnit: 1000\n              memoryPerUnit: 2048\n```\n\u003c!--End PulumiCodeChooser --\u003e\n```\noutput \"ocean_launchspec_id\" {\n  value = spotinst_ocean_ecs_launch_spec.example.id\n}\n```\n\n## Import\n\nLaunch_Specs can be imported using the Launch_Spec `id`, e.g.,\n\nhcl\n\n```sh\n$ pulumi import spotinst:ecs/oceanLaunchSpec:OceanLaunchSpec nameOfTheResource ols-1a2345\n```\n\n","properties":{"attributes":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecAttribute:OceanLaunchSpecAttribute"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per launch spec. provide list of headrooms object.\n"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecImage:OceanLaunchSpecImage"},"description":"You can configure VNG with either the imageId or images objects, but not both simultaneously. For each architecture type (amd64, arm64) only one AMI is allowed. Valid values: null, or an array with at least one element\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types allowed to be provisioned for pods pending under the specified launch specification. The list overrides the list defined for the Ocean cluster.\n"},"name":{"type":"string","description":"The Ocean Launch Specification name.\n"},"oceanId":{"type":"string","description":"The Ocean cluster ID .\n"},"preferredSpotTypes":{"type":"array","items":{"type":"string"},"description":"When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"},"description":"Similar to a strategy for an Ocean cluster, but applying only to a virtual node group.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Set subnets in launchSpec. Each element in the array should be a subnet ID.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecTag:OceanLaunchSpecTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"}},"required":["name","oceanId"],"inputProperties":{"attributes":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecAttribute:OceanLaunchSpecAttribute"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per launch spec. provide list of headrooms object.\n"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecImage:OceanLaunchSpecImage"},"description":"You can configure VNG with either the imageId or images objects, but not both simultaneously. For each architecture type (amd64, arm64) only one AMI is allowed. Valid values: null, or an array with at least one element\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types allowed to be provisioned for pods pending under the specified launch specification. The list overrides the list defined for the Ocean cluster.\n"},"name":{"type":"string","description":"The Ocean Launch Specification name.\n"},"oceanId":{"type":"string","description":"The Ocean cluster ID .\n"},"preferredSpotTypes":{"type":"array","items":{"type":"string"},"description":"When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"},"description":"Similar to a strategy for an Ocean cluster, but applying only to a virtual node group.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Set subnets in launchSpec. Each element in the array should be a subnet ID.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecTag:OceanLaunchSpecTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"}},"requiredInputs":["oceanId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanLaunchSpec resources.\n","properties":{"attributes":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecAttribute:OceanLaunchSpecAttribute"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per launch spec. provide list of headrooms object.\n"},"blockDeviceMappings":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecBlockDeviceMapping:OceanLaunchSpecBlockDeviceMapping"},"description":"Object. Array list of block devices that are exposed to the instance, specify either virtual devices and EBS volumes.\n"},"iamInstanceProfile":{"type":"string","description":"The ARN or name of an IAM instance profile to associate with launched instances.\n"},"imageId":{"type":"string","description":"ID of the image used to launch the instances.\n"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecImage:OceanLaunchSpecImage"},"description":"You can configure VNG with either the imageId or images objects, but not both simultaneously. For each architecture type (amd64, arm64) only one AMI is allowed. Valid values: null, or an array with at least one element\n"},"instanceMetadataOptions":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecInstanceMetadataOptions:OceanLaunchSpecInstanceMetadataOptions","description":"Ocean instance metadata options object for IMDSv2.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"A list of instance types allowed to be provisioned for pods pending under the specified launch specification. The list overrides the list defined for the Ocean cluster.\n"},"name":{"type":"string","description":"The Ocean Launch Specification name.\n"},"oceanId":{"type":"string","description":"The Ocean cluster ID .\n"},"preferredSpotTypes":{"type":"array","items":{"type":"string"},"description":"When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n"},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"One or more security group ids.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"},"description":"Similar to a strategy for an Ocean cluster, but applying only to a virtual node group.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Set subnets in launchSpec. Each element in the array should be a subnet ID.\n"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:ecs/OceanLaunchSpecTag:OceanLaunchSpecTag"},"description":"A key/value mapping of tags to assign to the resource.\n"},"userData":{"type":"string","description":"Base64-encoded MIME user data to make available to the instances.\n"}},"type":"object"}},"spotinst:gcp/elastigroup:Elastigroup":{"description":"Provides a Spotinst elastigroup GCP resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.gcp.Elastigroup(\"example\", {\n    name: \"example-gcp\",\n    description: \"spotinst gcp group\",\n    serviceAccount: \"example@myProject.iam.gservicecct.com\",\n    startupScript: \"\",\n    instanceNamePrefix: \"test-123a\",\n    minCpuPlatform: \"Intel Sandy Bridge\",\n    minSize: 0,\n    maxSize: 1,\n    desiredCapacity: 1,\n    availabilityZones: [\n        \"asia-east1-c\",\n        \"us-central1-a\",\n    ],\n    preferredAvailabilityZones: [\"us-central1-a\"],\n    preemptiblePercentage: 50,\n    revertToPreemptibles: [{\n        performAt: \"timeWindow\",\n    }],\n    optimizationWindows: [\"Mon:01:00-Mon:03:00\"],\n    fallbackToOndemand: true,\n    drainingTimeout: 180,\n    provisioningModel: \"SPOT\",\n    shouldUtilizeCommitments: true,\n    labels: [{\n        key: \"test_key\",\n        value: \"test_value\",\n    }],\n    tags: [\n        \"http\",\n        \"https\",\n    ],\n    backendServices: [{\n        serviceName: \"spotinst-elb-backend-service\",\n        locationType: \"regional\",\n        scheme: \"INTERNAL\",\n        namedPorts: [{\n            name: \"port-name\",\n            ports: [\n                \"8000\",\n                \"6000\",\n            ],\n        }],\n        backendBalancing: {\n            backendBalancingMode: \"RATE\",\n            maxRatePerInstance: 500,\n        },\n    }],\n    disks: [{\n        deviceName: \"device\",\n        mode: \"READ_WRITE\",\n        type: \"PERSISTENT\",\n        autoDelete: true,\n        boot: true,\n        \"interface\": \"SCSI\",\n        initializeParams: [{\n            diskSizeGb: \"10\",\n            diskType: \"pd-standard\",\n            sourceImage: \"\",\n        }],\n    }],\n    shieldedInstanceConfig: {\n        enableSecureBoot: true,\n        enableIntegrityMonitoring: false,\n    },\n    networkInterfaces: [{\n        network: \"spot-network\",\n    }],\n    instanceTypesOndemand: \"n1-standard-1\",\n    instanceTypesPreemptibles: [\n        \"n1-standard-1\",\n        \"n1-standard-2\",\n    ],\n    instanceTypesCustoms: [{\n        vcpu: 2,\n        memoryGib: 7,\n    }],\n    subnets: [{\n        region: \"asia-east1\",\n        subnetNames: [\"default\"],\n    }],\n    scalingUpPolicies: [{\n        policyName: \"scale_up_1\",\n        source: \"stackdriver\",\n        metricName: \"instance/disk/read_ops_count\",\n        namespace: \"compute\",\n        statistic: \"average\",\n        unit: \"percent\",\n        threshold: 10000,\n        period: 300,\n        cooldown: 300,\n        operator: \"gte\",\n        evaluationPeriods: 1,\n        actionType: \"adjustment\",\n        adjustment: 1,\n        dimensions: [{\n            name: \"storage_type\",\n            value: \"pd-ssd\",\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.gcp.Elastigroup(\"example\",\n    name=\"example-gcp\",\n    description=\"spotinst gcp group\",\n    service_account=\"example@myProject.iam.gservicecct.com\",\n    startup_script=\"\",\n    instance_name_prefix=\"test-123a\",\n    min_cpu_platform=\"Intel Sandy Bridge\",\n    min_size=0,\n    max_size=1,\n    desired_capacity=1,\n    availability_zones=[\n        \"asia-east1-c\",\n        \"us-central1-a\",\n    ],\n    preferred_availability_zones=[\"us-central1-a\"],\n    preemptible_percentage=50,\n    revert_to_preemptibles=[{\n        \"perform_at\": \"timeWindow\",\n    }],\n    optimization_windows=[\"Mon:01:00-Mon:03:00\"],\n    fallback_to_ondemand=True,\n    draining_timeout=180,\n    provisioning_model=\"SPOT\",\n    should_utilize_commitments=True,\n    labels=[{\n        \"key\": \"test_key\",\n        \"value\": \"test_value\",\n    }],\n    tags=[\n        \"http\",\n        \"https\",\n    ],\n    backend_services=[{\n        \"service_name\": \"spotinst-elb-backend-service\",\n        \"location_type\": \"regional\",\n        \"scheme\": \"INTERNAL\",\n        \"named_ports\": [{\n            \"name\": \"port-name\",\n            \"ports\": [\n                \"8000\",\n                \"6000\",\n            ],\n        }],\n        \"backend_balancing\": {\n            \"backend_balancing_mode\": \"RATE\",\n            \"max_rate_per_instance\": 500,\n        },\n    }],\n    disks=[{\n        \"device_name\": \"device\",\n        \"mode\": \"READ_WRITE\",\n        \"type\": \"PERSISTENT\",\n        \"auto_delete\": True,\n        \"boot\": True,\n        \"interface\": \"SCSI\",\n        \"initialize_params\": [{\n            \"disk_size_gb\": \"10\",\n            \"disk_type\": \"pd-standard\",\n            \"source_image\": \"\",\n        }],\n    }],\n    shielded_instance_config={\n        \"enable_secure_boot\": True,\n        \"enable_integrity_monitoring\": False,\n    },\n    network_interfaces=[{\n        \"network\": \"spot-network\",\n    }],\n    instance_types_ondemand=\"n1-standard-1\",\n    instance_types_preemptibles=[\n        \"n1-standard-1\",\n        \"n1-standard-2\",\n    ],\n    instance_types_customs=[{\n        \"vcpu\": 2,\n        \"memory_gib\": 7,\n    }],\n    subnets=[{\n        \"region\": \"asia-east1\",\n        \"subnet_names\": [\"default\"],\n    }],\n    scaling_up_policies=[{\n        \"policy_name\": \"scale_up_1\",\n        \"source\": \"stackdriver\",\n        \"metric_name\": \"instance/disk/read_ops_count\",\n        \"namespace\": \"compute\",\n        \"statistic\": \"average\",\n        \"unit\": \"percent\",\n        \"threshold\": 10000,\n        \"period\": 300,\n        \"cooldown\": 300,\n        \"operator\": \"gte\",\n        \"evaluation_periods\": 1,\n        \"action_type\": \"adjustment\",\n        \"adjustment\": 1,\n        \"dimensions\": [{\n            \"name\": \"storage_type\",\n            \"value\": \"pd-ssd\",\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Gcp.Elastigroup(\"example\", new()\n    {\n        Name = \"example-gcp\",\n        Description = \"spotinst gcp group\",\n        ServiceAccount = \"example@myProject.iam.gservicecct.com\",\n        StartupScript = \"\",\n        InstanceNamePrefix = \"test-123a\",\n        MinCpuPlatform = \"Intel Sandy Bridge\",\n        MinSize = 0,\n        MaxSize = 1,\n        DesiredCapacity = 1,\n        AvailabilityZones = new[]\n        {\n            \"asia-east1-c\",\n            \"us-central1-a\",\n        },\n        PreferredAvailabilityZones = new[]\n        {\n            \"us-central1-a\",\n        },\n        PreemptiblePercentage = 50,\n        RevertToPreemptibles = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupRevertToPreemptibleArgs\n            {\n                PerformAt = \"timeWindow\",\n            },\n        },\n        OptimizationWindows = new[]\n        {\n            \"Mon:01:00-Mon:03:00\",\n        },\n        FallbackToOndemand = true,\n        DrainingTimeout = 180,\n        ProvisioningModel = \"SPOT\",\n        ShouldUtilizeCommitments = true,\n        Labels = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupLabelArgs\n            {\n                Key = \"test_key\",\n                Value = \"test_value\",\n            },\n        },\n        Tags = new[]\n        {\n            \"http\",\n            \"https\",\n        },\n        BackendServices = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupBackendServiceArgs\n            {\n                ServiceName = \"spotinst-elb-backend-service\",\n                LocationType = \"regional\",\n                Scheme = \"INTERNAL\",\n                NamedPorts = new[]\n                {\n                    new SpotInst.Gcp.Inputs.ElastigroupBackendServiceNamedPortArgs\n                    {\n                        Name = \"port-name\",\n                        Ports = new[]\n                        {\n                            \"8000\",\n                            \"6000\",\n                        },\n                    },\n                },\n                BackendBalancing = new SpotInst.Gcp.Inputs.ElastigroupBackendServiceBackendBalancingArgs\n                {\n                    BackendBalancingMode = \"RATE\",\n                    MaxRatePerInstance = 500,\n                },\n            },\n        },\n        Disks = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupDiskArgs\n            {\n                DeviceName = \"device\",\n                Mode = \"READ_WRITE\",\n                Type = \"PERSISTENT\",\n                AutoDelete = true,\n                Boot = true,\n                Interface = \"SCSI\",\n                InitializeParams = new[]\n                {\n                    new SpotInst.Gcp.Inputs.ElastigroupDiskInitializeParamArgs\n                    {\n                        DiskSizeGb = \"10\",\n                        DiskType = \"pd-standard\",\n                        SourceImage = \"\",\n                    },\n                },\n            },\n        },\n        ShieldedInstanceConfig = new SpotInst.Gcp.Inputs.ElastigroupShieldedInstanceConfigArgs\n        {\n            EnableSecureBoot = true,\n            EnableIntegrityMonitoring = false,\n        },\n        NetworkInterfaces = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupNetworkInterfaceArgs\n            {\n                Network = \"spot-network\",\n            },\n        },\n        InstanceTypesOndemand = \"n1-standard-1\",\n        InstanceTypesPreemptibles = new[]\n        {\n            \"n1-standard-1\",\n            \"n1-standard-2\",\n        },\n        InstanceTypesCustoms = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupInstanceTypesCustomArgs\n            {\n                Vcpu = 2,\n                MemoryGib = 7,\n            },\n        },\n        Subnets = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupSubnetArgs\n            {\n                Region = \"asia-east1\",\n                SubnetNames = new[]\n                {\n                    \"default\",\n                },\n            },\n        },\n        ScalingUpPolicies = new[]\n        {\n            new SpotInst.Gcp.Inputs.ElastigroupScalingUpPolicyArgs\n            {\n                PolicyName = \"scale_up_1\",\n                Source = \"stackdriver\",\n                MetricName = \"instance/disk/read_ops_count\",\n                Namespace = \"compute\",\n                Statistic = \"average\",\n                Unit = \"percent\",\n                Threshold = 10000,\n                Period = 300,\n                Cooldown = 300,\n                Operator = \"gte\",\n                EvaluationPeriods = 1,\n                ActionType = \"adjustment\",\n                Adjustment = 1,\n                Dimensions = new[]\n                {\n                    new SpotInst.Gcp.Inputs.ElastigroupScalingUpPolicyDimensionArgs\n                    {\n                        Name = \"storage_type\",\n                        Value = \"pd-ssd\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/gcp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gcp.NewElastigroup(ctx, \"example\", \u0026gcp.ElastigroupArgs{\n\t\t\tName:               pulumi.String(\"example-gcp\"),\n\t\t\tDescription:        pulumi.String(\"spotinst gcp group\"),\n\t\t\tServiceAccount:     pulumi.String(\"example@myProject.iam.gservicecct.com\"),\n\t\t\tStartupScript:      pulumi.String(\"\"),\n\t\t\tInstanceNamePrefix: pulumi.String(\"test-123a\"),\n\t\t\tMinCpuPlatform:     pulumi.String(\"Intel Sandy Bridge\"),\n\t\t\tMinSize:            pulumi.Int(0),\n\t\t\tMaxSize:            pulumi.Int(1),\n\t\t\tDesiredCapacity:    pulumi.Int(1),\n\t\t\tAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"asia-east1-c\"),\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t},\n\t\t\tPreferredAvailabilityZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t},\n\t\t\tPreemptiblePercentage: pulumi.Int(50),\n\t\t\tRevertToPreemptibles: gcp.ElastigroupRevertToPreemptibleArray{\n\t\t\t\t\u0026gcp.ElastigroupRevertToPreemptibleArgs{\n\t\t\t\t\tPerformAt: pulumi.String(\"timeWindow\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOptimizationWindows: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Mon:01:00-Mon:03:00\"),\n\t\t\t},\n\t\t\tFallbackToOndemand:       pulumi.Bool(true),\n\t\t\tDrainingTimeout:          pulumi.Int(180),\n\t\t\tProvisioningModel:        pulumi.String(\"SPOT\"),\n\t\t\tShouldUtilizeCommitments: pulumi.Bool(true),\n\t\t\tLabels: gcp.ElastigroupLabelArray{\n\t\t\t\t\u0026gcp.ElastigroupLabelArgs{\n\t\t\t\t\tKey:   pulumi.String(\"test_key\"),\n\t\t\t\t\tValue: pulumi.String(\"test_value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"http\"),\n\t\t\t\tpulumi.String(\"https\"),\n\t\t\t},\n\t\t\tBackendServices: gcp.ElastigroupBackendServiceArray{\n\t\t\t\t\u0026gcp.ElastigroupBackendServiceArgs{\n\t\t\t\t\tServiceName:  pulumi.String(\"spotinst-elb-backend-service\"),\n\t\t\t\t\tLocationType: pulumi.String(\"regional\"),\n\t\t\t\t\tScheme:       pulumi.String(\"INTERNAL\"),\n\t\t\t\t\tNamedPorts: gcp.ElastigroupBackendServiceNamedPortArray{\n\t\t\t\t\t\t\u0026gcp.ElastigroupBackendServiceNamedPortArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"port-name\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"8000\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"6000\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackendBalancing: \u0026gcp.ElastigroupBackendServiceBackendBalancingArgs{\n\t\t\t\t\t\tBackendBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\t\tMaxRatePerInstance:   pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: gcp.ElastigroupDiskArray{\n\t\t\t\t\u0026gcp.ElastigroupDiskArgs{\n\t\t\t\t\tDeviceName: pulumi.String(\"device\"),\n\t\t\t\t\tMode:       pulumi.String(\"READ_WRITE\"),\n\t\t\t\t\tType:       pulumi.String(\"PERSISTENT\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot:       pulumi.Bool(true),\n\t\t\t\t\tInterface:  pulumi.String(\"SCSI\"),\n\t\t\t\t\tInitializeParams: gcp.ElastigroupDiskInitializeParamArray{\n\t\t\t\t\t\t\u0026gcp.ElastigroupDiskInitializeParamArgs{\n\t\t\t\t\t\t\tDiskSizeGb:  pulumi.String(\"10\"),\n\t\t\t\t\t\t\tDiskType:    pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\t\tSourceImage: pulumi.String(\"\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026gcp.ElastigroupShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot:          pulumi.Bool(true),\n\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(false),\n\t\t\t},\n\t\t\tNetworkInterfaces: gcp.ElastigroupNetworkInterfaceArray{\n\t\t\t\t\u0026gcp.ElastigroupNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"spot-network\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInstanceTypesOndemand: pulumi.String(\"n1-standard-1\"),\n\t\t\tInstanceTypesPreemptibles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"n1-standard-1\"),\n\t\t\t\tpulumi.String(\"n1-standard-2\"),\n\t\t\t},\n\t\t\tInstanceTypesCustoms: gcp.ElastigroupInstanceTypesCustomArray{\n\t\t\t\t\u0026gcp.ElastigroupInstanceTypesCustomArgs{\n\t\t\t\t\tVcpu:      pulumi.Int(2),\n\t\t\t\t\tMemoryGib: pulumi.Int(7),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSubnets: gcp.ElastigroupSubnetArray{\n\t\t\t\t\u0026gcp.ElastigroupSubnetArgs{\n\t\t\t\t\tRegion: pulumi.String(\"asia-east1\"),\n\t\t\t\t\tSubnetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScalingUpPolicies: gcp.ElastigroupScalingUpPolicyArray{\n\t\t\t\t\u0026gcp.ElastigroupScalingUpPolicyArgs{\n\t\t\t\t\tPolicyName:        pulumi.String(\"scale_up_1\"),\n\t\t\t\t\tSource:            pulumi.String(\"stackdriver\"),\n\t\t\t\t\tMetricName:        pulumi.String(\"instance/disk/read_ops_count\"),\n\t\t\t\t\tNamespace:         pulumi.String(\"compute\"),\n\t\t\t\t\tStatistic:         pulumi.String(\"average\"),\n\t\t\t\t\tUnit:              pulumi.String(\"percent\"),\n\t\t\t\t\tThreshold:         pulumi.Float64(10000),\n\t\t\t\t\tPeriod:            pulumi.Int(300),\n\t\t\t\t\tCooldown:          pulumi.Int(300),\n\t\t\t\t\tOperator:          pulumi.String(\"gte\"),\n\t\t\t\t\tEvaluationPeriods: pulumi.Int(1),\n\t\t\t\t\tActionType:        pulumi.String(\"adjustment\"),\n\t\t\t\t\tAdjustment:        pulumi.Int(1),\n\t\t\t\t\tDimensions: gcp.ElastigroupScalingUpPolicyDimensionArray{\n\t\t\t\t\t\t\u0026gcp.ElastigroupScalingUpPolicyDimensionArgs{\n\t\t\t\t\t\t\tName:  pulumi.String(\"storage_type\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.gcp.Elastigroup;\nimport com.pulumi.spotinst.gcp.ElastigroupArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupRevertToPreemptibleArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupLabelArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupBackendServiceArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupBackendServiceBackendBalancingArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupDiskArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupShieldedInstanceConfigArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupNetworkInterfaceArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupInstanceTypesCustomArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupSubnetArgs;\nimport com.pulumi.spotinst.gcp.inputs.ElastigroupScalingUpPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Elastigroup(\"example\", ElastigroupArgs.builder()\n            .name(\"example-gcp\")\n            .description(\"spotinst gcp group\")\n            .serviceAccount(\"example@myProject.iam.gservicecct.com\")\n            .startupScript(\"\")\n            .instanceNamePrefix(\"test-123a\")\n            .minCpuPlatform(\"Intel Sandy Bridge\")\n            .minSize(0)\n            .maxSize(1)\n            .desiredCapacity(1)\n            .availabilityZones(            \n                \"asia-east1-c\",\n                \"us-central1-a\")\n            .preferredAvailabilityZones(\"us-central1-a\")\n            .preemptiblePercentage(50)\n            .revertToPreemptibles(ElastigroupRevertToPreemptibleArgs.builder()\n                .performAt(\"timeWindow\")\n                .build())\n            .optimizationWindows(\"Mon:01:00-Mon:03:00\")\n            .fallbackToOndemand(true)\n            .drainingTimeout(180)\n            .provisioningModel(\"SPOT\")\n            .shouldUtilizeCommitments(true)\n            .labels(ElastigroupLabelArgs.builder()\n                .key(\"test_key\")\n                .value(\"test_value\")\n                .build())\n            .tags(            \n                \"http\",\n                \"https\")\n            .backendServices(ElastigroupBackendServiceArgs.builder()\n                .serviceName(\"spotinst-elb-backend-service\")\n                .locationType(\"regional\")\n                .scheme(\"INTERNAL\")\n                .namedPorts(ElastigroupBackendServiceNamedPortArgs.builder()\n                    .name(\"port-name\")\n                    .ports(                    \n                        \"8000\",\n                        \"6000\")\n                    .build())\n                .backendBalancing(ElastigroupBackendServiceBackendBalancingArgs.builder()\n                    .backendBalancingMode(\"RATE\")\n                    .maxRatePerInstance(500)\n                    .build())\n                .build())\n            .disks(ElastigroupDiskArgs.builder()\n                .deviceName(\"device\")\n                .mode(\"READ_WRITE\")\n                .type(\"PERSISTENT\")\n                .autoDelete(true)\n                .boot(true)\n                .interface_(\"SCSI\")\n                .initializeParams(ElastigroupDiskInitializeParamArgs.builder()\n                    .diskSizeGb(\"10\")\n                    .diskType(\"pd-standard\")\n                    .sourceImage(\"\")\n                    .build())\n                .build())\n            .shieldedInstanceConfig(ElastigroupShieldedInstanceConfigArgs.builder()\n                .enableSecureBoot(true)\n                .enableIntegrityMonitoring(false)\n                .build())\n            .networkInterfaces(ElastigroupNetworkInterfaceArgs.builder()\n                .network(\"spot-network\")\n                .build())\n            .instanceTypesOndemand(\"n1-standard-1\")\n            .instanceTypesPreemptibles(            \n                \"n1-standard-1\",\n                \"n1-standard-2\")\n            .instanceTypesCustoms(ElastigroupInstanceTypesCustomArgs.builder()\n                .vcpu(2)\n                .memoryGib(7)\n                .build())\n            .subnets(ElastigroupSubnetArgs.builder()\n                .region(\"asia-east1\")\n                .subnetNames(\"default\")\n                .build())\n            .scalingUpPolicies(ElastigroupScalingUpPolicyArgs.builder()\n                .policyName(\"scale_up_1\")\n                .source(\"stackdriver\")\n                .metricName(\"instance/disk/read_ops_count\")\n                .namespace(\"compute\")\n                .statistic(\"average\")\n                .unit(\"percent\")\n                .threshold(10000.0)\n                .period(300)\n                .cooldown(300)\n                .operator(\"gte\")\n                .evaluationPeriods(1)\n                .actionType(\"adjustment\")\n                .adjustment(1)\n                .dimensions(ElastigroupScalingUpPolicyDimensionArgs.builder()\n                    .name(\"storage_type\")\n                    .value(\"pd-ssd\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:gcp:Elastigroup\n    properties:\n      name: example-gcp\n      description: spotinst gcp group\n      serviceAccount: example@myProject.iam.gservicecct.com\n      startupScript: \"\"\n      instanceNamePrefix: test-123a\n      minCpuPlatform: Intel Sandy Bridge\n      minSize: 0\n      maxSize: 1\n      desiredCapacity: 1\n      availabilityZones:\n        - asia-east1-c\n        - us-central1-a\n      preferredAvailabilityZones:\n        - us-central1-a\n      preemptiblePercentage: 50\n      revertToPreemptibles:\n        - performAt: timeWindow\n      optimizationWindows:\n        - Mon:01:00-Mon:03:00\n      fallbackToOndemand: true\n      drainingTimeout: 180\n      provisioningModel: SPOT\n      shouldUtilizeCommitments: true\n      labels:\n        - key: test_key\n          value: test_value\n      tags:\n        - http\n        - https\n      backendServices:\n        - serviceName: spotinst-elb-backend-service\n          locationType: regional\n          scheme: INTERNAL\n          namedPorts:\n            - name: port-name\n              ports:\n                - 8000\n                - 6000\n          backendBalancing:\n            backendBalancingMode: RATE\n            maxRatePerInstance: 500\n      disks:\n        - deviceName: device\n          mode: READ_WRITE\n          type: PERSISTENT\n          autoDelete: true\n          boot: true\n          interface: SCSI\n          initializeParams:\n            - diskSizeGb: 10\n              diskType: pd-standard\n              sourceImage: \"\"\n      shieldedInstanceConfig:\n        enableSecureBoot: true\n        enableIntegrityMonitoring: false\n      networkInterfaces:\n        - network: spot-network\n      instanceTypesOndemand: n1-standard-1\n      instanceTypesPreemptibles:\n        - n1-standard-1\n        - n1-standard-2\n      instanceTypesCustoms:\n        - vcpu: 2\n          memoryGib: 7\n      subnets:\n        - region: asia-east1\n          subnetNames:\n            - default\n      scalingUpPolicies:\n        - policyName: scale_up_1\n          source: stackdriver\n          metricName: instance/disk/read_ops_count\n          namespace: compute\n          statistic: average\n          unit: percent\n          threshold: 10000\n          period: 300\n          cooldown: 300\n          operator: gte\n          evaluationPeriods: 1\n          actionType: adjustment\n          adjustment: 1\n          dimensions:\n            - name: storage_type\n              value: pd-ssd\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"autoHealing":{"type":"boolean"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"List of availability zones for the group.\n","deprecationMessage":"This field will soon be handled by Region in Subnets"},"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupBackendService:ElastigroupBackendService"}},"description":{"type":"string","description":"The region your GCP group will be created in.\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"disks":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupDisk:ElastigroupDisk"}},"drainingTimeout":{"type":"integer","description":"Time (seconds) the instance is allowed to run after it is detached from the group. This is to allow the instance time to drain all the current TCP connections before terminating it.\n"},"fallbackToOndemand":{"type":"boolean","description":"Activate fallback-to-on-demand. When provisioning an instance, if no Preemptible market is available, fallback-to-on-demand will provision an On-Demand instance to maintain the group capacity.\n"},"gpu":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupGpu:ElastigroupGpu"}},"healthCheckGracePeriod":{"type":"integer"},"healthCheckType":{"type":"string"},"instanceNamePrefix":{"type":"string","description":"Set an instance name prefix to be used for all launched instances and their boot disk. The prefix value should comply with the following limitations: \n* A maximal length of 25 characters.\n* The first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen.\n"},"instanceTypesCustoms":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom"},"description":"Defines a set of custom instance types. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesPreemptible \" pulumi-lang-dotnet=\" InstanceTypesPreemptible \" pulumi-lang-go=\" instanceTypesPreemptible \" pulumi-lang-python=\" instance_types_preemptible \" pulumi-lang-yaml=\" instanceTypesPreemptible \" pulumi-lang-java=\" instanceTypesPreemptible \"\u003e instance_types_preemptible \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" instanceTypesOndemand \" pulumi-lang-dotnet=\" InstanceTypesOndemand \" pulumi-lang-go=\" instanceTypesOndemand \" pulumi-lang-python=\" instance_types_ondemand \" pulumi-lang-yaml=\" instanceTypesOndemand \" pulumi-lang-java=\" instanceTypesOndemand \"\u003e instance_types_ondemand \u003c/span\u003eare not set.\n* `vCPU` - (Optional) The number of vCPUs in the custom instance type. GCP has a number of limitations on accepted vCPU values. For more information, see the GCP documentation (here.)[https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#specifications]\n"},"instanceTypesOndemand":{"type":"string","description":"The regular VM instance type to use for mixed-type groups and when falling back to on-demand. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesPreemptible \" pulumi-lang-dotnet=\" InstanceTypesPreemptible \" pulumi-lang-go=\" instanceTypesPreemptible \" pulumi-lang-python=\" instance_types_preemptible \" pulumi-lang-yaml=\" instanceTypesPreemptible \" pulumi-lang-java=\" instanceTypesPreemptible \"\u003e instance_types_preemptible \u003c/span\u003eis not set.\n"},"instanceTypesPreemptibles":{"type":"array","items":{"type":"string"},"description":"The preemptible VMs instance type. To maximize cost savings and market availability, select as many types as possible. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesOndemand \" pulumi-lang-dotnet=\" InstanceTypesOndemand \" pulumi-lang-go=\" instanceTypesOndemand \" pulumi-lang-python=\" instance_types_ondemand \" pulumi-lang-yaml=\" instanceTypesOndemand \" pulumi-lang-java=\" instanceTypesOndemand \"\u003e instance_types_ondemand \u003c/span\u003eis not set.\n"},"integrationDockerSwarm":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationGke":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationGke:ElastigroupIntegrationGke"},"ipForwarding":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupLabel:ElastigroupLabel"},"description":"Array of objects with key-value pairs.\n"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupMetadata:ElastigroupMetadata"},"description":"Array of objects with key-value pairs.\n"},"minCpuPlatform":{"type":"string","description":"Select a minimum CPU platform for the compute instance.\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"name":{"type":"string","description":"The group name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"ondemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"},"description":"Set time window to perform the revert to preemptible. Time windows must be at least 120 minutes. Format: DayInWeek:HH-DayInWeek:HH. Required when strategy.revertToPreemptible.performAt is 'timeWindow'.\n"},"preemptiblePercentage":{"type":"integer","description":"Percentage of Preemptible VMs to spin up from the \u003cspan pulumi-lang-nodejs=\"\"desiredCapacity\"\" pulumi-lang-dotnet=\"\"DesiredCapacity\"\" pulumi-lang-go=\"\"desiredCapacity\"\" pulumi-lang-python=\"\"desired_capacity\"\" pulumi-lang-yaml=\"\"desiredCapacity\"\" pulumi-lang-java=\"\"desiredCapacity\"\"\u003e\"desired_capacity\"\u003c/span\u003e.\n"},"preferredAvailabilityZones":{"type":"array","items":{"type":"string"},"description":"prioritize availability zones when launching instances for the group. Must be a sublist of \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e.\n"},"provisioningModel":{"type":"string","description":"Valid values: \"SPOT\", \"PREEMPTIBLE\". Define the provisioning model of the launched instances. Default value is \"PREEMPTIBLE\".\n"},"revertToPreemptibles":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible"},"description":"Setting for revert to preemptible option.\n"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScheduledTask:ElastigroupScheduledTask"}},"serviceAccount":{"type":"string","description":"The email of the service account in which the group instances will be launched.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gcp/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig","description":"You can use secure boot when you launch VMs using Elastigroup. This helps you comply with your security policies. In the instance configuration, use ‘secureBootEnabled’ set to True to enforce UEFI with secure boot. Elastigroup provisions VMs with secure boot, as long as the images supports UEFI.\n"},"shouldUtilizeCommitments":{"type":"boolean","description":"Enable committed use discounts utilization.\n"},"shutdownScript":{"type":"string","description":"The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: [Shutdown Script](https://api.spotinst.com/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n"},"startupScript":{"type":"string","description":"Create and run your own startup scripts on your virtual machines to perform automated tasks every time your instance boots up.\n"},"subnets":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupSubnet:ElastigroupSubnet"},"description":"A list of regions and subnets.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags to mark created instances.\n"},"unhealthyDuration":{"type":"integer"}},"required":["desiredCapacity","maxSize","minSize","name"],"inputProperties":{"autoHealing":{"type":"boolean"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"List of availability zones for the group.\n","deprecationMessage":"This field will soon be handled by Region in Subnets"},"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupBackendService:ElastigroupBackendService"}},"description":{"type":"string","description":"The region your GCP group will be created in.\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"disks":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupDisk:ElastigroupDisk"}},"drainingTimeout":{"type":"integer","description":"Time (seconds) the instance is allowed to run after it is detached from the group. This is to allow the instance time to drain all the current TCP connections before terminating it.\n"},"fallbackToOndemand":{"type":"boolean","description":"Activate fallback-to-on-demand. When provisioning an instance, if no Preemptible market is available, fallback-to-on-demand will provision an On-Demand instance to maintain the group capacity.\n"},"gpu":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupGpu:ElastigroupGpu"}},"healthCheckGracePeriod":{"type":"integer"},"healthCheckType":{"type":"string"},"instanceNamePrefix":{"type":"string","description":"Set an instance name prefix to be used for all launched instances and their boot disk. The prefix value should comply with the following limitations: \n* A maximal length of 25 characters.\n* The first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen.\n"},"instanceTypesCustoms":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom"},"description":"Defines a set of custom instance types. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesPreemptible \" pulumi-lang-dotnet=\" InstanceTypesPreemptible \" pulumi-lang-go=\" instanceTypesPreemptible \" pulumi-lang-python=\" instance_types_preemptible \" pulumi-lang-yaml=\" instanceTypesPreemptible \" pulumi-lang-java=\" instanceTypesPreemptible \"\u003e instance_types_preemptible \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" instanceTypesOndemand \" pulumi-lang-dotnet=\" InstanceTypesOndemand \" pulumi-lang-go=\" instanceTypesOndemand \" pulumi-lang-python=\" instance_types_ondemand \" pulumi-lang-yaml=\" instanceTypesOndemand \" pulumi-lang-java=\" instanceTypesOndemand \"\u003e instance_types_ondemand \u003c/span\u003eare not set.\n* `vCPU` - (Optional) The number of vCPUs in the custom instance type. GCP has a number of limitations on accepted vCPU values. For more information, see the GCP documentation (here.)[https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#specifications]\n"},"instanceTypesOndemand":{"type":"string","description":"The regular VM instance type to use for mixed-type groups and when falling back to on-demand. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesPreemptible \" pulumi-lang-dotnet=\" InstanceTypesPreemptible \" pulumi-lang-go=\" instanceTypesPreemptible \" pulumi-lang-python=\" instance_types_preemptible \" pulumi-lang-yaml=\" instanceTypesPreemptible \" pulumi-lang-java=\" instanceTypesPreemptible \"\u003e instance_types_preemptible \u003c/span\u003eis not set.\n"},"instanceTypesPreemptibles":{"type":"array","items":{"type":"string"},"description":"The preemptible VMs instance type. To maximize cost savings and market availability, select as many types as possible. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesOndemand \" pulumi-lang-dotnet=\" InstanceTypesOndemand \" pulumi-lang-go=\" instanceTypesOndemand \" pulumi-lang-python=\" instance_types_ondemand \" pulumi-lang-yaml=\" instanceTypesOndemand \" pulumi-lang-java=\" instanceTypesOndemand \"\u003e instance_types_ondemand \u003c/span\u003eis not set.\n"},"integrationDockerSwarm":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationGke":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationGke:ElastigroupIntegrationGke"},"ipForwarding":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupLabel:ElastigroupLabel"},"description":"Array of objects with key-value pairs.\n"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupMetadata:ElastigroupMetadata"},"description":"Array of objects with key-value pairs.\n"},"minCpuPlatform":{"type":"string","description":"Select a minimum CPU platform for the compute instance.\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"name":{"type":"string","description":"The group name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"ondemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"},"description":"Set time window to perform the revert to preemptible. Time windows must be at least 120 minutes. Format: DayInWeek:HH-DayInWeek:HH. Required when strategy.revertToPreemptible.performAt is 'timeWindow'.\n"},"preemptiblePercentage":{"type":"integer","description":"Percentage of Preemptible VMs to spin up from the \u003cspan pulumi-lang-nodejs=\"\"desiredCapacity\"\" pulumi-lang-dotnet=\"\"DesiredCapacity\"\" pulumi-lang-go=\"\"desiredCapacity\"\" pulumi-lang-python=\"\"desired_capacity\"\" pulumi-lang-yaml=\"\"desiredCapacity\"\" pulumi-lang-java=\"\"desiredCapacity\"\"\u003e\"desired_capacity\"\u003c/span\u003e.\n"},"preferredAvailabilityZones":{"type":"array","items":{"type":"string"},"description":"prioritize availability zones when launching instances for the group. Must be a sublist of \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e.\n"},"provisioningModel":{"type":"string","description":"Valid values: \"SPOT\", \"PREEMPTIBLE\". Define the provisioning model of the launched instances. Default value is \"PREEMPTIBLE\".\n"},"revertToPreemptibles":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible"},"description":"Setting for revert to preemptible option.\n"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScheduledTask:ElastigroupScheduledTask"}},"serviceAccount":{"type":"string","description":"The email of the service account in which the group instances will be launched.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gcp/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig","description":"You can use secure boot when you launch VMs using Elastigroup. This helps you comply with your security policies. In the instance configuration, use ‘secureBootEnabled’ set to True to enforce UEFI with secure boot. Elastigroup provisions VMs with secure boot, as long as the images supports UEFI.\n"},"shouldUtilizeCommitments":{"type":"boolean","description":"Enable committed use discounts utilization.\n"},"shutdownScript":{"type":"string","description":"The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: [Shutdown Script](https://api.spotinst.com/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n"},"startupScript":{"type":"string","description":"Create and run your own startup scripts on your virtual machines to perform automated tasks every time your instance boots up.\n"},"subnets":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupSubnet:ElastigroupSubnet"},"description":"A list of regions and subnets.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags to mark created instances.\n"},"unhealthyDuration":{"type":"integer"}},"requiredInputs":["desiredCapacity"],"stateInputs":{"description":"Input properties used for looking up and filtering Elastigroup resources.\n","properties":{"autoHealing":{"type":"boolean"},"availabilityZones":{"type":"array","items":{"type":"string"},"description":"List of availability zones for the group.\n","deprecationMessage":"This field will soon be handled by Region in Subnets"},"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupBackendService:ElastigroupBackendService"}},"description":{"type":"string","description":"The region your GCP group will be created in.\n"},"desiredCapacity":{"type":"integer","description":"The desired number of instances the group should have at any time.\n"},"disks":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupDisk:ElastigroupDisk"}},"drainingTimeout":{"type":"integer","description":"Time (seconds) the instance is allowed to run after it is detached from the group. This is to allow the instance time to drain all the current TCP connections before terminating it.\n"},"fallbackToOndemand":{"type":"boolean","description":"Activate fallback-to-on-demand. When provisioning an instance, if no Preemptible market is available, fallback-to-on-demand will provision an On-Demand instance to maintain the group capacity.\n"},"gpu":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupGpu:ElastigroupGpu"}},"healthCheckGracePeriod":{"type":"integer"},"healthCheckType":{"type":"string"},"instanceNamePrefix":{"type":"string","description":"Set an instance name prefix to be used for all launched instances and their boot disk. The prefix value should comply with the following limitations: \n* A maximal length of 25 characters.\n* The first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen.\n"},"instanceTypesCustoms":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom"},"description":"Defines a set of custom instance types. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesPreemptible \" pulumi-lang-dotnet=\" InstanceTypesPreemptible \" pulumi-lang-go=\" instanceTypesPreemptible \" pulumi-lang-python=\" instance_types_preemptible \" pulumi-lang-yaml=\" instanceTypesPreemptible \" pulumi-lang-java=\" instanceTypesPreemptible \"\u003e instance_types_preemptible \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" instanceTypesOndemand \" pulumi-lang-dotnet=\" InstanceTypesOndemand \" pulumi-lang-go=\" instanceTypesOndemand \" pulumi-lang-python=\" instance_types_ondemand \" pulumi-lang-yaml=\" instanceTypesOndemand \" pulumi-lang-java=\" instanceTypesOndemand \"\u003e instance_types_ondemand \u003c/span\u003eare not set.\n* `vCPU` - (Optional) The number of vCPUs in the custom instance type. GCP has a number of limitations on accepted vCPU values. For more information, see the GCP documentation (here.)[https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#specifications]\n"},"instanceTypesOndemand":{"type":"string","description":"The regular VM instance type to use for mixed-type groups and when falling back to on-demand. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesPreemptible \" pulumi-lang-dotnet=\" InstanceTypesPreemptible \" pulumi-lang-go=\" instanceTypesPreemptible \" pulumi-lang-python=\" instance_types_preemptible \" pulumi-lang-yaml=\" instanceTypesPreemptible \" pulumi-lang-java=\" instanceTypesPreemptible \"\u003e instance_types_preemptible \u003c/span\u003eis not set.\n"},"instanceTypesPreemptibles":{"type":"array","items":{"type":"string"},"description":"The preemptible VMs instance type. To maximize cost savings and market availability, select as many types as possible. Required if\u003cspan pulumi-lang-nodejs=\" instanceTypesOndemand \" pulumi-lang-dotnet=\" InstanceTypesOndemand \" pulumi-lang-go=\" instanceTypesOndemand \" pulumi-lang-python=\" instance_types_ondemand \" pulumi-lang-yaml=\" instanceTypesOndemand \" pulumi-lang-java=\" instanceTypesOndemand \"\u003e instance_types_ondemand \u003c/span\u003eis not set.\n"},"integrationDockerSwarm":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationGke":{"$ref":"#/types/spotinst:gcp/ElastigroupIntegrationGke:ElastigroupIntegrationGke"},"ipForwarding":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupLabel:ElastigroupLabel"},"description":"Array of objects with key-value pairs.\n"},"maxSize":{"type":"integer","description":"The maximum number of instances the group should have at any time.\n"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupMetadata:ElastigroupMetadata"},"description":"Array of objects with key-value pairs.\n"},"minCpuPlatform":{"type":"string","description":"Select a minimum CPU platform for the compute instance.\n"},"minSize":{"type":"integer","description":"The minimum number of instances the group should have at any time.\n"},"name":{"type":"string","description":"The group name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"ondemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"},"description":"Set time window to perform the revert to preemptible. Time windows must be at least 120 minutes. Format: DayInWeek:HH-DayInWeek:HH. Required when strategy.revertToPreemptible.performAt is 'timeWindow'.\n"},"preemptiblePercentage":{"type":"integer","description":"Percentage of Preemptible VMs to spin up from the \u003cspan pulumi-lang-nodejs=\"\"desiredCapacity\"\" pulumi-lang-dotnet=\"\"DesiredCapacity\"\" pulumi-lang-go=\"\"desiredCapacity\"\" pulumi-lang-python=\"\"desired_capacity\"\" pulumi-lang-yaml=\"\"desiredCapacity\"\" pulumi-lang-java=\"\"desiredCapacity\"\"\u003e\"desired_capacity\"\u003c/span\u003e.\n"},"preferredAvailabilityZones":{"type":"array","items":{"type":"string"},"description":"prioritize availability zones when launching instances for the group. Must be a sublist of \u003cspan pulumi-lang-nodejs=\"`availabilityZones`\" pulumi-lang-dotnet=\"`AvailabilityZones`\" pulumi-lang-go=\"`availabilityZones`\" pulumi-lang-python=\"`availability_zones`\" pulumi-lang-yaml=\"`availabilityZones`\" pulumi-lang-java=\"`availabilityZones`\"\u003e`availability_zones`\u003c/span\u003e.\n"},"provisioningModel":{"type":"string","description":"Valid values: \"SPOT\", \"PREEMPTIBLE\". Define the provisioning model of the launched instances. Default value is \"PREEMPTIBLE\".\n"},"revertToPreemptibles":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible"},"description":"Setting for revert to preemptible option.\n"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupScheduledTask:ElastigroupScheduledTask"}},"serviceAccount":{"type":"string","description":"The email of the service account in which the group instances will be launched.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gcp/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig","description":"You can use secure boot when you launch VMs using Elastigroup. This helps you comply with your security policies. In the instance configuration, use ‘secureBootEnabled’ set to True to enforce UEFI with secure boot. Elastigroup provisions VMs with secure boot, as long as the images supports UEFI.\n"},"shouldUtilizeCommitments":{"type":"boolean","description":"Enable committed use discounts utilization.\n"},"shutdownScript":{"type":"string","description":"The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: [Shutdown Script](https://api.spotinst.com/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n"},"startupScript":{"type":"string","description":"Create and run your own startup scripts on your virtual machines to perform automated tasks every time your instance boots up.\n"},"subnets":{"type":"array","items":{"$ref":"#/types/spotinst:gcp/ElastigroupSubnet:ElastigroupSubnet"},"description":"A list of regions and subnets.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags to mark created instances.\n"},"unhealthyDuration":{"type":"integer"}},"type":"object"}},"spotinst:gke/elastigroup:Elastigroup":{"description":"Provides a Spotinst Elastigroup GKE resource. Please see [Importing a GKE cluster](https://api.spotinst.com/elastigroup-for-google-cloud/tutorials/import-a-gke-cluster-as-an-elastigroup/) for detailed information.\n\n\n## Example Usage\n\nA\u003cspan pulumi-lang-nodejs=\" spotinst.gke.Elastigroup \" pulumi-lang-dotnet=\" spotinst.gke.Elastigroup \" pulumi-lang-go=\" gke.Elastigroup \" pulumi-lang-python=\" gke.Elastigroup \" pulumi-lang-yaml=\" spotinst.gke.Elastigroup \" pulumi-lang-java=\" spotinst.gke.Elastigroup \"\u003e spotinst.gke.Elastigroup \u003c/span\u003esupports all of the fields defined in spotinst_elastigroup_gcp. \n\nThere are two main differences:\n\n* you must include \u003cspan pulumi-lang-nodejs=\"`clusterZoneName`\" pulumi-lang-dotnet=\"`ClusterZoneName`\" pulumi-lang-go=\"`clusterZoneName`\" pulumi-lang-python=\"`cluster_zone_name`\" pulumi-lang-yaml=\"`clusterZoneName`\" pulumi-lang-java=\"`clusterZoneName`\"\u003e`cluster_zone_name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\"\u003e`cluster_id`\u003c/span\u003e\n* a handful of parameters are created remotely and will not appear in the diff. A complete list can be found below.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example_gke_elastigroup = new spotinst.gke.Elastigroup(\"example-gke-elastigroup\", {\n    name: \"example-gke\",\n    clusterZoneName: \"us-central1-a\",\n    nodeImage: \"COS\",\n    maxSize: 5,\n    minSize: 1,\n    desiredCapacity: 3,\n    instanceTypesOndemand: \"n1-standard-1\",\n    instanceTypesPreemptibles: [\n        \"n1-standard-1\",\n        \"n1-standard-2\",\n    ],\n    preemptiblePercentage: 100,\n    integrationGke: {\n        location: \"us-central1-a\",\n        clusterId: \"example-cluster-id\",\n        autoscaleIsEnabled: true,\n        autoscaleIsAutoConfig: false,\n        autoscaleCooldown: 300,\n        autoscaleHeadroom: {\n            cpuPerUnit: 1024,\n            memoryPerUnit: 512,\n            numOfUnits: 2,\n        },\n        autoscaleDown: {\n            evaluationPeriods: 300,\n        },\n        autoscaleLabels: [{\n            key: \"label_key\",\n            value: \"label_value\",\n        }],\n    },\n    backendServices: [{\n        serviceName: \"backend-service\",\n        locationType: \"global\",\n        namedPorts: [{\n            name: \"http\",\n            ports: [\n                \"80\",\n                \"8080\",\n            ],\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample_gke_elastigroup = spotinst.gke.Elastigroup(\"example-gke-elastigroup\",\n    name=\"example-gke\",\n    cluster_zone_name=\"us-central1-a\",\n    node_image=\"COS\",\n    max_size=5,\n    min_size=1,\n    desired_capacity=3,\n    instance_types_ondemand=\"n1-standard-1\",\n    instance_types_preemptibles=[\n        \"n1-standard-1\",\n        \"n1-standard-2\",\n    ],\n    preemptible_percentage=100,\n    integration_gke={\n        \"location\": \"us-central1-a\",\n        \"cluster_id\": \"example-cluster-id\",\n        \"autoscale_is_enabled\": True,\n        \"autoscale_is_auto_config\": False,\n        \"autoscale_cooldown\": 300,\n        \"autoscale_headroom\": {\n            \"cpu_per_unit\": 1024,\n            \"memory_per_unit\": 512,\n            \"num_of_units\": 2,\n        },\n        \"autoscale_down\": {\n            \"evaluation_periods\": 300,\n        },\n        \"autoscale_labels\": [{\n            \"key\": \"label_key\",\n            \"value\": \"label_value\",\n        }],\n    },\n    backend_services=[{\n        \"service_name\": \"backend-service\",\n        \"location_type\": \"global\",\n        \"named_ports\": [{\n            \"name\": \"http\",\n            \"ports\": [\n                \"80\",\n                \"8080\",\n            ],\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_gke_elastigroup = new SpotInst.Gke.Elastigroup(\"example-gke-elastigroup\", new()\n    {\n        Name = \"example-gke\",\n        ClusterZoneName = \"us-central1-a\",\n        NodeImage = \"COS\",\n        MaxSize = 5,\n        MinSize = 1,\n        DesiredCapacity = 3,\n        InstanceTypesOndemand = \"n1-standard-1\",\n        InstanceTypesPreemptibles = new[]\n        {\n            \"n1-standard-1\",\n            \"n1-standard-2\",\n        },\n        PreemptiblePercentage = 100,\n        IntegrationGke = new SpotInst.Gke.Inputs.ElastigroupIntegrationGkeArgs\n        {\n            Location = \"us-central1-a\",\n            ClusterId = \"example-cluster-id\",\n            AutoscaleIsEnabled = true,\n            AutoscaleIsAutoConfig = false,\n            AutoscaleCooldown = 300,\n            AutoscaleHeadroom = new SpotInst.Gke.Inputs.ElastigroupIntegrationGkeAutoscaleHeadroomArgs\n            {\n                CpuPerUnit = 1024,\n                MemoryPerUnit = 512,\n                NumOfUnits = 2,\n            },\n            AutoscaleDown = new SpotInst.Gke.Inputs.ElastigroupIntegrationGkeAutoscaleDownArgs\n            {\n                EvaluationPeriods = 300,\n            },\n            AutoscaleLabels = new[]\n            {\n                new SpotInst.Gke.Inputs.ElastigroupIntegrationGkeAutoscaleLabelArgs\n                {\n                    Key = \"label_key\",\n                    Value = \"label_value\",\n                },\n            },\n        },\n        BackendServices = new[]\n        {\n            new SpotInst.Gke.Inputs.ElastigroupBackendServiceArgs\n            {\n                ServiceName = \"backend-service\",\n                LocationType = \"global\",\n                NamedPorts = new[]\n                {\n                    new SpotInst.Gke.Inputs.ElastigroupBackendServiceNamedPortArgs\n                    {\n                        Name = \"http\",\n                        Ports = new[]\n                        {\n                            \"80\",\n                            \"8080\",\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/gke\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gke.NewElastigroup(ctx, \"example-gke-elastigroup\", \u0026gke.ElastigroupArgs{\n\t\t\tName:                  pulumi.String(\"example-gke\"),\n\t\t\tClusterZoneName:       pulumi.String(\"us-central1-a\"),\n\t\t\tNodeImage:             pulumi.String(\"COS\"),\n\t\t\tMaxSize:               pulumi.Int(5),\n\t\t\tMinSize:               pulumi.Int(1),\n\t\t\tDesiredCapacity:       pulumi.Int(3),\n\t\t\tInstanceTypesOndemand: pulumi.String(\"n1-standard-1\"),\n\t\t\tInstanceTypesPreemptibles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"n1-standard-1\"),\n\t\t\t\tpulumi.String(\"n1-standard-2\"),\n\t\t\t},\n\t\t\tPreemptiblePercentage: pulumi.Int(100),\n\t\t\tIntegrationGke: \u0026gke.ElastigroupIntegrationGkeArgs{\n\t\t\t\tLocation:              pulumi.String(\"us-central1-a\"),\n\t\t\t\tClusterId:             pulumi.String(\"example-cluster-id\"),\n\t\t\t\tAutoscaleIsEnabled:    pulumi.Bool(true),\n\t\t\t\tAutoscaleIsAutoConfig: pulumi.Bool(false),\n\t\t\t\tAutoscaleCooldown:     pulumi.Int(300),\n\t\t\t\tAutoscaleHeadroom: \u0026gke.ElastigroupIntegrationGkeAutoscaleHeadroomArgs{\n\t\t\t\t\tCpuPerUnit:    pulumi.Int(1024),\n\t\t\t\t\tMemoryPerUnit: pulumi.Int(512),\n\t\t\t\t\tNumOfUnits:    pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tAutoscaleDown: \u0026gke.ElastigroupIntegrationGkeAutoscaleDownArgs{\n\t\t\t\t\tEvaluationPeriods: pulumi.Int(300),\n\t\t\t\t},\n\t\t\t\tAutoscaleLabels: gke.ElastigroupIntegrationGkeAutoscaleLabelArray{\n\t\t\t\t\t\u0026gke.ElastigroupIntegrationGkeAutoscaleLabelArgs{\n\t\t\t\t\t\tKey:   pulumi.String(\"label_key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"label_value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackendServices: gke.ElastigroupBackendServiceArray{\n\t\t\t\t\u0026gke.ElastigroupBackendServiceArgs{\n\t\t\t\t\tServiceName:  pulumi.String(\"backend-service\"),\n\t\t\t\t\tLocationType: pulumi.String(\"global\"),\n\t\t\t\t\tNamedPorts: gke.ElastigroupBackendServiceNamedPortArray{\n\t\t\t\t\t\t\u0026gke.ElastigroupBackendServiceNamedPortArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"http\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.gke.Elastigroup;\nimport com.pulumi.spotinst.gke.ElastigroupArgs;\nimport com.pulumi.spotinst.gke.inputs.ElastigroupIntegrationGkeArgs;\nimport com.pulumi.spotinst.gke.inputs.ElastigroupIntegrationGkeAutoscaleHeadroomArgs;\nimport com.pulumi.spotinst.gke.inputs.ElastigroupIntegrationGkeAutoscaleDownArgs;\nimport com.pulumi.spotinst.gke.inputs.ElastigroupBackendServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example_gke_elastigroup = new Elastigroup(\"example-gke-elastigroup\", ElastigroupArgs.builder()\n            .name(\"example-gke\")\n            .clusterZoneName(\"us-central1-a\")\n            .nodeImage(\"COS\")\n            .maxSize(5)\n            .minSize(1)\n            .desiredCapacity(3)\n            .instanceTypesOndemand(\"n1-standard-1\")\n            .instanceTypesPreemptibles(            \n                \"n1-standard-1\",\n                \"n1-standard-2\")\n            .preemptiblePercentage(100)\n            .integrationGke(ElastigroupIntegrationGkeArgs.builder()\n                .location(\"us-central1-a\")\n                .clusterId(\"example-cluster-id\")\n                .autoscaleIsEnabled(true)\n                .autoscaleIsAutoConfig(false)\n                .autoscaleCooldown(300)\n                .autoscaleHeadroom(ElastigroupIntegrationGkeAutoscaleHeadroomArgs.builder()\n                    .cpuPerUnit(1024)\n                    .memoryPerUnit(512)\n                    .numOfUnits(2)\n                    .build())\n                .autoscaleDown(ElastigroupIntegrationGkeAutoscaleDownArgs.builder()\n                    .evaluationPeriods(300)\n                    .build())\n                .autoscaleLabels(ElastigroupIntegrationGkeAutoscaleLabelArgs.builder()\n                    .key(\"label_key\")\n                    .value(\"label_value\")\n                    .build())\n                .build())\n            .backendServices(ElastigroupBackendServiceArgs.builder()\n                .serviceName(\"backend-service\")\n                .locationType(\"global\")\n                .namedPorts(ElastigroupBackendServiceNamedPortArgs.builder()\n                    .name(\"http\")\n                    .ports(                    \n                        \"80\",\n                        \"8080\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-gke-elastigroup:\n    type: spotinst:gke:Elastigroup\n    properties:\n      name: example-gke\n      clusterZoneName: us-central1-a\n      nodeImage: COS\n      maxSize: 5\n      minSize: 1\n      desiredCapacity: 3 # --- INSTANCE TYPES --------------------------------\n      instanceTypesOndemand: n1-standard-1\n      instanceTypesPreemptibles:\n        - n1-standard-1\n        - n1-standard-2\n      preemptiblePercentage: 100 # ---------------------------------\n      integrationGke:\n        location: us-central1-a\n        clusterId: example-cluster-id\n        autoscaleIsEnabled: true\n        autoscaleIsAutoConfig: false\n        autoscaleCooldown: 300\n        autoscaleHeadroom:\n          cpuPerUnit: 1024\n          memoryPerUnit: 512\n          numOfUnits: 2\n        autoscaleDown:\n          evaluationPeriods: 300\n        autoscaleLabels:\n          - key: label_key\n            value: label_value\n      backendServices:\n        - serviceName: backend-service\n          locationType: global\n          namedPorts:\n            - name: http\n              ports:\n                - 80\n                - 8080\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupBackendService:ElastigroupBackendService"}},"clusterId":{"type":"string","deprecationMessage":"Please define\u003cspan pulumi-lang-nodejs=\" clusterId \" pulumi-lang-dotnet=\" ClusterId \" pulumi-lang-go=\" clusterId \" pulumi-lang-python=\" cluster_id \" pulumi-lang-yaml=\" clusterId \" pulumi-lang-java=\" clusterId \"\u003e cluster_id \u003c/span\u003eunder integration_gke"},"clusterZoneName":{"type":"string"},"desiredCapacity":{"type":"integer"},"disks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupDisk:ElastigroupDisk"}},"drainingTimeout":{"type":"integer"},"fallbackToOndemand":{"type":"boolean"},"gpu":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupGpu:ElastigroupGpu"}},"instanceNamePrefix":{"type":"string"},"instanceTypesCustoms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom"}},"instanceTypesOndemand":{"type":"string"},"instanceTypesPreemptibles":{"type":"array","items":{"type":"string"}},"integrationDockerSwarm":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationGke":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationGke:ElastigroupIntegrationGke"},"ipForwarding":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupLabel:ElastigroupLabel"}},"maxSize":{"type":"integer"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupMetadata:ElastigroupMetadata"}},"minCpuPlatform":{"type":"string"},"minSize":{"type":"integer"},"name":{"type":"string"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"nodeImage":{"type":"string"},"ondemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"}},"preemptiblePercentage":{"type":"integer"},"provisioningModel":{"type":"string"},"revertToPreemptibles":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible"}},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"serviceAccount":{"type":"string"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig"},"shouldUtilizeCommitments":{"type":"boolean"},"shutdownScript":{"type":"string"},"startupScript":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["clusterZoneName","desiredCapacity","maxSize","minSize","name"],"inputProperties":{"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupBackendService:ElastigroupBackendService"}},"clusterId":{"type":"string","deprecationMessage":"Please define\u003cspan pulumi-lang-nodejs=\" clusterId \" pulumi-lang-dotnet=\" ClusterId \" pulumi-lang-go=\" clusterId \" pulumi-lang-python=\" cluster_id \" pulumi-lang-yaml=\" clusterId \" pulumi-lang-java=\" clusterId \"\u003e cluster_id \u003c/span\u003eunder integration_gke"},"clusterZoneName":{"type":"string"},"desiredCapacity":{"type":"integer"},"disks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupDisk:ElastigroupDisk"}},"drainingTimeout":{"type":"integer"},"fallbackToOndemand":{"type":"boolean"},"gpu":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupGpu:ElastigroupGpu"}},"instanceNamePrefix":{"type":"string"},"instanceTypesCustoms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom"}},"instanceTypesOndemand":{"type":"string"},"instanceTypesPreemptibles":{"type":"array","items":{"type":"string"}},"integrationDockerSwarm":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationGke":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationGke:ElastigroupIntegrationGke"},"ipForwarding":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupLabel:ElastigroupLabel"}},"maxSize":{"type":"integer"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupMetadata:ElastigroupMetadata"}},"minCpuPlatform":{"type":"string"},"minSize":{"type":"integer"},"name":{"type":"string"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"nodeImage":{"type":"string"},"ondemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"}},"preemptiblePercentage":{"type":"integer"},"provisioningModel":{"type":"string"},"revertToPreemptibles":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible"}},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"serviceAccount":{"type":"string"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig"},"shouldUtilizeCommitments":{"type":"boolean"},"shutdownScript":{"type":"string"},"startupScript":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"requiredInputs":["clusterZoneName","desiredCapacity"],"stateInputs":{"description":"Input properties used for looking up and filtering Elastigroup resources.\n","properties":{"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupBackendService:ElastigroupBackendService"}},"clusterId":{"type":"string","deprecationMessage":"Please define\u003cspan pulumi-lang-nodejs=\" clusterId \" pulumi-lang-dotnet=\" ClusterId \" pulumi-lang-go=\" clusterId \" pulumi-lang-python=\" cluster_id \" pulumi-lang-yaml=\" clusterId \" pulumi-lang-java=\" clusterId \"\u003e cluster_id \u003c/span\u003eunder integration_gke"},"clusterZoneName":{"type":"string"},"desiredCapacity":{"type":"integer"},"disks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupDisk:ElastigroupDisk"}},"drainingTimeout":{"type":"integer"},"fallbackToOndemand":{"type":"boolean"},"gpu":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupGpu:ElastigroupGpu"}},"instanceNamePrefix":{"type":"string"},"instanceTypesCustoms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupInstanceTypesCustom:ElastigroupInstanceTypesCustom"}},"instanceTypesOndemand":{"type":"string"},"instanceTypesPreemptibles":{"type":"array","items":{"type":"string"}},"integrationDockerSwarm":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationDockerSwarm:ElastigroupIntegrationDockerSwarm"},"integrationGke":{"$ref":"#/types/spotinst:gke/ElastigroupIntegrationGke:ElastigroupIntegrationGke"},"ipForwarding":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupLabel:ElastigroupLabel"}},"maxSize":{"type":"integer"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupMetadata:ElastigroupMetadata"}},"minCpuPlatform":{"type":"string"},"minSize":{"type":"integer"},"name":{"type":"string"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupNetworkInterface:ElastigroupNetworkInterface"}},"nodeImage":{"type":"string"},"ondemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"}},"preemptiblePercentage":{"type":"integer"},"provisioningModel":{"type":"string"},"revertToPreemptibles":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupRevertToPreemptible:ElastigroupRevertToPreemptible"}},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingDownPolicy:ElastigroupScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/ElastigroupScalingUpPolicy:ElastigroupScalingUpPolicy"}},"serviceAccount":{"type":"string"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/ElastigroupShieldedInstanceConfig:ElastigroupShieldedInstanceConfig"},"shouldUtilizeCommitments":{"type":"boolean"},"shutdownScript":{"type":"string"},"startupScript":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"type":"object"}},"spotinst:gke/oceanImport:OceanImport":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.gke.OceanImport(\"example\", {\n    clusterName: \"example-cluster-name\",\n    controllerClusterId: \"example-controller-123124\",\n    location: \"us-central1-a\",\n    minSize: 0,\n    maxSize: 2,\n    desiredCapacity: 0,\n    autoUpdates: [{\n        isEnabled: true,\n    }],\n    whitelists: [\n        \"n1-standard-1\",\n        \"n1-standard-2\",\n    ],\n    filters: {\n        excludeFamilies: [\"n2\"],\n        includeFamilies: [\n            \"c2\",\n            \"c3\",\n        ],\n        minMemoryGib: 8,\n        maxMemoryGib: 16,\n        minVcpu: 2,\n        maxVcpu: 16,\n    },\n    backendServices: [{\n        serviceName: \"example-backend-service\",\n        locationType: \"regional\",\n        scheme: \"INTERNAL\",\n        namedPorts: [{\n            name: \"http\",\n            ports: [\n                \"80\",\n                \"8080\",\n            ],\n        }],\n    }],\n    rootVolumeType: \"pd-ssd\",\n    shieldedInstanceConfig: {\n        enableSecureBoot: true,\n        enableIntegrityMonitoring: true,\n    },\n    useAsTemplateOnly: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.gke.OceanImport(\"example\",\n    cluster_name=\"example-cluster-name\",\n    controller_cluster_id=\"example-controller-123124\",\n    location=\"us-central1-a\",\n    min_size=0,\n    max_size=2,\n    desired_capacity=0,\n    auto_updates=[{\n        \"is_enabled\": True,\n    }],\n    whitelists=[\n        \"n1-standard-1\",\n        \"n1-standard-2\",\n    ],\n    filters={\n        \"exclude_families\": [\"n2\"],\n        \"include_families\": [\n            \"c2\",\n            \"c3\",\n        ],\n        \"min_memory_gib\": 8,\n        \"max_memory_gib\": 16,\n        \"min_vcpu\": 2,\n        \"max_vcpu\": 16,\n    },\n    backend_services=[{\n        \"service_name\": \"example-backend-service\",\n        \"location_type\": \"regional\",\n        \"scheme\": \"INTERNAL\",\n        \"named_ports\": [{\n            \"name\": \"http\",\n            \"ports\": [\n                \"80\",\n                \"8080\",\n            ],\n        }],\n    }],\n    root_volume_type=\"pd-ssd\",\n    shielded_instance_config={\n        \"enable_secure_boot\": True,\n        \"enable_integrity_monitoring\": True,\n    },\n    use_as_template_only=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Gke.OceanImport(\"example\", new()\n    {\n        ClusterName = \"example-cluster-name\",\n        ControllerClusterId = \"example-controller-123124\",\n        Location = \"us-central1-a\",\n        MinSize = 0,\n        MaxSize = 2,\n        DesiredCapacity = 0,\n        AutoUpdates = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanImportAutoUpdateArgs\n            {\n                IsEnabled = true,\n            },\n        },\n        Whitelists = new[]\n        {\n            \"n1-standard-1\",\n            \"n1-standard-2\",\n        },\n        Filters = new SpotInst.Gke.Inputs.OceanImportFiltersArgs\n        {\n            ExcludeFamilies = new[]\n            {\n                \"n2\",\n            },\n            IncludeFamilies = new[]\n            {\n                \"c2\",\n                \"c3\",\n            },\n            MinMemoryGib = 8,\n            MaxMemoryGib = 16,\n            MinVcpu = 2,\n            MaxVcpu = 16,\n        },\n        BackendServices = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanImportBackendServiceArgs\n            {\n                ServiceName = \"example-backend-service\",\n                LocationType = \"regional\",\n                Scheme = \"INTERNAL\",\n                NamedPorts = new[]\n                {\n                    new SpotInst.Gke.Inputs.OceanImportBackendServiceNamedPortArgs\n                    {\n                        Name = \"http\",\n                        Ports = new[]\n                        {\n                            \"80\",\n                            \"8080\",\n                        },\n                    },\n                },\n            },\n        },\n        RootVolumeType = \"pd-ssd\",\n        ShieldedInstanceConfig = new SpotInst.Gke.Inputs.OceanImportShieldedInstanceConfigArgs\n        {\n            EnableSecureBoot = true,\n            EnableIntegrityMonitoring = true,\n        },\n        UseAsTemplateOnly = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/gke\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gke.NewOceanImport(ctx, \"example\", \u0026gke.OceanImportArgs{\n\t\t\tClusterName:         pulumi.String(\"example-cluster-name\"),\n\t\t\tControllerClusterId: pulumi.String(\"example-controller-123124\"),\n\t\t\tLocation:            pulumi.String(\"us-central1-a\"),\n\t\t\tMinSize:             pulumi.Int(0),\n\t\t\tMaxSize:             pulumi.Int(2),\n\t\t\tDesiredCapacity:     pulumi.Int(0),\n\t\t\tAutoUpdates: gke.OceanImportAutoUpdateArray{\n\t\t\t\t\u0026gke.OceanImportAutoUpdateArgs{\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tWhitelists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"n1-standard-1\"),\n\t\t\t\tpulumi.String(\"n1-standard-2\"),\n\t\t\t},\n\t\t\tFilters: \u0026gke.OceanImportFiltersArgs{\n\t\t\t\tExcludeFamilies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"n2\"),\n\t\t\t\t},\n\t\t\t\tIncludeFamilies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"c2\"),\n\t\t\t\t\tpulumi.String(\"c3\"),\n\t\t\t\t},\n\t\t\t\tMinMemoryGib: pulumi.Float64(8),\n\t\t\t\tMaxMemoryGib: pulumi.Float64(16),\n\t\t\t\tMinVcpu:      pulumi.Int(2),\n\t\t\t\tMaxVcpu:      pulumi.Int(16),\n\t\t\t},\n\t\t\tBackendServices: gke.OceanImportBackendServiceArray{\n\t\t\t\t\u0026gke.OceanImportBackendServiceArgs{\n\t\t\t\t\tServiceName:  pulumi.String(\"example-backend-service\"),\n\t\t\t\t\tLocationType: pulumi.String(\"regional\"),\n\t\t\t\t\tScheme:       pulumi.String(\"INTERNAL\"),\n\t\t\t\t\tNamedPorts: gke.OceanImportBackendServiceNamedPortArray{\n\t\t\t\t\t\t\u0026gke.OceanImportBackendServiceNamedPortArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"http\"),\n\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRootVolumeType: pulumi.String(\"pd-ssd\"),\n\t\t\tShieldedInstanceConfig: \u0026gke.OceanImportShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot:          pulumi.Bool(true),\n\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t},\n\t\t\tUseAsTemplateOnly: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.gke.OceanImport;\nimport com.pulumi.spotinst.gke.OceanImportArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanImportAutoUpdateArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanImportFiltersArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanImportBackendServiceArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanImportShieldedInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanImport(\"example\", OceanImportArgs.builder()\n            .clusterName(\"example-cluster-name\")\n            .controllerClusterId(\"example-controller-123124\")\n            .location(\"us-central1-a\")\n            .minSize(0)\n            .maxSize(2)\n            .desiredCapacity(0)\n            .autoUpdates(OceanImportAutoUpdateArgs.builder()\n                .isEnabled(true)\n                .build())\n            .whitelists(            \n                \"n1-standard-1\",\n                \"n1-standard-2\")\n            .filters(OceanImportFiltersArgs.builder()\n                .excludeFamilies(\"n2\")\n                .includeFamilies(                \n                    \"c2\",\n                    \"c3\")\n                .minMemoryGib(8.0)\n                .maxMemoryGib(16.0)\n                .minVcpu(2)\n                .maxVcpu(16)\n                .build())\n            .backendServices(OceanImportBackendServiceArgs.builder()\n                .serviceName(\"example-backend-service\")\n                .locationType(\"regional\")\n                .scheme(\"INTERNAL\")\n                .namedPorts(OceanImportBackendServiceNamedPortArgs.builder()\n                    .name(\"http\")\n                    .ports(                    \n                        \"80\",\n                        \"8080\")\n                    .build())\n                .build())\n            .rootVolumeType(\"pd-ssd\")\n            .shieldedInstanceConfig(OceanImportShieldedInstanceConfigArgs.builder()\n                .enableSecureBoot(true)\n                .enableIntegrityMonitoring(true)\n                .build())\n            .useAsTemplateOnly(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:gke:OceanImport\n    properties:\n      clusterName: example-cluster-name\n      controllerClusterId: example-controller-123124\n      location: us-central1-a\n      minSize: 0\n      maxSize: 2\n      desiredCapacity: 0\n      autoUpdates:\n        - isEnabled: true\n      whitelists:\n        - n1-standard-1\n        - n1-standard-2\n      filters:\n        excludeFamilies:\n          - n2\n        includeFamilies:\n          - c2\n          - c3\n        minMemoryGib: 8\n        maxMemoryGib: 16\n        minVcpu: 2\n        maxVcpu: 16\n      backendServices:\n        - serviceName: example-backend-service\n          locationType: regional\n          scheme: INTERNAL\n          namedPorts:\n            - name: http\n              ports:\n                - 80\n                - 8080\n      rootVolumeType: pd-ssd\n      shieldedInstanceConfig:\n        enableSecureBoot: true\n        enableIntegrityMonitoring: true\n      useAsTemplateOnly: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\noutput \"ocean_id\" {\n  value = spotinst_ocean_gke_import.example.id\n}\n```\n","properties":{"autoUpdates":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportAutoUpdate:OceanImportAutoUpdate"},"description":"The Ocean Kubernetes AutoUpdate object. If set to 'true', Ocean will ensure that your clusters have an up-to-date configuration according to the respective GKE cluster.\n"},"autoscaler":{"$ref":"#/types/spotinst:gke/OceanImportAutoscaler:OceanImportAutoscaler","description":"The Ocean Kubernetes Autoscaler object.\n"},"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportBackendService:OceanImportBackendService"},"description":"Describes the backend service configurations.\n"},"blacklists":{"type":"array","items":{"type":"string"},"description":"Instance types to avoid launching in the Ocean cluster. Cannot be configured if whitelist list is configured.\n"},"clusterControllerId":{"type":"string"},"clusterName":{"type":"string","description":"The GKE cluster name.\n"},"controllerClusterId":{"type":"string","description":"A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier.\n"},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"filters":{"$ref":"#/types/spotinst:gke/OceanImportFilters:OceanImportFilters","description":"List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured together with whitelist/blacklist.\n"},"location":{"type":"string","description":"The zone the master cluster is located in.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"rootVolumeType":{"type":"string","description":"The root volume disk type.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTask:OceanImportScheduledTask"},"description":"Set scheduling object.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/OceanImportShieldedInstanceConfig:OceanImportShieldedInstanceConfig","description":"The Ocean shielded instance configuration object.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportStrategy:OceanImportStrategy"},"description":"Strategy object.\n"},"updatePolicy":{"$ref":"#/types/spotinst:gke/OceanImportUpdatePolicy:OceanImportUpdatePolicy"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\n"},"whitelists":{"type":"array","items":{"type":"string"},"description":"Instance types allowed in the Ocean cluster. Cannot be configured if blacklist list is configured.\n"}},"required":["autoscaler","clusterControllerId","clusterName","controllerClusterId","location","shieldedInstanceConfig"],"inputProperties":{"autoUpdates":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportAutoUpdate:OceanImportAutoUpdate"},"description":"The Ocean Kubernetes AutoUpdate object. If set to 'true', Ocean will ensure that your clusters have an up-to-date configuration according to the respective GKE cluster.\n"},"autoscaler":{"$ref":"#/types/spotinst:gke/OceanImportAutoscaler:OceanImportAutoscaler","description":"The Ocean Kubernetes Autoscaler object.\n"},"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportBackendService:OceanImportBackendService"},"description":"Describes the backend service configurations.\n"},"blacklists":{"type":"array","items":{"type":"string"},"description":"Instance types to avoid launching in the Ocean cluster. Cannot be configured if whitelist list is configured.\n"},"clusterName":{"type":"string","description":"The GKE cluster name.\n"},"controllerClusterId":{"type":"string","description":"A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier.\n"},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"filters":{"$ref":"#/types/spotinst:gke/OceanImportFilters:OceanImportFilters","description":"List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured together with whitelist/blacklist.\n"},"location":{"type":"string","description":"The zone the master cluster is located in.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"rootVolumeType":{"type":"string","description":"The root volume disk type.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTask:OceanImportScheduledTask"},"description":"Set scheduling object.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/OceanImportShieldedInstanceConfig:OceanImportShieldedInstanceConfig","description":"The Ocean shielded instance configuration object.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportStrategy:OceanImportStrategy"},"description":"Strategy object.\n"},"updatePolicy":{"$ref":"#/types/spotinst:gke/OceanImportUpdatePolicy:OceanImportUpdatePolicy"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\n"},"whitelists":{"type":"array","items":{"type":"string"},"description":"Instance types allowed in the Ocean cluster. Cannot be configured if blacklist list is configured.\n"}},"requiredInputs":["clusterName","location"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanImport resources.\n","properties":{"autoUpdates":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportAutoUpdate:OceanImportAutoUpdate"},"description":"The Ocean Kubernetes AutoUpdate object. If set to 'true', Ocean will ensure that your clusters have an up-to-date configuration according to the respective GKE cluster.\n"},"autoscaler":{"$ref":"#/types/spotinst:gke/OceanImportAutoscaler:OceanImportAutoscaler","description":"The Ocean Kubernetes Autoscaler object.\n"},"backendServices":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportBackendService:OceanImportBackendService"},"description":"Describes the backend service configurations.\n"},"blacklists":{"type":"array","items":{"type":"string"},"description":"Instance types to avoid launching in the Ocean cluster. Cannot be configured if whitelist list is configured.\n"},"clusterControllerId":{"type":"string"},"clusterName":{"type":"string","description":"The GKE cluster name.\n"},"controllerClusterId":{"type":"string","description":"A unique identifier used for connecting the Ocean SaaS platform and the Kubernetes cluster. Typically, the cluster name is used as its identifier.\n"},"desiredCapacity":{"type":"integer","description":"The number of instances to launch and maintain in the cluster.\n"},"filters":{"$ref":"#/types/spotinst:gke/OceanImportFilters:OceanImportFilters","description":"List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured together with whitelist/blacklist.\n"},"location":{"type":"string","description":"The zone the master cluster is located in.\n"},"maxSize":{"type":"integer","description":"The upper limit of instances the cluster can scale up to.\n"},"minSize":{"type":"integer","description":"The lower limit of instances the cluster can scale down to.\n"},"rootVolumeType":{"type":"string","description":"The root volume disk type.\n"},"scheduledTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportScheduledTask:OceanImportScheduledTask"},"description":"Set scheduling object.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/OceanImportShieldedInstanceConfig:OceanImportShieldedInstanceConfig","description":"The Ocean shielded instance configuration object.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanImportStrategy:OceanImportStrategy"},"description":"Strategy object.\n"},"updatePolicy":{"$ref":"#/types/spotinst:gke/OceanImportUpdatePolicy:OceanImportUpdatePolicy"},"useAsTemplateOnly":{"type":"boolean","description":"launch specification defined on the Ocean object will function only as a template for virtual node groups.\n"},"whitelists":{"type":"array","items":{"type":"string"},"description":"Instance types allowed in the Ocean cluster. Cannot be configured if blacklist list is configured.\n"}},"type":"object"}},"spotinst:gke/oceanLaunchSpec:OceanLaunchSpec":{"description":"Manages a custom Spotinst Ocean GKE Launch Spec resource.\n\n\u003e This resource can be imported from GKE node pool or not. If you want to import the node pool and create the VNG from it, please provide \u003cspan pulumi-lang-nodejs=\"`nodePoolName`\" pulumi-lang-dotnet=\"`NodePoolName`\" pulumi-lang-go=\"`nodePoolName`\" pulumi-lang-python=\"`node_pool_name`\" pulumi-lang-yaml=\"`nodePoolName`\" pulumi-lang-java=\"`nodePoolName`\"\u003e`node_pool_name`\u003c/span\u003e.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.gke.OceanLaunchSpec(\"example\", {\n    oceanId: \"o-123456\",\n    nodePoolName: \"default-pool\",\n    name: \"specialty.nodes.spotk8s.com\",\n    sourceImage: \"image\",\n    restrictScaleDown: true,\n    rootVolumeSize: 10,\n    rootVolumeType: \"pd-standard\",\n    instanceTypes: [\"n1-standard-1, n1-standard-2\"],\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n    createOptions: {\n        initialNodes: 1,\n    },\n    shieldedInstanceConfig: {\n        enableSecureBoot: false,\n        enableIntegrityMonitoring: true,\n    },\n    storage: {\n        localSsdCount: 5,\n    },\n    resourceLimits: {\n        maxInstanceCount: 3,\n        minInstanceCount: 0,\n    },\n    serviceAccount: \"default\",\n    metadatas: [{\n        key: \"gci-update-strategy\",\n        value: \"update_disabled\",\n    }],\n    labels: [{\n        key: \"labelKey\",\n        value: \"labelVal\",\n    }],\n    taints: [{\n        key: \"taintKey\",\n        value: \"taintVal\",\n        effect: \"taintEffect\",\n    }],\n    autoscaleHeadroomsAutomatics: [{\n        autoHeadroomPercentage: 5,\n    }],\n    autoscaleHeadrooms: [{\n        numOfUnits: 5,\n        cpuPerUnit: 1000,\n        gpuPerUnit: 0,\n        memoryPerUnit: 2048,\n    }],\n    strategies: [{\n        preemptiblePercentage: 30,\n        scalingOrientation: \"balanced\",\n    }],\n    schedulingTasks: [{\n        isEnabled: true,\n        cronExpression: \"0 1 * * *\",\n        taskType: \"manualHeadroomUpdate\",\n        taskHeadrooms: [{\n            numOfUnits: 5,\n            cpuPerUnit: 1000,\n            gpuPerUnit: 0,\n            memoryPerUnit: 2048,\n        }],\n    }],\n    networkInterfaces: [{\n        network: \"test-vng-network\",\n        projectId: \"test-vng-network-project\",\n        accessConfigs: [{\n            name: \"external-nat-vng\",\n            type: \"ONE_TO_ONE_NAT\",\n        }],\n        aliasIpRanges: [{\n            ipCidrRange: \"/25\",\n            subnetworkRangeName: \"gke-test-native-vpc-pods-123456-vng\",\n        }],\n    }],\n    filters: {\n        excludeFamilies: [\"n2\"],\n        includeFamilies: [\n            \"c2\",\n            \"c3\",\n        ],\n        minMemoryGib: 8,\n        maxMemoryGib: 32,\n        minVcpu: 2,\n        maxVcpu: 16,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.gke.OceanLaunchSpec(\"example\",\n    ocean_id=\"o-123456\",\n    node_pool_name=\"default-pool\",\n    name=\"specialty.nodes.spotk8s.com\",\n    source_image=\"image\",\n    restrict_scale_down=True,\n    root_volume_size=10,\n    root_volume_type=\"pd-standard\",\n    instance_types=[\"n1-standard-1, n1-standard-2\"],\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ],\n    create_options={\n        \"initial_nodes\": 1,\n    },\n    shielded_instance_config={\n        \"enable_secure_boot\": False,\n        \"enable_integrity_monitoring\": True,\n    },\n    storage={\n        \"local_ssd_count\": 5,\n    },\n    resource_limits={\n        \"max_instance_count\": 3,\n        \"min_instance_count\": 0,\n    },\n    service_account=\"default\",\n    metadatas=[{\n        \"key\": \"gci-update-strategy\",\n        \"value\": \"update_disabled\",\n    }],\n    labels=[{\n        \"key\": \"labelKey\",\n        \"value\": \"labelVal\",\n    }],\n    taints=[{\n        \"key\": \"taintKey\",\n        \"value\": \"taintVal\",\n        \"effect\": \"taintEffect\",\n    }],\n    autoscale_headrooms_automatics=[{\n        \"auto_headroom_percentage\": 5,\n    }],\n    autoscale_headrooms=[{\n        \"num_of_units\": 5,\n        \"cpu_per_unit\": 1000,\n        \"gpu_per_unit\": 0,\n        \"memory_per_unit\": 2048,\n    }],\n    strategies=[{\n        \"preemptible_percentage\": 30,\n        \"scaling_orientation\": \"balanced\",\n    }],\n    scheduling_tasks=[{\n        \"is_enabled\": True,\n        \"cron_expression\": \"0 1 * * *\",\n        \"task_type\": \"manualHeadroomUpdate\",\n        \"task_headrooms\": [{\n            \"num_of_units\": 5,\n            \"cpu_per_unit\": 1000,\n            \"gpu_per_unit\": 0,\n            \"memory_per_unit\": 2048,\n        }],\n    }],\n    network_interfaces=[{\n        \"network\": \"test-vng-network\",\n        \"project_id\": \"test-vng-network-project\",\n        \"access_configs\": [{\n            \"name\": \"external-nat-vng\",\n            \"type\": \"ONE_TO_ONE_NAT\",\n        }],\n        \"alias_ip_ranges\": [{\n            \"ip_cidr_range\": \"/25\",\n            \"subnetwork_range_name\": \"gke-test-native-vpc-pods-123456-vng\",\n        }],\n    }],\n    filters={\n        \"exclude_families\": [\"n2\"],\n        \"include_families\": [\n            \"c2\",\n            \"c3\",\n        ],\n        \"min_memory_gib\": 8,\n        \"max_memory_gib\": 32,\n        \"min_vcpu\": 2,\n        \"max_vcpu\": 16,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Gke.OceanLaunchSpec(\"example\", new()\n    {\n        OceanId = \"o-123456\",\n        NodePoolName = \"default-pool\",\n        Name = \"specialty.nodes.spotk8s.com\",\n        SourceImage = \"image\",\n        RestrictScaleDown = true,\n        RootVolumeSize = 10,\n        RootVolumeType = \"pd-standard\",\n        InstanceTypes = new[]\n        {\n            \"n1-standard-1, n1-standard-2\",\n        },\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n        CreateOptions = new SpotInst.Gke.Inputs.OceanLaunchSpecCreateOptionsArgs\n        {\n            InitialNodes = 1,\n        },\n        ShieldedInstanceConfig = new SpotInst.Gke.Inputs.OceanLaunchSpecShieldedInstanceConfigArgs\n        {\n            EnableSecureBoot = false,\n            EnableIntegrityMonitoring = true,\n        },\n        Storage = new SpotInst.Gke.Inputs.OceanLaunchSpecStorageArgs\n        {\n            LocalSsdCount = 5,\n        },\n        ResourceLimits = new SpotInst.Gke.Inputs.OceanLaunchSpecResourceLimitsArgs\n        {\n            MaxInstanceCount = 3,\n            MinInstanceCount = 0,\n        },\n        ServiceAccount = \"default\",\n        Metadatas = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecMetadataArgs\n            {\n                Key = \"gci-update-strategy\",\n                Value = \"update_disabled\",\n            },\n        },\n        Labels = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecLabelArgs\n            {\n                Key = \"labelKey\",\n                Value = \"labelVal\",\n            },\n        },\n        Taints = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecTaintArgs\n            {\n                Key = \"taintKey\",\n                Value = \"taintVal\",\n                Effect = \"taintEffect\",\n            },\n        },\n        AutoscaleHeadroomsAutomatics = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecAutoscaleHeadroomsAutomaticArgs\n            {\n                AutoHeadroomPercentage = 5,\n            },\n        },\n        AutoscaleHeadrooms = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecAutoscaleHeadroomArgs\n            {\n                NumOfUnits = 5,\n                CpuPerUnit = 1000,\n                GpuPerUnit = 0,\n                MemoryPerUnit = 2048,\n            },\n        },\n        Strategies = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecStrategyArgs\n            {\n                PreemptiblePercentage = 30,\n                ScalingOrientation = \"balanced\",\n            },\n        },\n        SchedulingTasks = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecSchedulingTaskArgs\n            {\n                IsEnabled = true,\n                CronExpression = \"0 1 * * *\",\n                TaskType = \"manualHeadroomUpdate\",\n                TaskHeadrooms = new[]\n                {\n                    new SpotInst.Gke.Inputs.OceanLaunchSpecSchedulingTaskTaskHeadroomArgs\n                    {\n                        NumOfUnits = 5,\n                        CpuPerUnit = 1000,\n                        GpuPerUnit = 0,\n                        MemoryPerUnit = 2048,\n                    },\n                },\n            },\n        },\n        NetworkInterfaces = new[]\n        {\n            new SpotInst.Gke.Inputs.OceanLaunchSpecNetworkInterfaceArgs\n            {\n                Network = \"test-vng-network\",\n                ProjectId = \"test-vng-network-project\",\n                AccessConfigs = new[]\n                {\n                    new SpotInst.Gke.Inputs.OceanLaunchSpecNetworkInterfaceAccessConfigArgs\n                    {\n                        Name = \"external-nat-vng\",\n                        Type = \"ONE_TO_ONE_NAT\",\n                    },\n                },\n                AliasIpRanges = new[]\n                {\n                    new SpotInst.Gke.Inputs.OceanLaunchSpecNetworkInterfaceAliasIpRangeArgs\n                    {\n                        IpCidrRange = \"/25\",\n                        SubnetworkRangeName = \"gke-test-native-vpc-pods-123456-vng\",\n                    },\n                },\n            },\n        },\n        Filters = new SpotInst.Gke.Inputs.OceanLaunchSpecFiltersArgs\n        {\n            ExcludeFamilies = new[]\n            {\n                \"n2\",\n            },\n            IncludeFamilies = new[]\n            {\n                \"c2\",\n                \"c3\",\n            },\n            MinMemoryGib = 8,\n            MaxMemoryGib = 32,\n            MinVcpu = 2,\n            MaxVcpu = 16,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/gke\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gke.NewOceanLaunchSpec(ctx, \"example\", \u0026gke.OceanLaunchSpecArgs{\n\t\t\tOceanId:           pulumi.String(\"o-123456\"),\n\t\t\tNodePoolName:      pulumi.String(\"default-pool\"),\n\t\t\tName:              pulumi.String(\"specialty.nodes.spotk8s.com\"),\n\t\t\tSourceImage:       pulumi.String(\"image\"),\n\t\t\tRestrictScaleDown: pulumi.Bool(true),\n\t\t\tRootVolumeSize:    pulumi.Int(10),\n\t\t\tRootVolumeType:    pulumi.String(\"pd-standard\"),\n\t\t\tInstanceTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"n1-standard-1, n1-standard-2\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t\tCreateOptions: \u0026gke.OceanLaunchSpecCreateOptionsArgs{\n\t\t\t\tInitialNodes: pulumi.Int(1),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026gke.OceanLaunchSpecShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot:          pulumi.Bool(false),\n\t\t\t\tEnableIntegrityMonitoring: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStorage: \u0026gke.OceanLaunchSpecStorageArgs{\n\t\t\t\tLocalSsdCount: pulumi.Int(5),\n\t\t\t},\n\t\t\tResourceLimits: \u0026gke.OceanLaunchSpecResourceLimitsArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(0),\n\t\t\t},\n\t\t\tServiceAccount: pulumi.String(\"default\"),\n\t\t\tMetadatas: gke.OceanLaunchSpecMetadataArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecMetadataArgs{\n\t\t\t\t\tKey:   pulumi.String(\"gci-update-strategy\"),\n\t\t\t\t\tValue: pulumi.String(\"update_disabled\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: gke.OceanLaunchSpecLabelArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecLabelArgs{\n\t\t\t\t\tKey:   pulumi.String(\"labelKey\"),\n\t\t\t\t\tValue: pulumi.String(\"labelVal\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTaints: gke.OceanLaunchSpecTaintArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecTaintArgs{\n\t\t\t\t\tKey:    pulumi.String(\"taintKey\"),\n\t\t\t\t\tValue:  pulumi.String(\"taintVal\"),\n\t\t\t\t\tEffect: pulumi.String(\"taintEffect\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoscaleHeadroomsAutomatics: gke.OceanLaunchSpecAutoscaleHeadroomsAutomaticArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecAutoscaleHeadroomsAutomaticArgs{\n\t\t\t\t\tAutoHeadroomPercentage: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoscaleHeadrooms: gke.OceanLaunchSpecAutoscaleHeadroomArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecAutoscaleHeadroomArgs{\n\t\t\t\t\tNumOfUnits:    pulumi.Int(5),\n\t\t\t\t\tCpuPerUnit:    pulumi.Int(1000),\n\t\t\t\t\tGpuPerUnit:    pulumi.Int(0),\n\t\t\t\t\tMemoryPerUnit: pulumi.Int(2048),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStrategies: gke.OceanLaunchSpecStrategyArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecStrategyArgs{\n\t\t\t\t\tPreemptiblePercentage: pulumi.Int(30),\n\t\t\t\t\tScalingOrientation:    pulumi.String(\"balanced\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchedulingTasks: gke.OceanLaunchSpecSchedulingTaskArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecSchedulingTaskArgs{\n\t\t\t\t\tIsEnabled:      pulumi.Bool(true),\n\t\t\t\t\tCronExpression: pulumi.String(\"0 1 * * *\"),\n\t\t\t\t\tTaskType:       pulumi.String(\"manualHeadroomUpdate\"),\n\t\t\t\t\tTaskHeadrooms: gke.OceanLaunchSpecSchedulingTaskTaskHeadroomArray{\n\t\t\t\t\t\t\u0026gke.OceanLaunchSpecSchedulingTaskTaskHeadroomArgs{\n\t\t\t\t\t\t\tNumOfUnits:    pulumi.Int(5),\n\t\t\t\t\t\t\tCpuPerUnit:    pulumi.Int(1000),\n\t\t\t\t\t\t\tGpuPerUnit:    pulumi.Int(0),\n\t\t\t\t\t\t\tMemoryPerUnit: pulumi.Int(2048),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: gke.OceanLaunchSpecNetworkInterfaceArray{\n\t\t\t\t\u0026gke.OceanLaunchSpecNetworkInterfaceArgs{\n\t\t\t\t\tNetwork:   pulumi.String(\"test-vng-network\"),\n\t\t\t\t\tProjectId: pulumi.String(\"test-vng-network-project\"),\n\t\t\t\t\tAccessConfigs: gke.OceanLaunchSpecNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026gke.OceanLaunchSpecNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"external-nat-vng\"),\n\t\t\t\t\t\t\tType: pulumi.String(\"ONE_TO_ONE_NAT\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAliasIpRanges: gke.OceanLaunchSpecNetworkInterfaceAliasIpRangeArray{\n\t\t\t\t\t\t\u0026gke.OceanLaunchSpecNetworkInterfaceAliasIpRangeArgs{\n\t\t\t\t\t\t\tIpCidrRange:         pulumi.String(\"/25\"),\n\t\t\t\t\t\t\tSubnetworkRangeName: pulumi.String(\"gke-test-native-vpc-pods-123456-vng\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilters: \u0026gke.OceanLaunchSpecFiltersArgs{\n\t\t\t\tExcludeFamilies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"n2\"),\n\t\t\t\t},\n\t\t\t\tIncludeFamilies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"c2\"),\n\t\t\t\t\tpulumi.String(\"c3\"),\n\t\t\t\t},\n\t\t\t\tMinMemoryGib: pulumi.Float64(8),\n\t\t\t\tMaxMemoryGib: pulumi.Float64(32),\n\t\t\t\tMinVcpu:      pulumi.Int(2),\n\t\t\t\tMaxVcpu:      pulumi.Int(16),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.gke.OceanLaunchSpec;\nimport com.pulumi.spotinst.gke.OceanLaunchSpecArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecCreateOptionsArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecShieldedInstanceConfigArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecStorageArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecResourceLimitsArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecMetadataArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecLabelArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecTaintArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecAutoscaleHeadroomsAutomaticArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecAutoscaleHeadroomArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecStrategyArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecSchedulingTaskArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecNetworkInterfaceArgs;\nimport com.pulumi.spotinst.gke.inputs.OceanLaunchSpecFiltersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanLaunchSpec(\"example\", OceanLaunchSpecArgs.builder()\n            .oceanId(\"o-123456\")\n            .nodePoolName(\"default-pool\")\n            .name(\"specialty.nodes.spotk8s.com\")\n            .sourceImage(\"image\")\n            .restrictScaleDown(true)\n            .rootVolumeSize(10)\n            .rootVolumeType(\"pd-standard\")\n            .instanceTypes(\"n1-standard-1, n1-standard-2\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .createOptions(OceanLaunchSpecCreateOptionsArgs.builder()\n                .initialNodes(1)\n                .build())\n            .shieldedInstanceConfig(OceanLaunchSpecShieldedInstanceConfigArgs.builder()\n                .enableSecureBoot(false)\n                .enableIntegrityMonitoring(true)\n                .build())\n            .storage(OceanLaunchSpecStorageArgs.builder()\n                .localSsdCount(5)\n                .build())\n            .resourceLimits(OceanLaunchSpecResourceLimitsArgs.builder()\n                .maxInstanceCount(3)\n                .minInstanceCount(0)\n                .build())\n            .serviceAccount(\"default\")\n            .metadatas(OceanLaunchSpecMetadataArgs.builder()\n                .key(\"gci-update-strategy\")\n                .value(\"update_disabled\")\n                .build())\n            .labels(OceanLaunchSpecLabelArgs.builder()\n                .key(\"labelKey\")\n                .value(\"labelVal\")\n                .build())\n            .taints(OceanLaunchSpecTaintArgs.builder()\n                .key(\"taintKey\")\n                .value(\"taintVal\")\n                .effect(\"taintEffect\")\n                .build())\n            .autoscaleHeadroomsAutomatics(OceanLaunchSpecAutoscaleHeadroomsAutomaticArgs.builder()\n                .autoHeadroomPercentage(5)\n                .build())\n            .autoscaleHeadrooms(OceanLaunchSpecAutoscaleHeadroomArgs.builder()\n                .numOfUnits(5)\n                .cpuPerUnit(1000)\n                .gpuPerUnit(0)\n                .memoryPerUnit(2048)\n                .build())\n            .strategies(OceanLaunchSpecStrategyArgs.builder()\n                .preemptiblePercentage(30)\n                .scalingOrientation(\"balanced\")\n                .build())\n            .schedulingTasks(OceanLaunchSpecSchedulingTaskArgs.builder()\n                .isEnabled(true)\n                .cronExpression(\"0 1 * * *\")\n                .taskType(\"manualHeadroomUpdate\")\n                .taskHeadrooms(OceanLaunchSpecSchedulingTaskTaskHeadroomArgs.builder()\n                    .numOfUnits(5)\n                    .cpuPerUnit(1000)\n                    .gpuPerUnit(0)\n                    .memoryPerUnit(2048)\n                    .build())\n                .build())\n            .networkInterfaces(OceanLaunchSpecNetworkInterfaceArgs.builder()\n                .network(\"test-vng-network\")\n                .projectId(\"test-vng-network-project\")\n                .accessConfigs(OceanLaunchSpecNetworkInterfaceAccessConfigArgs.builder()\n                    .name(\"external-nat-vng\")\n                    .type(\"ONE_TO_ONE_NAT\")\n                    .build())\n                .aliasIpRanges(OceanLaunchSpecNetworkInterfaceAliasIpRangeArgs.builder()\n                    .ipCidrRange(\"/25\")\n                    .subnetworkRangeName(\"gke-test-native-vpc-pods-123456-vng\")\n                    .build())\n                .build())\n            .filters(OceanLaunchSpecFiltersArgs.builder()\n                .excludeFamilies(\"n2\")\n                .includeFamilies(                \n                    \"c2\",\n                    \"c3\")\n                .minMemoryGib(8.0)\n                .maxMemoryGib(32.0)\n                .minVcpu(2)\n                .maxVcpu(16)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:gke:OceanLaunchSpec\n    properties:\n      oceanId: o-123456\n      nodePoolName: default-pool\n      name: specialty.nodes.spotk8s.com\n      sourceImage: image\n      restrictScaleDown: true\n      rootVolumeSize: 10\n      rootVolumeType: pd-standard\n      instanceTypes:\n        - n1-standard-1, n1-standard-2\n      tags:\n        - tag1\n        - tag2\n      createOptions:\n        initialNodes: 1\n      shieldedInstanceConfig:\n        enableSecureBoot: false\n        enableIntegrityMonitoring: true\n      storage:\n        localSsdCount: 5\n      resourceLimits:\n        maxInstanceCount: 3\n        minInstanceCount: 0\n      serviceAccount: default\n      metadatas:\n        - key: gci-update-strategy\n          value: update_disabled\n      labels:\n        - key: labelKey\n          value: labelVal\n      taints:\n        - key: taintKey\n          value: taintVal\n          effect: taintEffect\n      autoscaleHeadroomsAutomatics:\n        - autoHeadroomPercentage: 5\n      autoscaleHeadrooms:\n        - numOfUnits: 5\n          cpuPerUnit: 1000\n          gpuPerUnit: 0\n          memoryPerUnit: 2048\n      strategies:\n        - preemptiblePercentage: 30\n          scalingOrientation: balanced\n      schedulingTasks:\n        - isEnabled: true\n          cronExpression: 0 1 * * *\n          taskType: manualHeadroomUpdate\n          taskHeadrooms:\n            - numOfUnits: 5\n              cpuPerUnit: 1000\n              gpuPerUnit: 0\n              memoryPerUnit: 2048\n      networkInterfaces:\n        - network: test-vng-network\n          projectId: test-vng-network-project\n          accessConfigs:\n            - name: external-nat-vng\n              type: ONE_TO_ONE_NAT\n          aliasIpRanges:\n            - ipCidrRange: /25\n              subnetworkRangeName: gke-test-native-vpc-pods-123456-vng\n      filters:\n        excludeFamilies:\n          - n2\n        includeFamilies:\n          - c2\n          - c3\n        minMemoryGib: 8\n        maxMemoryGib: 32\n        minVcpu: 2\n        maxVcpu: 16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n```\noutput \"ocean_launchspec_id\" {\n  value = spotinst_ocean_gke_launch_spec.example.id\n}\n```\n","properties":{"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per launch spec. provide list of headrooms object.\n"},"autoscaleHeadroomsAutomatics":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic"},"description":"Set automatic headroom per launch spec.\n"},"createOptions":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions"},"filters":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecFilters:OceanLaunchSpecFilters","description":"List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured if cluster's \u003cspan pulumi-lang-nodejs=\"`instanceTypes`\" pulumi-lang-dotnet=\"`InstanceTypes`\" pulumi-lang-go=\"`instanceTypes`\" pulumi-lang-python=\"`instance_types`\" pulumi-lang-yaml=\"`instanceTypes`\" pulumi-lang-java=\"`instanceTypes`\"\u003e`instance_types`\u003c/span\u003e is configured.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"List of supported machine types for the Launch Spec.\n"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecLabel:OceanLaunchSpecLabel"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecMetadata:OceanLaunchSpecMetadata"},"description":"Cluster's metadata.\n"},"name":{"type":"string","description":"The launch specification name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecNetworkInterface:OceanLaunchSpecNetworkInterface"},"description":"Settings for network interfaces.\n"},"nodePoolName":{"type":"string","description":"The node pool you wish to use in your Launch Spec.\n"},"oceanId":{"type":"string","description":"The Ocean cluster ID.\n"},"resourceLimits":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecResourceLimits:OceanLaunchSpecResourceLimits","description":"The Ocean virtual node group resource limits object.\n"},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"rootVolumeSize":{"type":"integer","description":"Root volume size (in GB).\n"},"rootVolumeType":{"type":"string","description":"Root volume disk type. Valid values: `\"pd-standard\"`, `\"pd-ssd\"`, `\"pd-balanced\"`.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"serviceAccount":{"type":"string","description":"The account used by applications running on the VM to call GCP APIs.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecShieldedInstanceConfig:OceanLaunchSpecShieldedInstanceConfig","description":"The Ocean shielded instance configuration object.\n"},"sourceImage":{"type":"string","description":"Image URL.\n"},"storage":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecStorage:OceanLaunchSpecStorage","description":"The Ocean virtual node group storage object.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"},"description":"The Ocean Launch Spec Strategy object.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Every node launched from this configuration will be tagged with those tags. Note: during creation some tags are automatically imported to the state file, it is required to manually add it to the template configuration\n"},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecTaint:OceanLaunchSpecTaint"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy"}},"required":["instanceTypes","labels","metadatas","name","oceanId","restrictScaleDown","rootVolumeSize","rootVolumeType","serviceAccount","shieldedInstanceConfig","sourceImage","storage","tags","taints"],"inputProperties":{"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per launch spec. provide list of headrooms object.\n"},"autoscaleHeadroomsAutomatics":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic"},"description":"Set automatic headroom per launch spec.\n"},"createOptions":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions"},"filters":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecFilters:OceanLaunchSpecFilters","description":"List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured if cluster's \u003cspan pulumi-lang-nodejs=\"`instanceTypes`\" pulumi-lang-dotnet=\"`InstanceTypes`\" pulumi-lang-go=\"`instanceTypes`\" pulumi-lang-python=\"`instance_types`\" pulumi-lang-yaml=\"`instanceTypes`\" pulumi-lang-java=\"`instanceTypes`\"\u003e`instance_types`\u003c/span\u003e is configured.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"List of supported machine types for the Launch Spec.\n"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecLabel:OceanLaunchSpecLabel"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecMetadata:OceanLaunchSpecMetadata"},"description":"Cluster's metadata.\n"},"name":{"type":"string","description":"The launch specification name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecNetworkInterface:OceanLaunchSpecNetworkInterface"},"description":"Settings for network interfaces.\n"},"nodePoolName":{"type":"string","description":"The node pool you wish to use in your Launch Spec.\n","willReplaceOnChanges":true},"oceanId":{"type":"string","description":"The Ocean cluster ID.\n"},"resourceLimits":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecResourceLimits:OceanLaunchSpecResourceLimits","description":"The Ocean virtual node group resource limits object.\n"},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"rootVolumeSize":{"type":"integer","description":"Root volume size (in GB).\n"},"rootVolumeType":{"type":"string","description":"Root volume disk type. Valid values: `\"pd-standard\"`, `\"pd-ssd\"`, `\"pd-balanced\"`.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"serviceAccount":{"type":"string","description":"The account used by applications running on the VM to call GCP APIs.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecShieldedInstanceConfig:OceanLaunchSpecShieldedInstanceConfig","description":"The Ocean shielded instance configuration object.\n"},"sourceImage":{"type":"string","description":"Image URL.\n"},"storage":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecStorage:OceanLaunchSpecStorage","description":"The Ocean virtual node group storage object.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"},"description":"The Ocean Launch Spec Strategy object.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Every node launched from this configuration will be tagged with those tags. Note: during creation some tags are automatically imported to the state file, it is required to manually add it to the template configuration\n"},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecTaint:OceanLaunchSpecTaint"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy"}},"requiredInputs":["oceanId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanLaunchSpec resources.\n","properties":{"autoscaleHeadrooms":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecAutoscaleHeadroom:OceanLaunchSpecAutoscaleHeadroom"},"description":"Set custom headroom per launch spec. provide list of headrooms object.\n"},"autoscaleHeadroomsAutomatics":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecAutoscaleHeadroomsAutomatic:OceanLaunchSpecAutoscaleHeadroomsAutomatic"},"description":"Set automatic headroom per launch spec.\n"},"createOptions":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecCreateOptions:OceanLaunchSpecCreateOptions"},"filters":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecFilters:OceanLaunchSpecFilters","description":"List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter. Cannot be configured if cluster's \u003cspan pulumi-lang-nodejs=\"`instanceTypes`\" pulumi-lang-dotnet=\"`InstanceTypes`\" pulumi-lang-go=\"`instanceTypes`\" pulumi-lang-python=\"`instance_types`\" pulumi-lang-yaml=\"`instanceTypes`\" pulumi-lang-java=\"`instanceTypes`\"\u003e`instance_types`\u003c/span\u003e is configured.\n"},"instanceTypes":{"type":"array","items":{"type":"string"},"description":"List of supported machine types for the Launch Spec.\n"},"labels":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecLabel:OceanLaunchSpecLabel"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"metadatas":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecMetadata:OceanLaunchSpecMetadata"},"description":"Cluster's metadata.\n"},"name":{"type":"string","description":"The launch specification name.\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecNetworkInterface:OceanLaunchSpecNetworkInterface"},"description":"Settings for network interfaces.\n"},"nodePoolName":{"type":"string","description":"The node pool you wish to use in your Launch Spec.\n","willReplaceOnChanges":true},"oceanId":{"type":"string","description":"The Ocean cluster ID.\n"},"resourceLimits":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecResourceLimits:OceanLaunchSpecResourceLimits","description":"The Ocean virtual node group resource limits object.\n"},"restrictScaleDown":{"type":"boolean","description":"Boolean. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, VNG nodes will be treated as if all pods running have the restrict-scale-down label. Therefore, Ocean will not scale nodes down unless empty.\n"},"rootVolumeSize":{"type":"integer","description":"Root volume size (in GB).\n"},"rootVolumeType":{"type":"string","description":"Root volume disk type. Valid values: `\"pd-standard\"`, `\"pd-ssd\"`, `\"pd-balanced\"`.\n"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecSchedulingTask:OceanLaunchSpecSchedulingTask"},"description":"Used to define scheduled tasks such as a manual headroom update.\n"},"serviceAccount":{"type":"string","description":"The account used by applications running on the VM to call GCP APIs.\n"},"shieldedInstanceConfig":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecShieldedInstanceConfig:OceanLaunchSpecShieldedInstanceConfig","description":"The Ocean shielded instance configuration object.\n"},"sourceImage":{"type":"string","description":"Image URL.\n"},"storage":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecStorage:OceanLaunchSpecStorage","description":"The Ocean virtual node group storage object.\n"},"strategies":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecStrategy:OceanLaunchSpecStrategy"},"description":"The Ocean Launch Spec Strategy object.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Every node launched from this configuration will be tagged with those tags. Note: during creation some tags are automatically imported to the state file, it is required to manually add it to the template configuration\n"},"taints":{"type":"array","items":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecTaint:OceanLaunchSpecTaint"},"description":"Optionally adds labels to instances launched in an Ocean cluster.\n"},"updatePolicy":{"$ref":"#/types/spotinst:gke/OceanLaunchSpecUpdatePolicy:OceanLaunchSpecUpdatePolicy"}},"type":"object"}},"spotinst:gke/oceanLaunchSpecImport:OceanLaunchSpecImport":{"description":"Manages a custom Spotinst Ocean GKE Launch Spec Import resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.gke.OceanLaunchSpecImport(\"example\", {\n    oceanId: \"o-123456\",\n    nodePoolName: \"default-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.gke.OceanLaunchSpecImport(\"example\",\n    ocean_id=\"o-123456\",\n    node_pool_name=\"default-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Gke.OceanLaunchSpecImport(\"example\", new()\n    {\n        OceanId = \"o-123456\",\n        NodePoolName = \"default-pool\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/gke\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gke.NewOceanLaunchSpecImport(ctx, \"example\", \u0026gke.OceanLaunchSpecImportArgs{\n\t\t\tOceanId:      pulumi.String(\"o-123456\"),\n\t\t\tNodePoolName: pulumi.String(\"default-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.gke.OceanLaunchSpecImport;\nimport com.pulumi.spotinst.gke.OceanLaunchSpecImportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanLaunchSpecImport(\"example\", OceanLaunchSpecImportArgs.builder()\n            .oceanId(\"o-123456\")\n            .nodePoolName(\"default-pool\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:gke:OceanLaunchSpecImport\n    properties:\n      oceanId: o-123456\n      nodePoolName: default-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n```\noutput \"ocean_launchspec_id\" {\n  value = spotinst_ocean_gke_launch_spec_import.example.id\n}\n```\n","properties":{"nodePoolName":{"type":"string","description":"The node pool you wish to use in your launchSpec.\n"},"oceanId":{"type":"string","description":"The Ocean cluster ID required for launchSpec create.\n"}},"required":["nodePoolName","oceanId"],"inputProperties":{"nodePoolName":{"type":"string","description":"The node pool you wish to use in your launchSpec.\n","willReplaceOnChanges":true},"oceanId":{"type":"string","description":"The Ocean cluster ID required for launchSpec create.\n","willReplaceOnChanges":true}},"requiredInputs":["nodePoolName","oceanId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanLaunchSpecImport resources.\n","properties":{"nodePoolName":{"type":"string","description":"The node pool you wish to use in your launchSpec.\n","willReplaceOnChanges":true},"oceanId":{"type":"string","description":"The Ocean cluster ID required for launchSpec create.\n","willReplaceOnChanges":true}},"type":"object"}},"spotinst:index/account:Account":{"description":"Provides a Spotinst account resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create a Account\nconst myAcct = new spotinst.Account(\"my_acct\", {name: \"my_acct\"});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create a Account\nmy_acct = spotinst.Account(\"my_acct\", name=\"my_acct\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a Account\n    var myAcct = new SpotInst.Account(\"my_acct\", new()\n    {\n        Name = \"my_acct\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a Account\n\t\t_, err := spotinst.NewAccount(ctx, \"my_acct\", \u0026spotinst.AccountArgs{\n\t\t\tName: pulumi.String(\"my_acct\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.Account;\nimport com.pulumi.spotinst.AccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a Account\n        var myAcct = new Account(\"myAcct\", AccountArgs.builder()\n            .name(\"my_acct\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a Account\n  myAcct:\n    type: spotinst:Account\n    name: my_acct\n    properties:\n      name: my_acct\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"Provide a name for your account. The account name must contain at least one character that is a-z or A-Z.\n"}},"required":["name"],"inputProperties":{"name":{"type":"string","description":"Provide a name for your account. The account name must contain at least one character that is a-z or A-Z.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Account resources.\n","properties":{"name":{"type":"string","description":"Provide a name for your account. The account name must contain at least one character that is a-z or A-Z.\n"}},"type":"object"}},"spotinst:index/credentialsAzure:CredentialsAzure":{"description":"Provides a Spotinst credential Azure resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// set credential Azure\nconst credential = new spotinst.CredentialsAzure(\"credential\", {\n    accountId: \"act-123456\",\n    clientId: \"redacted\",\n    clientSecret: \"redacted\",\n    tenantId: \"redacted\",\n    subscriptionId: \"redacted\",\n    expirationDate: \"2025-12-31T23:59:00.000Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# set credential Azure\ncredential = spotinst.CredentialsAzure(\"credential\",\n    account_id=\"act-123456\",\n    client_id=\"redacted\",\n    client_secret=\"redacted\",\n    tenant_id=\"redacted\",\n    subscription_id=\"redacted\",\n    expiration_date=\"2025-12-31T23:59:00.000Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // set credential Azure\n    var credential = new SpotInst.CredentialsAzure(\"credential\", new()\n    {\n        AccountId = \"act-123456\",\n        ClientId = \"redacted\",\n        ClientSecret = \"redacted\",\n        TenantId = \"redacted\",\n        SubscriptionId = \"redacted\",\n        ExpirationDate = \"2025-12-31T23:59:00.000Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// set credential Azure\n\t\t_, err := spotinst.NewCredentialsAzure(ctx, \"credential\", \u0026spotinst.CredentialsAzureArgs{\n\t\t\tAccountId:      pulumi.String(\"act-123456\"),\n\t\t\tClientId:       pulumi.String(\"redacted\"),\n\t\t\tClientSecret:   pulumi.String(\"redacted\"),\n\t\t\tTenantId:       pulumi.String(\"redacted\"),\n\t\t\tSubscriptionId: pulumi.String(\"redacted\"),\n\t\t\tExpirationDate: pulumi.String(\"2025-12-31T23:59:00.000Z\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.CredentialsAzure;\nimport com.pulumi.spotinst.CredentialsAzureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // set credential Azure\n        var credential = new CredentialsAzure(\"credential\", CredentialsAzureArgs.builder()\n            .accountId(\"act-123456\")\n            .clientId(\"redacted\")\n            .clientSecret(\"redacted\")\n            .tenantId(\"redacted\")\n            .subscriptionId(\"redacted\")\n            .expirationDate(\"2025-12-31T23:59:00.000Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # set credential Azure\n  credential:\n    type: spotinst:CredentialsAzure\n    properties:\n      accountId: act-123456\n      clientId: redacted\n      clientSecret: redacted\n      tenantId: redacted\n      subscriptionId: redacted\n      expirationDate: 2025-12-31T23:59:00.000Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n"},"clientId":{"type":"string","description":"Set the application ID.\n"},"clientSecret":{"type":"string","description":"Set the key secret.\n"},"expirationDate":{"type":"string","description":"Set the key secret expiration date.\n"},"subscriptionId":{"type":"string","description":"Set the subscription ID.\n"},"tenantId":{"type":"string","description":"Set the directory ID.\n"}},"required":["accountId","clientId","clientSecret","subscriptionId","tenantId"],"inputProperties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n","willReplaceOnChanges":true},"clientId":{"type":"string","description":"Set the application ID.\n","willReplaceOnChanges":true},"clientSecret":{"type":"string","description":"Set the key secret.\n","willReplaceOnChanges":true},"expirationDate":{"type":"string","description":"Set the key secret expiration date.\n","willReplaceOnChanges":true},"subscriptionId":{"type":"string","description":"Set the subscription ID.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Set the directory ID.\n","willReplaceOnChanges":true}},"requiredInputs":["accountId","clientId","clientSecret","subscriptionId","tenantId"],"stateInputs":{"description":"Input properties used for looking up and filtering CredentialsAzure resources.\n","properties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n","willReplaceOnChanges":true},"clientId":{"type":"string","description":"Set the application ID.\n","willReplaceOnChanges":true},"clientSecret":{"type":"string","description":"Set the key secret.\n","willReplaceOnChanges":true},"expirationDate":{"type":"string","description":"Set the key secret expiration date.\n","willReplaceOnChanges":true},"subscriptionId":{"type":"string","description":"Set the subscription ID.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Set the directory ID.\n","willReplaceOnChanges":true}},"type":"object"}},"spotinst:index/credentialsGcp:CredentialsGcp":{"description":"Provides a Spotinst credential GCP resource.\n\n","properties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n"},"authProviderX509CertUrl":{"type":"string","description":".\n"},"authUri":{"type":"string","description":"Authentication uri.\n"},"clientEmail":{"type":"string","description":"Email associated with service account.\n"},"clientId":{"type":"string","description":"Client ID of service account.\n"},"clientX509CertUrl":{"type":"string","description":"Should be in following format - \"https://www.googleapis.com/robot/v1/metadata/x509/\".\n"},"privateKey":{"type":"string","description":"Private key of JSON key created during prerequisites stage.\n"},"privateKeyId":{"type":"string","description":"Private key ID of JSON key created during prerequisites stage.\n"},"projectId":{"type":"string","description":"Name of project in GCP.\n"},"tokenUri":{"type":"string","description":"Token uri.\n"},"type":{"type":"string","description":"Valid values - service_account.\n"}},"required":["accountId","authProviderX509CertUrl","authUri","clientEmail","clientId","clientX509CertUrl","privateKey","privateKeyId","projectId","tokenUri","type"],"inputProperties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n","willReplaceOnChanges":true},"authProviderX509CertUrl":{"type":"string","description":".\n","willReplaceOnChanges":true},"authUri":{"type":"string","description":"Authentication uri.\n","willReplaceOnChanges":true},"clientEmail":{"type":"string","description":"Email associated with service account.\n","willReplaceOnChanges":true},"clientId":{"type":"string","description":"Client ID of service account.\n","willReplaceOnChanges":true},"clientX509CertUrl":{"type":"string","description":"Should be in following format - \"https://www.googleapis.com/robot/v1/metadata/x509/\".\n","willReplaceOnChanges":true},"privateKey":{"type":"string","description":"Private key of JSON key created during prerequisites stage.\n","willReplaceOnChanges":true},"privateKeyId":{"type":"string","description":"Private key ID of JSON key created during prerequisites stage.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Name of project in GCP.\n","willReplaceOnChanges":true},"tokenUri":{"type":"string","description":"Token uri.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Valid values - service_account.\n","willReplaceOnChanges":true}},"requiredInputs":["accountId","authProviderX509CertUrl","authUri","clientEmail","clientId","clientX509CertUrl","privateKey","privateKeyId","projectId","tokenUri","type"],"stateInputs":{"description":"Input properties used for looking up and filtering CredentialsGcp resources.\n","properties":{"accountId":{"type":"string","description":"The ID of the account associated with your token.\n","willReplaceOnChanges":true},"authProviderX509CertUrl":{"type":"string","description":".\n","willReplaceOnChanges":true},"authUri":{"type":"string","description":"Authentication uri.\n","willReplaceOnChanges":true},"clientEmail":{"type":"string","description":"Email associated with service account.\n","willReplaceOnChanges":true},"clientId":{"type":"string","description":"Client ID of service account.\n","willReplaceOnChanges":true},"clientX509CertUrl":{"type":"string","description":"Should be in following format - \"https://www.googleapis.com/robot/v1/metadata/x509/\".\n","willReplaceOnChanges":true},"privateKey":{"type":"string","description":"Private key of JSON key created during prerequisites stage.\n","willReplaceOnChanges":true},"privateKeyId":{"type":"string","description":"Private key ID of JSON key created during prerequisites stage.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Name of project in GCP.\n","willReplaceOnChanges":true},"tokenUri":{"type":"string","description":"Token uri.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Valid values - service_account.\n","willReplaceOnChanges":true}},"type":"object"}},"spotinst:index/dataIntegration:DataIntegration":{"description":"Provides a Spotinst Data Integration resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.DataIntegration(\"example\", {\n    name: \"foo\",\n    status: \"enabled\",\n    s3: {\n        bucketName: \"terraform-test-do-not-delete\",\n        subdir: \"terraform-test-data-integration\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.DataIntegration(\"example\",\n    name=\"foo\",\n    status=\"enabled\",\n    s3={\n        \"bucket_name\": \"terraform-test-do-not-delete\",\n        \"subdir\": \"terraform-test-data-integration\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.DataIntegration(\"example\", new()\n    {\n        Name = \"foo\",\n        Status = \"enabled\",\n        S3 = new SpotInst.Inputs.DataIntegrationS3Args\n        {\n            BucketName = \"terraform-test-do-not-delete\",\n            Subdir = \"terraform-test-data-integration\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := spotinst.NewDataIntegration(ctx, \"example\", \u0026spotinst.DataIntegrationArgs{\n\t\t\tName:   pulumi.String(\"foo\"),\n\t\t\tStatus: pulumi.String(\"enabled\"),\n\t\t\tS3: \u0026spotinst.DataIntegrationS3Args{\n\t\t\t\tBucketName: pulumi.String(\"terraform-test-do-not-delete\"),\n\t\t\t\tSubdir:     pulumi.String(\"terraform-test-data-integration\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.DataIntegration;\nimport com.pulumi.spotinst.DataIntegrationArgs;\nimport com.pulumi.spotinst.inputs.DataIntegrationS3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new DataIntegration(\"example\", DataIntegrationArgs.builder()\n            .name(\"foo\")\n            .status(\"enabled\")\n            .s3(DataIntegrationS3Args.builder()\n                .bucketName(\"terraform-test-do-not-delete\")\n                .subdir(\"terraform-test-data-integration\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:DataIntegration\n    properties:\n      name: foo\n      status: enabled\n      s3:\n        bucketName: terraform-test-do-not-delete\n        subdir: terraform-test-data-integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"The name of the data integration.\n"},"s3":{"$ref":"#/types/spotinst:index/DataIntegrationS3:DataIntegrationS3","description":"When vendor value is s3, the following fields are included:\n* `bucketName` - (Required) The name of the bucket to use. Your spot IAM Role policy needs to include s3:putObject permissions for this bucket. Can't be null.\n"},"status":{"type":"string","description":"Determines if this data integration is on or off. Valid values: `\"enabled\"`, `\"disabled\"`\n"}},"required":["name"],"inputProperties":{"name":{"type":"string","description":"The name of the data integration.\n"},"s3":{"$ref":"#/types/spotinst:index/DataIntegrationS3:DataIntegrationS3","description":"When vendor value is s3, the following fields are included:\n* `bucketName` - (Required) The name of the bucket to use. Your spot IAM Role policy needs to include s3:putObject permissions for this bucket. Can't be null.\n"},"status":{"type":"string","description":"Determines if this data integration is on or off. Valid values: `\"enabled\"`, `\"disabled\"`\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering DataIntegration resources.\n","properties":{"name":{"type":"string","description":"The name of the data integration.\n"},"s3":{"$ref":"#/types/spotinst:index/DataIntegrationS3:DataIntegrationS3","description":"When vendor value is s3, the following fields are included:\n* `bucketName` - (Required) The name of the bucket to use. Your spot IAM Role policy needs to include s3:putObject permissions for this bucket. Can't be null.\n"},"status":{"type":"string","description":"Determines if this data integration is on or off. Valid values: `\"enabled\"`, `\"disabled\"`\n"}},"type":"object"}},"spotinst:index/elastigroupAzureV3:ElastigroupAzureV3":{"properties":{"availabilityVsCost":{"type":"integer"},"bootDiagnostics":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3BootDiagnostic:ElastigroupAzureV3BootDiagnostic"}},"capacityReservation":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3CapacityReservation:ElastigroupAzureV3CapacityReservation"},"customData":{"type":"string"},"dataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3DataDisk:ElastigroupAzureV3DataDisk"}},"description":{"type":"string"},"desiredCapacity":{"type":"integer"},"drainingTimeout":{"type":"integer"},"extensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Extension:ElastigroupAzureV3Extension"}},"fallbackToOnDemand":{"type":"boolean"},"health":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Health:ElastigroupAzureV3Health"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Image:ElastigroupAzureV3Image"}},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3LoadBalancer:ElastigroupAzureV3LoadBalancer"}},"login":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Login:ElastigroupAzureV3Login"},"managedServiceIdentities":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ManagedServiceIdentity:ElastigroupAzureV3ManagedServiceIdentity"}},"maxSize":{"type":"integer"},"minSize":{"type":"integer"},"name":{"type":"string"},"network":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Network:ElastigroupAzureV3Network"},"onDemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"}},"os":{"type":"string"},"osDisk":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3OsDisk:ElastigroupAzureV3OsDisk"},"preferredZones":{"type":"array","items":{"type":"string"}},"proximityPlacementGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ProximityPlacementGroup:ElastigroupAzureV3ProximityPlacementGroup"}},"region":{"type":"string"},"resourceGroupName":{"type":"string"},"revertToSpot":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3RevertToSpot:ElastigroupAzureV3RevertToSpot"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingDownPolicy:ElastigroupAzureV3ScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingUpPolicy:ElastigroupAzureV3ScalingUpPolicy"}},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3SchedulingTask:ElastigroupAzureV3SchedulingTask"}},"secrets":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Secret:ElastigroupAzureV3Secret"}},"security":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Security:ElastigroupAzureV3Security"},"shutdownScript":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Signal:ElastigroupAzureV3Signal"}},"spotPercentage":{"type":"integer"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Tag:ElastigroupAzureV3Tag"}},"userData":{"type":"string"},"vmNamePrefix":{"type":"string"},"vmSizes":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3VmSizes:ElastigroupAzureV3VmSizes"},"zones":{"type":"array","items":{"type":"string"}}},"required":["bootDiagnostics","drainingTimeout","extensions","fallbackToOnDemand","maxSize","minSize","name","network","os","region","resourceGroupName","vmSizes"],"inputProperties":{"availabilityVsCost":{"type":"integer"},"bootDiagnostics":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3BootDiagnostic:ElastigroupAzureV3BootDiagnostic"}},"capacityReservation":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3CapacityReservation:ElastigroupAzureV3CapacityReservation"},"customData":{"type":"string"},"dataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3DataDisk:ElastigroupAzureV3DataDisk"}},"description":{"type":"string"},"desiredCapacity":{"type":"integer"},"drainingTimeout":{"type":"integer"},"extensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Extension:ElastigroupAzureV3Extension"}},"fallbackToOnDemand":{"type":"boolean"},"health":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Health:ElastigroupAzureV3Health"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Image:ElastigroupAzureV3Image"}},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3LoadBalancer:ElastigroupAzureV3LoadBalancer"}},"login":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Login:ElastigroupAzureV3Login"},"managedServiceIdentities":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ManagedServiceIdentity:ElastigroupAzureV3ManagedServiceIdentity"}},"maxSize":{"type":"integer"},"minSize":{"type":"integer"},"name":{"type":"string"},"network":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Network:ElastigroupAzureV3Network"},"onDemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"}},"os":{"type":"string"},"osDisk":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3OsDisk:ElastigroupAzureV3OsDisk"},"preferredZones":{"type":"array","items":{"type":"string"}},"proximityPlacementGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ProximityPlacementGroup:ElastigroupAzureV3ProximityPlacementGroup"}},"region":{"type":"string"},"resourceGroupName":{"type":"string"},"revertToSpot":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3RevertToSpot:ElastigroupAzureV3RevertToSpot"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingDownPolicy:ElastigroupAzureV3ScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingUpPolicy:ElastigroupAzureV3ScalingUpPolicy"}},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3SchedulingTask:ElastigroupAzureV3SchedulingTask"}},"secrets":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Secret:ElastigroupAzureV3Secret"}},"security":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Security:ElastigroupAzureV3Security"},"shutdownScript":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Signal:ElastigroupAzureV3Signal"}},"spotPercentage":{"type":"integer"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Tag:ElastigroupAzureV3Tag"}},"userData":{"type":"string"},"vmNamePrefix":{"type":"string"},"vmSizes":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3VmSizes:ElastigroupAzureV3VmSizes"},"zones":{"type":"array","items":{"type":"string"}}},"requiredInputs":["fallbackToOnDemand","network","os","region","resourceGroupName","vmSizes"],"stateInputs":{"description":"Input properties used for looking up and filtering ElastigroupAzureV3 resources.\n","properties":{"availabilityVsCost":{"type":"integer"},"bootDiagnostics":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3BootDiagnostic:ElastigroupAzureV3BootDiagnostic"}},"capacityReservation":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3CapacityReservation:ElastigroupAzureV3CapacityReservation"},"customData":{"type":"string"},"dataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3DataDisk:ElastigroupAzureV3DataDisk"}},"description":{"type":"string"},"desiredCapacity":{"type":"integer"},"drainingTimeout":{"type":"integer"},"extensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Extension:ElastigroupAzureV3Extension"}},"fallbackToOnDemand":{"type":"boolean"},"health":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Health:ElastigroupAzureV3Health"},"images":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Image:ElastigroupAzureV3Image"}},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3LoadBalancer:ElastigroupAzureV3LoadBalancer"}},"login":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Login:ElastigroupAzureV3Login"},"managedServiceIdentities":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ManagedServiceIdentity:ElastigroupAzureV3ManagedServiceIdentity"}},"maxSize":{"type":"integer"},"minSize":{"type":"integer"},"name":{"type":"string"},"network":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Network:ElastigroupAzureV3Network"},"onDemandCount":{"type":"integer"},"optimizationWindows":{"type":"array","items":{"type":"string"}},"os":{"type":"string"},"osDisk":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3OsDisk:ElastigroupAzureV3OsDisk"},"preferredZones":{"type":"array","items":{"type":"string"}},"proximityPlacementGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ProximityPlacementGroup:ElastigroupAzureV3ProximityPlacementGroup"}},"region":{"type":"string"},"resourceGroupName":{"type":"string"},"revertToSpot":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3RevertToSpot:ElastigroupAzureV3RevertToSpot"},"scalingDownPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingDownPolicy:ElastigroupAzureV3ScalingDownPolicy"}},"scalingUpPolicies":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3ScalingUpPolicy:ElastigroupAzureV3ScalingUpPolicy"}},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3SchedulingTask:ElastigroupAzureV3SchedulingTask"}},"secrets":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Secret:ElastigroupAzureV3Secret"}},"security":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Security:ElastigroupAzureV3Security"},"shutdownScript":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Signal:ElastigroupAzureV3Signal"}},"spotPercentage":{"type":"integer"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3Tag:ElastigroupAzureV3Tag"}},"userData":{"type":"string"},"vmNamePrefix":{"type":"string"},"vmSizes":{"$ref":"#/types/spotinst:index/ElastigroupAzureV3VmSizes:ElastigroupAzureV3VmSizes"},"zones":{"type":"array","items":{"type":"string"}}},"type":"object"}},"spotinst:index/healthCheck:HealthCheck":{"description":"Provides a Spotinst Health Check resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst httpCheck = new spotinst.HealthCheck(\"http_check\", {\n    name: \"sample_health_check\",\n    resourceId: \"sig-123\",\n    check: {\n        protocol: \"http\",\n        endpoint: \"http://endpoint.com\",\n        port: 1337,\n        interval: 10,\n        timeout: 10,\n        healthy: 1,\n        unhealthy: 1,\n    },\n    proxyAddress: \"http://proxy.com\",\n    proxyPort: 80,\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nhttp_check = spotinst.HealthCheck(\"http_check\",\n    name=\"sample_health_check\",\n    resource_id=\"sig-123\",\n    check={\n        \"protocol\": \"http\",\n        \"endpoint\": \"http://endpoint.com\",\n        \"port\": 1337,\n        \"interval\": 10,\n        \"timeout\": 10,\n        \"healthy\": 1,\n        \"unhealthy\": 1,\n    },\n    proxy_address=\"http://proxy.com\",\n    proxy_port=80)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var httpCheck = new SpotInst.HealthCheck(\"http_check\", new()\n    {\n        Name = \"sample_health_check\",\n        ResourceId = \"sig-123\",\n        Check = new SpotInst.Inputs.HealthCheckCheckArgs\n        {\n            Protocol = \"http\",\n            Endpoint = \"http://endpoint.com\",\n            Port = 1337,\n            Interval = 10,\n            Timeout = 10,\n            Healthy = 1,\n            Unhealthy = 1,\n        },\n        ProxyAddress = \"http://proxy.com\",\n        ProxyPort = 80,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := spotinst.NewHealthCheck(ctx, \"http_check\", \u0026spotinst.HealthCheckArgs{\n\t\t\tName:       pulumi.String(\"sample_health_check\"),\n\t\t\tResourceId: pulumi.String(\"sig-123\"),\n\t\t\tCheck: \u0026spotinst.HealthCheckCheckArgs{\n\t\t\t\tProtocol:  pulumi.String(\"http\"),\n\t\t\t\tEndpoint:  pulumi.String(\"http://endpoint.com\"),\n\t\t\t\tPort:      pulumi.Int(1337),\n\t\t\t\tInterval:  pulumi.Int(10),\n\t\t\t\tTimeout:   pulumi.Int(10),\n\t\t\t\tHealthy:   pulumi.Int(1),\n\t\t\t\tUnhealthy: pulumi.Int(1),\n\t\t\t},\n\t\t\tProxyAddress: pulumi.String(\"http://proxy.com\"),\n\t\t\tProxyPort:    pulumi.Int(80),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.HealthCheck;\nimport com.pulumi.spotinst.HealthCheckArgs;\nimport com.pulumi.spotinst.inputs.HealthCheckCheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var httpCheck = new HealthCheck(\"httpCheck\", HealthCheckArgs.builder()\n            .name(\"sample_health_check\")\n            .resourceId(\"sig-123\")\n            .check(HealthCheckCheckArgs.builder()\n                .protocol(\"http\")\n                .endpoint(\"http://endpoint.com\")\n                .port(1337)\n                .interval(10)\n                .timeout(10)\n                .healthy(1)\n                .unhealthy(1)\n                .build())\n            .proxyAddress(\"http://proxy.com\")\n            .proxyPort(80)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  httpCheck:\n    type: spotinst:HealthCheck\n    name: http_check\n    properties:\n      name: sample_health_check\n      resourceId: sig-123\n      check:\n        protocol: http\n        endpoint: http://endpoint.com\n        port: 1337\n        interval: 10\n        timeout: 10\n        healthy: 1\n        unhealthy: 1\n      proxyAddress: http://proxy.com\n      proxyPort: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"check":{"$ref":"#/types/spotinst:index/HealthCheckCheck:HealthCheckCheck","description":"Describes the check to execute.\n"},"name":{"type":"string","description":"The name of the health check.\n"},"proxyAddress":{"type":"string"},"proxyPort":{"type":"integer"},"resourceId":{"type":"string","description":"The ID of the resource to check.\n"}},"required":["name","proxyAddress","resourceId"],"inputProperties":{"check":{"$ref":"#/types/spotinst:index/HealthCheckCheck:HealthCheckCheck","description":"Describes the check to execute.\n"},"name":{"type":"string","description":"The name of the health check.\n"},"proxyAddress":{"type":"string"},"proxyPort":{"type":"integer"},"resourceId":{"type":"string","description":"The ID of the resource to check.\n"}},"requiredInputs":["proxyAddress","resourceId"],"stateInputs":{"description":"Input properties used for looking up and filtering HealthCheck resources.\n","properties":{"check":{"$ref":"#/types/spotinst:index/HealthCheckCheck:HealthCheckCheck","description":"Describes the check to execute.\n"},"name":{"type":"string","description":"The name of the health check.\n"},"proxyAddress":{"type":"string"},"proxyPort":{"type":"integer"},"resourceId":{"type":"string","description":"The ID of the resource to check.\n"}},"type":"object"}},"spotinst:index/notificationCenter:NotificationCenter":{"properties":{"computePolicyConfig":{"$ref":"#/types/spotinst:index/NotificationCenterComputePolicyConfig:NotificationCenterComputePolicyConfig"},"description":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"privacyLevel":{"type":"string"},"registeredUsers":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterRegisteredUser:NotificationCenterRegisteredUser"}},"subscriptions":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterSubscription:NotificationCenterSubscription"}}},"required":["computePolicyConfig","name","privacyLevel"],"inputProperties":{"computePolicyConfig":{"$ref":"#/types/spotinst:index/NotificationCenterComputePolicyConfig:NotificationCenterComputePolicyConfig"},"description":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"privacyLevel":{"type":"string"},"registeredUsers":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterRegisteredUser:NotificationCenterRegisteredUser"}},"subscriptions":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterSubscription:NotificationCenterSubscription"}}},"requiredInputs":["computePolicyConfig","privacyLevel"],"stateInputs":{"description":"Input properties used for looking up and filtering NotificationCenter resources.\n","properties":{"computePolicyConfig":{"$ref":"#/types/spotinst:index/NotificationCenterComputePolicyConfig:NotificationCenterComputePolicyConfig"},"description":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"privacyLevel":{"type":"string"},"registeredUsers":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterRegisteredUser:NotificationCenterRegisteredUser"}},"subscriptions":{"type":"array","items":{"$ref":"#/types/spotinst:index/NotificationCenterSubscription:NotificationCenterSubscription"}}},"type":"object"}},"spotinst:index/oceanRightSizingRule:OceanRightSizingRule":{"description":"Manages a Spotinst Ocean right sizing rule resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.OceanRightSizingRule(\"example\", {\n    oceanId: \"o-123456\",\n    ruleName: \"test-rule\",\n    excludePreliminaryRecommendations: true,\n    restartReplicas: \"ALL_MANIFEST\",\n    recommendationApplicationHpas: [{\n        allowHpaRecommendations: true,\n    }],\n    recommendationApplicationIntervals: [\n        {\n            repetitionBasis: \"WEEKLY\",\n            weeklyRepetitionBases: [{\n                intervalDays: [\n                    \"MONDAY\",\n                    \"WEDNESDAY\",\n                ],\n                intervalHoursStartTime: \"12:00\",\n                intervalHoursEndTime: \"14:00\",\n            }],\n        },\n        {\n            repetitionBasis: \"MONTHLY\",\n            monthlyRepetitionBases: [{\n                intervalMonths: [\n                    2,\n                    6,\n                    9,\n                ],\n                weekOfTheMonths: [\n                    \"FIRST\",\n                    \"LAST\",\n                ],\n                weeklyRepetitionBases: [{\n                    intervalDays: [\"MONDAY\"],\n                    intervalHoursStartTime: \"03:00\",\n                    intervalHoursEndTime: \"04:00\",\n                }],\n            }],\n        },\n    ],\n    recommendationApplicationBoundaries: [{\n        cpuMin: 120,\n        cpuMax: 190,\n        memoryMin: 160,\n        memoryMax: 190,\n    }],\n    recommendationApplicationMinThresholds: [{\n        cpuPercentage: 0.412,\n        memoryPercentage: 0.36,\n    }],\n    recommendationApplicationOverheadValues: [{\n        cpuPercentage: 0.8,\n        memoryPercentage: 0.5,\n    }],\n    autoApplyDefinitions: [{\n        enabled: true,\n        namespaces: [\n            \"kube-system\",\n            \"spot-system\",\n        ],\n        labels: {\n            \"k8s-app\": \"kube-proxy\",\n            \"app.kubernetes.io/name\": \"metrics-server\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.OceanRightSizingRule(\"example\",\n    ocean_id=\"o-123456\",\n    rule_name=\"test-rule\",\n    exclude_preliminary_recommendations=True,\n    restart_replicas=\"ALL_MANIFEST\",\n    recommendation_application_hpas=[{\n        \"allow_hpa_recommendations\": True,\n    }],\n    recommendation_application_intervals=[\n        {\n            \"repetition_basis\": \"WEEKLY\",\n            \"weekly_repetition_bases\": [{\n                \"interval_days\": [\n                    \"MONDAY\",\n                    \"WEDNESDAY\",\n                ],\n                \"interval_hours_start_time\": \"12:00\",\n                \"interval_hours_end_time\": \"14:00\",\n            }],\n        },\n        {\n            \"repetition_basis\": \"MONTHLY\",\n            \"monthly_repetition_bases\": [{\n                \"interval_months\": [\n                    2,\n                    6,\n                    9,\n                ],\n                \"week_of_the_months\": [\n                    \"FIRST\",\n                    \"LAST\",\n                ],\n                \"weekly_repetition_bases\": [{\n                    \"interval_days\": [\"MONDAY\"],\n                    \"interval_hours_start_time\": \"03:00\",\n                    \"interval_hours_end_time\": \"04:00\",\n                }],\n            }],\n        },\n    ],\n    recommendation_application_boundaries=[{\n        \"cpu_min\": 120,\n        \"cpu_max\": 190,\n        \"memory_min\": 160,\n        \"memory_max\": 190,\n    }],\n    recommendation_application_min_thresholds=[{\n        \"cpu_percentage\": 0.412,\n        \"memory_percentage\": 0.36,\n    }],\n    recommendation_application_overhead_values=[{\n        \"cpu_percentage\": 0.8,\n        \"memory_percentage\": 0.5,\n    }],\n    auto_apply_definitions=[{\n        \"enabled\": True,\n        \"namespaces\": [\n            \"kube-system\",\n            \"spot-system\",\n        ],\n        \"labels\": {\n            \"k8s-app\": \"kube-proxy\",\n            \"app.kubernetes.io/name\": \"metrics-server\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.OceanRightSizingRule(\"example\", new()\n    {\n        OceanId = \"o-123456\",\n        RuleName = \"test-rule\",\n        ExcludePreliminaryRecommendations = true,\n        RestartReplicas = \"ALL_MANIFEST\",\n        RecommendationApplicationHpas = new[]\n        {\n            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationHpaArgs\n            {\n                AllowHpaRecommendations = true,\n            },\n        },\n        RecommendationApplicationIntervals = new[]\n        {\n            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationIntervalArgs\n            {\n                RepetitionBasis = \"WEEKLY\",\n                WeeklyRepetitionBases = new[]\n                {\n                    new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBaseArgs\n                    {\n                        IntervalDays = new[]\n                        {\n                            \"MONDAY\",\n                            \"WEDNESDAY\",\n                        },\n                        IntervalHoursStartTime = \"12:00\",\n                        IntervalHoursEndTime = \"14:00\",\n                    },\n                },\n            },\n            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationIntervalArgs\n            {\n                RepetitionBasis = \"MONTHLY\",\n                MonthlyRepetitionBases = new[]\n                {\n                    new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseArgs\n                    {\n                        IntervalMonths = new[]\n                        {\n                            2,\n                            6,\n                            9,\n                        },\n                        WeekOfTheMonths = new[]\n                        {\n                            \"FIRST\",\n                            \"LAST\",\n                        },\n                        WeeklyRepetitionBases = new[]\n                        {\n                            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBaseArgs\n                            {\n                                IntervalDays = new[]\n                                {\n                                    \"MONDAY\",\n                                },\n                                IntervalHoursStartTime = \"03:00\",\n                                IntervalHoursEndTime = \"04:00\",\n                            },\n                        },\n                    },\n                },\n            },\n        },\n        RecommendationApplicationBoundaries = new[]\n        {\n            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationBoundaryArgs\n            {\n                CpuMin = 120,\n                CpuMax = 190,\n                MemoryMin = 160,\n                MemoryMax = 190,\n            },\n        },\n        RecommendationApplicationMinThresholds = new[]\n        {\n            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationMinThresholdArgs\n            {\n                CpuPercentage = 0.412,\n                MemoryPercentage = 0.36,\n            },\n        },\n        RecommendationApplicationOverheadValues = new[]\n        {\n            new SpotInst.Inputs.OceanRightSizingRuleRecommendationApplicationOverheadValueArgs\n            {\n                CpuPercentage = 0.8,\n                MemoryPercentage = 0.5,\n            },\n        },\n        AutoApplyDefinitions = new[]\n        {\n            new SpotInst.Inputs.OceanRightSizingRuleAutoApplyDefinitionArgs\n            {\n                Enabled = true,\n                Namespaces = new[]\n                {\n                    \"kube-system\",\n                    \"spot-system\",\n                },\n                Labels = \n                {\n                    { \"k8s-app\", \"kube-proxy\" },\n                    { \"app.kubernetes.io/name\", \"metrics-server\" },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := spotinst.NewOceanRightSizingRule(ctx, \"example\", \u0026spotinst.OceanRightSizingRuleArgs{\n\t\t\tOceanId:                           pulumi.String(\"o-123456\"),\n\t\t\tRuleName:                          pulumi.String(\"test-rule\"),\n\t\t\tExcludePreliminaryRecommendations: pulumi.Bool(true),\n\t\t\tRestartReplicas:                   pulumi.String(\"ALL_MANIFEST\"),\n\t\t\tRecommendationApplicationHpas: spotinst.OceanRightSizingRuleRecommendationApplicationHpaArray{\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationHpaArgs{\n\t\t\t\t\tAllowHpaRecommendations: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecommendationApplicationIntervals: spotinst.OceanRightSizingRuleRecommendationApplicationIntervalArray{\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationIntervalArgs{\n\t\t\t\t\tRepetitionBasis: pulumi.String(\"WEEKLY\"),\n\t\t\t\t\tWeeklyRepetitionBases: spotinst.OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBaseArray{\n\t\t\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBaseArgs{\n\t\t\t\t\t\t\tIntervalDays: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"WEDNESDAY\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIntervalHoursStartTime: pulumi.String(\"12:00\"),\n\t\t\t\t\t\t\tIntervalHoursEndTime:   pulumi.String(\"14:00\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationIntervalArgs{\n\t\t\t\t\tRepetitionBasis: pulumi.String(\"MONTHLY\"),\n\t\t\t\t\tMonthlyRepetitionBases: spotinst.OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseArray{\n\t\t\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseArgs{\n\t\t\t\t\t\t\tIntervalMonths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t\tpulumi.Int(9),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tWeekOfTheMonths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"FIRST\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"LAST\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tWeeklyRepetitionBases: spotinst.OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBaseArray{\n\t\t\t\t\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBaseArgs{\n\t\t\t\t\t\t\t\t\tIntervalDays: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIntervalHoursStartTime: pulumi.String(\"03:00\"),\n\t\t\t\t\t\t\t\t\tIntervalHoursEndTime:   pulumi.String(\"04:00\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecommendationApplicationBoundaries: spotinst.OceanRightSizingRuleRecommendationApplicationBoundaryArray{\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationBoundaryArgs{\n\t\t\t\t\tCpuMin:    pulumi.Float64(120),\n\t\t\t\t\tCpuMax:    pulumi.Float64(190),\n\t\t\t\t\tMemoryMin: pulumi.Int(160),\n\t\t\t\t\tMemoryMax: pulumi.Int(190),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecommendationApplicationMinThresholds: spotinst.OceanRightSizingRuleRecommendationApplicationMinThresholdArray{\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationMinThresholdArgs{\n\t\t\t\t\tCpuPercentage:    pulumi.Float64(0.412),\n\t\t\t\t\tMemoryPercentage: pulumi.Float64(0.36),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecommendationApplicationOverheadValues: spotinst.OceanRightSizingRuleRecommendationApplicationOverheadValueArray{\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleRecommendationApplicationOverheadValueArgs{\n\t\t\t\t\tCpuPercentage:    pulumi.Float64(0.8),\n\t\t\t\t\tMemoryPercentage: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoApplyDefinitions: spotinst.OceanRightSizingRuleAutoApplyDefinitionArray{\n\t\t\t\t\u0026spotinst.OceanRightSizingRuleAutoApplyDefinitionArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"kube-system\"),\n\t\t\t\t\t\tpulumi.String(\"spot-system\"),\n\t\t\t\t\t},\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"k8s-app\":                pulumi.String(\"kube-proxy\"),\n\t\t\t\t\t\t\"app.kubernetes.io/name\": pulumi.String(\"metrics-server\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.OceanRightSizingRule;\nimport com.pulumi.spotinst.OceanRightSizingRuleArgs;\nimport com.pulumi.spotinst.inputs.OceanRightSizingRuleRecommendationApplicationHpaArgs;\nimport com.pulumi.spotinst.inputs.OceanRightSizingRuleRecommendationApplicationIntervalArgs;\nimport com.pulumi.spotinst.inputs.OceanRightSizingRuleRecommendationApplicationBoundaryArgs;\nimport com.pulumi.spotinst.inputs.OceanRightSizingRuleRecommendationApplicationMinThresholdArgs;\nimport com.pulumi.spotinst.inputs.OceanRightSizingRuleRecommendationApplicationOverheadValueArgs;\nimport com.pulumi.spotinst.inputs.OceanRightSizingRuleAutoApplyDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanRightSizingRule(\"example\", OceanRightSizingRuleArgs.builder()\n            .oceanId(\"o-123456\")\n            .ruleName(\"test-rule\")\n            .excludePreliminaryRecommendations(true)\n            .restartReplicas(\"ALL_MANIFEST\")\n            .recommendationApplicationHpas(OceanRightSizingRuleRecommendationApplicationHpaArgs.builder()\n                .allowHpaRecommendations(true)\n                .build())\n            .recommendationApplicationIntervals(            \n                OceanRightSizingRuleRecommendationApplicationIntervalArgs.builder()\n                    .repetitionBasis(\"WEEKLY\")\n                    .weeklyRepetitionBases(OceanRightSizingRuleRecommendationApplicationIntervalWeeklyRepetitionBaseArgs.builder()\n                        .intervalDays(                        \n                            \"MONDAY\",\n                            \"WEDNESDAY\")\n                        .intervalHoursStartTime(\"12:00\")\n                        .intervalHoursEndTime(\"14:00\")\n                        .build())\n                    .build(),\n                OceanRightSizingRuleRecommendationApplicationIntervalArgs.builder()\n                    .repetitionBasis(\"MONTHLY\")\n                    .monthlyRepetitionBases(OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseArgs.builder()\n                        .intervalMonths(                        \n                            2,\n                            6,\n                            9)\n                        .weekOfTheMonths(                        \n                            \"FIRST\",\n                            \"LAST\")\n                        .weeklyRepetitionBases(OceanRightSizingRuleRecommendationApplicationIntervalMonthlyRepetitionBaseWeeklyRepetitionBaseArgs.builder()\n                            .intervalDays(\"MONDAY\")\n                            .intervalHoursStartTime(\"03:00\")\n                            .intervalHoursEndTime(\"04:00\")\n                            .build())\n                        .build())\n                    .build())\n            .recommendationApplicationBoundaries(OceanRightSizingRuleRecommendationApplicationBoundaryArgs.builder()\n                .cpuMin(120.0)\n                .cpuMax(190.0)\n                .memoryMin(160)\n                .memoryMax(190)\n                .build())\n            .recommendationApplicationMinThresholds(OceanRightSizingRuleRecommendationApplicationMinThresholdArgs.builder()\n                .cpuPercentage(0.412)\n                .memoryPercentage(0.36)\n                .build())\n            .recommendationApplicationOverheadValues(OceanRightSizingRuleRecommendationApplicationOverheadValueArgs.builder()\n                .cpuPercentage(0.8)\n                .memoryPercentage(0.5)\n                .build())\n            .autoApplyDefinitions(OceanRightSizingRuleAutoApplyDefinitionArgs.builder()\n                .enabled(true)\n                .namespaces(                \n                    \"kube-system\",\n                    \"spot-system\")\n                .labels(Map.ofEntries(\n                    Map.entry(\"k8s-app\", \"kube-proxy\"),\n                    Map.entry(\"app.kubernetes.io/name\", \"metrics-server\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:OceanRightSizingRule\n    properties:\n      oceanId: o-123456\n      ruleName: test-rule\n      excludePreliminaryRecommendations: true\n      restartReplicas: ALL_MANIFEST\n      recommendationApplicationHpas:\n        - allowHpaRecommendations: true\n      recommendationApplicationIntervals:\n        - repetitionBasis: WEEKLY\n          weeklyRepetitionBases:\n            - intervalDays:\n                - MONDAY\n                - WEDNESDAY\n              intervalHoursStartTime: 12:00\n              intervalHoursEndTime: 14:00\n        - repetitionBasis: MONTHLY\n          monthlyRepetitionBases:\n            - intervalMonths:\n                - 2\n                - 6\n                - 9\n              weekOfTheMonths:\n                - FIRST\n                - LAST\n              weeklyRepetitionBases:\n                - intervalDays:\n                    - MONDAY\n                  intervalHoursStartTime: 03:00\n                  intervalHoursEndTime: 04:00\n      recommendationApplicationBoundaries:\n        - cpuMin: 120\n          cpuMax: 190\n          memoryMin: 160\n          memoryMax: 190\n      recommendationApplicationMinThresholds:\n        - cpuPercentage: 0.412\n          memoryPercentage: 0.36\n      recommendationApplicationOverheadValues:\n        - cpuPercentage: 0.8\n          memoryPercentage: 0.5\n      autoApplyDefinitions:\n        - enabled: true\n          namespaces:\n            - kube-system\n            - spot-system\n          labels:\n            k8s-app: kube-proxy\n            app.kubernetes.io/name: metrics-server\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"attachWorkloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAttachWorkload:OceanRightSizingRuleAttachWorkload"}},"autoApplyDefinitions":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAutoApplyDefinition:OceanRightSizingRuleAutoApplyDefinition"},"description":"Ocean Rightsizing Rule Auto Apply Configuration.\n"},"detachWorkloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleDetachWorkload:OceanRightSizingRuleDetachWorkload"}},"downsideOnly":{"type":"boolean"},"excludePreliminaryRecommendations":{"type":"boolean","description":"Exclude preliminary recommendations (recommendations based on less than 4 full days of data).\n"},"oceanId":{"type":"string","description":"Identifier of the Ocean cluster.\n"},"recommendationApplicationBoundaries":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationBoundary:OceanRightSizingRuleRecommendationApplicationBoundary"},"description":"Determines the Ocean Rightsizing rule recommendation application boundaries.\n"},"recommendationApplicationHpas":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationHpa:OceanRightSizingRuleRecommendationApplicationHpa"},"description":"HPA Rightsizing Rule Recommendation Configuration\n"},"recommendationApplicationIntervals":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationInterval:OceanRightSizingRuleRecommendationApplicationInterval"},"description":"Determines the Ocean Rightsizing rule recommendation application intervals.\n"},"recommendationApplicationMinThresholds":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationMinThreshold:OceanRightSizingRuleRecommendationApplicationMinThreshold"},"description":"Determines the extent of difference between current request and recommendation to trigger a change in percentage.\n"},"recommendationApplicationOverheadValues":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationOverheadValue:OceanRightSizingRuleRecommendationApplicationOverheadValue"},"description":"Determines the Ocean Rightsizing rule recommendation application overhead values.\n"},"restartReplicas":{"type":"string","description":"Valid values: \"MORE_THAN_ONE_REPLICA\" \"ALL_MANIFEST\" \"NO_RESTART\". Enable to sequentially restart pod batches according to recommendations, for all pods, only more than 1 replica, or not any pod.\n"},"ruleName":{"type":"string","description":"The unique name of the rule.\n"}},"required":["recommendationApplicationIntervals","ruleName"],"inputProperties":{"attachWorkloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAttachWorkload:OceanRightSizingRuleAttachWorkload"}},"autoApplyDefinitions":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAutoApplyDefinition:OceanRightSizingRuleAutoApplyDefinition"},"description":"Ocean Rightsizing Rule Auto Apply Configuration.\n"},"detachWorkloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleDetachWorkload:OceanRightSizingRuleDetachWorkload"}},"downsideOnly":{"type":"boolean"},"excludePreliminaryRecommendations":{"type":"boolean","description":"Exclude preliminary recommendations (recommendations based on less than 4 full days of data).\n"},"oceanId":{"type":"string","description":"Identifier of the Ocean cluster.\n"},"recommendationApplicationBoundaries":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationBoundary:OceanRightSizingRuleRecommendationApplicationBoundary"},"description":"Determines the Ocean Rightsizing rule recommendation application boundaries.\n"},"recommendationApplicationHpas":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationHpa:OceanRightSizingRuleRecommendationApplicationHpa"},"description":"HPA Rightsizing Rule Recommendation Configuration\n"},"recommendationApplicationIntervals":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationInterval:OceanRightSizingRuleRecommendationApplicationInterval"},"description":"Determines the Ocean Rightsizing rule recommendation application intervals.\n"},"recommendationApplicationMinThresholds":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationMinThreshold:OceanRightSizingRuleRecommendationApplicationMinThreshold"},"description":"Determines the extent of difference between current request and recommendation to trigger a change in percentage.\n"},"recommendationApplicationOverheadValues":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationOverheadValue:OceanRightSizingRuleRecommendationApplicationOverheadValue"},"description":"Determines the Ocean Rightsizing rule recommendation application overhead values.\n"},"restartReplicas":{"type":"string","description":"Valid values: \"MORE_THAN_ONE_REPLICA\" \"ALL_MANIFEST\" \"NO_RESTART\". Enable to sequentially restart pod batches according to recommendations, for all pods, only more than 1 replica, or not any pod.\n"},"ruleName":{"type":"string","description":"The unique name of the rule.\n"}},"requiredInputs":["recommendationApplicationIntervals","ruleName"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanRightSizingRule resources.\n","properties":{"attachWorkloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAttachWorkload:OceanRightSizingRuleAttachWorkload"}},"autoApplyDefinitions":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleAutoApplyDefinition:OceanRightSizingRuleAutoApplyDefinition"},"description":"Ocean Rightsizing Rule Auto Apply Configuration.\n"},"detachWorkloads":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleDetachWorkload:OceanRightSizingRuleDetachWorkload"}},"downsideOnly":{"type":"boolean"},"excludePreliminaryRecommendations":{"type":"boolean","description":"Exclude preliminary recommendations (recommendations based on less than 4 full days of data).\n"},"oceanId":{"type":"string","description":"Identifier of the Ocean cluster.\n"},"recommendationApplicationBoundaries":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationBoundary:OceanRightSizingRuleRecommendationApplicationBoundary"},"description":"Determines the Ocean Rightsizing rule recommendation application boundaries.\n"},"recommendationApplicationHpas":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationHpa:OceanRightSizingRuleRecommendationApplicationHpa"},"description":"HPA Rightsizing Rule Recommendation Configuration\n"},"recommendationApplicationIntervals":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationInterval:OceanRightSizingRuleRecommendationApplicationInterval"},"description":"Determines the Ocean Rightsizing rule recommendation application intervals.\n"},"recommendationApplicationMinThresholds":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationMinThreshold:OceanRightSizingRuleRecommendationApplicationMinThreshold"},"description":"Determines the extent of difference between current request and recommendation to trigger a change in percentage.\n"},"recommendationApplicationOverheadValues":{"type":"array","items":{"$ref":"#/types/spotinst:index/OceanRightSizingRuleRecommendationApplicationOverheadValue:OceanRightSizingRuleRecommendationApplicationOverheadValue"},"description":"Determines the Ocean Rightsizing rule recommendation application overhead values.\n"},"restartReplicas":{"type":"string","description":"Valid values: \"MORE_THAN_ONE_REPLICA\" \"ALL_MANIFEST\" \"NO_RESTART\". Enable to sequentially restart pod batches according to recommendations, for all pods, only more than 1 replica, or not any pod.\n"},"ruleName":{"type":"string","description":"The unique name of the rule.\n"}},"type":"object"}},"spotinst:index/statefulNodeAzure:StatefulNodeAzure":{"description":"Provides a Spotinst stateful node Azure resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst testStatefulNodeAzure = new spotinst.StatefulNodeAzure(\"test_stateful_node_azure\", {\n    name: \"example_stateful_node_azure\",\n    region: \"eastus\",\n    resourceGroupName: \"spotinst-azure\",\n    description: \"example_stateful_node_azure_description\",\n    strategy: {\n        drainingTimeout: 30,\n        fallbackToOnDemand: true,\n        optimizationWindows: [\"Tue:19:46-Tue:20:46\"],\n        odWindows: [\"Wed:19:46-Wed:21:46\"],\n        availabilityVsCost: 100,\n        vmAdmins: [\n            \"UbuntuUser\",\n            \"TestUser\",\n        ],\n        revertToSpot: {\n            performAt: \"timeWindow\",\n        },\n        interruptionToleration: {\n            isEnabled: true,\n            threshold: 3,\n            evaluationPeriod: 30,\n            cooldown: 120,\n        },\n        preferredLifeCycle: \"od\",\n        capacityReservations: [{\n            shouldUtilize: true,\n            utilizationStrategy: \"utilizeOverOD\",\n            capacityReservationGroups: [{\n                crgName: \"crg name\",\n                crgResourceGroupName: \"resourceGroupName\",\n                crgShouldPrioritize: true,\n            }],\n        }],\n    },\n    os: \"Linux\",\n    vmSizes: {\n        odSizes: [\n            \"standard_ds1_v2\",\n            \"standard_ds2_v2\",\n        ],\n        spotSizes: [\n            \"standard_ds1_v2\",\n            \"standard_ds2_v2\",\n        ],\n        preferredSpotSizes: [\"standard_ds1_v2\"],\n        excludedVmSizes: [\"standard_ds2_v3\"],\n        spotSizeAttributes: {\n            maxCpu: 16,\n            minCpu: 2,\n            maxMemory: 48,\n            minMemory: 2,\n            maxStorage: 1000,\n            minStorage: 50,\n        },\n    },\n    zones: [\n        \"1\",\n        \"3\",\n    ],\n    preferredZone: \"1\",\n    customData: \"\",\n    shutdownScript: \"\",\n    userData: \"\",\n    vmName: \"VMName\",\n    vmNamePrefix: \"VMNamePrefix\",\n    licenseType: \"SLES_BYOS\",\n    bootDiagnostics: [{\n        isEnabled: true,\n        storageUrl: \"https://.blob.core.windows.net/test\",\n        type: \"unmanaged\",\n    }],\n    dataDisks: [\n        {\n            sizeGb: 1,\n            lun: 1,\n            type: \"Standard_LRS\",\n        },\n        {\n            sizeGb: 10,\n            lun: 2,\n            type: \"Standard_LRS\",\n        },\n    ],\n    extensions: [{\n        name: \"extensionName\",\n        type: \"customScript\",\n        publisher: \"Microsoft.Azure.Extensions\",\n        apiVersion: \"2.0\",\n        minorVersionAutoUpgrade: true,\n        protectedSettings: {\n            script: \"IyEvYmluL2Jhc2gKZWNobyAibmlyIiA+IC9ob29uaXIudHh0Cg==\",\n        },\n        publicSettings: {\n            fileUris: \"https://testspot/Azuretest.sh\",\n        },\n    }],\n    image: {\n        marketplaceImages: [{\n            publisher: \"Canonical\",\n            offer: \"UbuntuServer\",\n            sku: \"16.04-LTS\",\n            version: \"latest\",\n        }],\n        customImages: [{\n            customImageResourceGroupName: \"resourceGroupName\",\n            name: \"imageName\",\n        }],\n        galleries: [{\n            galleryResourceGroupName: \"resourceGroupName\",\n            galleryName: \"galleryName\",\n            imageName: \"imageName\",\n            versionName: \"1.1.0\",\n            spotAccountId: \"act-123456\",\n        }],\n    },\n    loadBalancers: [{\n        type: \"loadBalancer\",\n        resourceGroupName: \"testResourceGroup\",\n        name: \"testLoadBalancer\",\n        sku: \"Standard\",\n        backendPoolNames: [\n            \"testBackendPool1\",\n            \"testBackendPool2\",\n        ],\n    }],\n    login: {\n        userName: \"admin\",\n        sshPublicKey: \"33a2s1f3g5a1df5g1ad3f2g1adfg56dfg==\",\n    },\n    managedServiceIdentities: [{\n        name: \"mySI2\",\n        resourceGroupName: \"myResourceGroup\",\n        subscriptionId: \"12345678-abcd-1234-abcd-123456789ab\",\n    }],\n    network: {\n        networkResourceGroupName: \"subnetResourceGroup\",\n        virtualNetworkName: \"vname\",\n        networkInterfaces: [{\n            isPrimary: true,\n            subnetName: \"testSubnet\",\n            assignPublicIp: true,\n            publicIpSku: \"Standard\",\n            networkSecurityGroups: [{\n                networkResourceGroupName: \"test\",\n                name: \"test\",\n            }],\n            enableIpForwarding: true,\n            privateIpAddresses: [\"172.23.4.20\"],\n            additionalIpConfigurations: [{\n                name: \"test\",\n                privateIpAddressVersion: \"IPv4\",\n            }],\n            publicIps: [{\n                networkResourceGroupName: \"resourceGroup\",\n                name: \"test\",\n            }],\n            applicationSecurityGroups: [{\n                networkResourceGroupName: \"AsgResourceGroup\",\n                name: \"AsgName\",\n            }],\n        }],\n    },\n    osDisk: {\n        sizeGb: 30,\n        type: \"Standard_LRS\",\n        caching: \"ReadOnly\",\n    },\n    secrets: [{\n        sourceVaults: [{\n            name: \"string\",\n            resourceGroupName: \"string\",\n        }],\n        vaultCertificates: [{\n            certificateUrl: \"string\",\n            certificateStore: \"string\",\n        }],\n    }],\n    security: {\n        securityType: \"ConfidentialVM\",\n        secureBootEnabled: true,\n        vtpmEnabled: true,\n        encryptionAtHost: false,\n        confidentialOsDiskEncryption: \"true\",\n    },\n    tags: [{\n        tagKey: \"Creator\",\n        tagValue: \"string\",\n    }],\n    health: {\n        healthCheckTypes: [\"vmState\"],\n        unhealthyDuration: 300,\n        gracePeriod: 120,\n        autoHealing: true,\n    },\n    shouldPersistOsDisk: false,\n    osDiskPersistenceMode: \"reattach\",\n    shouldPersistDataDisks: true,\n    dataDisksPersistenceMode: \"reattach\",\n    shouldPersistNetwork: true,\n    schedulingTasks: [\n        {\n            isEnabled: true,\n            type: \"pause\",\n            cronExpression: \"44 10 * * *\",\n        },\n        {\n            isEnabled: true,\n            type: \"resume\",\n            cronExpression: \"48 10 * * *\",\n        },\n        {\n            isEnabled: true,\n            type: \"recycle\",\n            cronExpression: \"52 10 * * *\",\n        },\n    ],\n    signals: [\n        {\n            type: \"vmReady\",\n            timeout: 20,\n        },\n        {\n            type: \"vmReady\",\n            timeout: 40,\n        },\n    ],\n    proximityPlacementGroups: [{\n        name: \"TestPPG\",\n        resourceGroupName: \"TestResourceGroup\",\n    }],\n    deletes: [{\n        shouldTerminateVm: true,\n        networkShouldDeallocate: true,\n        networkTtlInHours: 0,\n        diskShouldDeallocate: true,\n        diskTtlInHours: 0,\n        snapshotShouldDeallocate: true,\n        snapshotTtlInHours: 0,\n        publicIpShouldDeallocate: true,\n        publicIpTtlInHours: 0,\n        shouldDeregisterFromLb: true,\n        shouldRevertToOd: false,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\ntest_stateful_node_azure = spotinst.StatefulNodeAzure(\"test_stateful_node_azure\",\n    name=\"example_stateful_node_azure\",\n    region=\"eastus\",\n    resource_group_name=\"spotinst-azure\",\n    description=\"example_stateful_node_azure_description\",\n    strategy={\n        \"draining_timeout\": 30,\n        \"fallback_to_on_demand\": True,\n        \"optimization_windows\": [\"Tue:19:46-Tue:20:46\"],\n        \"od_windows\": [\"Wed:19:46-Wed:21:46\"],\n        \"availability_vs_cost\": 100,\n        \"vm_admins\": [\n            \"UbuntuUser\",\n            \"TestUser\",\n        ],\n        \"revert_to_spot\": {\n            \"perform_at\": \"timeWindow\",\n        },\n        \"interruption_toleration\": {\n            \"is_enabled\": True,\n            \"threshold\": 3,\n            \"evaluation_period\": 30,\n            \"cooldown\": 120,\n        },\n        \"preferred_life_cycle\": \"od\",\n        \"capacity_reservations\": [{\n            \"should_utilize\": True,\n            \"utilization_strategy\": \"utilizeOverOD\",\n            \"capacity_reservation_groups\": [{\n                \"crg_name\": \"crg name\",\n                \"crg_resource_group_name\": \"resourceGroupName\",\n                \"crg_should_prioritize\": True,\n            }],\n        }],\n    },\n    os=\"Linux\",\n    vm_sizes={\n        \"od_sizes\": [\n            \"standard_ds1_v2\",\n            \"standard_ds2_v2\",\n        ],\n        \"spot_sizes\": [\n            \"standard_ds1_v2\",\n            \"standard_ds2_v2\",\n        ],\n        \"preferred_spot_sizes\": [\"standard_ds1_v2\"],\n        \"excluded_vm_sizes\": [\"standard_ds2_v3\"],\n        \"spot_size_attributes\": {\n            \"max_cpu\": 16,\n            \"min_cpu\": 2,\n            \"max_memory\": 48,\n            \"min_memory\": 2,\n            \"max_storage\": 1000,\n            \"min_storage\": 50,\n        },\n    },\n    zones=[\n        \"1\",\n        \"3\",\n    ],\n    preferred_zone=\"1\",\n    custom_data=\"\",\n    shutdown_script=\"\",\n    user_data=\"\",\n    vm_name=\"VMName\",\n    vm_name_prefix=\"VMNamePrefix\",\n    license_type=\"SLES_BYOS\",\n    boot_diagnostics=[{\n        \"is_enabled\": True,\n        \"storage_url\": \"https://.blob.core.windows.net/test\",\n        \"type\": \"unmanaged\",\n    }],\n    data_disks=[\n        {\n            \"size_gb\": 1,\n            \"lun\": 1,\n            \"type\": \"Standard_LRS\",\n        },\n        {\n            \"size_gb\": 10,\n            \"lun\": 2,\n            \"type\": \"Standard_LRS\",\n        },\n    ],\n    extensions=[{\n        \"name\": \"extensionName\",\n        \"type\": \"customScript\",\n        \"publisher\": \"Microsoft.Azure.Extensions\",\n        \"api_version\": \"2.0\",\n        \"minor_version_auto_upgrade\": True,\n        \"protected_settings\": {\n            \"script\": \"IyEvYmluL2Jhc2gKZWNobyAibmlyIiA+IC9ob29uaXIudHh0Cg==\",\n        },\n        \"public_settings\": {\n            \"fileUris\": \"https://testspot/Azuretest.sh\",\n        },\n    }],\n    image={\n        \"marketplace_images\": [{\n            \"publisher\": \"Canonical\",\n            \"offer\": \"UbuntuServer\",\n            \"sku\": \"16.04-LTS\",\n            \"version\": \"latest\",\n        }],\n        \"custom_images\": [{\n            \"custom_image_resource_group_name\": \"resourceGroupName\",\n            \"name\": \"imageName\",\n        }],\n        \"galleries\": [{\n            \"gallery_resource_group_name\": \"resourceGroupName\",\n            \"gallery_name\": \"galleryName\",\n            \"image_name\": \"imageName\",\n            \"version_name\": \"1.1.0\",\n            \"spot_account_id\": \"act-123456\",\n        }],\n    },\n    load_balancers=[{\n        \"type\": \"loadBalancer\",\n        \"resource_group_name\": \"testResourceGroup\",\n        \"name\": \"testLoadBalancer\",\n        \"sku\": \"Standard\",\n        \"backend_pool_names\": [\n            \"testBackendPool1\",\n            \"testBackendPool2\",\n        ],\n    }],\n    login={\n        \"user_name\": \"admin\",\n        \"ssh_public_key\": \"33a2s1f3g5a1df5g1ad3f2g1adfg56dfg==\",\n    },\n    managed_service_identities=[{\n        \"name\": \"mySI2\",\n        \"resource_group_name\": \"myResourceGroup\",\n        \"subscription_id\": \"12345678-abcd-1234-abcd-123456789ab\",\n    }],\n    network={\n        \"network_resource_group_name\": \"subnetResourceGroup\",\n        \"virtual_network_name\": \"vname\",\n        \"network_interfaces\": [{\n            \"is_primary\": True,\n            \"subnet_name\": \"testSubnet\",\n            \"assign_public_ip\": True,\n            \"public_ip_sku\": \"Standard\",\n            \"network_security_groups\": [{\n                \"network_resource_group_name\": \"test\",\n                \"name\": \"test\",\n            }],\n            \"enable_ip_forwarding\": True,\n            \"private_ip_addresses\": [\"172.23.4.20\"],\n            \"additional_ip_configurations\": [{\n                \"name\": \"test\",\n                \"private_ip_address_version\": \"IPv4\",\n            }],\n            \"public_ips\": [{\n                \"network_resource_group_name\": \"resourceGroup\",\n                \"name\": \"test\",\n            }],\n            \"application_security_groups\": [{\n                \"network_resource_group_name\": \"AsgResourceGroup\",\n                \"name\": \"AsgName\",\n            }],\n        }],\n    },\n    os_disk={\n        \"size_gb\": 30,\n        \"type\": \"Standard_LRS\",\n        \"caching\": \"ReadOnly\",\n    },\n    secrets=[{\n        \"source_vaults\": [{\n            \"name\": \"string\",\n            \"resource_group_name\": \"string\",\n        }],\n        \"vault_certificates\": [{\n            \"certificate_url\": \"string\",\n            \"certificate_store\": \"string\",\n        }],\n    }],\n    security={\n        \"security_type\": \"ConfidentialVM\",\n        \"secure_boot_enabled\": True,\n        \"vtpm_enabled\": True,\n        \"encryption_at_host\": False,\n        \"confidential_os_disk_encryption\": \"true\",\n    },\n    tags=[{\n        \"tag_key\": \"Creator\",\n        \"tag_value\": \"string\",\n    }],\n    health={\n        \"health_check_types\": [\"vmState\"],\n        \"unhealthy_duration\": 300,\n        \"grace_period\": 120,\n        \"auto_healing\": True,\n    },\n    should_persist_os_disk=False,\n    os_disk_persistence_mode=\"reattach\",\n    should_persist_data_disks=True,\n    data_disks_persistence_mode=\"reattach\",\n    should_persist_network=True,\n    scheduling_tasks=[\n        {\n            \"is_enabled\": True,\n            \"type\": \"pause\",\n            \"cron_expression\": \"44 10 * * *\",\n        },\n        {\n            \"is_enabled\": True,\n            \"type\": \"resume\",\n            \"cron_expression\": \"48 10 * * *\",\n        },\n        {\n            \"is_enabled\": True,\n            \"type\": \"recycle\",\n            \"cron_expression\": \"52 10 * * *\",\n        },\n    ],\n    signals=[\n        {\n            \"type\": \"vmReady\",\n            \"timeout\": 20,\n        },\n        {\n            \"type\": \"vmReady\",\n            \"timeout\": 40,\n        },\n    ],\n    proximity_placement_groups=[{\n        \"name\": \"TestPPG\",\n        \"resource_group_name\": \"TestResourceGroup\",\n    }],\n    deletes=[{\n        \"should_terminate_vm\": True,\n        \"network_should_deallocate\": True,\n        \"network_ttl_in_hours\": 0,\n        \"disk_should_deallocate\": True,\n        \"disk_ttl_in_hours\": 0,\n        \"snapshot_should_deallocate\": True,\n        \"snapshot_ttl_in_hours\": 0,\n        \"public_ip_should_deallocate\": True,\n        \"public_ip_ttl_in_hours\": 0,\n        \"should_deregister_from_lb\": True,\n        \"should_revert_to_od\": False,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testStatefulNodeAzure = new SpotInst.StatefulNodeAzure(\"test_stateful_node_azure\", new()\n    {\n        Name = \"example_stateful_node_azure\",\n        Region = \"eastus\",\n        ResourceGroupName = \"spotinst-azure\",\n        Description = \"example_stateful_node_azure_description\",\n        Strategy = new SpotInst.Inputs.StatefulNodeAzureStrategyArgs\n        {\n            DrainingTimeout = 30,\n            FallbackToOnDemand = true,\n            OptimizationWindows = new[]\n            {\n                \"Tue:19:46-Tue:20:46\",\n            },\n            OdWindows = new[]\n            {\n                \"Wed:19:46-Wed:21:46\",\n            },\n            AvailabilityVsCost = 100,\n            VmAdmins = new[]\n            {\n                \"UbuntuUser\",\n                \"TestUser\",\n            },\n            RevertToSpot = new SpotInst.Inputs.StatefulNodeAzureStrategyRevertToSpotArgs\n            {\n                PerformAt = \"timeWindow\",\n            },\n            InterruptionToleration = new SpotInst.Inputs.StatefulNodeAzureStrategyInterruptionTolerationArgs\n            {\n                IsEnabled = true,\n                Threshold = 3,\n                EvaluationPeriod = 30,\n                Cooldown = 120,\n            },\n            PreferredLifeCycle = \"od\",\n            CapacityReservations = new[]\n            {\n                new SpotInst.Inputs.StatefulNodeAzureStrategyCapacityReservationArgs\n                {\n                    ShouldUtilize = true,\n                    UtilizationStrategy = \"utilizeOverOD\",\n                    CapacityReservationGroups = new[]\n                    {\n                        new SpotInst.Inputs.StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroupArgs\n                        {\n                            CrgName = \"crg name\",\n                            CrgResourceGroupName = \"resourceGroupName\",\n                            CrgShouldPrioritize = true,\n                        },\n                    },\n                },\n            },\n        },\n        Os = \"Linux\",\n        VmSizes = new SpotInst.Inputs.StatefulNodeAzureVmSizesArgs\n        {\n            OdSizes = new[]\n            {\n                \"standard_ds1_v2\",\n                \"standard_ds2_v2\",\n            },\n            SpotSizes = new[]\n            {\n                \"standard_ds1_v2\",\n                \"standard_ds2_v2\",\n            },\n            PreferredSpotSizes = new[]\n            {\n                \"standard_ds1_v2\",\n            },\n            ExcludedVmSizes = new[]\n            {\n                \"standard_ds2_v3\",\n            },\n            SpotSizeAttributes = new SpotInst.Inputs.StatefulNodeAzureVmSizesSpotSizeAttributesArgs\n            {\n                MaxCpu = 16,\n                MinCpu = 2,\n                MaxMemory = 48,\n                MinMemory = 2,\n                MaxStorage = 1000,\n                MinStorage = 50,\n            },\n        },\n        Zones = new[]\n        {\n            \"1\",\n            \"3\",\n        },\n        PreferredZone = \"1\",\n        CustomData = \"\",\n        ShutdownScript = \"\",\n        UserData = \"\",\n        VmName = \"VMName\",\n        VmNamePrefix = \"VMNamePrefix\",\n        LicenseType = \"SLES_BYOS\",\n        BootDiagnostics = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureBootDiagnosticArgs\n            {\n                IsEnabled = true,\n                StorageUrl = \"https://.blob.core.windows.net/test\",\n                Type = \"unmanaged\",\n            },\n        },\n        DataDisks = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureDataDiskArgs\n            {\n                SizeGb = 1,\n                Lun = 1,\n                Type = \"Standard_LRS\",\n            },\n            new SpotInst.Inputs.StatefulNodeAzureDataDiskArgs\n            {\n                SizeGb = 10,\n                Lun = 2,\n                Type = \"Standard_LRS\",\n            },\n        },\n        Extensions = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureExtensionArgs\n            {\n                Name = \"extensionName\",\n                Type = \"customScript\",\n                Publisher = \"Microsoft.Azure.Extensions\",\n                ApiVersion = \"2.0\",\n                MinorVersionAutoUpgrade = true,\n                ProtectedSettings = \n                {\n                    { \"script\", \"IyEvYmluL2Jhc2gKZWNobyAibmlyIiA+IC9ob29uaXIudHh0Cg==\" },\n                },\n                PublicSettings = \n                {\n                    { \"fileUris\", \"https://testspot/Azuretest.sh\" },\n                },\n            },\n        },\n        Image = new SpotInst.Inputs.StatefulNodeAzureImageArgs\n        {\n            MarketplaceImages = new[]\n            {\n                new SpotInst.Inputs.StatefulNodeAzureImageMarketplaceImageArgs\n                {\n                    Publisher = \"Canonical\",\n                    Offer = \"UbuntuServer\",\n                    Sku = \"16.04-LTS\",\n                    Version = \"latest\",\n                },\n            },\n            CustomImages = new[]\n            {\n                new SpotInst.Inputs.StatefulNodeAzureImageCustomImageArgs\n                {\n                    CustomImageResourceGroupName = \"resourceGroupName\",\n                    Name = \"imageName\",\n                },\n            },\n            Galleries = new[]\n            {\n                new SpotInst.Inputs.StatefulNodeAzureImageGalleryArgs\n                {\n                    GalleryResourceGroupName = \"resourceGroupName\",\n                    GalleryName = \"galleryName\",\n                    ImageName = \"imageName\",\n                    VersionName = \"1.1.0\",\n                    SpotAccountId = \"act-123456\",\n                },\n            },\n        },\n        LoadBalancers = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureLoadBalancerArgs\n            {\n                Type = \"loadBalancer\",\n                ResourceGroupName = \"testResourceGroup\",\n                Name = \"testLoadBalancer\",\n                Sku = \"Standard\",\n                BackendPoolNames = new[]\n                {\n                    \"testBackendPool1\",\n                    \"testBackendPool2\",\n                },\n            },\n        },\n        Login = new SpotInst.Inputs.StatefulNodeAzureLoginArgs\n        {\n            UserName = \"admin\",\n            SshPublicKey = \"33a2s1f3g5a1df5g1ad3f2g1adfg56dfg==\",\n        },\n        ManagedServiceIdentities = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureManagedServiceIdentityArgs\n            {\n                Name = \"mySI2\",\n                ResourceGroupName = \"myResourceGroup\",\n                SubscriptionId = \"12345678-abcd-1234-abcd-123456789ab\",\n            },\n        },\n        Network = new SpotInst.Inputs.StatefulNodeAzureNetworkArgs\n        {\n            NetworkResourceGroupName = \"subnetResourceGroup\",\n            VirtualNetworkName = \"vname\",\n            NetworkInterfaces = new[]\n            {\n                new SpotInst.Inputs.StatefulNodeAzureNetworkNetworkInterfaceArgs\n                {\n                    IsPrimary = true,\n                    SubnetName = \"testSubnet\",\n                    AssignPublicIp = true,\n                    PublicIpSku = \"Standard\",\n                    NetworkSecurityGroups = new[]\n                    {\n                        new SpotInst.Inputs.StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroupArgs\n                        {\n                            NetworkResourceGroupName = \"test\",\n                            Name = \"test\",\n                        },\n                    },\n                    EnableIpForwarding = true,\n                    PrivateIpAddresses = new[]\n                    {\n                        \"172.23.4.20\",\n                    },\n                    AdditionalIpConfigurations = new[]\n                    {\n                        new SpotInst.Inputs.StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfigurationArgs\n                        {\n                            Name = \"test\",\n                            PrivateIpAddressVersion = \"IPv4\",\n                        },\n                    },\n                    PublicIps = new[]\n                    {\n                        new SpotInst.Inputs.StatefulNodeAzureNetworkNetworkInterfacePublicIpArgs\n                        {\n                            NetworkResourceGroupName = \"resourceGroup\",\n                            Name = \"test\",\n                        },\n                    },\n                    ApplicationSecurityGroups = new[]\n                    {\n                        new SpotInst.Inputs.StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroupArgs\n                        {\n                            NetworkResourceGroupName = \"AsgResourceGroup\",\n                            Name = \"AsgName\",\n                        },\n                    },\n                },\n            },\n        },\n        OsDisk = new SpotInst.Inputs.StatefulNodeAzureOsDiskArgs\n        {\n            SizeGb = 30,\n            Type = \"Standard_LRS\",\n            Caching = \"ReadOnly\",\n        },\n        Secrets = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureSecretArgs\n            {\n                SourceVaults = new[]\n                {\n                    new SpotInst.Inputs.StatefulNodeAzureSecretSourceVaultArgs\n                    {\n                        Name = \"string\",\n                        ResourceGroupName = \"string\",\n                    },\n                },\n                VaultCertificates = new[]\n                {\n                    new SpotInst.Inputs.StatefulNodeAzureSecretVaultCertificateArgs\n                    {\n                        CertificateUrl = \"string\",\n                        CertificateStore = \"string\",\n                    },\n                },\n            },\n        },\n        Security = new SpotInst.Inputs.StatefulNodeAzureSecurityArgs\n        {\n            SecurityType = \"ConfidentialVM\",\n            SecureBootEnabled = true,\n            VtpmEnabled = true,\n            EncryptionAtHost = false,\n            ConfidentialOsDiskEncryption = \"true\",\n        },\n        Tags = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureTagArgs\n            {\n                TagKey = \"Creator\",\n                TagValue = \"string\",\n            },\n        },\n        Health = new SpotInst.Inputs.StatefulNodeAzureHealthArgs\n        {\n            HealthCheckTypes = new[]\n            {\n                \"vmState\",\n            },\n            UnhealthyDuration = 300,\n            GracePeriod = 120,\n            AutoHealing = true,\n        },\n        ShouldPersistOsDisk = false,\n        OsDiskPersistenceMode = \"reattach\",\n        ShouldPersistDataDisks = true,\n        DataDisksPersistenceMode = \"reattach\",\n        ShouldPersistNetwork = true,\n        SchedulingTasks = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureSchedulingTaskArgs\n            {\n                IsEnabled = true,\n                Type = \"pause\",\n                CronExpression = \"44 10 * * *\",\n            },\n            new SpotInst.Inputs.StatefulNodeAzureSchedulingTaskArgs\n            {\n                IsEnabled = true,\n                Type = \"resume\",\n                CronExpression = \"48 10 * * *\",\n            },\n            new SpotInst.Inputs.StatefulNodeAzureSchedulingTaskArgs\n            {\n                IsEnabled = true,\n                Type = \"recycle\",\n                CronExpression = \"52 10 * * *\",\n            },\n        },\n        Signals = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureSignalArgs\n            {\n                Type = \"vmReady\",\n                Timeout = 20,\n            },\n            new SpotInst.Inputs.StatefulNodeAzureSignalArgs\n            {\n                Type = \"vmReady\",\n                Timeout = 40,\n            },\n        },\n        ProximityPlacementGroups = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureProximityPlacementGroupArgs\n            {\n                Name = \"TestPPG\",\n                ResourceGroupName = \"TestResourceGroup\",\n            },\n        },\n        Deletes = new[]\n        {\n            new SpotInst.Inputs.StatefulNodeAzureDeleteArgs\n            {\n                ShouldTerminateVm = true,\n                NetworkShouldDeallocate = true,\n                NetworkTtlInHours = 0,\n                DiskShouldDeallocate = true,\n                DiskTtlInHours = 0,\n                SnapshotShouldDeallocate = true,\n                SnapshotTtlInHours = 0,\n                PublicIpShouldDeallocate = true,\n                PublicIpTtlInHours = 0,\n                ShouldDeregisterFromLb = true,\n                ShouldRevertToOd = false,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := spotinst.NewStatefulNodeAzure(ctx, \"test_stateful_node_azure\", \u0026spotinst.StatefulNodeAzureArgs{\n\t\t\tName:              pulumi.String(\"example_stateful_node_azure\"),\n\t\t\tRegion:            pulumi.String(\"eastus\"),\n\t\t\tResourceGroupName: pulumi.String(\"spotinst-azure\"),\n\t\t\tDescription:       pulumi.String(\"example_stateful_node_azure_description\"),\n\t\t\tStrategy: \u0026spotinst.StatefulNodeAzureStrategyArgs{\n\t\t\t\tDrainingTimeout:    pulumi.Int(30),\n\t\t\t\tFallbackToOnDemand: pulumi.Bool(true),\n\t\t\t\tOptimizationWindows: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"Tue:19:46-Tue:20:46\"),\n\t\t\t\t},\n\t\t\t\tOdWindows: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"Wed:19:46-Wed:21:46\"),\n\t\t\t\t},\n\t\t\t\tAvailabilityVsCost: pulumi.Int(100),\n\t\t\t\tVmAdmins: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"UbuntuUser\"),\n\t\t\t\t\tpulumi.String(\"TestUser\"),\n\t\t\t\t},\n\t\t\t\tRevertToSpot: \u0026spotinst.StatefulNodeAzureStrategyRevertToSpotArgs{\n\t\t\t\t\tPerformAt: pulumi.String(\"timeWindow\"),\n\t\t\t\t},\n\t\t\t\tInterruptionToleration: \u0026spotinst.StatefulNodeAzureStrategyInterruptionTolerationArgs{\n\t\t\t\t\tIsEnabled:        pulumi.Bool(true),\n\t\t\t\t\tThreshold:        pulumi.Int(3),\n\t\t\t\t\tEvaluationPeriod: pulumi.Int(30),\n\t\t\t\t\tCooldown:         pulumi.Int(120),\n\t\t\t\t},\n\t\t\t\tPreferredLifeCycle: pulumi.String(\"od\"),\n\t\t\t\tCapacityReservations: spotinst.StatefulNodeAzureStrategyCapacityReservationArray{\n\t\t\t\t\t\u0026spotinst.StatefulNodeAzureStrategyCapacityReservationArgs{\n\t\t\t\t\t\tShouldUtilize:       pulumi.Bool(true),\n\t\t\t\t\t\tUtilizationStrategy: pulumi.String(\"utilizeOverOD\"),\n\t\t\t\t\t\tCapacityReservationGroups: spotinst.StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroupArray{\n\t\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroupArgs{\n\t\t\t\t\t\t\t\tCrgName:              pulumi.String(\"crg name\"),\n\t\t\t\t\t\t\t\tCrgResourceGroupName: pulumi.String(\"resourceGroupName\"),\n\t\t\t\t\t\t\t\tCrgShouldPrioritize:  pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOs: pulumi.String(\"Linux\"),\n\t\t\tVmSizes: \u0026spotinst.StatefulNodeAzureVmSizesArgs{\n\t\t\t\tOdSizes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"standard_ds1_v2\"),\n\t\t\t\t\tpulumi.String(\"standard_ds2_v2\"),\n\t\t\t\t},\n\t\t\t\tSpotSizes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"standard_ds1_v2\"),\n\t\t\t\t\tpulumi.String(\"standard_ds2_v2\"),\n\t\t\t\t},\n\t\t\t\tPreferredSpotSizes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"standard_ds1_v2\"),\n\t\t\t\t},\n\t\t\t\tExcludedVmSizes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"standard_ds2_v3\"),\n\t\t\t\t},\n\t\t\t\tSpotSizeAttributes: \u0026spotinst.StatefulNodeAzureVmSizesSpotSizeAttributesArgs{\n\t\t\t\t\tMaxCpu:     pulumi.Int(16),\n\t\t\t\t\tMinCpu:     pulumi.Int(2),\n\t\t\t\t\tMaxMemory:  pulumi.Int(48),\n\t\t\t\t\tMinMemory:  pulumi.Int(2),\n\t\t\t\t\tMaxStorage: pulumi.Int(1000),\n\t\t\t\t\tMinStorage: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZones: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\tpulumi.String(\"3\"),\n\t\t\t},\n\t\t\tPreferredZone:  pulumi.String(\"1\"),\n\t\t\tCustomData:     pulumi.String(\"\"),\n\t\t\tShutdownScript: pulumi.String(\"\"),\n\t\t\tUserData:       pulumi.String(\"\"),\n\t\t\tVmName:         pulumi.String(\"VMName\"),\n\t\t\tVmNamePrefix:   pulumi.String(\"VMNamePrefix\"),\n\t\t\tLicenseType:    pulumi.String(\"SLES_BYOS\"),\n\t\t\tBootDiagnostics: spotinst.StatefulNodeAzureBootDiagnosticArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureBootDiagnosticArgs{\n\t\t\t\t\tIsEnabled:  pulumi.Bool(true),\n\t\t\t\t\tStorageUrl: pulumi.String(\"https://.blob.core.windows.net/test\"),\n\t\t\t\t\tType:       pulumi.String(\"unmanaged\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDisks: spotinst.StatefulNodeAzureDataDiskArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureDataDiskArgs{\n\t\t\t\t\tSizeGb: pulumi.Int(1),\n\t\t\t\t\tLun:    pulumi.Int(1),\n\t\t\t\t\tType:   pulumi.String(\"Standard_LRS\"),\n\t\t\t\t},\n\t\t\t\t\u0026spotinst.StatefulNodeAzureDataDiskArgs{\n\t\t\t\t\tSizeGb: pulumi.Int(10),\n\t\t\t\t\tLun:    pulumi.Int(2),\n\t\t\t\t\tType:   pulumi.String(\"Standard_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tExtensions: spotinst.StatefulNodeAzureExtensionArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureExtensionArgs{\n\t\t\t\t\tName:                    pulumi.String(\"extensionName\"),\n\t\t\t\t\tType:                    pulumi.String(\"customScript\"),\n\t\t\t\t\tPublisher:               pulumi.String(\"Microsoft.Azure.Extensions\"),\n\t\t\t\t\tApiVersion:              pulumi.String(\"2.0\"),\n\t\t\t\t\tMinorVersionAutoUpgrade: pulumi.Bool(true),\n\t\t\t\t\tProtectedSettings: pulumi.StringMap{\n\t\t\t\t\t\t\"script\": pulumi.String(\"IyEvYmluL2Jhc2gKZWNobyAibmlyIiA+IC9ob29uaXIudHh0Cg==\"),\n\t\t\t\t\t},\n\t\t\t\t\tPublicSettings: pulumi.StringMap{\n\t\t\t\t\t\t\"fileUris\": pulumi.String(\"https://testspot/Azuretest.sh\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tImage: \u0026spotinst.StatefulNodeAzureImageArgs{\n\t\t\t\tMarketplaceImages: spotinst.StatefulNodeAzureImageMarketplaceImageArray{\n\t\t\t\t\t\u0026spotinst.StatefulNodeAzureImageMarketplaceImageArgs{\n\t\t\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\t\t\tOffer:     pulumi.String(\"UbuntuServer\"),\n\t\t\t\t\t\tSku:       pulumi.String(\"16.04-LTS\"),\n\t\t\t\t\t\tVersion:   pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tCustomImages: spotinst.StatefulNodeAzureImageCustomImageArray{\n\t\t\t\t\t\u0026spotinst.StatefulNodeAzureImageCustomImageArgs{\n\t\t\t\t\t\tCustomImageResourceGroupName: pulumi.String(\"resourceGroupName\"),\n\t\t\t\t\t\tName:                         pulumi.String(\"imageName\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGalleries: spotinst.StatefulNodeAzureImageGalleryArray{\n\t\t\t\t\t\u0026spotinst.StatefulNodeAzureImageGalleryArgs{\n\t\t\t\t\t\tGalleryResourceGroupName: pulumi.String(\"resourceGroupName\"),\n\t\t\t\t\t\tGalleryName:              pulumi.String(\"galleryName\"),\n\t\t\t\t\t\tImageName:                pulumi.String(\"imageName\"),\n\t\t\t\t\t\tVersionName:              pulumi.String(\"1.1.0\"),\n\t\t\t\t\t\tSpotAccountId:            pulumi.String(\"act-123456\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancers: spotinst.StatefulNodeAzureLoadBalancerArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureLoadBalancerArgs{\n\t\t\t\t\tType:              pulumi.String(\"loadBalancer\"),\n\t\t\t\t\tResourceGroupName: pulumi.String(\"testResourceGroup\"),\n\t\t\t\t\tName:              pulumi.String(\"testLoadBalancer\"),\n\t\t\t\t\tSku:               pulumi.String(\"Standard\"),\n\t\t\t\t\tBackendPoolNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"testBackendPool1\"),\n\t\t\t\t\t\tpulumi.String(\"testBackendPool2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLogin: \u0026spotinst.StatefulNodeAzureLoginArgs{\n\t\t\t\tUserName:     pulumi.String(\"admin\"),\n\t\t\t\tSshPublicKey: pulumi.String(\"33a2s1f3g5a1df5g1ad3f2g1adfg56dfg==\"),\n\t\t\t},\n\t\t\tManagedServiceIdentities: spotinst.StatefulNodeAzureManagedServiceIdentityArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureManagedServiceIdentityArgs{\n\t\t\t\t\tName:              pulumi.String(\"mySI2\"),\n\t\t\t\t\tResourceGroupName: pulumi.String(\"myResourceGroup\"),\n\t\t\t\t\tSubscriptionId:    pulumi.String(\"12345678-abcd-1234-abcd-123456789ab\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetwork: \u0026spotinst.StatefulNodeAzureNetworkArgs{\n\t\t\t\tNetworkResourceGroupName: pulumi.String(\"subnetResourceGroup\"),\n\t\t\t\tVirtualNetworkName:       pulumi.String(\"vname\"),\n\t\t\t\tNetworkInterfaces: spotinst.StatefulNodeAzureNetworkNetworkInterfaceArray{\n\t\t\t\t\t\u0026spotinst.StatefulNodeAzureNetworkNetworkInterfaceArgs{\n\t\t\t\t\t\tIsPrimary:      pulumi.Bool(true),\n\t\t\t\t\t\tSubnetName:     pulumi.String(\"testSubnet\"),\n\t\t\t\t\t\tAssignPublicIp: pulumi.Bool(true),\n\t\t\t\t\t\tPublicIpSku:    pulumi.String(\"Standard\"),\n\t\t\t\t\t\tNetworkSecurityGroups: spotinst.StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroupArray{\n\t\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroupArgs{\n\t\t\t\t\t\t\t\tNetworkResourceGroupName: pulumi.String(\"test\"),\n\t\t\t\t\t\t\t\tName:                     pulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEnableIpForwarding: pulumi.Bool(true),\n\t\t\t\t\t\tPrivateIpAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"172.23.4.20\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAdditionalIpConfigurations: spotinst.StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfigurationArray{\n\t\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfigurationArgs{\n\t\t\t\t\t\t\t\tName:                    pulumi.String(\"test\"),\n\t\t\t\t\t\t\t\tPrivateIpAddressVersion: pulumi.String(\"IPv4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPublicIps: spotinst.StatefulNodeAzureNetworkNetworkInterfacePublicIpArray{\n\t\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureNetworkNetworkInterfacePublicIpArgs{\n\t\t\t\t\t\t\t\tNetworkResourceGroupName: pulumi.String(\"resourceGroup\"),\n\t\t\t\t\t\t\t\tName:                     pulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tApplicationSecurityGroups: spotinst.StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroupArray{\n\t\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroupArgs{\n\t\t\t\t\t\t\t\tNetworkResourceGroupName: pulumi.String(\"AsgResourceGroup\"),\n\t\t\t\t\t\t\t\tName:                     pulumi.String(\"AsgName\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOsDisk: \u0026spotinst.StatefulNodeAzureOsDiskArgs{\n\t\t\t\tSizeGb:  pulumi.Int(30),\n\t\t\t\tType:    pulumi.String(\"Standard_LRS\"),\n\t\t\t\tCaching: pulumi.String(\"ReadOnly\"),\n\t\t\t},\n\t\t\tSecrets: spotinst.StatefulNodeAzureSecretArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureSecretArgs{\n\t\t\t\t\tSourceVaults: spotinst.StatefulNodeAzureSecretSourceVaultArray{\n\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureSecretSourceVaultArgs{\n\t\t\t\t\t\t\tName:              pulumi.String(\"string\"),\n\t\t\t\t\t\t\tResourceGroupName: pulumi.String(\"string\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVaultCertificates: spotinst.StatefulNodeAzureSecretVaultCertificateArray{\n\t\t\t\t\t\t\u0026spotinst.StatefulNodeAzureSecretVaultCertificateArgs{\n\t\t\t\t\t\t\tCertificateUrl:   pulumi.String(\"string\"),\n\t\t\t\t\t\t\tCertificateStore: pulumi.String(\"string\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurity: \u0026spotinst.StatefulNodeAzureSecurityArgs{\n\t\t\t\tSecurityType:                 pulumi.String(\"ConfidentialVM\"),\n\t\t\t\tSecureBootEnabled:            pulumi.Bool(true),\n\t\t\t\tVtpmEnabled:                  pulumi.Bool(true),\n\t\t\t\tEncryptionAtHost:             pulumi.Bool(false),\n\t\t\t\tConfidentialOsDiskEncryption: pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tTags: spotinst.StatefulNodeAzureTagArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureTagArgs{\n\t\t\t\t\tTagKey:   pulumi.String(\"Creator\"),\n\t\t\t\t\tTagValue: pulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealth: \u0026spotinst.StatefulNodeAzureHealthArgs{\n\t\t\t\tHealthCheckTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"vmState\"),\n\t\t\t\t},\n\t\t\t\tUnhealthyDuration: pulumi.Int(300),\n\t\t\t\tGracePeriod:       pulumi.Int(120),\n\t\t\t\tAutoHealing:       pulumi.Bool(true),\n\t\t\t},\n\t\t\tShouldPersistOsDisk:      pulumi.Bool(false),\n\t\t\tOsDiskPersistenceMode:    pulumi.String(\"reattach\"),\n\t\t\tShouldPersistDataDisks:   pulumi.Bool(true),\n\t\t\tDataDisksPersistenceMode: pulumi.String(\"reattach\"),\n\t\t\tShouldPersistNetwork:     pulumi.Bool(true),\n\t\t\tSchedulingTasks: spotinst.StatefulNodeAzureSchedulingTaskArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureSchedulingTaskArgs{\n\t\t\t\t\tIsEnabled:      pulumi.Bool(true),\n\t\t\t\t\tType:           pulumi.String(\"pause\"),\n\t\t\t\t\tCronExpression: pulumi.String(\"44 10 * * *\"),\n\t\t\t\t},\n\t\t\t\t\u0026spotinst.StatefulNodeAzureSchedulingTaskArgs{\n\t\t\t\t\tIsEnabled:      pulumi.Bool(true),\n\t\t\t\t\tType:           pulumi.String(\"resume\"),\n\t\t\t\t\tCronExpression: pulumi.String(\"48 10 * * *\"),\n\t\t\t\t},\n\t\t\t\t\u0026spotinst.StatefulNodeAzureSchedulingTaskArgs{\n\t\t\t\t\tIsEnabled:      pulumi.Bool(true),\n\t\t\t\t\tType:           pulumi.String(\"recycle\"),\n\t\t\t\t\tCronExpression: pulumi.String(\"52 10 * * *\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSignals: spotinst.StatefulNodeAzureSignalArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureSignalArgs{\n\t\t\t\t\tType:    pulumi.String(\"vmReady\"),\n\t\t\t\t\tTimeout: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\t\u0026spotinst.StatefulNodeAzureSignalArgs{\n\t\t\t\t\tType:    pulumi.String(\"vmReady\"),\n\t\t\t\t\tTimeout: pulumi.Int(40),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProximityPlacementGroups: spotinst.StatefulNodeAzureProximityPlacementGroupArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureProximityPlacementGroupArgs{\n\t\t\t\t\tName:              pulumi.String(\"TestPPG\"),\n\t\t\t\t\tResourceGroupName: pulumi.String(\"TestResourceGroup\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletes: spotinst.StatefulNodeAzureDeleteArray{\n\t\t\t\t\u0026spotinst.StatefulNodeAzureDeleteArgs{\n\t\t\t\t\tShouldTerminateVm:        pulumi.Bool(true),\n\t\t\t\t\tNetworkShouldDeallocate:  pulumi.Bool(true),\n\t\t\t\t\tNetworkTtlInHours:        pulumi.Int(0),\n\t\t\t\t\tDiskShouldDeallocate:     pulumi.Bool(true),\n\t\t\t\t\tDiskTtlInHours:           pulumi.Int(0),\n\t\t\t\t\tSnapshotShouldDeallocate: pulumi.Bool(true),\n\t\t\t\t\tSnapshotTtlInHours:       pulumi.Int(0),\n\t\t\t\t\tPublicIpShouldDeallocate: pulumi.Bool(true),\n\t\t\t\t\tPublicIpTtlInHours:       pulumi.Int(0),\n\t\t\t\t\tShouldDeregisterFromLb:   pulumi.Bool(true),\n\t\t\t\t\tShouldRevertToOd:         pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.StatefulNodeAzure;\nimport com.pulumi.spotinst.StatefulNodeAzureArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureStrategyArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureStrategyRevertToSpotArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureStrategyInterruptionTolerationArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureVmSizesArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureVmSizesSpotSizeAttributesArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureBootDiagnosticArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureDataDiskArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureExtensionArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureImageArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureLoadBalancerArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureLoginArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureManagedServiceIdentityArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureNetworkArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureOsDiskArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureSecretArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureSecurityArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureTagArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureHealthArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureSchedulingTaskArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureSignalArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureProximityPlacementGroupArgs;\nimport com.pulumi.spotinst.inputs.StatefulNodeAzureDeleteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testStatefulNodeAzure = new StatefulNodeAzure(\"testStatefulNodeAzure\", StatefulNodeAzureArgs.builder()\n            .name(\"example_stateful_node_azure\")\n            .region(\"eastus\")\n            .resourceGroupName(\"spotinst-azure\")\n            .description(\"example_stateful_node_azure_description\")\n            .strategy(StatefulNodeAzureStrategyArgs.builder()\n                .drainingTimeout(30)\n                .fallbackToOnDemand(true)\n                .optimizationWindows(\"Tue:19:46-Tue:20:46\")\n                .odWindows(\"Wed:19:46-Wed:21:46\")\n                .availabilityVsCost(100)\n                .vmAdmins(                \n                    \"UbuntuUser\",\n                    \"TestUser\")\n                .revertToSpot(StatefulNodeAzureStrategyRevertToSpotArgs.builder()\n                    .performAt(\"timeWindow\")\n                    .build())\n                .interruptionToleration(StatefulNodeAzureStrategyInterruptionTolerationArgs.builder()\n                    .isEnabled(true)\n                    .threshold(3)\n                    .evaluationPeriod(30)\n                    .cooldown(120)\n                    .build())\n                .preferredLifeCycle(\"od\")\n                .capacityReservations(StatefulNodeAzureStrategyCapacityReservationArgs.builder()\n                    .shouldUtilize(true)\n                    .utilizationStrategy(\"utilizeOverOD\")\n                    .capacityReservationGroups(StatefulNodeAzureStrategyCapacityReservationCapacityReservationGroupArgs.builder()\n                        .crgName(\"crg name\")\n                        .crgResourceGroupName(\"resourceGroupName\")\n                        .crgShouldPrioritize(true)\n                        .build())\n                    .build())\n                .build())\n            .os(\"Linux\")\n            .vmSizes(StatefulNodeAzureVmSizesArgs.builder()\n                .odSizes(                \n                    \"standard_ds1_v2\",\n                    \"standard_ds2_v2\")\n                .spotSizes(                \n                    \"standard_ds1_v2\",\n                    \"standard_ds2_v2\")\n                .preferredSpotSizes(\"standard_ds1_v2\")\n                .excludedVmSizes(\"standard_ds2_v3\")\n                .spotSizeAttributes(StatefulNodeAzureVmSizesSpotSizeAttributesArgs.builder()\n                    .maxCpu(16)\n                    .minCpu(2)\n                    .maxMemory(48)\n                    .minMemory(2)\n                    .maxStorage(1000)\n                    .minStorage(50)\n                    .build())\n                .build())\n            .zones(            \n                \"1\",\n                \"3\")\n            .preferredZone(\"1\")\n            .customData(\"\")\n            .shutdownScript(\"\")\n            .userData(\"\")\n            .vmName(\"VMName\")\n            .vmNamePrefix(\"VMNamePrefix\")\n            .licenseType(\"SLES_BYOS\")\n            .bootDiagnostics(StatefulNodeAzureBootDiagnosticArgs.builder()\n                .isEnabled(true)\n                .storageUrl(\"https://.blob.core.windows.net/test\")\n                .type(\"unmanaged\")\n                .build())\n            .dataDisks(            \n                StatefulNodeAzureDataDiskArgs.builder()\n                    .sizeGb(1)\n                    .lun(1)\n                    .type(\"Standard_LRS\")\n                    .build(),\n                StatefulNodeAzureDataDiskArgs.builder()\n                    .sizeGb(10)\n                    .lun(2)\n                    .type(\"Standard_LRS\")\n                    .build())\n            .extensions(StatefulNodeAzureExtensionArgs.builder()\n                .name(\"extensionName\")\n                .type(\"customScript\")\n                .publisher(\"Microsoft.Azure.Extensions\")\n                .apiVersion(\"2.0\")\n                .minorVersionAutoUpgrade(true)\n                .protectedSettings(Map.of(\"script\", \"IyEvYmluL2Jhc2gKZWNobyAibmlyIiA+IC9ob29uaXIudHh0Cg==\"))\n                .publicSettings(Map.of(\"fileUris\", \"https://testspot/Azuretest.sh\"))\n                .build())\n            .image(StatefulNodeAzureImageArgs.builder()\n                .marketplaceImages(StatefulNodeAzureImageMarketplaceImageArgs.builder()\n                    .publisher(\"Canonical\")\n                    .offer(\"UbuntuServer\")\n                    .sku(\"16.04-LTS\")\n                    .version(\"latest\")\n                    .build())\n                .customImages(StatefulNodeAzureImageCustomImageArgs.builder()\n                    .customImageResourceGroupName(\"resourceGroupName\")\n                    .name(\"imageName\")\n                    .build())\n                .galleries(StatefulNodeAzureImageGalleryArgs.builder()\n                    .galleryResourceGroupName(\"resourceGroupName\")\n                    .galleryName(\"galleryName\")\n                    .imageName(\"imageName\")\n                    .versionName(\"1.1.0\")\n                    .spotAccountId(\"act-123456\")\n                    .build())\n                .build())\n            .loadBalancers(StatefulNodeAzureLoadBalancerArgs.builder()\n                .type(\"loadBalancer\")\n                .resourceGroupName(\"testResourceGroup\")\n                .name(\"testLoadBalancer\")\n                .sku(\"Standard\")\n                .backendPoolNames(                \n                    \"testBackendPool1\",\n                    \"testBackendPool2\")\n                .build())\n            .login(StatefulNodeAzureLoginArgs.builder()\n                .userName(\"admin\")\n                .sshPublicKey(\"33a2s1f3g5a1df5g1ad3f2g1adfg56dfg==\")\n                .build())\n            .managedServiceIdentities(StatefulNodeAzureManagedServiceIdentityArgs.builder()\n                .name(\"mySI2\")\n                .resourceGroupName(\"myResourceGroup\")\n                .subscriptionId(\"12345678-abcd-1234-abcd-123456789ab\")\n                .build())\n            .network(StatefulNodeAzureNetworkArgs.builder()\n                .networkResourceGroupName(\"subnetResourceGroup\")\n                .virtualNetworkName(\"vname\")\n                .networkInterfaces(StatefulNodeAzureNetworkNetworkInterfaceArgs.builder()\n                    .isPrimary(true)\n                    .subnetName(\"testSubnet\")\n                    .assignPublicIp(true)\n                    .publicIpSku(\"Standard\")\n                    .networkSecurityGroups(StatefulNodeAzureNetworkNetworkInterfaceNetworkSecurityGroupArgs.builder()\n                        .networkResourceGroupName(\"test\")\n                        .name(\"test\")\n                        .build())\n                    .enableIpForwarding(true)\n                    .privateIpAddresses(\"172.23.4.20\")\n                    .additionalIpConfigurations(StatefulNodeAzureNetworkNetworkInterfaceAdditionalIpConfigurationArgs.builder()\n                        .name(\"test\")\n                        .privateIpAddressVersion(\"IPv4\")\n                        .build())\n                    .publicIps(StatefulNodeAzureNetworkNetworkInterfacePublicIpArgs.builder()\n                        .networkResourceGroupName(\"resourceGroup\")\n                        .name(\"test\")\n                        .build())\n                    .applicationSecurityGroups(StatefulNodeAzureNetworkNetworkInterfaceApplicationSecurityGroupArgs.builder()\n                        .networkResourceGroupName(\"AsgResourceGroup\")\n                        .name(\"AsgName\")\n                        .build())\n                    .build())\n                .build())\n            .osDisk(StatefulNodeAzureOsDiskArgs.builder()\n                .sizeGb(30)\n                .type(\"Standard_LRS\")\n                .caching(\"ReadOnly\")\n                .build())\n            .secrets(StatefulNodeAzureSecretArgs.builder()\n                .sourceVaults(StatefulNodeAzureSecretSourceVaultArgs.builder()\n                    .name(\"string\")\n                    .resourceGroupName(\"string\")\n                    .build())\n                .vaultCertificates(StatefulNodeAzureSecretVaultCertificateArgs.builder()\n                    .certificateUrl(\"string\")\n                    .certificateStore(\"string\")\n                    .build())\n                .build())\n            .security(StatefulNodeAzureSecurityArgs.builder()\n                .securityType(\"ConfidentialVM\")\n                .secureBootEnabled(true)\n                .vtpmEnabled(true)\n                .encryptionAtHost(false)\n                .confidentialOsDiskEncryption(\"true\")\n                .build())\n            .tags(StatefulNodeAzureTagArgs.builder()\n                .tagKey(\"Creator\")\n                .tagValue(\"string\")\n                .build())\n            .health(StatefulNodeAzureHealthArgs.builder()\n                .healthCheckTypes(\"vmState\")\n                .unhealthyDuration(300)\n                .gracePeriod(120)\n                .autoHealing(true)\n                .build())\n            .shouldPersistOsDisk(false)\n            .osDiskPersistenceMode(\"reattach\")\n            .shouldPersistDataDisks(true)\n            .dataDisksPersistenceMode(\"reattach\")\n            .shouldPersistNetwork(true)\n            .schedulingTasks(            \n                StatefulNodeAzureSchedulingTaskArgs.builder()\n                    .isEnabled(true)\n                    .type(\"pause\")\n                    .cronExpression(\"44 10 * * *\")\n                    .build(),\n                StatefulNodeAzureSchedulingTaskArgs.builder()\n                    .isEnabled(true)\n                    .type(\"resume\")\n                    .cronExpression(\"48 10 * * *\")\n                    .build(),\n                StatefulNodeAzureSchedulingTaskArgs.builder()\n                    .isEnabled(true)\n                    .type(\"recycle\")\n                    .cronExpression(\"52 10 * * *\")\n                    .build())\n            .signals(            \n                StatefulNodeAzureSignalArgs.builder()\n                    .type(\"vmReady\")\n                    .timeout(20)\n                    .build(),\n                StatefulNodeAzureSignalArgs.builder()\n                    .type(\"vmReady\")\n                    .timeout(40)\n                    .build())\n            .proximityPlacementGroups(StatefulNodeAzureProximityPlacementGroupArgs.builder()\n                .name(\"TestPPG\")\n                .resourceGroupName(\"TestResourceGroup\")\n                .build())\n            .deletes(StatefulNodeAzureDeleteArgs.builder()\n                .shouldTerminateVm(true)\n                .networkShouldDeallocate(true)\n                .networkTtlInHours(0)\n                .diskShouldDeallocate(true)\n                .diskTtlInHours(0)\n                .snapshotShouldDeallocate(true)\n                .snapshotTtlInHours(0)\n                .publicIpShouldDeallocate(true)\n                .publicIpTtlInHours(0)\n                .shouldDeregisterFromLb(true)\n                .shouldRevertToOd(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testStatefulNodeAzure:\n    type: spotinst:StatefulNodeAzure\n    name: test_stateful_node_azure\n    properties:\n      name: example_stateful_node_azure\n      region: eastus\n      resourceGroupName: spotinst-azure\n      description: example_stateful_node_azure_description\n      strategy:\n        drainingTimeout: 30\n        fallbackToOnDemand: true\n        optimizationWindows:\n          - Tue:19:46-Tue:20:46\n        odWindows:\n          - Wed:19:46-Wed:21:46\n        availabilityVsCost: 100\n        vmAdmins:\n          - UbuntuUser\n          - TestUser\n        revertToSpot:\n          performAt: timeWindow\n        interruptionToleration:\n          isEnabled: true\n          threshold: 3\n          evaluationPeriod: 30\n          cooldown: 120\n        preferredLifeCycle: od\n        capacityReservations:\n          - shouldUtilize: true\n            utilizationStrategy: utilizeOverOD\n            capacityReservationGroups:\n              - crgName: crg name\n                crgResourceGroupName: resourceGroupName\n                crgShouldPrioritize: true\n      os: Linux\n      vmSizes:\n        odSizes:\n          - standard_ds1_v2\n          - standard_ds2_v2\n        spotSizes:\n          - standard_ds1_v2\n          - standard_ds2_v2\n        preferredSpotSizes:\n          - standard_ds1_v2\n        excludedVmSizes:\n          - standard_ds2_v3\n        spotSizeAttributes:\n          maxCpu: 16\n          minCpu: 2\n          maxMemory: 48\n          minMemory: 2\n          maxStorage: 1000\n          minStorage: 50\n      zones:\n        - '1'\n        - '3'\n      preferredZone: '1'\n      customData: \"\"\n      shutdownScript: \"\"\n      userData: \"\"\n      vmName: VMName\n      vmNamePrefix: VMNamePrefix\n      licenseType: SLES_BYOS\n      bootDiagnostics:\n        - isEnabled: true\n          storageUrl: https://.blob.core.windows.net/test\n          type: unmanaged\n      dataDisks:\n        - sizeGb: 1\n          lun: 1\n          type: Standard_LRS\n        - sizeGb: 10\n          lun: 2\n          type: Standard_LRS\n      extensions:\n        - name: extensionName\n          type: customScript\n          publisher: Microsoft.Azure.Extensions\n          apiVersion: '2.0'\n          minorVersionAutoUpgrade: true\n          protectedSettings:\n            script: IyEvYmluL2Jhc2gKZWNobyAibmlyIiA+IC9ob29uaXIudHh0Cg==\n          publicSettings:\n            fileUris: https://testspot/Azuretest.sh\n      image:\n        marketplaceImages:\n          - publisher: Canonical\n            offer: UbuntuServer\n            sku: 16.04-LTS\n            version: latest\n        customImages:\n          - customImageResourceGroupName: resourceGroupName\n            name: imageName\n        galleries:\n          - galleryResourceGroupName: resourceGroupName\n            galleryName: galleryName\n            imageName: imageName\n            versionName: 1.1.0\n            spotAccountId: act-123456\n      loadBalancers:\n        - type: loadBalancer\n          resourceGroupName: testResourceGroup\n          name: testLoadBalancer\n          sku: Standard\n          backendPoolNames:\n            - testBackendPool1\n            - testBackendPool2\n      login:\n        userName: admin\n        sshPublicKey: 33a2s1f3g5a1df5g1ad3f2g1adfg56dfg==\n      managedServiceIdentities:\n        - name: mySI2\n          resourceGroupName: myResourceGroup\n          subscriptionId: 12345678-abcd-1234-abcd-123456789ab\n      network:\n        networkResourceGroupName: subnetResourceGroup\n        virtualNetworkName: vname\n        networkInterfaces:\n          - isPrimary: true\n            subnetName: testSubnet\n            assignPublicIp: true\n            publicIpSku: Standard\n            networkSecurityGroups:\n              - networkResourceGroupName: test\n                name: test\n            enableIpForwarding: true\n            privateIpAddresses:\n              - 172.23.4.20\n            additionalIpConfigurations:\n              - name: test\n                privateIpAddressVersion: IPv4\n            publicIps:\n              - networkResourceGroupName: resourceGroup\n                name: test\n            applicationSecurityGroups:\n              - networkResourceGroupName: AsgResourceGroup\n                name: AsgName\n      osDisk:\n        sizeGb: 30\n        type: Standard_LRS\n        caching: ReadOnly\n      secrets:\n        - sourceVaults:\n            - name: string\n              resourceGroupName: string\n          vaultCertificates:\n            - certificateUrl: string\n              certificateStore: string\n      security:\n        securityType: ConfidentialVM\n        secureBootEnabled: true\n        vtpmEnabled: true\n        encryptionAtHost: false\n        confidentialOsDiskEncryption: true\n      tags:\n        - tagKey: Creator\n          tagValue: string\n      health:\n        healthCheckTypes:\n          - vmState\n        unhealthyDuration: 300\n        gracePeriod: 120\n        autoHealing: true\n      shouldPersistOsDisk: false\n      osDiskPersistenceMode: reattach\n      shouldPersistDataDisks: true\n      dataDisksPersistenceMode: reattach\n      shouldPersistNetwork: true # --- SCHEDULING TASKS ----------------------------------------------\n      schedulingTasks:\n        - isEnabled: true\n          type: pause\n          cronExpression: 44 10 * * *\n        - isEnabled: true\n          type: resume\n          cronExpression: 48 10 * * *\n        - isEnabled: true\n          type: recycle\n          cronExpression: 52 10 * * *\n      signals:\n        - type: vmReady\n          timeout: 20\n        - type: vmReady\n          timeout: 40\n      proximityPlacementGroups:\n        - name: TestPPG\n          resourceGroupName: TestResourceGroup\n      deletes:\n        - shouldTerminateVm: true\n          networkShouldDeallocate: true\n          networkTtlInHours: 0\n          diskShouldDeallocate: true\n          diskTtlInHours: 0\n          snapshotShouldDeallocate: true\n          snapshotTtlInHours: 0\n          publicIpShouldDeallocate: true\n          publicIpTtlInHours: 0\n          shouldDeregisterFromLb: true\n          shouldRevertToOd: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n# Argument Reference\n\nThe following arguments are supported:\n\n* \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) Azure stateful node name.\n* \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e - (Required) The Azure region your stateful node will be created in.\n* \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) Name of the Resource Group for stateful node.\n* \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e - (Optional) Describe your Azure stateful node.\n\n\n## Strategy\n\n* \u003cspan pulumi-lang-nodejs=\"`strategy`\" pulumi-lang-dotnet=\"`Strategy`\" pulumi-lang-go=\"`strategy`\" pulumi-lang-python=\"`strategy`\" pulumi-lang-yaml=\"`strategy`\" pulumi-lang-java=\"`strategy`\"\u003e`strategy`\u003c/span\u003e - (Required) Strategy for stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`drainingTimeout`\" pulumi-lang-dotnet=\"`DrainingTimeout`\" pulumi-lang-go=\"`drainingTimeout`\" pulumi-lang-python=\"`draining_timeout`\" pulumi-lang-yaml=\"`drainingTimeout`\" pulumi-lang-java=\"`drainingTimeout`\"\u003e`draining_timeout`\u003c/span\u003e - (Optional, Default \u003cspan pulumi-lang-nodejs=\"`120`\" pulumi-lang-dotnet=\"`120`\" pulumi-lang-go=\"`120`\" pulumi-lang-python=\"`120`\" pulumi-lang-yaml=\"`120`\" pulumi-lang-java=\"`120`\"\u003e`120`\u003c/span\u003e) Time (in seconds) to allow the VM be drained from incoming TCP connections and detached from MLB before terminating it during a scale down operation.\n  * \u003cspan pulumi-lang-nodejs=\"`availabilityVsCost`\" pulumi-lang-dotnet=\"`AvailabilityVsCost`\" pulumi-lang-go=\"`availabilityVsCost`\" pulumi-lang-python=\"`availability_vs_cost`\" pulumi-lang-yaml=\"`availabilityVsCost`\" pulumi-lang-java=\"`availabilityVsCost`\"\u003e`availability_vs_cost`\u003c/span\u003e - (Optional) Set the desired preference for the Spot market VM selection. (100- Availability, 0- cost).\n  * \u003cspan pulumi-lang-nodejs=\"`fallbackToOnDemand`\" pulumi-lang-dotnet=\"`FallbackToOnDemand`\" pulumi-lang-go=\"`fallbackToOnDemand`\" pulumi-lang-python=\"`fallback_to_on_demand`\" pulumi-lang-yaml=\"`fallbackToOnDemand`\" pulumi-lang-java=\"`fallbackToOnDemand`\"\u003e`fallback_to_on_demand`\u003c/span\u003e - (Required) In case of no spots available, Stateful Node will launch an On-demand instance instead.\n  * \u003cspan pulumi-lang-nodejs=\"`optimizationWindows`\" pulumi-lang-dotnet=\"`OptimizationWindows`\" pulumi-lang-go=\"`optimizationWindows`\" pulumi-lang-python=\"`optimization_windows`\" pulumi-lang-yaml=\"`optimizationWindows`\" pulumi-lang-java=\"`optimizationWindows`\"\u003e`optimization_windows`\u003c/span\u003e - (Optional) Valid format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\", not empty if revertToSpot.performAt = timeWindow.\n  * \u003cspan pulumi-lang-nodejs=\"`odWindows`\" pulumi-lang-dotnet=\"`OdWindows`\" pulumi-lang-go=\"`odWindows`\" pulumi-lang-python=\"`od_windows`\" pulumi-lang-yaml=\"`odWindows`\" pulumi-lang-java=\"`odWindows`\"\u003e`od_windows`\u003c/span\u003e - (Optional) Define the time windows in which the underlying VM will be set as an on-demand lifecycle type. During the entire time window, the rest of the strategy processes will be paused.\n    Switching between on-demand and Spot VM types at the enter/exit of the time window will trigger the recycling of the stateful node. Valid format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\".\n  * \u003cspan pulumi-lang-nodejs=\"`preferredLifeCycle`\" pulumi-lang-dotnet=\"`PreferredLifeCycle`\" pulumi-lang-go=\"`preferredLifeCycle`\" pulumi-lang-python=\"`preferred_life_cycle`\" pulumi-lang-yaml=\"`preferredLifeCycle`\" pulumi-lang-java=\"`preferredLifeCycle`\"\u003e`preferred_life_cycle`\u003c/span\u003e - (Optional, Enum `\"od\", \"spot\"`, Default `\"spot\"`) The desired type of VM.\n  * \u003cspan pulumi-lang-nodejs=\"`revertToSpot`\" pulumi-lang-dotnet=\"`RevertToSpot`\" pulumi-lang-go=\"`revertToSpot`\" pulumi-lang-python=\"`revert_to_spot`\" pulumi-lang-yaml=\"`revertToSpot`\" pulumi-lang-java=\"`revertToSpot`\"\u003e`revert_to_spot`\u003c/span\u003e - (Optional) Hold settings for strategy correction - replacing On-Demand for Spot VMs.\n    * \u003cspan pulumi-lang-nodejs=\"`performAt`\" pulumi-lang-dotnet=\"`PerformAt`\" pulumi-lang-go=\"`performAt`\" pulumi-lang-python=\"`perform_at`\" pulumi-lang-yaml=\"`performAt`\" pulumi-lang-java=\"`performAt`\"\u003e`perform_at`\u003c/span\u003e - (Required, Enum `\"timeWindow\", \"never\", \"always\"`, Default `\"always\"`) Settings for maintenance strategy.\n  * \u003cspan pulumi-lang-nodejs=\"`interruptionToleration`\" pulumi-lang-dotnet=\"`InterruptionToleration`\" pulumi-lang-go=\"`interruptionToleration`\" pulumi-lang-python=\"`interruption_toleration`\" pulumi-lang-yaml=\"`interruptionToleration`\" pulumi-lang-java=\"`interruptionToleration`\"\u003e`interruption_toleration`\u003c/span\u003e - (Optional) Interruption tolerance settings for the stateful node. When enabled, the stateful node tracks interruption frequency and temporarily switches the node to On-Demand if too many interruptions occur within a defined evaluation window.\n    * \u003cspan pulumi-lang-nodejs=\"`cooldown`\" pulumi-lang-dotnet=\"`Cooldown`\" pulumi-lang-go=\"`cooldown`\" pulumi-lang-python=\"`cooldown`\" pulumi-lang-yaml=\"`cooldown`\" pulumi-lang-java=\"`cooldown`\"\u003e`cooldown`\u003c/span\u003e - (Optional) The cooldown period after an interruption occurs before another interruption can be tolerated. Must be set when `isEnabled` is true. Range \u003cspan pulumi-lang-nodejs=\"`120`\" pulumi-lang-dotnet=\"`120`\" pulumi-lang-go=\"`120`\" pulumi-lang-python=\"`120`\" pulumi-lang-yaml=\"`120`\" pulumi-lang-java=\"`120`\"\u003e`120`\u003c/span\u003e-\u003cspan pulumi-lang-nodejs=\"`10080`\" pulumi-lang-dotnet=\"`10080`\" pulumi-lang-go=\"`10080`\" pulumi-lang-python=\"`10080`\" pulumi-lang-yaml=\"`10080`\" pulumi-lang-java=\"`10080`\"\u003e`10080`\u003c/span\u003e.\n    * \u003cspan pulumi-lang-nodejs=\"`evaluationPeriod`\" pulumi-lang-dotnet=\"`EvaluationPeriod`\" pulumi-lang-go=\"`evaluationPeriod`\" pulumi-lang-python=\"`evaluation_period`\" pulumi-lang-yaml=\"`evaluationPeriod`\" pulumi-lang-java=\"`evaluationPeriod`\"\u003e`evaluation_period`\u003c/span\u003e - (Optional) The time window used to evaluate interruption tolerance. Must be set when `isEnabled` is true. Range \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e-\u003cspan pulumi-lang-nodejs=\"`1440`\" pulumi-lang-dotnet=\"`1440`\" pulumi-lang-go=\"`1440`\" pulumi-lang-python=\"`1440`\" pulumi-lang-yaml=\"`1440`\" pulumi-lang-java=\"`1440`\"\u003e`1440`\u003c/span\u003e.\n    * \u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e - (Optional) Enables interruption tolerance behavior for the Stateful Node.\n    * \u003cspan pulumi-lang-nodejs=\"`threshold`\" pulumi-lang-dotnet=\"`Threshold`\" pulumi-lang-go=\"`threshold`\" pulumi-lang-python=\"`threshold`\" pulumi-lang-yaml=\"`threshold`\" pulumi-lang-java=\"`threshold`\"\u003e`threshold`\u003c/span\u003e - (Optional) The maximum number of interruptions allowed within the defined evaluation period. Must be set when `isEnabled` is true. Value `\u003e=3`\n  * \u003cspan pulumi-lang-nodejs=\"`capacityReservation`\" pulumi-lang-dotnet=\"`CapacityReservation`\" pulumi-lang-go=\"`capacityReservation`\" pulumi-lang-python=\"`capacity_reservation`\" pulumi-lang-yaml=\"`capacityReservation`\" pulumi-lang-java=\"`capacityReservation`\"\u003e`capacity_reservation`\u003c/span\u003e - (Optional) On-demand Capacity Reservation group enables you to reserve Compute capacity in an Azure region or an Availability Zone for any duration of time. [CRG can only be created on the Azure end.](https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-create)\n    * \u003cspan pulumi-lang-nodejs=\"`shouldUtilize`\" pulumi-lang-dotnet=\"`ShouldUtilize`\" pulumi-lang-go=\"`shouldUtilize`\" pulumi-lang-python=\"`should_utilize`\" pulumi-lang-yaml=\"`shouldUtilize`\" pulumi-lang-java=\"`shouldUtilize`\"\u003e`should_utilize`\u003c/span\u003e - (Required) Determines whether capacity reservations should be utilized.\n    * \u003cspan pulumi-lang-nodejs=\"`utilizationStrategy`\" pulumi-lang-dotnet=\"`UtilizationStrategy`\" pulumi-lang-go=\"`utilizationStrategy`\" pulumi-lang-python=\"`utilization_strategy`\" pulumi-lang-yaml=\"`utilizationStrategy`\" pulumi-lang-java=\"`utilizationStrategy`\"\u003e`utilization_strategy`\u003c/span\u003e - (Required, Enum `\"utilizeOverSpot\", \"utilizeOverOD\"`) The priority requested for using CRG. This value will determine if CRG is used ahead of spot VMs or On-demand VMs. (`\"utilizeOverOD\"`- If picked, we will use CRG only in case On demand should be launched. `\"utilizeOverSpot\"`- CRG will be preferred over Spot. Only after CRG is fully used, spot VMs can be used.)\n    * \u003cspan pulumi-lang-nodejs=\"`capacityReservationGroups`\" pulumi-lang-dotnet=\"`CapacityReservationGroups`\" pulumi-lang-go=\"`capacityReservationGroups`\" pulumi-lang-python=\"`capacity_reservation_groups`\" pulumi-lang-yaml=\"`capacityReservationGroups`\" pulumi-lang-java=\"`capacityReservationGroups`\"\u003e`capacity_reservation_groups`\u003c/span\u003e - (Optional) List of the desired CRGs to use under the associated Azure subscription. When null we will utilize any available reservation that matches the launch specification.\n      * \u003cspan pulumi-lang-nodejs=\"`crgName`\" pulumi-lang-dotnet=\"`CrgName`\" pulumi-lang-go=\"`crgName`\" pulumi-lang-python=\"`crg_name`\" pulumi-lang-yaml=\"`crgName`\" pulumi-lang-java=\"`crgName`\"\u003e`crg_name`\u003c/span\u003e - (Required) The name of the CRG.\n      * \u003cspan pulumi-lang-nodejs=\"`crgResourceGroupName`\" pulumi-lang-dotnet=\"`CrgResourceGroupName`\" pulumi-lang-go=\"`crgResourceGroupName`\" pulumi-lang-python=\"`crg_resource_group_name`\" pulumi-lang-yaml=\"`crgResourceGroupName`\" pulumi-lang-java=\"`crgResourceGroupName`\"\u003e`crg_resource_group_name`\u003c/span\u003e - (Required) Azure resource group name\n      * \u003cspan pulumi-lang-nodejs=\"`crgShouldPrioritize`\" pulumi-lang-dotnet=\"`CrgShouldPrioritize`\" pulumi-lang-go=\"`crgShouldPrioritize`\" pulumi-lang-python=\"`crg_should_prioritize`\" pulumi-lang-yaml=\"`crgShouldPrioritize`\" pulumi-lang-java=\"`crgShouldPrioritize`\"\u003e`crg_should_prioritize`\u003c/span\u003e - The desired CRG to utilize ahead of other CRGs in the subscription.\n  * \u003cspan pulumi-lang-nodejs=\"`vmAdmins`\" pulumi-lang-dotnet=\"`VmAdmins`\" pulumi-lang-go=\"`vmAdmins`\" pulumi-lang-python=\"`vm_admins`\" pulumi-lang-yaml=\"`vmAdmins`\" pulumi-lang-java=\"`vmAdmins`\"\u003e`vm_admins`\u003c/span\u003e - (Optional) Defines Azure identities that are considered VM admins. If the list is empty, the defined behavior is `NONE`, If the list is null, the defined behavior is `ALL`. This applies if the object is not defined. If an identity contains the string, it will be considered permitted to perform the following actions: Stop VM: VM admins can move the VM to a \"stopped (deallocated)\" state using the Azure console. If triggered by someone else, it is considered an interruption. \n\n\n## Compute\n\n* \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e - (Required, Enum `\"Linux\", \"Windows\"`) Type of operating system.\n* \u003cspan pulumi-lang-nodejs=\"`vmSizes`\" pulumi-lang-dotnet=\"`VmSizes`\" pulumi-lang-go=\"`vmSizes`\" pulumi-lang-python=\"`vm_sizes`\" pulumi-lang-yaml=\"`vmSizes`\" pulumi-lang-java=\"`vmSizes`\"\u003e`vm_sizes`\u003c/span\u003e - (Required) Defines the VM sizes to use when launching VMs.\n    * \u003cspan pulumi-lang-nodejs=\"`odSizes`\" pulumi-lang-dotnet=\"`OdSizes`\" pulumi-lang-go=\"`odSizes`\" pulumi-lang-python=\"`od_sizes`\" pulumi-lang-yaml=\"`odSizes`\" pulumi-lang-java=\"`odSizes`\"\u003e`od_sizes`\u003c/span\u003e - (Required) Available On-Demand sizes.\n    * \u003cspan pulumi-lang-nodejs=\"`spotSizes`\" pulumi-lang-dotnet=\"`SpotSizes`\" pulumi-lang-go=\"`spotSizes`\" pulumi-lang-python=\"`spot_sizes`\" pulumi-lang-yaml=\"`spotSizes`\" pulumi-lang-java=\"`spotSizes`\"\u003e`spot_sizes`\u003c/span\u003e - (Optional) Available Spot-VM sizes. Required if spotSizeAttributes isn't specified.\n    * \u003cspan pulumi-lang-nodejs=\"`preferredSpotSizes`\" pulumi-lang-dotnet=\"`PreferredSpotSizes`\" pulumi-lang-go=\"`preferredSpotSizes`\" pulumi-lang-python=\"`preferred_spot_sizes`\" pulumi-lang-yaml=\"`preferredSpotSizes`\" pulumi-lang-java=\"`preferredSpotSizes`\"\u003e`preferred_spot_sizes`\u003c/span\u003e - (Optional) Prioritize Spot VM sizes when launching Spot VMs for the group. If set, must be a sublist of compute.vmSizes.spotSizes.\n    * \u003cspan pulumi-lang-nodejs=\"`excludedVmSizes`\" pulumi-lang-dotnet=\"`ExcludedVmSizes`\" pulumi-lang-go=\"`excludedVmSizes`\" pulumi-lang-python=\"`excluded_vm_sizes`\" pulumi-lang-yaml=\"`excludedVmSizes`\" pulumi-lang-java=\"`excludedVmSizes`\"\u003e`excluded_vm_sizes`\u003c/span\u003e - (Optional) Defines the VM sizes to exclude when defining spot types with spotSizeAttributes.\n    * \u003cspan pulumi-lang-nodejs=\"`spotSizeAttributes`\" pulumi-lang-dotnet=\"`SpotSizeAttributes`\" pulumi-lang-go=\"`spotSizeAttributes`\" pulumi-lang-python=\"`spot_size_attributes`\" pulumi-lang-yaml=\"`spotSizeAttributes`\" pulumi-lang-java=\"`spotSizeAttributes`\"\u003e`spot_size_attributes`\u003c/span\u003e - (Optional) Defines values and ranges for attributes of the spot sizes to use when launching VMs. Required if spotSizes isn't specified.\n      * \u003cspan pulumi-lang-nodejs=\"`maxCpu`\" pulumi-lang-dotnet=\"`MaxCpu`\" pulumi-lang-go=\"`maxCpu`\" pulumi-lang-python=\"`max_cpu`\" pulumi-lang-yaml=\"`maxCpu`\" pulumi-lang-java=\"`maxCpu`\"\u003e`max_cpu`\u003c/span\u003e - (Optional) Maximum amount of vCPU units.\n      * \u003cspan pulumi-lang-nodejs=\"`minCpu`\" pulumi-lang-dotnet=\"`MinCpu`\" pulumi-lang-go=\"`minCpu`\" pulumi-lang-python=\"`min_cpu`\" pulumi-lang-yaml=\"`minCpu`\" pulumi-lang-java=\"`minCpu`\"\u003e`min_cpu`\u003c/span\u003e - (Optional) Minimum amount of vCPU units.\n      * \u003cspan pulumi-lang-nodejs=\"`maxMemory`\" pulumi-lang-dotnet=\"`MaxMemory`\" pulumi-lang-go=\"`maxMemory`\" pulumi-lang-python=\"`max_memory`\" pulumi-lang-yaml=\"`maxMemory`\" pulumi-lang-java=\"`maxMemory`\"\u003e`max_memory`\u003c/span\u003e - (Optional) Maximum amount of memory in GiB.\n      * \u003cspan pulumi-lang-nodejs=\"`minMemory`\" pulumi-lang-dotnet=\"`MinMemory`\" pulumi-lang-go=\"`minMemory`\" pulumi-lang-python=\"`min_memory`\" pulumi-lang-yaml=\"`minMemory`\" pulumi-lang-java=\"`minMemory`\"\u003e`min_memory`\u003c/span\u003e - (Optional) Minimum amount of memory in GiB.\n      * \u003cspan pulumi-lang-nodejs=\"`maxStorage`\" pulumi-lang-dotnet=\"`MaxStorage`\" pulumi-lang-go=\"`maxStorage`\" pulumi-lang-python=\"`max_storage`\" pulumi-lang-yaml=\"`maxStorage`\" pulumi-lang-java=\"`maxStorage`\"\u003e`max_storage`\u003c/span\u003e - (Optional) Maximum amount of storage in GiB.\n      * \u003cspan pulumi-lang-nodejs=\"`minStorage`\" pulumi-lang-dotnet=\"`MinStorage`\" pulumi-lang-go=\"`minStorage`\" pulumi-lang-python=\"`min_storage`\" pulumi-lang-yaml=\"`minStorage`\" pulumi-lang-java=\"`minStorage`\"\u003e`min_storage`\u003c/span\u003e - (optional) Minimum amount of storage in GiB.\n* \u003cspan pulumi-lang-nodejs=\"`zones`\" pulumi-lang-dotnet=\"`Zones`\" pulumi-lang-go=\"`zones`\" pulumi-lang-python=\"`zones`\" pulumi-lang-yaml=\"`zones`\" pulumi-lang-java=\"`zones`\"\u003e`zones`\u003c/span\u003e - (Optional, Enum `\"1\", \"2\", \"3\"`) List of Azure Availability Zones in the defined region. If not defined, Virtual machines will be launched regionally.\n* \u003cspan pulumi-lang-nodejs=\"`preferredZone`\" pulumi-lang-dotnet=\"`PreferredZone`\" pulumi-lang-go=\"`preferredZone`\" pulumi-lang-python=\"`preferred_zone`\" pulumi-lang-yaml=\"`preferredZone`\" pulumi-lang-java=\"`preferredZone`\"\u003e`preferred_zone`\u003c/span\u003e - (Optional, Enum `\"1\", \"2\", \"3\"`) The AZ to prioritize when launching VMs. If no markets are available in the Preferred AZ, VMs are launched in the non-preferred AZ. Must be a sublist of compute.zones.\n* \u003cspan pulumi-lang-nodejs=\"`customData`\" pulumi-lang-dotnet=\"`CustomData`\" pulumi-lang-go=\"`customData`\" pulumi-lang-python=\"`custom_data`\" pulumi-lang-yaml=\"`customData`\" pulumi-lang-java=\"`customData`\"\u003e`custom_data`\u003c/span\u003e - (Optional) This value will hold the YAML in base64 and will be executed upon VM launch.\n* \u003cspan pulumi-lang-nodejs=\"`shutdownScript`\" pulumi-lang-dotnet=\"`ShutdownScript`\" pulumi-lang-go=\"`shutdownScript`\" pulumi-lang-python=\"`shutdown_script`\" pulumi-lang-yaml=\"`shutdownScript`\" pulumi-lang-java=\"`shutdownScript`\"\u003e`shutdown_script`\u003c/span\u003e - (Optional) Shutdown script for the stateful node. Value should be passed as a string encoded at Base64 only.\n* \u003cspan pulumi-lang-nodejs=\"`userData`\" pulumi-lang-dotnet=\"`UserData`\" pulumi-lang-go=\"`userData`\" pulumi-lang-python=\"`user_data`\" pulumi-lang-yaml=\"`userData`\" pulumi-lang-java=\"`userData`\"\u003e`user_data`\u003c/span\u003e - (Optional) Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)\n* \u003cspan pulumi-lang-nodejs=\"`vmName`\" pulumi-lang-dotnet=\"`VmName`\" pulumi-lang-go=\"`vmName`\" pulumi-lang-python=\"`vm_name`\" pulumi-lang-yaml=\"`vmName`\" pulumi-lang-java=\"`vmName`\"\u003e`vm_name`\u003c/span\u003e - (Optional) Set a VM name that will be persisted throughout the entire node lifecycle. This can't be set if \u003cspan pulumi-lang-nodejs=\"`vmNamePrefix`\" pulumi-lang-dotnet=\"`VmNamePrefix`\" pulumi-lang-go=\"`vmNamePrefix`\" pulumi-lang-python=\"`vm_name_prefix`\" pulumi-lang-yaml=\"`vmNamePrefix`\" pulumi-lang-java=\"`vmNamePrefix`\"\u003e`vm_name_prefix`\u003c/span\u003e is set.\n* \u003cspan pulumi-lang-nodejs=\"`vmNamePrefix`\" pulumi-lang-dotnet=\"`VmNamePrefix`\" pulumi-lang-go=\"`vmNamePrefix`\" pulumi-lang-python=\"`vm_name_prefix`\" pulumi-lang-yaml=\"`vmNamePrefix`\" pulumi-lang-java=\"`vmNamePrefix`\"\u003e`vm_name_prefix`\u003c/span\u003e - (Optional) Set a VM name prefix to be used for all launched VMs and the VM resources. This can't be set if \u003cspan pulumi-lang-nodejs=\"`vmName`\" pulumi-lang-dotnet=\"`VmName`\" pulumi-lang-go=\"`vmName`\" pulumi-lang-python=\"`vm_name`\" pulumi-lang-yaml=\"`vmName`\" pulumi-lang-java=\"`vmName`\"\u003e`vm_name`\u003c/span\u003e is set.\n* \u003cspan pulumi-lang-nodejs=\"`licenseType`\" pulumi-lang-dotnet=\"`LicenseType`\" pulumi-lang-go=\"`licenseType`\" pulumi-lang-python=\"`license_type`\" pulumi-lang-yaml=\"`licenseType`\" pulumi-lang-java=\"`licenseType`\"\u003e`license_type`\u003c/span\u003e - (Optional) Specify an existing Azure license type to use when launching new VMs. Valid values for Windows OS: \"Windows_Server\", \"Windows_Client\", Valid values for Linux OS: \"RHEL_BYOS\", \"SLES_BYOS\"\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"bootDiagnostics\"\" pulumi-lang-dotnet=\"\"BootDiagnostics\"\" pulumi-lang-go=\"\"bootDiagnostics\"\" pulumi-lang-python=\"\"boot_diagnostics\"\" pulumi-lang-yaml=\"\"bootDiagnostics\"\" pulumi-lang-java=\"\"bootDiagnostics\"\"\u003e\"boot_diagnostics\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Boot Diagnostics\n\n* \u003cspan pulumi-lang-nodejs=\"`bootDiagnostics`\" pulumi-lang-dotnet=\"`BootDiagnostics`\" pulumi-lang-go=\"`bootDiagnostics`\" pulumi-lang-python=\"`boot_diagnostics`\" pulumi-lang-yaml=\"`bootDiagnostics`\" pulumi-lang-java=\"`bootDiagnostics`\"\u003e`boot_diagnostics`\u003c/span\u003e\n  * \u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e - (Optional) Allows you to enable and disable the configuration of boot diagnostics at launch.\n  * \u003cspan pulumi-lang-nodejs=\"`storageUrl`\" pulumi-lang-dotnet=\"`StorageUrl`\" pulumi-lang-go=\"`storageUrl`\" pulumi-lang-python=\"`storage_url`\" pulumi-lang-yaml=\"`storageUrl`\" pulumi-lang-java=\"`storageUrl`\"\u003e`storage_url`\u003c/span\u003e - (Optional) The storage URI that is used if a type is unmanaged. The storage URI must follow the blob storage URI format (\"https://.blob.core.windows.net/\"). StorageUri is required if the type is unmanaged. StorageUri must be ‘null’ in case the boot diagnostics type is managed.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Optional, Enum `\"managed\", \"unmanaged\"`) Defines the storage type on VM launch in Azure.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"dataDisks\"\" pulumi-lang-dotnet=\"\"DataDisks\"\" pulumi-lang-go=\"\"dataDisks\"\" pulumi-lang-python=\"\"data_disks\"\" pulumi-lang-yaml=\"\"dataDisks\"\" pulumi-lang-java=\"\"dataDisks\"\"\u003e\"data_disks\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Data Disks\n\n* \u003cspan pulumi-lang-nodejs=\"`dataDisk`\" pulumi-lang-dotnet=\"`DataDisk`\" pulumi-lang-go=\"`dataDisk`\" pulumi-lang-python=\"`data_disk`\" pulumi-lang-yaml=\"`dataDisk`\" pulumi-lang-java=\"`dataDisk`\"\u003e`data_disk`\u003c/span\u003e - (Optional) The definitions of data disks that will be created and attached to the stateful node's VM.\n  * \u003cspan pulumi-lang-nodejs=\"`sizeGb`\" pulumi-lang-dotnet=\"`SizeGb`\" pulumi-lang-go=\"`sizeGb`\" pulumi-lang-python=\"`size_gb`\" pulumi-lang-yaml=\"`sizeGb`\" pulumi-lang-java=\"`sizeGb`\"\u003e`size_gb`\u003c/span\u003e - (Required) The size of the data disk in GB, required if dataDisks is specified.\n  * \u003cspan pulumi-lang-nodejs=\"`lun`\" pulumi-lang-dotnet=\"`Lun`\" pulumi-lang-go=\"`lun`\" pulumi-lang-python=\"`lun`\" pulumi-lang-yaml=\"`lun`\" pulumi-lang-java=\"`lun`\"\u003e`lun`\u003c/span\u003e - (Required) The LUN of the data disk.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required, Enum `\"Standard_LRS\", \"Premium_LRS\", \"StandardSSD_LRS\", \"UltraSSD_LRS\"`) The type of the data disk.\n\n\n## Extensions\n\n* \u003cspan pulumi-lang-nodejs=\"`extension`\" pulumi-lang-dotnet=\"`Extension`\" pulumi-lang-go=\"`extension`\" pulumi-lang-python=\"`extension`\" pulumi-lang-yaml=\"`extension`\" pulumi-lang-java=\"`extension`\"\u003e`extension`\u003c/span\u003e - (Optional) An object for an azure extension.\n  * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) Required on compute.launchSpecification.extensions object.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required) Required on compute.launchSpecification.extensions object.\n  * \u003cspan pulumi-lang-nodejs=\"`publisher`\" pulumi-lang-dotnet=\"`Publisher`\" pulumi-lang-go=\"`publisher`\" pulumi-lang-python=\"`publisher`\" pulumi-lang-yaml=\"`publisher`\" pulumi-lang-java=\"`publisher`\"\u003e`publisher`\u003c/span\u003e - (Required) Required on compute.launchSpecification.extensions object.\n  * \u003cspan pulumi-lang-nodejs=\"`apiVersion`\" pulumi-lang-dotnet=\"`ApiVersion`\" pulumi-lang-go=\"`apiVersion`\" pulumi-lang-python=\"`api_version`\" pulumi-lang-yaml=\"`apiVersion`\" pulumi-lang-java=\"`apiVersion`\"\u003e`api_version`\u003c/span\u003e - (Required) The API version of the extension. Required if extension specified.\n  * \u003cspan pulumi-lang-nodejs=\"`minorVersionAutoUpgrade`\" pulumi-lang-dotnet=\"`MinorVersionAutoUpgrade`\" pulumi-lang-go=\"`minorVersionAutoUpgrade`\" pulumi-lang-python=\"`minor_version_auto_upgrade`\" pulumi-lang-yaml=\"`minorVersionAutoUpgrade`\" pulumi-lang-java=\"`minorVersionAutoUpgrade`\"\u003e`minor_version_auto_upgrade`\u003c/span\u003e - (Required) Required on compute.launchSpecification.extensions object.\n  * \u003cspan pulumi-lang-nodejs=\"`protectedSettings`\" pulumi-lang-dotnet=\"`ProtectedSettings`\" pulumi-lang-go=\"`protectedSettings`\" pulumi-lang-python=\"`protected_settings`\" pulumi-lang-yaml=\"`protectedSettings`\" pulumi-lang-java=\"`protectedSettings`\"\u003e`protected_settings`\u003c/span\u003e - (Optional) Object for protected settings.\n  * \u003cspan pulumi-lang-nodejs=\"`publicSettings`\" pulumi-lang-dotnet=\"`PublicSettings`\" pulumi-lang-go=\"`publicSettings`\" pulumi-lang-python=\"`public_settings`\" pulumi-lang-yaml=\"`publicSettings`\" pulumi-lang-java=\"`publicSettings`\"\u003e`public_settings`\u003c/span\u003e - (Optional) Object for public settings.\n  \n\n## Image\n\n* \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e\n  * \u003cspan pulumi-lang-nodejs=\"`marketplaceImage`\" pulumi-lang-dotnet=\"`MarketplaceImage`\" pulumi-lang-go=\"`marketplaceImage`\" pulumi-lang-python=\"`marketplace_image`\" pulumi-lang-yaml=\"`marketplaceImage`\" pulumi-lang-java=\"`marketplaceImage`\"\u003e`marketplace_image`\u003c/span\u003e - (Optional) Select an image from Azure's Marketplace image catalogue. Required if the custom image or gallery image are not specified.\n    * \u003cspan pulumi-lang-nodejs=\"`publisher`\" pulumi-lang-dotnet=\"`Publisher`\" pulumi-lang-go=\"`publisher`\" pulumi-lang-python=\"`publisher`\" pulumi-lang-yaml=\"`publisher`\" pulumi-lang-java=\"`publisher`\"\u003e`publisher`\u003c/span\u003e - (Required) Image publisher.\n    * \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e - (Required) Image offer.\n    * \u003cspan pulumi-lang-nodejs=\"`sku`\" pulumi-lang-dotnet=\"`Sku`\" pulumi-lang-go=\"`sku`\" pulumi-lang-python=\"`sku`\" pulumi-lang-yaml=\"`sku`\" pulumi-lang-java=\"`sku`\"\u003e`sku`\u003c/span\u003e - (Required) Image Stock Keeping Unit, which is the specific version of the image.\n    * \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e - (Required, Default `\"latest\"`) Image's version. if version not provided we use \"latest\".\n  * \u003cspan pulumi-lang-nodejs=\"`gallery`\" pulumi-lang-dotnet=\"`Gallery`\" pulumi-lang-go=\"`gallery`\" pulumi-lang-python=\"`gallery`\" pulumi-lang-yaml=\"`gallery`\" pulumi-lang-java=\"`gallery`\"\u003e`gallery`\u003c/span\u003e - (Optional) Gallery image definitions. Required if custom image or marketplace image are not specified.\n    * \u003cspan pulumi-lang-nodejs=\"`galleryResourceGroupName`\" pulumi-lang-dotnet=\"`GalleryResourceGroupName`\" pulumi-lang-go=\"`galleryResourceGroupName`\" pulumi-lang-python=\"`gallery_resource_group_name`\" pulumi-lang-yaml=\"`galleryResourceGroupName`\" pulumi-lang-java=\"`galleryResourceGroupName`\"\u003e`gallery_resource_group_name`\u003c/span\u003e - (Required) The resource group name for gallery image.\n    * \u003cspan pulumi-lang-nodejs=\"`galleryName`\" pulumi-lang-dotnet=\"`GalleryName`\" pulumi-lang-go=\"`galleryName`\" pulumi-lang-python=\"`gallery_name`\" pulumi-lang-yaml=\"`galleryName`\" pulumi-lang-java=\"`galleryName`\"\u003e`gallery_name`\u003c/span\u003e - (Required) Name of the gallery.\n    * \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`image_name`\u003c/span\u003e - (Required) Name of the gallery image.\n    * \u003cspan pulumi-lang-nodejs=\"`versionName`\" pulumi-lang-dotnet=\"`VersionName`\" pulumi-lang-go=\"`versionName`\" pulumi-lang-python=\"`version_name`\" pulumi-lang-yaml=\"`versionName`\" pulumi-lang-java=\"`versionName`\"\u003e`version_name`\u003c/span\u003e - (Required) Image's version. Can be in the format x.x.x or 'latest'.\n    * \u003cspan pulumi-lang-nodejs=\"`spotAccountId`\" pulumi-lang-dotnet=\"`SpotAccountId`\" pulumi-lang-go=\"`spotAccountId`\" pulumi-lang-python=\"`spot_account_id`\" pulumi-lang-yaml=\"`spotAccountId`\" pulumi-lang-java=\"`spotAccountId`\"\u003e`spot_account_id`\u003c/span\u003e - (Optional) The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.spot.io/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.\n  * \u003cspan pulumi-lang-nodejs=\"`customImage`\" pulumi-lang-dotnet=\"`CustomImage`\" pulumi-lang-go=\"`customImage`\" pulumi-lang-python=\"`custom_image`\" pulumi-lang-yaml=\"`customImage`\" pulumi-lang-java=\"`customImage`\"\u003e`custom_image`\u003c/span\u003e - (Optional) Custom image definitions. Required if marketplace image or gallery image are not specified.\n    * \u003cspan pulumi-lang-nodejs=\"`customImageResourceGroupName`\" pulumi-lang-dotnet=\"`CustomImageResourceGroupName`\" pulumi-lang-go=\"`customImageResourceGroupName`\" pulumi-lang-python=\"`custom_image_resource_group_name`\" pulumi-lang-yaml=\"`customImageResourceGroupName`\" pulumi-lang-java=\"`customImageResourceGroupName`\"\u003e`custom_image_resource_group_name`\u003c/span\u003e - (Required) The resource group name for custom image.\n    * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) The name of the custom image.\n\n\u003ca id=\"load balancer\"\u003e\u003c/a\u003e\n## Load Balancer\n\n* \u003cspan pulumi-lang-nodejs=\"`loadBalancer`\" pulumi-lang-dotnet=\"`LoadBalancer`\" pulumi-lang-go=\"`loadBalancer`\" pulumi-lang-python=\"`load_balancer`\" pulumi-lang-yaml=\"`loadBalancer`\" pulumi-lang-java=\"`loadBalancer`\"\u003e`load_balancer`\u003c/span\u003e - (Optional) Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required, Enum `\"loadBalancer\", \"applicationGateway\"`) The type of load balancer.\n  * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) The Resource Group name of the Load Balancer.\n  * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) Name of the Application Gateway/Load Balancer.\n  * \u003cspan pulumi-lang-nodejs=\"`sku`\" pulumi-lang-dotnet=\"`Sku`\" pulumi-lang-go=\"`sku`\" pulumi-lang-python=\"`sku`\" pulumi-lang-yaml=\"`sku`\" pulumi-lang-java=\"`sku`\"\u003e`sku`\u003c/span\u003e - (Optional)\n    * if type is `\"LoadBalancer\"` then possible values are `“Standard\", \"Basic”`.\n    * If ApplicationGateway then possible values are\n      `“Standard_Large”, “Standard_Medium”, “Standard_Small”, “Standard_v2\", “WAF_Large”, “WAF_Medium\", “WAF_v2\"`.\n  * \u003cspan pulumi-lang-nodejs=\"`backendPoolNames`\" pulumi-lang-dotnet=\"`BackendPoolNames`\" pulumi-lang-go=\"`backendPoolNames`\" pulumi-lang-python=\"`backend_pool_names`\" pulumi-lang-yaml=\"`backendPoolNames`\" pulumi-lang-java=\"`backendPoolNames`\"\u003e`backend_pool_names`\u003c/span\u003e - (Optional) Name of the Backend Pool to register the Stateful Node VMs to. Each Backend Pool is a separate load balancer. Required if Type is APPLICATION_GATEWAY.\n\n\n## Login\n\n* \u003cspan pulumi-lang-nodejs=\"`login`\" pulumi-lang-dotnet=\"`Login`\" pulumi-lang-go=\"`login`\" pulumi-lang-python=\"`login`\" pulumi-lang-yaml=\"`login`\" pulumi-lang-java=\"`login`\"\u003e`login`\u003c/span\u003e - (Required) Set admin access for accessing your VMs. Password/SSH is required for Linux.\n  * \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`user_name`\u003c/span\u003e - (Required) username for admin access to VMs.\n  * \u003cspan pulumi-lang-nodejs=\"`sshPublicKey`\" pulumi-lang-dotnet=\"`SshPublicKey`\" pulumi-lang-go=\"`sshPublicKey`\" pulumi-lang-python=\"`ssh_public_key`\" pulumi-lang-yaml=\"`sshPublicKey`\" pulumi-lang-java=\"`sshPublicKey`\"\u003e`ssh_public_key`\u003c/span\u003e - (Optional) SSH for admin access to Linux VMs. Optional for Linux.\n  * \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e - (Optional) Password for admin access to Windows VMs. Required for Windows.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"managedServiceIdentities\"\" pulumi-lang-dotnet=\"\"ManagedServiceIdentities\"\" pulumi-lang-go=\"\"managedServiceIdentities\"\" pulumi-lang-python=\"\"managed_service_identities\"\" pulumi-lang-yaml=\"\"managedServiceIdentities\"\" pulumi-lang-java=\"\"managedServiceIdentities\"\"\u003e\"managed_service_identities\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Managed Service Identities\n\n* \u003cspan pulumi-lang-nodejs=\"`managedServiceIdentities`\" pulumi-lang-dotnet=\"`ManagedServiceIdentities`\" pulumi-lang-go=\"`managedServiceIdentities`\" pulumi-lang-python=\"`managed_service_identities`\" pulumi-lang-yaml=\"`managedServiceIdentities`\" pulumi-lang-java=\"`managedServiceIdentities`\"\u003e`managed_service_identities`\u003c/span\u003e - (Optional) Add a user-assigned managed identity to the Stateful Node's VM.\n  * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) name of the managed identity.\n  * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) The Resource Group that the user-assigned managed identity resides in.\n  * \u003cspan pulumi-lang-nodejs=\"`subscriptionId`\" pulumi-lang-dotnet=\"`SubscriptionId`\" pulumi-lang-go=\"`subscriptionId`\" pulumi-lang-python=\"`subscription_id`\" pulumi-lang-yaml=\"`subscriptionId`\" pulumi-lang-java=\"`subscriptionId`\"\u003e`subscription_id`\u003c/span\u003e - (Optional) Defines the subscription ID of the managed service identities. Required if the managed service identity is in a different subscription. To use a user-assigned managed identity in a different subscription, you must ensure that the spotAccount's Service Principal has access to the defined subscription and that it has the two following permissions:\n    1. Microsoft.ManagedIdentity/userAssignedIdentities/assign/action \n    2. Microsoft.ManagedIdentity/userAssignedIdentities/read\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"proximityPlacementGroups\"\" pulumi-lang-dotnet=\"\"ProximityPlacementGroups\"\" pulumi-lang-go=\"\"proximityPlacementGroups\"\" pulumi-lang-python=\"\"proximity_placement_groups\"\" pulumi-lang-yaml=\"\"proximityPlacementGroups\"\" pulumi-lang-java=\"\"proximityPlacementGroups\"\"\u003e\"proximity_placement_groups\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Proximity Placement Groups\n\n* \u003cspan pulumi-lang-nodejs=\"`proximityPlacementGroups`\" pulumi-lang-dotnet=\"`ProximityPlacementGroups`\" pulumi-lang-go=\"`proximityPlacementGroups`\" pulumi-lang-python=\"`proximity_placement_groups`\" pulumi-lang-yaml=\"`proximityPlacementGroups`\" pulumi-lang-java=\"`proximityPlacementGroups`\"\u003e`proximity_placement_groups`\u003c/span\u003e - (Optional) Defines the proximity placement group in which the VM will be launched.\n  * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) name of the proximity placement group.\n  * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) The Resource Group name of the proximity placement group.\n\n\n## Network\n\n* \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e - (Required) Define the Virtual Network and Subnet for your Stateful Node.\n  * \u003cspan pulumi-lang-nodejs=\"`networkResourceGroupName`\" pulumi-lang-dotnet=\"`NetworkResourceGroupName`\" pulumi-lang-go=\"`networkResourceGroupName`\" pulumi-lang-python=\"`network_resource_group_name`\" pulumi-lang-yaml=\"`networkResourceGroupName`\" pulumi-lang-java=\"`networkResourceGroupName`\"\u003e`network_resource_group_name`\u003c/span\u003e - (Required) Vnet Resource Group Name.\n  * \u003cspan pulumi-lang-nodejs=\"`virtualNetworkName`\" pulumi-lang-dotnet=\"`VirtualNetworkName`\" pulumi-lang-go=\"`virtualNetworkName`\" pulumi-lang-python=\"`virtual_network_name`\" pulumi-lang-yaml=\"`virtualNetworkName`\" pulumi-lang-java=\"`virtualNetworkName`\"\u003e`virtual_network_name`\u003c/span\u003e - (Required) Virtual Network.\n  * \u003cspan pulumi-lang-nodejs=\"`networkInterface`\" pulumi-lang-dotnet=\"`NetworkInterface`\" pulumi-lang-go=\"`networkInterface`\" pulumi-lang-python=\"`network_interface`\" pulumi-lang-yaml=\"`networkInterface`\" pulumi-lang-java=\"`networkInterface`\"\u003e`network_interface`\u003c/span\u003e - (Required) Define a network interface\n    * \u003cspan pulumi-lang-nodejs=\"`isPrimary`\" pulumi-lang-dotnet=\"`IsPrimary`\" pulumi-lang-go=\"`isPrimary`\" pulumi-lang-python=\"`is_primary`\" pulumi-lang-yaml=\"`isPrimary`\" pulumi-lang-java=\"`isPrimary`\"\u003e`is_primary`\u003c/span\u003e - (Required) Defines whether the network interface is primary or not.\n    * \u003cspan pulumi-lang-nodejs=\"`subnetName`\" pulumi-lang-dotnet=\"`SubnetName`\" pulumi-lang-go=\"`subnetName`\" pulumi-lang-python=\"`subnet_name`\" pulumi-lang-yaml=\"`subnetName`\" pulumi-lang-java=\"`subnetName`\"\u003e`subnet_name`\u003c/span\u003e - (Required) Subnet name.\n    * \u003cspan pulumi-lang-nodejs=\"`assignPublicIp`\" pulumi-lang-dotnet=\"`AssignPublicIp`\" pulumi-lang-go=\"`assignPublicIp`\" pulumi-lang-python=\"`assign_public_ip`\" pulumi-lang-yaml=\"`assignPublicIp`\" pulumi-lang-java=\"`assignPublicIp`\"\u003e`assign_public_ip`\u003c/span\u003e - (Optional) Assign public IP.\n    * \u003cspan pulumi-lang-nodejs=\"`publicIpSku`\" pulumi-lang-dotnet=\"`PublicIpSku`\" pulumi-lang-go=\"`publicIpSku`\" pulumi-lang-python=\"`public_ip_sku`\" pulumi-lang-yaml=\"`publicIpSku`\" pulumi-lang-java=\"`publicIpSku`\"\u003e`public_ip_sku`\u003c/span\u003e - (Optional) Required if assignPublicIp=true values=[Standard/Basic].\n    * \u003cspan pulumi-lang-nodejs=\"`networkSecurityGroup`\" pulumi-lang-dotnet=\"`NetworkSecurityGroup`\" pulumi-lang-go=\"`networkSecurityGroup`\" pulumi-lang-python=\"`network_security_group`\" pulumi-lang-yaml=\"`networkSecurityGroup`\" pulumi-lang-java=\"`networkSecurityGroup`\"\u003e`network_security_group`\u003c/span\u003e - (Optional) Network Security Group.\n      * \u003cspan pulumi-lang-nodejs=\"`networkResourceGroupName`\" pulumi-lang-dotnet=\"`NetworkResourceGroupName`\" pulumi-lang-go=\"`networkResourceGroupName`\" pulumi-lang-python=\"`network_resource_group_name`\" pulumi-lang-yaml=\"`networkResourceGroupName`\" pulumi-lang-java=\"`networkResourceGroupName`\"\u003e`network_resource_group_name`\u003c/span\u003e - (Required) Requires valid security group name.\n      * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) Requires valid resource group name.\n    * \u003cspan pulumi-lang-nodejs=\"`enableIpForwarding`\" pulumi-lang-dotnet=\"`EnableIpForwarding`\" pulumi-lang-go=\"`enableIpForwarding`\" pulumi-lang-python=\"`enable_ip_forwarding`\" pulumi-lang-yaml=\"`enableIpForwarding`\" pulumi-lang-java=\"`enableIpForwarding`\"\u003e`enable_ip_forwarding`\u003c/span\u003e - (Optional) Enable IP Forwarding.\n    * \u003cspan pulumi-lang-nodejs=\"`privateIpAddresses`\" pulumi-lang-dotnet=\"`PrivateIpAddresses`\" pulumi-lang-go=\"`privateIpAddresses`\" pulumi-lang-python=\"`private_ip_addresses`\" pulumi-lang-yaml=\"`privateIpAddresses`\" pulumi-lang-java=\"`privateIpAddresses`\"\u003e`private_ip_addresses`\u003c/span\u003e - (Optional) A list with unique items that every item is a valid IP.\n    * \u003cspan pulumi-lang-nodejs=\"`additionalIpConfigurations`\" pulumi-lang-dotnet=\"`AdditionalIpConfigurations`\" pulumi-lang-go=\"`additionalIpConfigurations`\" pulumi-lang-python=\"`additional_ip_configurations`\" pulumi-lang-yaml=\"`additionalIpConfigurations`\" pulumi-lang-java=\"`additionalIpConfigurations`\"\u003e`additional_ip_configurations`\u003c/span\u003e - (Optional) Additional configuration of network interface.\n      * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) Configuration name.\n      * \u003cspan pulumi-lang-nodejs=\"`privateIpAddressVersion`\" pulumi-lang-dotnet=\"`PrivateIpAddressVersion`\" pulumi-lang-go=\"`privateIpAddressVersion`\" pulumi-lang-python=\"`private_ip_address_version`\" pulumi-lang-yaml=\"`privateIpAddressVersion`\" pulumi-lang-java=\"`privateIpAddressVersion`\"\u003e`private_ip_address_version`\u003c/span\u003e - (Required, Enum `\"IPv4\", \"IPv6\"` Default `\"IPv4\"`) Version of the private IP address.\n    * \u003cspan pulumi-lang-nodejs=\"`publicIps`\" pulumi-lang-dotnet=\"`PublicIps`\" pulumi-lang-go=\"`publicIps`\" pulumi-lang-python=\"`public_ips`\" pulumi-lang-yaml=\"`publicIps`\" pulumi-lang-java=\"`publicIps`\"\u003e`public_ips`\u003c/span\u003e - (Optional) Defined a pool of Public Ips (from Azure), that will be associated to the network interface. We will associate one public ip per instance until the pool is exhausted, in which case, we will create a new one.\n      * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) The resource group of the public ip.\n      * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) - The name of the public ip.\n    * \u003cspan pulumi-lang-nodejs=\"`applicationSecurityGroups`\" pulumi-lang-dotnet=\"`ApplicationSecurityGroups`\" pulumi-lang-go=\"`applicationSecurityGroups`\" pulumi-lang-python=\"`application_security_groups`\" pulumi-lang-yaml=\"`applicationSecurityGroups`\" pulumi-lang-java=\"`applicationSecurityGroups`\"\u003e`application_security_groups`\u003c/span\u003e - (Optional) Network Security Group.\n      * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) Requires valid security group name.\n      * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) Requires valid resource group name.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"osDisk\"\" pulumi-lang-dotnet=\"\"OsDisk\"\" pulumi-lang-go=\"\"osDisk\"\" pulumi-lang-python=\"\"os_disk\"\" pulumi-lang-yaml=\"\"osDisk\"\" pulumi-lang-java=\"\"osDisk\"\"\u003e\"os_disk\"\u003c/span\u003e\u003e\u003c/a\u003e\n## OS Disk\n\n* \u003cspan pulumi-lang-nodejs=\"`osDisk`\" pulumi-lang-dotnet=\"`OsDisk`\" pulumi-lang-go=\"`osDisk`\" pulumi-lang-python=\"`os_disk`\" pulumi-lang-yaml=\"`osDisk`\" pulumi-lang-java=\"`osDisk`\"\u003e`os_disk`\u003c/span\u003e - (Optional) Specify OS disk specification other than default.\n  * \u003cspan pulumi-lang-nodejs=\"`sizeGb`\" pulumi-lang-dotnet=\"`SizeGb`\" pulumi-lang-go=\"`sizeGb`\" pulumi-lang-python=\"`size_gb`\" pulumi-lang-yaml=\"`sizeGb`\" pulumi-lang-java=\"`sizeGb`\"\u003e`size_gb`\u003c/span\u003e - (Optional, Default `\"30\"`) The size of the data disk in GB.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required, Enum `\"Standard_LRS\", \"Premium_LRS\", \"StandardSSD_LRS\"`) The type of the OS disk.\n  * \u003cspan pulumi-lang-nodejs=\"`caching`\" pulumi-lang-dotnet=\"`Caching`\" pulumi-lang-go=\"`caching`\" pulumi-lang-python=\"`caching`\" pulumi-lang-yaml=\"`caching`\" pulumi-lang-java=\"`caching`\"\u003e`caching`\u003c/span\u003e - (Optional, Enum `\"None\", \"ReadOnly\", \"ReadWrite\"`) Specifies the host caching requirements. With disk caching enabled, VMs can achieve higher levels of performance. If not specified, the Azure default behavior will be applied.\n\n\n## Secret\n\n* \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e - (Optional) Set of certificates that should be installed on the VM.\n  * \u003cspan pulumi-lang-nodejs=\"`sourceVault`\" pulumi-lang-dotnet=\"`SourceVault`\" pulumi-lang-go=\"`sourceVault`\" pulumi-lang-python=\"`source_vault`\" pulumi-lang-yaml=\"`sourceVault`\" pulumi-lang-java=\"`sourceVault`\"\u003e`source_vault`\u003c/span\u003e - (Required) The key vault reference, contains the required certificates.\n    * \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - (Required) The name of the key vault.\n    * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) The resource group name of the key vault.\n  * \u003cspan pulumi-lang-nodejs=\"`vaultCertificates`\" pulumi-lang-dotnet=\"`VaultCertificates`\" pulumi-lang-go=\"`vaultCertificates`\" pulumi-lang-python=\"`vault_certificates`\" pulumi-lang-yaml=\"`vaultCertificates`\" pulumi-lang-java=\"`vaultCertificates`\"\u003e`vault_certificates`\u003c/span\u003e - (Required) The required certificate references.\n    * \u003cspan pulumi-lang-nodejs=\"`certificateUrl`\" pulumi-lang-dotnet=\"`CertificateUrl`\" pulumi-lang-go=\"`certificateUrl`\" pulumi-lang-python=\"`certificate_url`\" pulumi-lang-yaml=\"`certificateUrl`\" pulumi-lang-java=\"`certificateUrl`\"\u003e`certificate_url`\u003c/span\u003e - (Optional) The URL of the certificate under the key vault.\n    * \u003cspan pulumi-lang-nodejs=\"`certificateStore`\" pulumi-lang-dotnet=\"`CertificateStore`\" pulumi-lang-go=\"`certificateStore`\" pulumi-lang-python=\"`certificate_store`\" pulumi-lang-yaml=\"`certificateStore`\" pulumi-lang-java=\"`certificateStore`\"\u003e`certificate_store`\u003c/span\u003e - (Required) The certificate store directory the VM. The directory is created in the LocalMachine account.\n      * This field is required only when using Windows OS type\n      * This field must be ‘null’ when the OS type is Linux\n\n\n## Security\n\n* \u003cspan pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\"\u003e`security`\u003c/span\u003e - (Optional) Specifies the Security related profile settings for the virtual machine.\n    * \u003cspan pulumi-lang-nodejs=\"`secureBootEnabled`\" pulumi-lang-dotnet=\"`SecureBootEnabled`\" pulumi-lang-go=\"`secureBootEnabled`\" pulumi-lang-python=\"`secure_boot_enabled`\" pulumi-lang-yaml=\"`secureBootEnabled`\" pulumi-lang-java=\"`secureBootEnabled`\"\u003e`secure_boot_enabled`\u003c/span\u003e - (Optional) Specifies whether secure boot should be enabled on the virtual machine.\n    * \u003cspan pulumi-lang-nodejs=\"`securityType`\" pulumi-lang-dotnet=\"`SecurityType`\" pulumi-lang-go=\"`securityType`\" pulumi-lang-python=\"`security_type`\" pulumi-lang-yaml=\"`securityType`\" pulumi-lang-java=\"`securityType`\"\u003e`security_type`\u003c/span\u003e - (Optional) Enum: `\"Standard\", \"TrustedLaunch\", \"ConfidentialVM\"` Security type refers to the different security features of a virtual machine. Security features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.\n    * \u003cspan pulumi-lang-nodejs=\"`vtpmEnabled`\" pulumi-lang-dotnet=\"`VtpmEnabled`\" pulumi-lang-go=\"`vtpmEnabled`\" pulumi-lang-python=\"`vtpm_enabled`\" pulumi-lang-yaml=\"`vtpmEnabled`\" pulumi-lang-java=\"`vtpmEnabled`\"\u003e`vtpm_enabled`\u003c/span\u003e - (Optional) Specifies whether vTPM should be enabled on the virtual machine.\n    * \u003cspan pulumi-lang-nodejs=\"`encryptionAtHost`\" pulumi-lang-dotnet=\"`EncryptionAtHost`\" pulumi-lang-go=\"`encryptionAtHost`\" pulumi-lang-python=\"`encryption_at_host`\" pulumi-lang-yaml=\"`encryptionAtHost`\" pulumi-lang-java=\"`encryptionAtHost`\"\u003e`encryption_at_host`\u003c/span\u003e - (Optional) Enables the Host Encryption for the virtual machine. The Encryption at host will be disabled unless this property is set to true for the resource.\n    * \u003cspan pulumi-lang-nodejs=\"`confidentialOsDiskEncryption`\" pulumi-lang-dotnet=\"`ConfidentialOsDiskEncryption`\" pulumi-lang-go=\"`confidentialOsDiskEncryption`\" pulumi-lang-python=\"`confidential_os_disk_encryption`\" pulumi-lang-yaml=\"`confidentialOsDiskEncryption`\" pulumi-lang-java=\"`confidentialOsDiskEncryption`\"\u003e`confidential_os_disk_encryption`\u003c/span\u003e - (Optional) Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access. The security type must be \"ConfidentialVM\" to enable defining this preference as “true”.\n\n\n\n## Tag\n\n* \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e - (Optional) Unique Key-Value pair for all Stateful Node Resources.\n  * \u003cspan pulumi-lang-nodejs=\"`tagKey`\" pulumi-lang-dotnet=\"`TagKey`\" pulumi-lang-go=\"`tagKey`\" pulumi-lang-python=\"`tag_key`\" pulumi-lang-yaml=\"`tagKey`\" pulumi-lang-java=\"`tagKey`\"\u003e`tag_key`\u003c/span\u003e - (Optional) Tag Key for Stateful Node Resources.\n  * \u003cspan pulumi-lang-nodejs=\"`tagValue`\" pulumi-lang-dotnet=\"`TagValue`\" pulumi-lang-go=\"`tagValue`\" pulumi-lang-python=\"`tag_value`\" pulumi-lang-yaml=\"`tagValue`\" pulumi-lang-java=\"`tagValue`\"\u003e`tag_value`\u003c/span\u003e - (Optional) Tag Value for Stateful Node Resources.\n\n\n## Health\n\n* \u003cspan pulumi-lang-nodejs=\"`health`\" pulumi-lang-dotnet=\"`Health`\" pulumi-lang-go=\"`health`\" pulumi-lang-python=\"`health`\" pulumi-lang-yaml=\"`health`\" pulumi-lang-java=\"`health`\"\u003e`health`\u003c/span\u003e - (Optional) Set the auto healing preferences for unhealthy VMs.\n  * \u003cspan pulumi-lang-nodejs=\"`healthCheckTypes`\" pulumi-lang-dotnet=\"`HealthCheckTypes`\" pulumi-lang-go=\"`healthCheckTypes`\" pulumi-lang-python=\"`health_check_types`\" pulumi-lang-yaml=\"`healthCheckTypes`\" pulumi-lang-java=\"`healthCheckTypes`\"\u003e`health_check_types`\u003c/span\u003e - (Optional, Enum `\"vmState\", \"applicationGateway\"`) Healthcheck to use to validate VM health.\n  * \u003cspan pulumi-lang-nodejs=\"`unhealthyDuration`\" pulumi-lang-dotnet=\"`UnhealthyDuration`\" pulumi-lang-go=\"`unhealthyDuration`\" pulumi-lang-python=\"`unhealthy_duration`\" pulumi-lang-yaml=\"`unhealthyDuration`\" pulumi-lang-java=\"`unhealthyDuration`\"\u003e`unhealthy_duration`\u003c/span\u003e - (Optional) Amount of time to be unhealthy before a replacement is triggered.\n  * \u003cspan pulumi-lang-nodejs=\"`autoHealing`\" pulumi-lang-dotnet=\"`AutoHealing`\" pulumi-lang-go=\"`autoHealing`\" pulumi-lang-python=\"`auto_healing`\" pulumi-lang-yaml=\"`autoHealing`\" pulumi-lang-java=\"`autoHealing`\"\u003e`auto_healing`\u003c/span\u003e - (Required) Enable Autohealing of unhealthy VMs.\n  * \u003cspan pulumi-lang-nodejs=\"`gracePeriod`\" pulumi-lang-dotnet=\"`GracePeriod`\" pulumi-lang-go=\"`gracePeriod`\" pulumi-lang-python=\"`grace_period`\" pulumi-lang-yaml=\"`gracePeriod`\" pulumi-lang-java=\"`gracePeriod`\"\u003e`grace_period`\u003c/span\u003e - (Optional) Period of time to wait for VM to reach healthiness before monitoring for unhealthiness.\n\n\n## Persistence\n\n* \u003cspan pulumi-lang-nodejs=\"`shouldPersistOsDisk`\" pulumi-lang-dotnet=\"`ShouldPersistOsDisk`\" pulumi-lang-go=\"`shouldPersistOsDisk`\" pulumi-lang-python=\"`should_persist_os_disk`\" pulumi-lang-yaml=\"`shouldPersistOsDisk`\" pulumi-lang-java=\"`shouldPersistOsDisk`\"\u003e`should_persist_os_disk`\u003c/span\u003e - (Required) Should persist os disk.\n* \u003cspan pulumi-lang-nodejs=\"`osDiskPersistenceMode`\" pulumi-lang-dotnet=\"`OsDiskPersistenceMode`\" pulumi-lang-go=\"`osDiskPersistenceMode`\" pulumi-lang-python=\"`os_disk_persistence_mode`\" pulumi-lang-yaml=\"`osDiskPersistenceMode`\" pulumi-lang-java=\"`osDiskPersistenceMode`\"\u003e`os_disk_persistence_mode`\u003c/span\u003e - (Optional, Enum `\"reattach\", \"onLaunch\"`)\n* \u003cspan pulumi-lang-nodejs=\"`shouldPersistDataDisks`\" pulumi-lang-dotnet=\"`ShouldPersistDataDisks`\" pulumi-lang-go=\"`shouldPersistDataDisks`\" pulumi-lang-python=\"`should_persist_data_disks`\" pulumi-lang-yaml=\"`shouldPersistDataDisks`\" pulumi-lang-java=\"`shouldPersistDataDisks`\"\u003e`should_persist_data_disks`\u003c/span\u003e - (Required) Should persist data disks.\n* \u003cspan pulumi-lang-nodejs=\"`dataDisksPersistenceMode`\" pulumi-lang-dotnet=\"`DataDisksPersistenceMode`\" pulumi-lang-go=\"`dataDisksPersistenceMode`\" pulumi-lang-python=\"`data_disks_persistence_mode`\" pulumi-lang-yaml=\"`dataDisksPersistenceMode`\" pulumi-lang-java=\"`dataDisksPersistenceMode`\"\u003e`data_disks_persistence_mode`\u003c/span\u003e - (Optional, Enum `\"reattach\", \"onLaunch\"`)\n* \u003cspan pulumi-lang-nodejs=\"`shouldPersistNetwork`\" pulumi-lang-dotnet=\"`ShouldPersistNetwork`\" pulumi-lang-go=\"`shouldPersistNetwork`\" pulumi-lang-python=\"`should_persist_network`\" pulumi-lang-yaml=\"`shouldPersistNetwork`\" pulumi-lang-java=\"`shouldPersistNetwork`\"\u003e`should_persist_network`\u003c/span\u003e - (Required) Should persist network.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"schedulingTasks\"\" pulumi-lang-dotnet=\"\"SchedulingTasks\"\" pulumi-lang-go=\"\"schedulingTasks\"\" pulumi-lang-python=\"\"scheduling_tasks\"\" pulumi-lang-yaml=\"\"schedulingTasks\"\" pulumi-lang-java=\"\"schedulingTasks\"\"\u003e\"scheduling_tasks\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Scheduling Tasks\n\n* \u003cspan pulumi-lang-nodejs=\"`schedulingTask`\" pulumi-lang-dotnet=\"`SchedulingTask`\" pulumi-lang-go=\"`schedulingTask`\" pulumi-lang-python=\"`scheduling_task`\" pulumi-lang-yaml=\"`schedulingTask`\" pulumi-lang-java=\"`schedulingTask`\"\u003e`scheduling_task`\u003c/span\u003e - (Optional) Scheduling settings object for stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`isEnabled`\" pulumi-lang-dotnet=\"`IsEnabled`\" pulumi-lang-go=\"`isEnabled`\" pulumi-lang-python=\"`is_enabled`\" pulumi-lang-yaml=\"`isEnabled`\" pulumi-lang-java=\"`isEnabled`\"\u003e`is_enabled`\u003c/span\u003e - (Required) Is scheduled task enabled for stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required, Enum `\"pause\", \"resume\", \"recycle\") The type of the scheduled task\n  * \u003cspan pulumi-lang-nodejs=\"`cronExpression`\" pulumi-lang-dotnet=\"`CronExpression`\" pulumi-lang-go=\"`cronExpression`\" pulumi-lang-python=\"`cron_expression`\" pulumi-lang-yaml=\"`cronExpression`\" pulumi-lang-java=\"`cronExpression`\"\u003e`cron_expression`\u003c/span\u003e (Required) A expression which describes when to execute the scheduled task (UTC).\n\n\n## Signals\n\n* \u003cspan pulumi-lang-nodejs=\"`signal`\" pulumi-lang-dotnet=\"`Signal`\" pulumi-lang-go=\"`signal`\" pulumi-lang-python=\"`signal`\" pulumi-lang-yaml=\"`signal`\" pulumi-lang-java=\"`signal`\"\u003e`signal`\u003c/span\u003e - (Optional) A signal object defined for the stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e - (Required, Enum `\"vmReady\", \"vmReadyToShutdown\"`) The type of the signal defined for the stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`timeout`\" pulumi-lang-dotnet=\"`Timeout`\" pulumi-lang-go=\"`timeout`\" pulumi-lang-python=\"`timeout`\" pulumi-lang-yaml=\"`timeout`\" pulumi-lang-java=\"`timeout`\"\u003e`timeout`\u003c/span\u003e - (Required, Default `\"1800\"`) The timeout in seconds to hold the vm until a signal is sent. If no signal is sent the vm will be replaced (vmReady) or we will terminate the vm (vmReadyToShutdown) after the timeout.\n\n---\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"attachDataDisk\"\" pulumi-lang-dotnet=\"\"AttachDataDisk\"\" pulumi-lang-go=\"\"attachDataDisk\"\" pulumi-lang-python=\"\"attach_data_disk\"\" pulumi-lang-yaml=\"\"attachDataDisk\"\" pulumi-lang-java=\"\"attachDataDisk\"\"\u003e\"attach_data_disk\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Attach Data Disk\n\n* \u003cspan pulumi-lang-nodejs=\"`attachDataDisk`\" pulumi-lang-dotnet=\"`AttachDataDisk`\" pulumi-lang-go=\"`attachDataDisk`\" pulumi-lang-python=\"`attach_data_disk`\" pulumi-lang-yaml=\"`attachDataDisk`\" pulumi-lang-java=\"`attachDataDisk`\"\u003e`attach_data_disk`\u003c/span\u003e - (Optional) Create a new data disk and attach it to the stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`dataDiskName`\" pulumi-lang-dotnet=\"`DataDiskName`\" pulumi-lang-go=\"`dataDiskName`\" pulumi-lang-python=\"`data_disk_name`\" pulumi-lang-yaml=\"`dataDiskName`\" pulumi-lang-java=\"`dataDiskName`\"\u003e`data_disk_name`\u003c/span\u003e - (Required) The name of the created data disk.\n  * \u003cspan pulumi-lang-nodejs=\"`dataDiskResourceGroupName`\" pulumi-lang-dotnet=\"`DataDiskResourceGroupName`\" pulumi-lang-go=\"`dataDiskResourceGroupName`\" pulumi-lang-python=\"`data_disk_resource_group_name`\" pulumi-lang-yaml=\"`dataDiskResourceGroupName`\" pulumi-lang-java=\"`dataDiskResourceGroupName`\"\u003e`data_disk_resource_group_name`\u003c/span\u003e - (Required) The resource group name in which the data disk will be created.\n  * \u003cspan pulumi-lang-nodejs=\"`storageAccountType`\" pulumi-lang-dotnet=\"`StorageAccountType`\" pulumi-lang-go=\"`storageAccountType`\" pulumi-lang-python=\"`storage_account_type`\" pulumi-lang-yaml=\"`storageAccountType`\" pulumi-lang-java=\"`storageAccountType`\"\u003e`storage_account_type`\u003c/span\u003e - (Required, Enum `\"Standard_LRS\", \"Premium_LRS\", \"StandardSSD_LRS\", \"UltraSSD_LRS\"`) The type of the data disk.\n  * \u003cspan pulumi-lang-nodejs=\"`sizeGb`\" pulumi-lang-dotnet=\"`SizeGb`\" pulumi-lang-go=\"`sizeGb`\" pulumi-lang-python=\"`size_gb`\" pulumi-lang-yaml=\"`sizeGb`\" pulumi-lang-java=\"`sizeGb`\"\u003e`size_gb`\u003c/span\u003e - (Required) The size of the data disk in GB, Required if dataDisks is specified.\n  * \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e - (Optional, Enum `\"1\", \"2\", \"3\"`) The Availability Zone in which the data disk will be created. If not defined, the data disk will be created regionally.\n  * \u003cspan pulumi-lang-nodejs=\"`lun`\" pulumi-lang-dotnet=\"`Lun`\" pulumi-lang-go=\"`lun`\" pulumi-lang-python=\"`lun`\" pulumi-lang-yaml=\"`lun`\" pulumi-lang-java=\"`lun`\"\u003e`lun`\u003c/span\u003e - (Optional, Default `\"orginal\"`) The LUN of the data disk. If not defined, the LUN will be set in order.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"detachDataDisk\"\" pulumi-lang-dotnet=\"\"DetachDataDisk\"\" pulumi-lang-go=\"\"detachDataDisk\"\" pulumi-lang-python=\"\"detach_data_disk\"\" pulumi-lang-yaml=\"\"detachDataDisk\"\" pulumi-lang-java=\"\"detachDataDisk\"\"\u003e\"detach_data_disk\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Detach Data Disk\n\n* \u003cspan pulumi-lang-nodejs=\"`detachDataDisk`\" pulumi-lang-dotnet=\"`DetachDataDisk`\" pulumi-lang-go=\"`detachDataDisk`\" pulumi-lang-python=\"`detach_data_disk`\" pulumi-lang-yaml=\"`detachDataDisk`\" pulumi-lang-java=\"`detachDataDisk`\"\u003e`detach_data_disk`\u003c/span\u003e - (Optional) Detach a data disk from a stateful node.\n  * \u003cspan pulumi-lang-nodejs=\"`dataDiskName`\" pulumi-lang-dotnet=\"`DataDiskName`\" pulumi-lang-go=\"`dataDiskName`\" pulumi-lang-python=\"`data_disk_name`\" pulumi-lang-yaml=\"`dataDiskName`\" pulumi-lang-java=\"`dataDiskName`\"\u003e`data_disk_name`\u003c/span\u003e - (Required) The name of the detached data disk.\n  * \u003cspan pulumi-lang-nodejs=\"`dataDiskResourceGroupName`\" pulumi-lang-dotnet=\"`DataDiskResourceGroupName`\" pulumi-lang-go=\"`dataDiskResourceGroupName`\" pulumi-lang-python=\"`data_disk_resource_group_name`\" pulumi-lang-yaml=\"`dataDiskResourceGroupName`\" pulumi-lang-java=\"`dataDiskResourceGroupName`\"\u003e`data_disk_resource_group_name`\u003c/span\u003e - (Required) The resource group name in which the data disk exists.\n  * \u003cspan pulumi-lang-nodejs=\"`shouldDeallocate`\" pulumi-lang-dotnet=\"`ShouldDeallocate`\" pulumi-lang-go=\"`shouldDeallocate`\" pulumi-lang-python=\"`should_deallocate`\" pulumi-lang-yaml=\"`shouldDeallocate`\" pulumi-lang-java=\"`shouldDeallocate`\"\u003e`should_deallocate`\u003c/span\u003e - (Required) Indicates whether to delete the data disk in addition to detach.\n  * \u003cspan pulumi-lang-nodejs=\"`ttlInHours`\" pulumi-lang-dotnet=\"`TtlInHours`\" pulumi-lang-go=\"`ttlInHours`\" pulumi-lang-python=\"`ttl_in_hours`\" pulumi-lang-yaml=\"`ttlInHours`\" pulumi-lang-java=\"`ttlInHours`\"\u003e`ttl_in_hours`\u003c/span\u003e - (Required, Default `\"0\"`) Hours to keep the disk alive before deletion.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"updateState\"\" pulumi-lang-dotnet=\"\"UpdateState\"\" pulumi-lang-go=\"\"updateState\"\" pulumi-lang-python=\"\"update_state\"\" pulumi-lang-yaml=\"\"updateState\"\" pulumi-lang-java=\"\"updateState\"\"\u003e\"update_state\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Update State\n\n* \u003cspan pulumi-lang-nodejs=\"`updateState`\" pulumi-lang-dotnet=\"`UpdateState`\" pulumi-lang-go=\"`updateState`\" pulumi-lang-python=\"`update_state`\" pulumi-lang-yaml=\"`updateState`\" pulumi-lang-java=\"`updateState`\"\u003e`update_state`\u003c/span\u003e - (Optional) Update the stateful node state.\n  * \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e - (Required, Enum `\"pause\", \"resume\", \"recycle\"`) New state for the stateful node.\n\n\u003ca id=\u003cspan pulumi-lang-nodejs=\"\"importVm\"\" pulumi-lang-dotnet=\"\"ImportVm\"\" pulumi-lang-go=\"\"importVm\"\" pulumi-lang-python=\"\"import_vm\"\" pulumi-lang-yaml=\"\"importVm\"\" pulumi-lang-java=\"\"importVm\"\"\u003e\"import_vm\"\u003c/span\u003e\u003e\u003c/a\u003e\n## Import VM\n\n* \u003cspan pulumi-lang-nodejs=\"`importVm`\" pulumi-lang-dotnet=\"`ImportVm`\" pulumi-lang-go=\"`importVm`\" pulumi-lang-python=\"`import_vm`\" pulumi-lang-yaml=\"`importVm`\" pulumi-lang-java=\"`importVm`\"\u003e`import_vm`\u003c/span\u003e - (Optional) Import an Azure VM and create a stateful node by providing a node configuration.\n  * \u003cspan pulumi-lang-nodejs=\"`resourceGroupName`\" pulumi-lang-dotnet=\"`ResourceGroupName`\" pulumi-lang-go=\"`resourceGroupName`\" pulumi-lang-python=\"`resource_group_name`\" pulumi-lang-yaml=\"`resourceGroupName`\" pulumi-lang-java=\"`resourceGroupName`\"\u003e`resource_group_name`\u003c/span\u003e - (Required) Name of the Resource Group for Stateful Node.\n  * \u003cspan pulumi-lang-nodejs=\"`originalVmName`\" pulumi-lang-dotnet=\"`OriginalVmName`\" pulumi-lang-go=\"`originalVmName`\" pulumi-lang-python=\"`original_vm_name`\" pulumi-lang-yaml=\"`originalVmName`\" pulumi-lang-java=\"`originalVmName`\"\u003e`original_vm_name`\u003c/span\u003e - (Required) Azure Import Stateful Node Name.\n  * \u003cspan pulumi-lang-nodejs=\"`drainingTimeout`\" pulumi-lang-dotnet=\"`DrainingTimeout`\" pulumi-lang-go=\"`drainingTimeout`\" pulumi-lang-python=\"`draining_timeout`\" pulumi-lang-yaml=\"`drainingTimeout`\" pulumi-lang-java=\"`drainingTimeout`\"\u003e`draining_timeout`\u003c/span\u003e - (Optional) Hours to keep resources alive.\n  * \u003cspan pulumi-lang-nodejs=\"`resourcesRetentionTime`\" pulumi-lang-dotnet=\"`ResourcesRetentionTime`\" pulumi-lang-go=\"`resourcesRetentionTime`\" pulumi-lang-python=\"`resources_retention_time`\" pulumi-lang-yaml=\"`resourcesRetentionTime`\" pulumi-lang-java=\"`resourcesRetentionTime`\"\u003e`resources_retention_time`\u003c/span\u003e - (Optional) Hours to keep resources alive.\n\n\n## Deallocation Config\n\n* \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e - (Required) Specify deallocation parameters for stateful node deletion.\n    * \u003cspan pulumi-lang-nodejs=\"`shouldTerminateVm`\" pulumi-lang-dotnet=\"`ShouldTerminateVm`\" pulumi-lang-go=\"`shouldTerminateVm`\" pulumi-lang-python=\"`should_terminate_vm`\" pulumi-lang-yaml=\"`shouldTerminateVm`\" pulumi-lang-java=\"`shouldTerminateVm`\"\u003e`should_terminate_vm`\u003c/span\u003e - (Required) Indicates whether to delete the stateful node's VM.\n    * \u003cspan pulumi-lang-nodejs=\"`networkShouldDeallocate`\" pulumi-lang-dotnet=\"`NetworkShouldDeallocate`\" pulumi-lang-go=\"`networkShouldDeallocate`\" pulumi-lang-python=\"`network_should_deallocate`\" pulumi-lang-yaml=\"`networkShouldDeallocate`\" pulumi-lang-java=\"`networkShouldDeallocate`\"\u003e`network_should_deallocate`\u003c/span\u003e - (Optional) Indicates whether to delete the stateful node's network resources.\n    * \u003cspan pulumi-lang-nodejs=\"`networkTtlInHours`\" pulumi-lang-dotnet=\"`NetworkTtlInHours`\" pulumi-lang-go=\"`networkTtlInHours`\" pulumi-lang-python=\"`network_ttl_in_hours`\" pulumi-lang-yaml=\"`networkTtlInHours`\" pulumi-lang-java=\"`networkTtlInHours`\"\u003e`network_ttl_in_hours`\u003c/span\u003e - (Optional, Default: 96) Hours to keep the network resource alive before deletion.\n    * \u003cspan pulumi-lang-nodejs=\"`diskShouldDeallocate`\" pulumi-lang-dotnet=\"`DiskShouldDeallocate`\" pulumi-lang-go=\"`diskShouldDeallocate`\" pulumi-lang-python=\"`disk_should_deallocate`\" pulumi-lang-yaml=\"`diskShouldDeallocate`\" pulumi-lang-java=\"`diskShouldDeallocate`\"\u003e`disk_should_deallocate`\u003c/span\u003e - (Optional) Indicates whether to delete the stateful node's disk resources.\n    * \u003cspan pulumi-lang-nodejs=\"`diskTtlInHours`\" pulumi-lang-dotnet=\"`DiskTtlInHours`\" pulumi-lang-go=\"`diskTtlInHours`\" pulumi-lang-python=\"`disk_ttl_in_hours`\" pulumi-lang-yaml=\"`diskTtlInHours`\" pulumi-lang-java=\"`diskTtlInHours`\"\u003e`disk_ttl_in_hours`\u003c/span\u003e - (Optional, Default: 96) Hours to keep the disk resource alive before deletion.\n    * \u003cspan pulumi-lang-nodejs=\"`snapshotShouldDeallocate`\" pulumi-lang-dotnet=\"`SnapshotShouldDeallocate`\" pulumi-lang-go=\"`snapshotShouldDeallocate`\" pulumi-lang-python=\"`snapshot_should_deallocate`\" pulumi-lang-yaml=\"`snapshotShouldDeallocate`\" pulumi-lang-java=\"`snapshotShouldDeallocate`\"\u003e`snapshot_should_deallocate`\u003c/span\u003e - (Optional) Indicates whether to delete the stateful node's snapshot resources.\n    * \u003cspan pulumi-lang-nodejs=\"`snapshotTtlInHours`\" pulumi-lang-dotnet=\"`SnapshotTtlInHours`\" pulumi-lang-go=\"`snapshotTtlInHours`\" pulumi-lang-python=\"`snapshot_ttl_in_hours`\" pulumi-lang-yaml=\"`snapshotTtlInHours`\" pulumi-lang-java=\"`snapshotTtlInHours`\"\u003e`snapshot_ttl_in_hours`\u003c/span\u003e - (Optional, Default: 96) Hours to keep the snapshots alive before deletion.\n    * \u003cspan pulumi-lang-nodejs=\"`publicIpShouldDeallocate`\" pulumi-lang-dotnet=\"`PublicIpShouldDeallocate`\" pulumi-lang-go=\"`publicIpShouldDeallocate`\" pulumi-lang-python=\"`public_ip_should_deallocate`\" pulumi-lang-yaml=\"`publicIpShouldDeallocate`\" pulumi-lang-java=\"`publicIpShouldDeallocate`\"\u003e`public_ip_should_deallocate`\u003c/span\u003e - (Optional) Indicates whether to delete the stateful node's public ip resources.\n    * \u003cspan pulumi-lang-nodejs=\"`publicIpTtlInHours`\" pulumi-lang-dotnet=\"`PublicIpTtlInHours`\" pulumi-lang-go=\"`publicIpTtlInHours`\" pulumi-lang-python=\"`public_ip_ttl_in_hours`\" pulumi-lang-yaml=\"`publicIpTtlInHours`\" pulumi-lang-java=\"`publicIpTtlInHours`\"\u003e`public_ip_ttl_in_hours`\u003c/span\u003e - (Optional, Default: 96) Hours to keep the public ip alive before deletion.\n    * \u003cspan pulumi-lang-nodejs=\"`shouldDeregisterFromLb`\" pulumi-lang-dotnet=\"`ShouldDeregisterFromLb`\" pulumi-lang-go=\"`shouldDeregisterFromLb`\" pulumi-lang-python=\"`should_deregister_from_lb`\" pulumi-lang-yaml=\"`shouldDeregisterFromLb`\" pulumi-lang-java=\"`shouldDeregisterFromLb`\"\u003e`should_deregister_from_lb`\u003c/span\u003e - (Optional, Default: true) Indicates whether to deregister the stateful node's VM from any type of load balancer. Can be changed to false only when shouldTerminateVms is 'false'.\n    * \u003cspan pulumi-lang-nodejs=\"`shouldRevertToOd`\" pulumi-lang-dotnet=\"`ShouldRevertToOd`\" pulumi-lang-go=\"`shouldRevertToOd`\" pulumi-lang-python=\"`should_revert_to_od`\" pulumi-lang-yaml=\"`shouldRevertToOd`\" pulumi-lang-java=\"`shouldRevertToOd`\"\u003e`should_revert_to_od`\u003c/span\u003e - (Optional, Default: false) Indicates whether to change the stateful node's VM lifecycle to on-demand. Can be changed to true only when \u003cspan pulumi-lang-nodejs=\"`shouldTerminateVm`\" pulumi-lang-dotnet=\"`ShouldTerminateVm`\" pulumi-lang-go=\"`shouldTerminateVm`\" pulumi-lang-python=\"`should_terminate_vm`\" pulumi-lang-yaml=\"`shouldTerminateVm`\" pulumi-lang-java=\"`shouldTerminateVm`\"\u003e`should_terminate_vm`\u003c/span\u003e is 'false'.\n","properties":{"attachDataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureAttachDataDisk:StatefulNodeAzureAttachDataDisk"}},"bootDiagnostics":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureBootDiagnostic:StatefulNodeAzureBootDiagnostic"}},"customData":{"type":"string"},"dataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDataDisk:StatefulNodeAzureDataDisk"}},"dataDisksPersistenceMode":{"type":"string"},"deletes":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDelete:StatefulNodeAzureDelete"}},"description":{"type":"string"},"detachDataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDetachDataDisk:StatefulNodeAzureDetachDataDisk"}},"extensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureExtension:StatefulNodeAzureExtension"}},"health":{"$ref":"#/types/spotinst:index/StatefulNodeAzureHealth:StatefulNodeAzureHealth"},"image":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImage:StatefulNodeAzureImage"},"importVms":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImportVm:StatefulNodeAzureImportVm"}},"licenseType":{"type":"string"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureLoadBalancer:StatefulNodeAzureLoadBalancer"}},"login":{"$ref":"#/types/spotinst:index/StatefulNodeAzureLogin:StatefulNodeAzureLogin"},"managedServiceIdentities":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureManagedServiceIdentity:StatefulNodeAzureManagedServiceIdentity"}},"name":{"type":"string"},"network":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetwork:StatefulNodeAzureNetwork"},"os":{"type":"string"},"osDisk":{"$ref":"#/types/spotinst:index/StatefulNodeAzureOsDisk:StatefulNodeAzureOsDisk"},"osDiskPersistenceMode":{"type":"string"},"preferredZone":{"type":"string"},"proximityPlacementGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureProximityPlacementGroup:StatefulNodeAzureProximityPlacementGroup"}},"region":{"type":"string"},"resourceGroupName":{"type":"string"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSchedulingTask:StatefulNodeAzureSchedulingTask"}},"secrets":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecret:StatefulNodeAzureSecret"}},"security":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecurity:StatefulNodeAzureSecurity"},"shouldPersistDataDisks":{"type":"boolean"},"shouldPersistNetwork":{"type":"boolean"},"shouldPersistOsDisk":{"type":"boolean"},"shutdownScript":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSignal:StatefulNodeAzureSignal"}},"strategy":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategy:StatefulNodeAzureStrategy"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureTag:StatefulNodeAzureTag"}},"updateStates":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureUpdateState:StatefulNodeAzureUpdateState"}},"userData":{"type":"string"},"vmName":{"type":"string"},"vmNamePrefix":{"type":"string"},"vmSizes":{"$ref":"#/types/spotinst:index/StatefulNodeAzureVmSizes:StatefulNodeAzureVmSizes"},"zones":{"type":"array","items":{"type":"string"}}},"required":["bootDiagnostics","customData","dataDisksPersistenceMode","description","extensions","health","loadBalancers","name","os","osDiskPersistenceMode","preferredZone","proximityPlacementGroups","region","resourceGroupName","schedulingTasks","security","shouldPersistDataDisks","shouldPersistNetwork","shouldPersistOsDisk","shutdownScript","signals","strategy","tags","userData","vmSizes"],"inputProperties":{"attachDataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureAttachDataDisk:StatefulNodeAzureAttachDataDisk"}},"bootDiagnostics":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureBootDiagnostic:StatefulNodeAzureBootDiagnostic"}},"customData":{"type":"string"},"dataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDataDisk:StatefulNodeAzureDataDisk"}},"dataDisksPersistenceMode":{"type":"string"},"deletes":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDelete:StatefulNodeAzureDelete"}},"description":{"type":"string"},"detachDataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDetachDataDisk:StatefulNodeAzureDetachDataDisk"}},"extensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureExtension:StatefulNodeAzureExtension"}},"health":{"$ref":"#/types/spotinst:index/StatefulNodeAzureHealth:StatefulNodeAzureHealth"},"image":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImage:StatefulNodeAzureImage"},"importVms":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImportVm:StatefulNodeAzureImportVm"}},"licenseType":{"type":"string"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureLoadBalancer:StatefulNodeAzureLoadBalancer"}},"login":{"$ref":"#/types/spotinst:index/StatefulNodeAzureLogin:StatefulNodeAzureLogin"},"managedServiceIdentities":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureManagedServiceIdentity:StatefulNodeAzureManagedServiceIdentity"}},"name":{"type":"string"},"network":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetwork:StatefulNodeAzureNetwork"},"os":{"type":"string"},"osDisk":{"$ref":"#/types/spotinst:index/StatefulNodeAzureOsDisk:StatefulNodeAzureOsDisk"},"osDiskPersistenceMode":{"type":"string"},"preferredZone":{"type":"string"},"proximityPlacementGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureProximityPlacementGroup:StatefulNodeAzureProximityPlacementGroup"}},"region":{"type":"string"},"resourceGroupName":{"type":"string"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSchedulingTask:StatefulNodeAzureSchedulingTask"}},"secrets":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecret:StatefulNodeAzureSecret"}},"security":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecurity:StatefulNodeAzureSecurity"},"shouldPersistDataDisks":{"type":"boolean"},"shouldPersistNetwork":{"type":"boolean"},"shouldPersistOsDisk":{"type":"boolean"},"shutdownScript":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSignal:StatefulNodeAzureSignal"}},"strategy":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategy:StatefulNodeAzureStrategy"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureTag:StatefulNodeAzureTag"}},"updateStates":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureUpdateState:StatefulNodeAzureUpdateState"}},"userData":{"type":"string"},"vmName":{"type":"string"},"vmNamePrefix":{"type":"string"},"vmSizes":{"$ref":"#/types/spotinst:index/StatefulNodeAzureVmSizes:StatefulNodeAzureVmSizes"},"zones":{"type":"array","items":{"type":"string"}}},"requiredInputs":["os","region","resourceGroupName","shouldPersistDataDisks","shouldPersistNetwork","shouldPersistOsDisk","strategy","vmSizes"],"stateInputs":{"description":"Input properties used for looking up and filtering StatefulNodeAzure resources.\n","properties":{"attachDataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureAttachDataDisk:StatefulNodeAzureAttachDataDisk"}},"bootDiagnostics":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureBootDiagnostic:StatefulNodeAzureBootDiagnostic"}},"customData":{"type":"string"},"dataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDataDisk:StatefulNodeAzureDataDisk"}},"dataDisksPersistenceMode":{"type":"string"},"deletes":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDelete:StatefulNodeAzureDelete"}},"description":{"type":"string"},"detachDataDisks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureDetachDataDisk:StatefulNodeAzureDetachDataDisk"}},"extensions":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureExtension:StatefulNodeAzureExtension"}},"health":{"$ref":"#/types/spotinst:index/StatefulNodeAzureHealth:StatefulNodeAzureHealth"},"image":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImage:StatefulNodeAzureImage"},"importVms":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureImportVm:StatefulNodeAzureImportVm"}},"licenseType":{"type":"string"},"loadBalancers":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureLoadBalancer:StatefulNodeAzureLoadBalancer"}},"login":{"$ref":"#/types/spotinst:index/StatefulNodeAzureLogin:StatefulNodeAzureLogin"},"managedServiceIdentities":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureManagedServiceIdentity:StatefulNodeAzureManagedServiceIdentity"}},"name":{"type":"string"},"network":{"$ref":"#/types/spotinst:index/StatefulNodeAzureNetwork:StatefulNodeAzureNetwork"},"os":{"type":"string"},"osDisk":{"$ref":"#/types/spotinst:index/StatefulNodeAzureOsDisk:StatefulNodeAzureOsDisk"},"osDiskPersistenceMode":{"type":"string"},"preferredZone":{"type":"string"},"proximityPlacementGroups":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureProximityPlacementGroup:StatefulNodeAzureProximityPlacementGroup"}},"region":{"type":"string"},"resourceGroupName":{"type":"string"},"schedulingTasks":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSchedulingTask:StatefulNodeAzureSchedulingTask"}},"secrets":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecret:StatefulNodeAzureSecret"}},"security":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSecurity:StatefulNodeAzureSecurity"},"shouldPersistDataDisks":{"type":"boolean"},"shouldPersistNetwork":{"type":"boolean"},"shouldPersistOsDisk":{"type":"boolean"},"shutdownScript":{"type":"string"},"signals":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureSignal:StatefulNodeAzureSignal"}},"strategy":{"$ref":"#/types/spotinst:index/StatefulNodeAzureStrategy:StatefulNodeAzureStrategy"},"tags":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureTag:StatefulNodeAzureTag"}},"updateStates":{"type":"array","items":{"$ref":"#/types/spotinst:index/StatefulNodeAzureUpdateState:StatefulNodeAzureUpdateState"}},"userData":{"type":"string"},"vmName":{"type":"string"},"vmNamePrefix":{"type":"string"},"vmSizes":{"$ref":"#/types/spotinst:index/StatefulNodeAzureVmSizes:StatefulNodeAzureVmSizes"},"zones":{"type":"array","items":{"type":"string"}}},"type":"object"}},"spotinst:index/subscription:Subscription":{"description":"Provides a Spotinst subscription resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\n// Create a Subscription\nconst default_subscription = new spotinst.Subscription(\"default-subscription\", {\n    resourceId: my_eg.id,\n    eventType: \"AWS_EC2_INSTANCE_LAUNCH\",\n    protocol: \"http\",\n    endpoint: \"http://endpoint.com\",\n    format: {\n        event: \"%event%\",\n        instance_id: \"%instance-id%\",\n        resource_id: \"%resource-id%\",\n        resource_name: \"%resource-name%\",\n        tags: \"foo,baz,baz\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\n# Create a Subscription\ndefault_subscription = spotinst.Subscription(\"default-subscription\",\n    resource_id=my_eg[\"id\"],\n    event_type=\"AWS_EC2_INSTANCE_LAUNCH\",\n    protocol=\"http\",\n    endpoint=\"http://endpoint.com\",\n    format={\n        \"event\": \"%event%\",\n        \"instance_id\": \"%instance-id%\",\n        \"resource_id\": \"%resource-id%\",\n        \"resource_name\": \"%resource-name%\",\n        \"tags\": \"foo,baz,baz\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a Subscription\n    var default_subscription = new SpotInst.Subscription(\"default-subscription\", new()\n    {\n        ResourceId = my_eg.Id,\n        EventType = \"AWS_EC2_INSTANCE_LAUNCH\",\n        Protocol = \"http\",\n        Endpoint = \"http://endpoint.com\",\n        Format = \n        {\n            { \"event\", \"%event%\" },\n            { \"instance_id\", \"%instance-id%\" },\n            { \"resource_id\", \"%resource-id%\" },\n            { \"resource_name\", \"%resource-name%\" },\n            { \"tags\", \"foo,baz,baz\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a Subscription\n\t\t_, err := spotinst.NewSubscription(ctx, \"default-subscription\", \u0026spotinst.SubscriptionArgs{\n\t\t\tResourceId: pulumi.Any(my_eg.Id),\n\t\t\tEventType:  pulumi.String(\"AWS_EC2_INSTANCE_LAUNCH\"),\n\t\t\tProtocol:   pulumi.String(\"http\"),\n\t\t\tEndpoint:   pulumi.String(\"http://endpoint.com\"),\n\t\t\tFormat: pulumi.StringMap{\n\t\t\t\t\"event\":         pulumi.String(\"%event%\"),\n\t\t\t\t\"instance_id\":   pulumi.String(\"%instance-id%\"),\n\t\t\t\t\"resource_id\":   pulumi.String(\"%resource-id%\"),\n\t\t\t\t\"resource_name\": pulumi.String(\"%resource-name%\"),\n\t\t\t\t\"tags\":          pulumi.String(\"foo,baz,baz\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.Subscription;\nimport com.pulumi.spotinst.SubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a Subscription\n        var default_subscription = new Subscription(\"default-subscription\", SubscriptionArgs.builder()\n            .resourceId(my_eg.id())\n            .eventType(\"AWS_EC2_INSTANCE_LAUNCH\")\n            .protocol(\"http\")\n            .endpoint(\"http://endpoint.com\")\n            .format(Map.ofEntries(\n                Map.entry(\"event\", \"%event%\"),\n                Map.entry(\"instance_id\", \"%instance-id%\"),\n                Map.entry(\"resource_id\", \"%resource-id%\"),\n                Map.entry(\"resource_name\", \"%resource-name%\"),\n                Map.entry(\"tags\", \"foo,baz,baz\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a Subscription\n  default-subscription:\n    type: spotinst:Subscription\n    properties:\n      resourceId: ${[\"my-eg\"].id}\n      eventType: AWS_EC2_INSTANCE_LAUNCH\n      protocol: http\n      endpoint: http://endpoint.com\n      format:\n        event: '%event%'\n        instance_id: '%instance-id%'\n        resource_id: '%resource-id%'\n        resource_name: '%resource-name%'\n        tags: foo,baz,baz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"endpoint":{"type":"string","description":"The endpoint the notification will be sent to. url in case of `\"http\"`/`\"https\"`/`\"web\"`, email address in case of `\"email\"`/`\"email-json\"` and sns-topic-arn in case of `\"aws-sns\"`.\n"},"eventType":{"type":"string","description":"The event to send the notification when triggered. Valid values: `\"AWS_EC2_INSTANCE_TERMINATE\"`, `\"AWS_EC2_INSTANCE_TERMINATED\"`, `\"AWS_EC2_INSTANCE_LAUNCH\"`, `\"AWS_EC2_INSTANCE_READY_SIGNAL_TIMEOUT\"`, `\"SIGNAL_TIMEOUT_SHUTDOWN_SCRIPT\"`, `\"AWS_EC2_CANT_SPIN_OD\"`, `\"AWS_EC2_INSTANCE_UNHEALTHY_IN_ELB\"`, `\"GROUP_ROLL_FAILED\"`, `\"GROUP_ROLL_FINISHED\"`,\n`\"CANT_SCALE_UP_GROUP_MAX_CAPACITY\"`,\n`\"GROUP_UPDATED\"`,\n`\"AWS_EMR_PROVISION_TIMEOUT\"`,\n`\"GROUP_BEANSTALK_INIT_READY\"`,\n`\"AZURE_VM_TERMINATED\"`,\n`\"AZURE_VM_TERMINATE\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_PAUSING\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_RESUMING\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_RECYCLING\"`,`\"AWS_EC2_MANAGED_INSTANCE_DELETING\"`.\nOcean Events:`\"CLUSTER_ROLL_FINISHED\"`,`\"GROUP_ROLL_FAILED\"`,`\"OCEAN_CANT_SCALE_UP_MAX_RESOURCES\"`\n`\"OCEAN_LAUNCH_SPEC_CANT_SCALE_UP_MAX_INSTANCES\"`,`\"OCEAN_K8S_NODE_REMOVED\"`.\n"},"format":{"type":"object","additionalProperties":{"type":"string"},"description":"The format of the notification content (JSON Format - Key+Value). Valid Values : `\"instance-id\"`, `\"event\"`, `\"resource-id\"`, `\"resource-name\"`, `\"subnet-id\"`, `\"availability-zone\"`, `\"reason\"`, `\"private-ip\"`, `\"launchspec-id\"`\nExample: {\"event\": `\"event\"`, `\"resourceId\"`: `\"resource-id\"`, `\"resourceName\"`: `\"resource-name\"`\", `\"myCustomKey\"`: `\"My content is set here\"` }\nDefault: {`\"event\"`: `\"\u003cevent\u003e\"`, `\"instanceId\"`: `\"\u003cinstance-id\u003e\"`, `\"resourceId\"`: `\"\u003cresource-id\u003e\"`, `\"resourceName\"`: `\"\u003cresource-name\u003e\"` }.\n"},"protocol":{"type":"string","description":"The protocol to send the notification. Valid values: `\"email\"`, `\"email-json\"`, `\"aws-sns\"`, `\"web\"`. \nThe following values are deprecated: `\"http\"` , `\"https\"`\nYou can use the generic `\"web\"` protocol instead.\n`\"aws-sns\"` is only supported with AWS provider\n"},"resourceId":{"type":"string","description":"Spotinst Resource id (Elastigroup or Ocean ID).\n"}},"required":["endpoint","eventType","protocol","resourceId"],"inputProperties":{"endpoint":{"type":"string","description":"The endpoint the notification will be sent to. url in case of `\"http\"`/`\"https\"`/`\"web\"`, email address in case of `\"email\"`/`\"email-json\"` and sns-topic-arn in case of `\"aws-sns\"`.\n"},"eventType":{"type":"string","description":"The event to send the notification when triggered. Valid values: `\"AWS_EC2_INSTANCE_TERMINATE\"`, `\"AWS_EC2_INSTANCE_TERMINATED\"`, `\"AWS_EC2_INSTANCE_LAUNCH\"`, `\"AWS_EC2_INSTANCE_READY_SIGNAL_TIMEOUT\"`, `\"SIGNAL_TIMEOUT_SHUTDOWN_SCRIPT\"`, `\"AWS_EC2_CANT_SPIN_OD\"`, `\"AWS_EC2_INSTANCE_UNHEALTHY_IN_ELB\"`, `\"GROUP_ROLL_FAILED\"`, `\"GROUP_ROLL_FINISHED\"`,\n`\"CANT_SCALE_UP_GROUP_MAX_CAPACITY\"`,\n`\"GROUP_UPDATED\"`,\n`\"AWS_EMR_PROVISION_TIMEOUT\"`,\n`\"GROUP_BEANSTALK_INIT_READY\"`,\n`\"AZURE_VM_TERMINATED\"`,\n`\"AZURE_VM_TERMINATE\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_PAUSING\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_RESUMING\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_RECYCLING\"`,`\"AWS_EC2_MANAGED_INSTANCE_DELETING\"`.\nOcean Events:`\"CLUSTER_ROLL_FINISHED\"`,`\"GROUP_ROLL_FAILED\"`,`\"OCEAN_CANT_SCALE_UP_MAX_RESOURCES\"`\n`\"OCEAN_LAUNCH_SPEC_CANT_SCALE_UP_MAX_INSTANCES\"`,`\"OCEAN_K8S_NODE_REMOVED\"`.\n"},"format":{"type":"object","additionalProperties":{"type":"string"},"description":"The format of the notification content (JSON Format - Key+Value). Valid Values : `\"instance-id\"`, `\"event\"`, `\"resource-id\"`, `\"resource-name\"`, `\"subnet-id\"`, `\"availability-zone\"`, `\"reason\"`, `\"private-ip\"`, `\"launchspec-id\"`\nExample: {\"event\": `\"event\"`, `\"resourceId\"`: `\"resource-id\"`, `\"resourceName\"`: `\"resource-name\"`\", `\"myCustomKey\"`: `\"My content is set here\"` }\nDefault: {`\"event\"`: `\"\u003cevent\u003e\"`, `\"instanceId\"`: `\"\u003cinstance-id\u003e\"`, `\"resourceId\"`: `\"\u003cresource-id\u003e\"`, `\"resourceName\"`: `\"\u003cresource-name\u003e\"` }.\n"},"protocol":{"type":"string","description":"The protocol to send the notification. Valid values: `\"email\"`, `\"email-json\"`, `\"aws-sns\"`, `\"web\"`. \nThe following values are deprecated: `\"http\"` , `\"https\"`\nYou can use the generic `\"web\"` protocol instead.\n`\"aws-sns\"` is only supported with AWS provider\n"},"resourceId":{"type":"string","description":"Spotinst Resource id (Elastigroup or Ocean ID).\n"}},"requiredInputs":["endpoint","eventType","protocol","resourceId"],"stateInputs":{"description":"Input properties used for looking up and filtering Subscription resources.\n","properties":{"endpoint":{"type":"string","description":"The endpoint the notification will be sent to. url in case of `\"http\"`/`\"https\"`/`\"web\"`, email address in case of `\"email\"`/`\"email-json\"` and sns-topic-arn in case of `\"aws-sns\"`.\n"},"eventType":{"type":"string","description":"The event to send the notification when triggered. Valid values: `\"AWS_EC2_INSTANCE_TERMINATE\"`, `\"AWS_EC2_INSTANCE_TERMINATED\"`, `\"AWS_EC2_INSTANCE_LAUNCH\"`, `\"AWS_EC2_INSTANCE_READY_SIGNAL_TIMEOUT\"`, `\"SIGNAL_TIMEOUT_SHUTDOWN_SCRIPT\"`, `\"AWS_EC2_CANT_SPIN_OD\"`, `\"AWS_EC2_INSTANCE_UNHEALTHY_IN_ELB\"`, `\"GROUP_ROLL_FAILED\"`, `\"GROUP_ROLL_FINISHED\"`,\n`\"CANT_SCALE_UP_GROUP_MAX_CAPACITY\"`,\n`\"GROUP_UPDATED\"`,\n`\"AWS_EMR_PROVISION_TIMEOUT\"`,\n`\"GROUP_BEANSTALK_INIT_READY\"`,\n`\"AZURE_VM_TERMINATED\"`,\n`\"AZURE_VM_TERMINATE\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_PAUSING\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_RESUMING\"`,\n`\"AWS_EC2_MANAGED_INSTANCE_RECYCLING\"`,`\"AWS_EC2_MANAGED_INSTANCE_DELETING\"`.\nOcean Events:`\"CLUSTER_ROLL_FINISHED\"`,`\"GROUP_ROLL_FAILED\"`,`\"OCEAN_CANT_SCALE_UP_MAX_RESOURCES\"`\n`\"OCEAN_LAUNCH_SPEC_CANT_SCALE_UP_MAX_INSTANCES\"`,`\"OCEAN_K8S_NODE_REMOVED\"`.\n"},"format":{"type":"object","additionalProperties":{"type":"string"},"description":"The format of the notification content (JSON Format - Key+Value). Valid Values : `\"instance-id\"`, `\"event\"`, `\"resource-id\"`, `\"resource-name\"`, `\"subnet-id\"`, `\"availability-zone\"`, `\"reason\"`, `\"private-ip\"`, `\"launchspec-id\"`\nExample: {\"event\": `\"event\"`, `\"resourceId\"`: `\"resource-id\"`, `\"resourceName\"`: `\"resource-name\"`\", `\"myCustomKey\"`: `\"My content is set here\"` }\nDefault: {`\"event\"`: `\"\u003cevent\u003e\"`, `\"instanceId\"`: `\"\u003cinstance-id\u003e\"`, `\"resourceId\"`: `\"\u003cresource-id\u003e\"`, `\"resourceName\"`: `\"\u003cresource-name\u003e\"` }.\n"},"protocol":{"type":"string","description":"The protocol to send the notification. Valid values: `\"email\"`, `\"email-json\"`, `\"aws-sns\"`, `\"web\"`. \nThe following values are deprecated: `\"http\"` , `\"https\"`\nYou can use the generic `\"web\"` protocol instead.\n`\"aws-sns\"` is only supported with AWS provider\n"},"resourceId":{"type":"string","description":"Spotinst Resource id (Elastigroup or Ocean ID).\n"}},"type":"object"}},"spotinst:oceancd/rolloutSpec:RolloutSpec":{"description":"Manages a Spotinst OceanCD Rollout Spec resource.\n\n","properties":{"failurePolicy":{"$ref":"#/types/spotinst:oceancd/RolloutSpecFailurePolicy:RolloutSpecFailurePolicy","description":"Holds information on how to react when failure happens.\n"},"rolloutSpecName":{"type":"string","description":"Identifier name for Ocean CD Rollout Spec. Must be unique\n"},"spotDeployment":{"$ref":"#/types/spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment","description":"Represents the SpotDeployment selector.\n"},"spotDeployments":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment"},"description":"You must specify either `spotDeployment` OR `spotDeployments` but not both. Every SpotDeployment has to be unique. If more than one `SpotDeployment` has been configured, no \u003cspan pulumi-lang-nodejs=\"`traffic`\" pulumi-lang-dotnet=\"`Traffic`\" pulumi-lang-go=\"`traffic`\" pulumi-lang-python=\"`traffic`\" pulumi-lang-yaml=\"`traffic`\" pulumi-lang-java=\"`traffic`\"\u003e`traffic`\u003c/span\u003e managers can be set as part of the RolloutSpec.For such case ensure that each of the chosen SpotDeployments are being exposed with different Kubernetes services.\n"},"strategy":{"$ref":"#/types/spotinst:oceancd/RolloutSpecStrategy:RolloutSpecStrategy","description":"Determines the Ocean CD strategy\n"},"traffic":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTraffic:RolloutSpecTraffic","description":"Hosts all of the supported service meshes needed to enable more fine-grained traffic routing. In case `SpotDeployments` contains more than one SpotDeployment the \u003cspan pulumi-lang-nodejs=\"`traffic`\" pulumi-lang-dotnet=\"`Traffic`\" pulumi-lang-go=\"`traffic`\" pulumi-lang-python=\"`traffic`\" pulumi-lang-yaml=\"`traffic`\" pulumi-lang-java=\"`traffic`\"\u003e`traffic`\u003c/span\u003e manager may not be configured.\n"}},"required":["rolloutSpecName","strategy"],"inputProperties":{"failurePolicy":{"$ref":"#/types/spotinst:oceancd/RolloutSpecFailurePolicy:RolloutSpecFailurePolicy","description":"Holds information on how to react when failure happens.\n"},"rolloutSpecName":{"type":"string","description":"Identifier name for Ocean CD Rollout Spec. Must be unique\n"},"spotDeployment":{"$ref":"#/types/spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment","description":"Represents the SpotDeployment selector.\n"},"spotDeployments":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment"},"description":"You must specify either `spotDeployment` OR `spotDeployments` but not both. Every SpotDeployment has to be unique. If more than one `SpotDeployment` has been configured, no \u003cspan pulumi-lang-nodejs=\"`traffic`\" pulumi-lang-dotnet=\"`Traffic`\" pulumi-lang-go=\"`traffic`\" pulumi-lang-python=\"`traffic`\" pulumi-lang-yaml=\"`traffic`\" pulumi-lang-java=\"`traffic`\"\u003e`traffic`\u003c/span\u003e managers can be set as part of the RolloutSpec.For such case ensure that each of the chosen SpotDeployments are being exposed with different Kubernetes services.\n"},"strategy":{"$ref":"#/types/spotinst:oceancd/RolloutSpecStrategy:RolloutSpecStrategy","description":"Determines the Ocean CD strategy\n"},"traffic":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTraffic:RolloutSpecTraffic","description":"Hosts all of the supported service meshes needed to enable more fine-grained traffic routing. In case `SpotDeployments` contains more than one SpotDeployment the \u003cspan pulumi-lang-nodejs=\"`traffic`\" pulumi-lang-dotnet=\"`Traffic`\" pulumi-lang-go=\"`traffic`\" pulumi-lang-python=\"`traffic`\" pulumi-lang-yaml=\"`traffic`\" pulumi-lang-java=\"`traffic`\"\u003e`traffic`\u003c/span\u003e manager may not be configured.\n"}},"requiredInputs":["rolloutSpecName","strategy"],"stateInputs":{"description":"Input properties used for looking up and filtering RolloutSpec resources.\n","properties":{"failurePolicy":{"$ref":"#/types/spotinst:oceancd/RolloutSpecFailurePolicy:RolloutSpecFailurePolicy","description":"Holds information on how to react when failure happens.\n"},"rolloutSpecName":{"type":"string","description":"Identifier name for Ocean CD Rollout Spec. Must be unique\n"},"spotDeployment":{"$ref":"#/types/spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment","description":"Represents the SpotDeployment selector.\n"},"spotDeployments":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/RolloutSpecSpotDeployment:RolloutSpecSpotDeployment"},"description":"You must specify either `spotDeployment` OR `spotDeployments` but not both. Every SpotDeployment has to be unique. If more than one `SpotDeployment` has been configured, no \u003cspan pulumi-lang-nodejs=\"`traffic`\" pulumi-lang-dotnet=\"`Traffic`\" pulumi-lang-go=\"`traffic`\" pulumi-lang-python=\"`traffic`\" pulumi-lang-yaml=\"`traffic`\" pulumi-lang-java=\"`traffic`\"\u003e`traffic`\u003c/span\u003e managers can be set as part of the RolloutSpec.For such case ensure that each of the chosen SpotDeployments are being exposed with different Kubernetes services.\n"},"strategy":{"$ref":"#/types/spotinst:oceancd/RolloutSpecStrategy:RolloutSpecStrategy","description":"Determines the Ocean CD strategy\n"},"traffic":{"$ref":"#/types/spotinst:oceancd/RolloutSpecTraffic:RolloutSpecTraffic","description":"Hosts all of the supported service meshes needed to enable more fine-grained traffic routing. In case `SpotDeployments` contains more than one SpotDeployment the \u003cspan pulumi-lang-nodejs=\"`traffic`\" pulumi-lang-dotnet=\"`Traffic`\" pulumi-lang-go=\"`traffic`\" pulumi-lang-python=\"`traffic`\" pulumi-lang-yaml=\"`traffic`\" pulumi-lang-java=\"`traffic`\"\u003e`traffic`\u003c/span\u003e manager may not be configured.\n"}},"type":"object"}},"spotinst:oceancd/strategy:Strategy":{"description":"Manages a Spotinst OceanCD Strategy resource.\n\n","properties":{"canary":{"$ref":"#/types/spotinst:oceancd/StrategyCanary:StrategyCanary","description":"Represents Canary strategy. Cannot be defined when Rolling object is defined.\n"},"rolling":{"$ref":"#/types/spotinst:oceancd/StrategyRolling:StrategyRolling","description":"Represents Rolling Update strategy. Cannot be defined when Canary object is defined.\n"},"strategyName":{"type":"string"}},"required":["strategyName"],"inputProperties":{"canary":{"$ref":"#/types/spotinst:oceancd/StrategyCanary:StrategyCanary","description":"Represents Canary strategy. Cannot be defined when Rolling object is defined.\n"},"rolling":{"$ref":"#/types/spotinst:oceancd/StrategyRolling:StrategyRolling","description":"Represents Rolling Update strategy. Cannot be defined when Canary object is defined.\n"},"strategyName":{"type":"string"}},"requiredInputs":["strategyName"],"stateInputs":{"description":"Input properties used for looking up and filtering Strategy resources.\n","properties":{"canary":{"$ref":"#/types/spotinst:oceancd/StrategyCanary:StrategyCanary","description":"Represents Canary strategy. Cannot be defined when Rolling object is defined.\n"},"rolling":{"$ref":"#/types/spotinst:oceancd/StrategyRolling:StrategyRolling","description":"Represents Rolling Update strategy. Cannot be defined when Canary object is defined.\n"},"strategyName":{"type":"string"}},"type":"object"}},"spotinst:oceancd/verificationProvider:VerificationProvider":{"description":"Manages a Spotinst OceanCD Verfification Provider resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.oceancd.VerificationProvider(\"example\", {\n    name: \"test-verification-provider\",\n    clusterIds: [\n        \"Example-Cluster-Id-1\",\n        \"Example-Cluster-Id-2\",\n        \"Example-Cluster-Id-3\",\n    ],\n    datadog: {\n        address: \"1024\",\n        apiKey: \"512\",\n        appKey: \"0\",\n    },\n    cloudWatch: {\n        iamArn: \"arn:aws:iam::123456789012:role/GetMetricData\",\n    },\n    prometheus: {\n        address: \"http://localhost:9090\",\n    },\n    newRelic: {\n        personalApiKey: \"AUO32RN20oUMD-40283\",\n        accountId: \"account-0189718\",\n        region: \"eu\",\n        baseUrlRest: \"https://rest.api.newrelic.eu\",\n        baseUrlNerdGraph: \"https://nerdgraph.api.newrelic.eu\",\n    },\n    jenkins: {\n        baseUrl: \"http://localhost:9090\",\n        username: \"test-user\",\n        apiToken: \"AbCDeeFFGG\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.oceancd.VerificationProvider(\"example\",\n    name=\"test-verification-provider\",\n    cluster_ids=[\n        \"Example-Cluster-Id-1\",\n        \"Example-Cluster-Id-2\",\n        \"Example-Cluster-Id-3\",\n    ],\n    datadog={\n        \"address\": \"1024\",\n        \"api_key\": \"512\",\n        \"app_key\": \"0\",\n    },\n    cloud_watch={\n        \"iam_arn\": \"arn:aws:iam::123456789012:role/GetMetricData\",\n    },\n    prometheus={\n        \"address\": \"http://localhost:9090\",\n    },\n    new_relic={\n        \"personal_api_key\": \"AUO32RN20oUMD-40283\",\n        \"account_id\": \"account-0189718\",\n        \"region\": \"eu\",\n        \"base_url_rest\": \"https://rest.api.newrelic.eu\",\n        \"base_url_nerd_graph\": \"https://nerdgraph.api.newrelic.eu\",\n    },\n    jenkins={\n        \"base_url\": \"http://localhost:9090\",\n        \"username\": \"test-user\",\n        \"api_token\": \"AbCDeeFFGG\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Oceancd.VerificationProvider(\"example\", new()\n    {\n        Name = \"test-verification-provider\",\n        ClusterIds = new[]\n        {\n            \"Example-Cluster-Id-1\",\n            \"Example-Cluster-Id-2\",\n            \"Example-Cluster-Id-3\",\n        },\n        Datadog = new SpotInst.Oceancd.Inputs.VerificationProviderDatadogArgs\n        {\n            Address = \"1024\",\n            ApiKey = \"512\",\n            AppKey = \"0\",\n        },\n        CloudWatch = new SpotInst.Oceancd.Inputs.VerificationProviderCloudWatchArgs\n        {\n            IamArn = \"arn:aws:iam::123456789012:role/GetMetricData\",\n        },\n        Prometheus = new SpotInst.Oceancd.Inputs.VerificationProviderPrometheusArgs\n        {\n            Address = \"http://localhost:9090\",\n        },\n        NewRelic = new SpotInst.Oceancd.Inputs.VerificationProviderNewRelicArgs\n        {\n            PersonalApiKey = \"AUO32RN20oUMD-40283\",\n            AccountId = \"account-0189718\",\n            Region = \"eu\",\n            BaseUrlRest = \"https://rest.api.newrelic.eu\",\n            BaseUrlNerdGraph = \"https://nerdgraph.api.newrelic.eu\",\n        },\n        Jenkins = new SpotInst.Oceancd.Inputs.VerificationProviderJenkinsArgs\n        {\n            BaseUrl = \"http://localhost:9090\",\n            Username = \"test-user\",\n            ApiToken = \"AbCDeeFFGG\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/oceancd\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oceancd.NewVerificationProvider(ctx, \"example\", \u0026oceancd.VerificationProviderArgs{\n\t\t\tName: pulumi.String(\"test-verification-provider\"),\n\t\t\tClusterIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Example-Cluster-Id-1\"),\n\t\t\t\tpulumi.String(\"Example-Cluster-Id-2\"),\n\t\t\t\tpulumi.String(\"Example-Cluster-Id-3\"),\n\t\t\t},\n\t\t\tDatadog: \u0026oceancd.VerificationProviderDatadogArgs{\n\t\t\t\tAddress: pulumi.String(\"1024\"),\n\t\t\t\tApiKey:  pulumi.String(\"512\"),\n\t\t\t\tAppKey:  pulumi.String(\"0\"),\n\t\t\t},\n\t\t\tCloudWatch: \u0026oceancd.VerificationProviderCloudWatchArgs{\n\t\t\t\tIamArn: pulumi.String(\"arn:aws:iam::123456789012:role/GetMetricData\"),\n\t\t\t},\n\t\t\tPrometheus: \u0026oceancd.VerificationProviderPrometheusArgs{\n\t\t\t\tAddress: pulumi.String(\"http://localhost:9090\"),\n\t\t\t},\n\t\t\tNewRelic: \u0026oceancd.VerificationProviderNewRelicArgs{\n\t\t\t\tPersonalApiKey:   pulumi.String(\"AUO32RN20oUMD-40283\"),\n\t\t\t\tAccountId:        pulumi.String(\"account-0189718\"),\n\t\t\t\tRegion:           pulumi.String(\"eu\"),\n\t\t\t\tBaseUrlRest:      pulumi.String(\"https://rest.api.newrelic.eu\"),\n\t\t\t\tBaseUrlNerdGraph: pulumi.String(\"https://nerdgraph.api.newrelic.eu\"),\n\t\t\t},\n\t\t\tJenkins: \u0026oceancd.VerificationProviderJenkinsArgs{\n\t\t\t\tBaseUrl:  pulumi.String(\"http://localhost:9090\"),\n\t\t\t\tUsername: pulumi.String(\"test-user\"),\n\t\t\t\tApiToken: pulumi.String(\"AbCDeeFFGG\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.oceancd.VerificationProvider;\nimport com.pulumi.spotinst.oceancd.VerificationProviderArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationProviderDatadogArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationProviderCloudWatchArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationProviderPrometheusArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationProviderNewRelicArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationProviderJenkinsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new VerificationProvider(\"example\", VerificationProviderArgs.builder()\n            .name(\"test-verification-provider\")\n            .clusterIds(            \n                \"Example-Cluster-Id-1\",\n                \"Example-Cluster-Id-2\",\n                \"Example-Cluster-Id-3\")\n            .datadog(VerificationProviderDatadogArgs.builder()\n                .address(\"1024\")\n                .apiKey(\"512\")\n                .appKey(\"0\")\n                .build())\n            .cloudWatch(VerificationProviderCloudWatchArgs.builder()\n                .iamArn(\"arn:aws:iam::123456789012:role/GetMetricData\")\n                .build())\n            .prometheus(VerificationProviderPrometheusArgs.builder()\n                .address(\"http://localhost:9090\")\n                .build())\n            .newRelic(VerificationProviderNewRelicArgs.builder()\n                .personalApiKey(\"AUO32RN20oUMD-40283\")\n                .accountId(\"account-0189718\")\n                .region(\"eu\")\n                .baseUrlRest(\"https://rest.api.newrelic.eu\")\n                .baseUrlNerdGraph(\"https://nerdgraph.api.newrelic.eu\")\n                .build())\n            .jenkins(VerificationProviderJenkinsArgs.builder()\n                .baseUrl(\"http://localhost:9090\")\n                .username(\"test-user\")\n                .apiToken(\"AbCDeeFFGG\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:oceancd:VerificationProvider\n    properties:\n      name: test-verification-provider\n      clusterIds:\n        - Example-Cluster-Id-1\n        - Example-Cluster-Id-2\n        - Example-Cluster-Id-3\n      datadog:\n        address: 1024\n        apiKey: 512\n        appKey: 0\n      cloudWatch:\n        iamArn: arn:aws:iam::123456789012:role/GetMetricData\n      prometheus:\n        address: http://localhost:9090\n      newRelic:\n        personalApiKey: AUO32RN20oUMD-40283\n        accountId: account-0189718\n        region: eu\n        baseUrlRest: https://rest.api.newrelic.eu\n        baseUrlNerdGraph: https://nerdgraph.api.newrelic.eu\n      jenkins:\n        baseUrl: http://localhost:9090\n        username: test-user\n        apiToken: AbCDeeFFGG\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\noutput \"name\" {\n  value = spotinst_oceancd_verification_provider.example.name\n}\n```\n","properties":{"cloudWatch":{"$ref":"#/types/spotinst:oceancd/VerificationProviderCloudWatch:VerificationProviderCloudWatch","description":"Specify the credentials for CloudWatch verification provider.\n"},"clusterIds":{"type":"array","items":{"type":"string"},"description":"List of cluster IDs that this Verification Provider will be applied to.\n"},"datadog":{"$ref":"#/types/spotinst:oceancd/VerificationProviderDatadog:VerificationProviderDatadog","description":"Specify the credentials for datadog verification provider.\n"},"jenkins":{"$ref":"#/types/spotinst:oceancd/VerificationProviderJenkins:VerificationProviderJenkins","description":"Specify the credentials for Jenkins verification provider.\n"},"name":{"type":"string","description":"Identifier name for Ocean CD Verification Provider. Must be unique.\n"},"newRelic":{"$ref":"#/types/spotinst:oceancd/VerificationProviderNewRelic:VerificationProviderNewRelic","description":"Specify the credentials for New Relic verification provider.\n"},"prometheus":{"$ref":"#/types/spotinst:oceancd/VerificationProviderPrometheus:VerificationProviderPrometheus","description":"Specify the credentials for prometheus verification provider.\n"}},"required":["clusterIds","name"],"inputProperties":{"cloudWatch":{"$ref":"#/types/spotinst:oceancd/VerificationProviderCloudWatch:VerificationProviderCloudWatch","description":"Specify the credentials for CloudWatch verification provider.\n"},"clusterIds":{"type":"array","items":{"type":"string"},"description":"List of cluster IDs that this Verification Provider will be applied to.\n"},"datadog":{"$ref":"#/types/spotinst:oceancd/VerificationProviderDatadog:VerificationProviderDatadog","description":"Specify the credentials for datadog verification provider.\n"},"jenkins":{"$ref":"#/types/spotinst:oceancd/VerificationProviderJenkins:VerificationProviderJenkins","description":"Specify the credentials for Jenkins verification provider.\n"},"name":{"type":"string","description":"Identifier name for Ocean CD Verification Provider. Must be unique.\n"},"newRelic":{"$ref":"#/types/spotinst:oceancd/VerificationProviderNewRelic:VerificationProviderNewRelic","description":"Specify the credentials for New Relic verification provider.\n"},"prometheus":{"$ref":"#/types/spotinst:oceancd/VerificationProviderPrometheus:VerificationProviderPrometheus","description":"Specify the credentials for prometheus verification provider.\n"}},"requiredInputs":["clusterIds"],"stateInputs":{"description":"Input properties used for looking up and filtering VerificationProvider resources.\n","properties":{"cloudWatch":{"$ref":"#/types/spotinst:oceancd/VerificationProviderCloudWatch:VerificationProviderCloudWatch","description":"Specify the credentials for CloudWatch verification provider.\n"},"clusterIds":{"type":"array","items":{"type":"string"},"description":"List of cluster IDs that this Verification Provider will be applied to.\n"},"datadog":{"$ref":"#/types/spotinst:oceancd/VerificationProviderDatadog:VerificationProviderDatadog","description":"Specify the credentials for datadog verification provider.\n"},"jenkins":{"$ref":"#/types/spotinst:oceancd/VerificationProviderJenkins:VerificationProviderJenkins","description":"Specify the credentials for Jenkins verification provider.\n"},"name":{"type":"string","description":"Identifier name for Ocean CD Verification Provider. Must be unique.\n"},"newRelic":{"$ref":"#/types/spotinst:oceancd/VerificationProviderNewRelic:VerificationProviderNewRelic","description":"Specify the credentials for New Relic verification provider.\n"},"prometheus":{"$ref":"#/types/spotinst:oceancd/VerificationProviderPrometheus:VerificationProviderPrometheus","description":"Specify the credentials for prometheus verification provider.\n"}},"type":"object"}},"spotinst:oceancd/verificationTemplate:VerificationTemplate":{"description":"Manages a Spotinst OceanCD Verfification Template resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst test = new spotinst.oceancd.VerificationTemplate(\"test\", {\n    name: \"test-verification-template-tes\",\n    args: [{\n        argName: \"test-arg\",\n        value: \"test\",\n        valueFrom: {\n            secretKeyRef: {\n                name: \"test_key\",\n                key: \"key-value-test\",\n            },\n        },\n    }],\n    metrics: [{\n        metricsName: \"test-metrics-names\",\n        dryRun: false,\n        interval: \"10m\",\n        initialDelay: \"1m\",\n        count: 10,\n        successCondition: \"result[0] \u003c= 0.95\",\n        failureCondition: \"result[0] \u003e= 0.95\",\n        failureLimit: 2,\n        consecutiveErrorLimit: 1,\n        providers: [{\n            prometheus: {\n                prometheusQuery: \"http_requests_new\",\n            },\n            datadog: {\n                duration: \"1m\",\n                datadogQuery: \"avg:kubernetes.cpu.user.total\",\n            },\n            newRelic: {\n                profile: \"test\",\n                newRelicQuery: \"FROM Metric SELECT count\",\n            },\n            cloudWatch: {\n                duration: \"5m\",\n                metricDataQueries: [{\n                    id: \"utilization\",\n                    metricStat: {\n                        metric: {\n                            metricName: \"Test\",\n                            namespace: \"AWS/EC2\",\n                            dimensions: [{\n                                dimensionName: \"instandId\",\n                                dimensionValue: \"i-123044\",\n                            }],\n                        },\n                        metricPeriod: 400,\n                        stat: \"average\",\n                        unit: \"None\",\n                    },\n                    expression: \"SELECT AVG(CPUUtilization) FROM SCHEMA\",\n                    label: \"TestLabel\",\n                    returnData: false,\n                    period: 300,\n                }],\n            },\n            web: {\n                method: \"GET\",\n                url: \"https://oceancd.com/api/v1/metrics?clusterId= args.clusterId\",\n                webHeaders: [{\n                    webHeaderKey: \"Autorization\",\n                    webHeaderValue: \"Bearer=args.token\",\n                }],\n                body: \"{\\\"key\\\": \\\"test\\\"}\",\n                timeoutSeconds: 20,\n                jsonPath: \"$.data\",\n                insecure: false,\n            },\n            job: {\n                specs: [{\n                    backoffLimit: 1,\n                    jobTemplates: [{\n                        templateSpecs: [{\n                            containers: [{\n                                containerName: \"hello\",\n                                commands: [\n                                    \"sh\",\n                                    \"-c\",\n                                ],\n                                image: \"nginx.2.1\",\n                            }],\n                            restartPolicy: \"never\",\n                        }],\n                    }],\n                }],\n            },\n            jenkins: {\n                pipelineName: \"testPipelineName\",\n                tlsVerification: true,\n                timeout: \"2m\",\n                jenkinsInterval: \"5s\",\n                jenkinsParameters: {\n                    parameterKey: \"app\",\n                    parameterValue: \"my-app\",\n                },\n            },\n        }],\n        baseline: {\n            baselineProviders: [{\n                prometheus: {\n                    prometheusQuery: \"http_requests_total.status!\",\n                },\n                datadog: {\n                    duration: \"2m\",\n                    datadogQuery: \"avg:kubernetes.cpu.user\",\n                },\n                newRelic: {\n                    profile: \"test\",\n                    newRelicQuery: \"FROM Metric SELECT count*\",\n                },\n            }],\n            minRange: 40,\n            maxRange: 50,\n            threshold: \"range\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\ntest = spotinst.oceancd.VerificationTemplate(\"test\",\n    name=\"test-verification-template-tes\",\n    args=[{\n        \"arg_name\": \"test-arg\",\n        \"value\": \"test\",\n        \"value_from\": {\n            \"secret_key_ref\": {\n                \"name\": \"test_key\",\n                \"key\": \"key-value-test\",\n            },\n        },\n    }],\n    metrics=[{\n        \"metrics_name\": \"test-metrics-names\",\n        \"dry_run\": False,\n        \"interval\": \"10m\",\n        \"initial_delay\": \"1m\",\n        \"count\": 10,\n        \"success_condition\": \"result[0] \u003c= 0.95\",\n        \"failure_condition\": \"result[0] \u003e= 0.95\",\n        \"failure_limit\": 2,\n        \"consecutive_error_limit\": 1,\n        \"providers\": [{\n            \"prometheus\": {\n                \"prometheus_query\": \"http_requests_new\",\n            },\n            \"datadog\": {\n                \"duration\": \"1m\",\n                \"datadog_query\": \"avg:kubernetes.cpu.user.total\",\n            },\n            \"new_relic\": {\n                \"profile\": \"test\",\n                \"new_relic_query\": \"FROM Metric SELECT count\",\n            },\n            \"cloud_watch\": {\n                \"duration\": \"5m\",\n                \"metric_data_queries\": [{\n                    \"id\": \"utilization\",\n                    \"metric_stat\": {\n                        \"metric\": {\n                            \"metric_name\": \"Test\",\n                            \"namespace\": \"AWS/EC2\",\n                            \"dimensions\": [{\n                                \"dimension_name\": \"instandId\",\n                                \"dimension_value\": \"i-123044\",\n                            }],\n                        },\n                        \"metric_period\": 400,\n                        \"stat\": \"average\",\n                        \"unit\": \"None\",\n                    },\n                    \"expression\": \"SELECT AVG(CPUUtilization) FROM SCHEMA\",\n                    \"label\": \"TestLabel\",\n                    \"return_data\": False,\n                    \"period\": 300,\n                }],\n            },\n            \"web\": {\n                \"method\": \"GET\",\n                \"url\": \"https://oceancd.com/api/v1/metrics?clusterId= args.clusterId\",\n                \"web_headers\": [{\n                    \"web_header_key\": \"Autorization\",\n                    \"web_header_value\": \"Bearer=args.token\",\n                }],\n                \"body\": \"{\\\"key\\\": \\\"test\\\"}\",\n                \"timeout_seconds\": 20,\n                \"json_path\": \"$.data\",\n                \"insecure\": False,\n            },\n            \"job\": {\n                \"specs\": [{\n                    \"backoff_limit\": 1,\n                    \"job_templates\": [{\n                        \"template_specs\": [{\n                            \"containers\": [{\n                                \"container_name\": \"hello\",\n                                \"commands\": [\n                                    \"sh\",\n                                    \"-c\",\n                                ],\n                                \"image\": \"nginx.2.1\",\n                            }],\n                            \"restart_policy\": \"never\",\n                        }],\n                    }],\n                }],\n            },\n            \"jenkins\": {\n                \"pipeline_name\": \"testPipelineName\",\n                \"tls_verification\": True,\n                \"timeout\": \"2m\",\n                \"jenkins_interval\": \"5s\",\n                \"jenkins_parameters\": {\n                    \"parameter_key\": \"app\",\n                    \"parameter_value\": \"my-app\",\n                },\n            },\n        }],\n        \"baseline\": {\n            \"baseline_providers\": [{\n                \"prometheus\": {\n                    \"prometheus_query\": \"http_requests_total.status!\",\n                },\n                \"datadog\": {\n                    \"duration\": \"2m\",\n                    \"datadog_query\": \"avg:kubernetes.cpu.user\",\n                },\n                \"new_relic\": {\n                    \"profile\": \"test\",\n                    \"new_relic_query\": \"FROM Metric SELECT count*\",\n                },\n            }],\n            \"min_range\": 40,\n            \"max_range\": 50,\n            \"threshold\": \"range\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new SpotInst.Oceancd.VerificationTemplate(\"test\", new()\n    {\n        Name = \"test-verification-template-tes\",\n        Args = new[]\n        {\n            new SpotInst.Oceancd.Inputs.VerificationTemplateArgArgs\n            {\n                ArgName = \"test-arg\",\n                Value = \"test\",\n                ValueFrom = new SpotInst.Oceancd.Inputs.VerificationTemplateArgValueFromArgs\n                {\n                    SecretKeyRef = new SpotInst.Oceancd.Inputs.VerificationTemplateArgValueFromSecretKeyRefArgs\n                    {\n                        Name = \"test_key\",\n                        Key = \"key-value-test\",\n                    },\n                },\n            },\n        },\n        Metrics = new[]\n        {\n            new SpotInst.Oceancd.Inputs.VerificationTemplateMetricArgs\n            {\n                MetricsName = \"test-metrics-names\",\n                DryRun = false,\n                Interval = \"10m\",\n                InitialDelay = \"1m\",\n                Count = 10,\n                SuccessCondition = \"result[0] \u003c= 0.95\",\n                FailureCondition = \"result[0] \u003e= 0.95\",\n                FailureLimit = 2,\n                ConsecutiveErrorLimit = 1,\n                Providers = new[]\n                {\n                    new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderArgs\n                    {\n                        Prometheus = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderPrometheusArgs\n                        {\n                            PrometheusQuery = \"http_requests_new\",\n                        },\n                        Datadog = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderDatadogArgs\n                        {\n                            Duration = \"1m\",\n                            DatadogQuery = \"avg:kubernetes.cpu.user.total\",\n                        },\n                        NewRelic = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderNewRelicArgs\n                        {\n                            Profile = \"test\",\n                            NewRelicQuery = \"FROM Metric SELECT count\",\n                        },\n                        CloudWatch = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderCloudWatchArgs\n                        {\n                            Duration = \"5m\",\n                            MetricDataQueries = new[]\n                            {\n                                new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderCloudWatchMetricDataQueryArgs\n                                {\n                                    Id = \"utilization\",\n                                    MetricStat = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatArgs\n                                    {\n                                        Metric = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricArgs\n                                        {\n                                            MetricName = \"Test\",\n                                            Namespace = \"AWS/EC2\",\n                                            Dimensions = new[]\n                                            {\n                                                new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimensionArgs\n                                                {\n                                                    DimensionName = \"instandId\",\n                                                    DimensionValue = \"i-123044\",\n                                                },\n                                            },\n                                        },\n                                        MetricPeriod = 400,\n                                        Stat = \"average\",\n                                        Unit = \"None\",\n                                    },\n                                    Expression = \"SELECT AVG(CPUUtilization) FROM SCHEMA\",\n                                    Label = \"TestLabel\",\n                                    ReturnData = false,\n                                    Period = 300,\n                                },\n                            },\n                        },\n                        Web = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderWebArgs\n                        {\n                            Method = \"GET\",\n                            Url = \"https://oceancd.com/api/v1/metrics?clusterId= args.clusterId\",\n                            WebHeaders = new[]\n                            {\n                                new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderWebWebHeaderArgs\n                                {\n                                    WebHeaderKey = \"Autorization\",\n                                    WebHeaderValue = \"Bearer=args.token\",\n                                },\n                            },\n                            Body = \"{\\\"key\\\": \\\"test\\\"}\",\n                            TimeoutSeconds = 20,\n                            JsonPath = \"$.data\",\n                            Insecure = false,\n                        },\n                        Job = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJobArgs\n                        {\n                            Specs = new[]\n                            {\n                                new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJobSpecArgs\n                                {\n                                    BackoffLimit = 1,\n                                    JobTemplates = new[]\n                                    {\n                                        new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJobSpecJobTemplateArgs\n                                        {\n                                            TemplateSpecs = new[]\n                                            {\n                                                new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecArgs\n                                                {\n                                                    Containers = new[]\n                                                    {\n                                                        new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainerArgs\n                                                        {\n                                                            ContainerName = \"hello\",\n                                                            Commands = new[]\n                                                            {\n                                                                \"sh\",\n                                                                \"-c\",\n                                                            },\n                                                            Image = \"nginx.2.1\",\n                                                        },\n                                                    },\n                                                    RestartPolicy = \"never\",\n                                                },\n                                            },\n                                        },\n                                    },\n                                },\n                            },\n                        },\n                        Jenkins = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJenkinsArgs\n                        {\n                            PipelineName = \"testPipelineName\",\n                            TlsVerification = true,\n                            Timeout = \"2m\",\n                            JenkinsInterval = \"5s\",\n                            JenkinsParameters = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricProviderJenkinsJenkinsParametersArgs\n                            {\n                                ParameterKey = \"app\",\n                                ParameterValue = \"my-app\",\n                            },\n                        },\n                    },\n                },\n                Baseline = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricBaselineArgs\n                {\n                    BaselineProviders = new[]\n                    {\n                        new SpotInst.Oceancd.Inputs.VerificationTemplateMetricBaselineBaselineProviderArgs\n                        {\n                            Prometheus = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricBaselineBaselineProviderPrometheusArgs\n                            {\n                                PrometheusQuery = \"http_requests_total.status!\",\n                            },\n                            Datadog = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricBaselineBaselineProviderDatadogArgs\n                            {\n                                Duration = \"2m\",\n                                DatadogQuery = \"avg:kubernetes.cpu.user\",\n                            },\n                            NewRelic = new SpotInst.Oceancd.Inputs.VerificationTemplateMetricBaselineBaselineProviderNewRelicArgs\n                            {\n                                Profile = \"test\",\n                                NewRelicQuery = \"FROM Metric SELECT count*\",\n                            },\n                        },\n                    },\n                    MinRange = 40,\n                    MaxRange = 50,\n                    Threshold = \"range\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/oceancd\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oceancd.NewVerificationTemplate(ctx, \"test\", \u0026oceancd.VerificationTemplateArgs{\n\t\t\tName: pulumi.String(\"test-verification-template-tes\"),\n\t\t\tArgs: oceancd.VerificationTemplateArgArray{\n\t\t\t\t\u0026oceancd.VerificationTemplateArgArgs{\n\t\t\t\t\tArgName: pulumi.String(\"test-arg\"),\n\t\t\t\t\tValue:   pulumi.String(\"test\"),\n\t\t\t\t\tValueFrom: \u0026oceancd.VerificationTemplateArgValueFromArgs{\n\t\t\t\t\t\tSecretKeyRef: \u0026oceancd.VerificationTemplateArgValueFromSecretKeyRefArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"test_key\"),\n\t\t\t\t\t\t\tKey:  pulumi.String(\"key-value-test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetrics: oceancd.VerificationTemplateMetricArray{\n\t\t\t\t\u0026oceancd.VerificationTemplateMetricArgs{\n\t\t\t\t\tMetricsName:           pulumi.String(\"test-metrics-names\"),\n\t\t\t\t\tDryRun:                pulumi.Bool(false),\n\t\t\t\t\tInterval:              pulumi.String(\"10m\"),\n\t\t\t\t\tInitialDelay:          pulumi.String(\"1m\"),\n\t\t\t\t\tCount:                 pulumi.Int(10),\n\t\t\t\t\tSuccessCondition:      pulumi.String(\"result[0] \u003c= 0.95\"),\n\t\t\t\t\tFailureCondition:      pulumi.String(\"result[0] \u003e= 0.95\"),\n\t\t\t\t\tFailureLimit:          pulumi.Int(2),\n\t\t\t\t\tConsecutiveErrorLimit: pulumi.Int(1),\n\t\t\t\t\tProviders: oceancd.VerificationTemplateMetricProviderArray{\n\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderArgs{\n\t\t\t\t\t\t\tPrometheus: \u0026oceancd.VerificationTemplateMetricProviderPrometheusArgs{\n\t\t\t\t\t\t\t\tPrometheusQuery: pulumi.String(\"http_requests_new\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDatadog: \u0026oceancd.VerificationTemplateMetricProviderDatadogArgs{\n\t\t\t\t\t\t\t\tDuration:     pulumi.String(\"1m\"),\n\t\t\t\t\t\t\t\tDatadogQuery: pulumi.String(\"avg:kubernetes.cpu.user.total\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNewRelic: \u0026oceancd.VerificationTemplateMetricProviderNewRelicArgs{\n\t\t\t\t\t\t\t\tProfile:       pulumi.String(\"test\"),\n\t\t\t\t\t\t\t\tNewRelicQuery: pulumi.String(\"FROM Metric SELECT count\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tCloudWatch: \u0026oceancd.VerificationTemplateMetricProviderCloudWatchArgs{\n\t\t\t\t\t\t\t\tDuration: pulumi.String(\"5m\"),\n\t\t\t\t\t\t\t\tMetricDataQueries: oceancd.VerificationTemplateMetricProviderCloudWatchMetricDataQueryArray{\n\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderCloudWatchMetricDataQueryArgs{\n\t\t\t\t\t\t\t\t\t\tId: pulumi.String(\"utilization\"),\n\t\t\t\t\t\t\t\t\t\tMetricStat: \u0026oceancd.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetric: \u0026oceancd.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tMetricName: pulumi.String(\"Test\"),\n\t\t\t\t\t\t\t\t\t\t\t\tNamespace:  pulumi.String(\"AWS/EC2\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDimensions: oceancd.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimensionArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimensionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDimensionName:  pulumi.String(\"instandId\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tDimensionValue: pulumi.String(\"i-123044\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tMetricPeriod: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\t\tStat:         pulumi.String(\"average\"),\n\t\t\t\t\t\t\t\t\t\t\tUnit:         pulumi.String(\"None\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"SELECT AVG(CPUUtilization) FROM SCHEMA\"),\n\t\t\t\t\t\t\t\t\t\tLabel:      pulumi.String(\"TestLabel\"),\n\t\t\t\t\t\t\t\t\t\tReturnData: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\tPeriod:     pulumi.Int(300),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tWeb: \u0026oceancd.VerificationTemplateMetricProviderWebArgs{\n\t\t\t\t\t\t\t\tMethod: pulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tUrl:    pulumi.String(\"https://oceancd.com/api/v1/metrics?clusterId= args.clusterId\"),\n\t\t\t\t\t\t\t\tWebHeaders: oceancd.VerificationTemplateMetricProviderWebWebHeaderArray{\n\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderWebWebHeaderArgs{\n\t\t\t\t\t\t\t\t\t\tWebHeaderKey:   pulumi.String(\"Autorization\"),\n\t\t\t\t\t\t\t\t\t\tWebHeaderValue: pulumi.String(\"Bearer=args.token\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tBody:           pulumi.String(\"{\\\"key\\\": \\\"test\\\"}\"),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(20),\n\t\t\t\t\t\t\t\tJsonPath:       pulumi.String(\"$.data\"),\n\t\t\t\t\t\t\t\tInsecure:       pulumi.Bool(false),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJob: \u0026oceancd.VerificationTemplateMetricProviderJobArgs{\n\t\t\t\t\t\t\t\tSpecs: oceancd.VerificationTemplateMetricProviderJobSpecArray{\n\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderJobSpecArgs{\n\t\t\t\t\t\t\t\t\t\tBackoffLimit: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\tJobTemplates: oceancd.VerificationTemplateMetricProviderJobSpecJobTemplateArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderJobSpecJobTemplateArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTemplateSpecs: oceancd.VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tContainers: oceancd.VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainerArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainerArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tContainerName: pulumi.String(\"hello\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCommands: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tImage: pulumi.String(\"nginx.2.1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tRestartPolicy: pulumi.String(\"never\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tJenkins: \u0026oceancd.VerificationTemplateMetricProviderJenkinsArgs{\n\t\t\t\t\t\t\t\tPipelineName:    pulumi.String(\"testPipelineName\"),\n\t\t\t\t\t\t\t\tTlsVerification: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tTimeout:         pulumi.String(\"2m\"),\n\t\t\t\t\t\t\t\tJenkinsInterval: pulumi.String(\"5s\"),\n\t\t\t\t\t\t\t\tJenkinsParameters: \u0026oceancd.VerificationTemplateMetricProviderJenkinsJenkinsParametersArgs{\n\t\t\t\t\t\t\t\t\tParameterKey:   pulumi.String(\"app\"),\n\t\t\t\t\t\t\t\t\tParameterValue: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBaseline: \u0026oceancd.VerificationTemplateMetricBaselineArgs{\n\t\t\t\t\t\tBaselineProviders: oceancd.VerificationTemplateMetricBaselineBaselineProviderArray{\n\t\t\t\t\t\t\t\u0026oceancd.VerificationTemplateMetricBaselineBaselineProviderArgs{\n\t\t\t\t\t\t\t\tPrometheus: \u0026oceancd.VerificationTemplateMetricBaselineBaselineProviderPrometheusArgs{\n\t\t\t\t\t\t\t\t\tPrometheusQuery: pulumi.String(\"http_requests_total.status!\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tDatadog: \u0026oceancd.VerificationTemplateMetricBaselineBaselineProviderDatadogArgs{\n\t\t\t\t\t\t\t\t\tDuration:     pulumi.String(\"2m\"),\n\t\t\t\t\t\t\t\t\tDatadogQuery: pulumi.String(\"avg:kubernetes.cpu.user\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tNewRelic: \u0026oceancd.VerificationTemplateMetricBaselineBaselineProviderNewRelicArgs{\n\t\t\t\t\t\t\t\t\tProfile:       pulumi.String(\"test\"),\n\t\t\t\t\t\t\t\t\tNewRelicQuery: pulumi.String(\"FROM Metric SELECT count*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMinRange:  pulumi.Int(40),\n\t\t\t\t\t\tMaxRange:  pulumi.Int(50),\n\t\t\t\t\t\tThreshold: pulumi.String(\"range\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.oceancd.VerificationTemplate;\nimport com.pulumi.spotinst.oceancd.VerificationTemplateArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationTemplateArgArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationTemplateArgValueFromArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationTemplateArgValueFromSecretKeyRefArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationTemplateMetricArgs;\nimport com.pulumi.spotinst.oceancd.inputs.VerificationTemplateMetricBaselineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var test = new VerificationTemplate(\"test\", VerificationTemplateArgs.builder()\n            .name(\"test-verification-template-tes\")\n            .args(VerificationTemplateArgArgs.builder()\n                .argName(\"test-arg\")\n                .value(\"test\")\n                .valueFrom(VerificationTemplateArgValueFromArgs.builder()\n                    .secretKeyRef(VerificationTemplateArgValueFromSecretKeyRefArgs.builder()\n                        .name(\"test_key\")\n                        .key(\"key-value-test\")\n                        .build())\n                    .build())\n                .build())\n            .metrics(VerificationTemplateMetricArgs.builder()\n                .metricsName(\"test-metrics-names\")\n                .dryRun(false)\n                .interval(\"10m\")\n                .initialDelay(\"1m\")\n                .count(10)\n                .successCondition(\"result[0] \u003c= 0.95\")\n                .failureCondition(\"result[0] \u003e= 0.95\")\n                .failureLimit(2)\n                .consecutiveErrorLimit(1)\n                .providers(VerificationTemplateMetricProviderArgs.builder()\n                    .prometheus(VerificationTemplateMetricProviderPrometheusArgs.builder()\n                        .prometheusQuery(\"http_requests_new\")\n                        .build())\n                    .datadog(VerificationTemplateMetricProviderDatadogArgs.builder()\n                        .duration(\"1m\")\n                        .datadogQuery(\"avg:kubernetes.cpu.user.total\")\n                        .build())\n                    .newRelic(VerificationTemplateMetricProviderNewRelicArgs.builder()\n                        .profile(\"test\")\n                        .newRelicQuery(\"FROM Metric SELECT count\")\n                        .build())\n                    .cloudWatch(VerificationTemplateMetricProviderCloudWatchArgs.builder()\n                        .duration(\"5m\")\n                        .metricDataQueries(VerificationTemplateMetricProviderCloudWatchMetricDataQueryArgs.builder()\n                            .id(\"utilization\")\n                            .metricStat(VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatArgs.builder()\n                                .metric(VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricArgs.builder()\n                                    .metricName(\"Test\")\n                                    .namespace(\"AWS/EC2\")\n                                    .dimensions(VerificationTemplateMetricProviderCloudWatchMetricDataQueryMetricStatMetricDimensionArgs.builder()\n                                        .dimensionName(\"instandId\")\n                                        .dimensionValue(\"i-123044\")\n                                        .build())\n                                    .build())\n                                .metricPeriod(400)\n                                .stat(\"average\")\n                                .unit(\"None\")\n                                .build())\n                            .expression(\"SELECT AVG(CPUUtilization) FROM SCHEMA\")\n                            .label(\"TestLabel\")\n                            .returnData(false)\n                            .period(300)\n                            .build())\n                        .build())\n                    .web(VerificationTemplateMetricProviderWebArgs.builder()\n                        .method(\"GET\")\n                        .url(\"https://oceancd.com/api/v1/metrics?clusterId= args.clusterId\")\n                        .webHeaders(VerificationTemplateMetricProviderWebWebHeaderArgs.builder()\n                            .webHeaderKey(\"Autorization\")\n                            .webHeaderValue(\"Bearer=args.token\")\n                            .build())\n                        .body(\"{\\\"key\\\": \\\"test\\\"}\")\n                        .timeoutSeconds(20)\n                        .jsonPath(\"$.data\")\n                        .insecure(false)\n                        .build())\n                    .job(VerificationTemplateMetricProviderJobArgs.builder()\n                        .specs(VerificationTemplateMetricProviderJobSpecArgs.builder()\n                            .backoffLimit(1)\n                            .jobTemplates(VerificationTemplateMetricProviderJobSpecJobTemplateArgs.builder()\n                                .templateSpecs(VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecArgs.builder()\n                                    .containers(VerificationTemplateMetricProviderJobSpecJobTemplateTemplateSpecContainerArgs.builder()\n                                        .containerName(\"hello\")\n                                        .commands(                                        \n                                            \"sh\",\n                                            \"-c\")\n                                        .image(\"nginx.2.1\")\n                                        .build())\n                                    .restartPolicy(\"never\")\n                                    .build())\n                                .build())\n                            .build())\n                        .build())\n                    .jenkins(VerificationTemplateMetricProviderJenkinsArgs.builder()\n                        .pipelineName(\"testPipelineName\")\n                        .tlsVerification(true)\n                        .timeout(\"2m\")\n                        .jenkinsInterval(\"5s\")\n                        .jenkinsParameters(VerificationTemplateMetricProviderJenkinsJenkinsParametersArgs.builder()\n                            .parameterKey(\"app\")\n                            .parameterValue(\"my-app\")\n                            .build())\n                        .build())\n                    .build())\n                .baseline(VerificationTemplateMetricBaselineArgs.builder()\n                    .baselineProviders(VerificationTemplateMetricBaselineBaselineProviderArgs.builder()\n                        .prometheus(VerificationTemplateMetricBaselineBaselineProviderPrometheusArgs.builder()\n                            .prometheusQuery(\"http_requests_total.status!\")\n                            .build())\n                        .datadog(VerificationTemplateMetricBaselineBaselineProviderDatadogArgs.builder()\n                            .duration(\"2m\")\n                            .datadogQuery(\"avg:kubernetes.cpu.user\")\n                            .build())\n                        .newRelic(VerificationTemplateMetricBaselineBaselineProviderNewRelicArgs.builder()\n                            .profile(\"test\")\n                            .newRelicQuery(\"FROM Metric SELECT count*\")\n                            .build())\n                        .build())\n                    .minRange(40)\n                    .maxRange(50)\n                    .threshold(\"range\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: spotinst:oceancd:VerificationTemplate\n    properties:\n      name: test-verification-template-tes\n      args:\n        - argName: test-arg\n          value: test\n          valueFrom:\n            secretKeyRef:\n              name: test_key\n              key: key-value-test\n      metrics:\n        - metricsName: test-metrics-names\n          dryRun: false\n          interval: 10m\n          initialDelay: 1m\n          count: '10'\n          successCondition: result[0] \u003c= 0.95\n          failureCondition: result[0] \u003e= 0.95\n          failureLimit: 2\n          consecutiveErrorLimit: 1\n          providers:\n            - prometheus:\n                prometheusQuery: http_requests_new\n              datadog:\n                duration: 1m\n                datadogQuery: avg:kubernetes.cpu.user.total\n              newRelic:\n                profile: test\n                newRelicQuery: FROM Metric SELECT count\n              cloudWatch:\n                duration: 5m\n                metricDataQueries:\n                  - id: utilization\n                    metricStat:\n                      metric:\n                        metricName: Test\n                        namespace: AWS/EC2\n                        dimensions:\n                          - dimensionName: instandId\n                            dimensionValue: i-123044\n                      metricPeriod: 400\n                      stat: average\n                      unit: None\n                    expression: SELECT AVG(CPUUtilization) FROM SCHEMA\n                    label: TestLabel\n                    returnData: false\n                    period: 300\n              web:\n                method: GET\n                url: https://oceancd.com/api/v1/metrics?clusterId= args.clusterId\n                webHeaders:\n                  - webHeaderKey: Autorization\n                    webHeaderValue: Bearer=args.token\n                body: '{\"key\": \"test\"}'\n                timeoutSeconds: 20\n                jsonPath: $.data\n                insecure: false\n              job:\n                specs:\n                  - backoffLimit: 1\n                    jobTemplates:\n                      - templateSpecs:\n                          - containers:\n                              - containerName: hello\n                                commands:\n                                  - sh\n                                  - -c\n                                image: nginx.2.1\n                            restartPolicy: never\n              jenkins:\n                pipelineName: testPipelineName\n                tlsVerification: true\n                timeout: 2m\n                jenkinsInterval: 5s\n                jenkinsParameters:\n                  parameterKey: app\n                  parameterValue: my-app\n          baseline:\n            baselineProviders:\n              - prometheus:\n                  prometheusQuery: http_requests_total.status!\n                datadog:\n                  duration: 2m\n                  datadogQuery: avg:kubernetes.cpu.user\n                newRelic:\n                  profile: test\n                  newRelicQuery: FROM Metric SELECT count*\n            minRange: 40\n            maxRange: 50\n            threshold: range\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\noutput \"name\" {\n  value = spotinst_oceancd_verification_template.example.name\n}\n```\n","properties":{"args":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateArg:VerificationTemplateArg"},"description":"List of verification arguments. You may specify either \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e OR `valueFrom` but not both.In case \u003cspan pulumi-lang-nodejs=\"`args`\" pulumi-lang-dotnet=\"`Args`\" pulumi-lang-go=\"`args`\" pulumi-lang-python=\"`args`\" pulumi-lang-yaml=\"`args`\" pulumi-lang-java=\"`args`\"\u003e`args`\u003c/span\u003e:\u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e is already defined in the RolloutSpec entity, there is no need to also specify it in the VerificationTemplate entity.\n"},"metrics":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetric:VerificationTemplateMetric"},"description":"List of verification metrics.\n"},"name":{"type":"string","description":"Identifier name for Ocean CD Verification Template. Must be unique.\n"}},"required":["name"],"inputProperties":{"args":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateArg:VerificationTemplateArg"},"description":"List of verification arguments. You may specify either \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e OR `valueFrom` but not both.In case \u003cspan pulumi-lang-nodejs=\"`args`\" pulumi-lang-dotnet=\"`Args`\" pulumi-lang-go=\"`args`\" pulumi-lang-python=\"`args`\" pulumi-lang-yaml=\"`args`\" pulumi-lang-java=\"`args`\"\u003e`args`\u003c/span\u003e:\u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e is already defined in the RolloutSpec entity, there is no need to also specify it in the VerificationTemplate entity.\n"},"metrics":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetric:VerificationTemplateMetric"},"description":"List of verification metrics.\n"},"name":{"type":"string","description":"Identifier name for Ocean CD Verification Template. Must be unique.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering VerificationTemplate resources.\n","properties":{"args":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateArg:VerificationTemplateArg"},"description":"List of verification arguments. You may specify either \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e OR `valueFrom` but not both.In case \u003cspan pulumi-lang-nodejs=\"`args`\" pulumi-lang-dotnet=\"`Args`\" pulumi-lang-go=\"`args`\" pulumi-lang-python=\"`args`\" pulumi-lang-yaml=\"`args`\" pulumi-lang-java=\"`args`\"\u003e`args`\u003c/span\u003e:\u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e is already defined in the RolloutSpec entity, there is no need to also specify it in the VerificationTemplate entity.\n"},"metrics":{"type":"array","items":{"$ref":"#/types/spotinst:oceancd/VerificationTemplateMetric:VerificationTemplateMetric"},"description":"List of verification metrics.\n"},"name":{"type":"string","description":"Identifier name for Ocean CD Verification Template. Must be unique.\n"}},"type":"object"}},"spotinst:organization/policy:Policy":{"description":"Provides a Spotinst access policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst terraformPolicy = new spotinst.organization.Policy(\"terraform_policy\", {\n    name: \"test-policy\",\n    description: \"policy by terraform\",\n    policyContents: [{\n        statements: [\n            {\n                actions: [\"ocean:deleteCluster\"],\n                effect: \"DENY\",\n                resources: [\n                    \"o-abcd1234\",\n                    \"o-defg6789\",\n                ],\n            },\n            {\n                actions: [\"ocean:createCluster\"],\n                effect: \"DENY\",\n                resources: [\n                    \"o-fhau4752\",\n                    \"o-761owf4r3\",\n                ],\n            },\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nterraform_policy = spotinst.organization.Policy(\"terraform_policy\",\n    name=\"test-policy\",\n    description=\"policy by terraform\",\n    policy_contents=[{\n        \"statements\": [\n            {\n                \"actions\": [\"ocean:deleteCluster\"],\n                \"effect\": \"DENY\",\n                \"resources\": [\n                    \"o-abcd1234\",\n                    \"o-defg6789\",\n                ],\n            },\n            {\n                \"actions\": [\"ocean:createCluster\"],\n                \"effect\": \"DENY\",\n                \"resources\": [\n                    \"o-fhau4752\",\n                    \"o-761owf4r3\",\n                ],\n            },\n        ],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var terraformPolicy = new SpotInst.Organization.Policy(\"terraform_policy\", new()\n    {\n        Name = \"test-policy\",\n        Description = \"policy by terraform\",\n        PolicyContents = new[]\n        {\n            new SpotInst.Organization.Inputs.PolicyPolicyContentArgs\n            {\n                Statements = new[]\n                {\n                    new SpotInst.Organization.Inputs.PolicyPolicyContentStatementArgs\n                    {\n                        Actions = new[]\n                        {\n                            \"ocean:deleteCluster\",\n                        },\n                        Effect = \"DENY\",\n                        Resources = new[]\n                        {\n                            \"o-abcd1234\",\n                            \"o-defg6789\",\n                        },\n                    },\n                    new SpotInst.Organization.Inputs.PolicyPolicyContentStatementArgs\n                    {\n                        Actions = new[]\n                        {\n                            \"ocean:createCluster\",\n                        },\n                        Effect = \"DENY\",\n                        Resources = new[]\n                        {\n                            \"o-fhau4752\",\n                            \"o-761owf4r3\",\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/organization\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organization.NewPolicy(ctx, \"terraform_policy\", \u0026organization.PolicyArgs{\n\t\t\tName:        pulumi.String(\"test-policy\"),\n\t\t\tDescription: pulumi.String(\"policy by terraform\"),\n\t\t\tPolicyContents: organization.PolicyPolicyContentArray{\n\t\t\t\t\u0026organization.PolicyPolicyContentArgs{\n\t\t\t\t\tStatements: organization.PolicyPolicyContentStatementArray{\n\t\t\t\t\t\t\u0026organization.PolicyPolicyContentStatementArgs{\n\t\t\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"ocean:deleteCluster\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tEffect: pulumi.String(\"DENY\"),\n\t\t\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"o-abcd1234\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"o-defg6789\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026organization.PolicyPolicyContentStatementArgs{\n\t\t\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"ocean:createCluster\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tEffect: pulumi.String(\"DENY\"),\n\t\t\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"o-fhau4752\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"o-761owf4r3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.organization.Policy;\nimport com.pulumi.spotinst.organization.PolicyArgs;\nimport com.pulumi.spotinst.organization.inputs.PolicyPolicyContentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var terraformPolicy = new Policy(\"terraformPolicy\", PolicyArgs.builder()\n            .name(\"test-policy\")\n            .description(\"policy by terraform\")\n            .policyContents(PolicyPolicyContentArgs.builder()\n                .statements(                \n                    PolicyPolicyContentStatementArgs.builder()\n                        .actions(\"ocean:deleteCluster\")\n                        .effect(\"DENY\")\n                        .resources(                        \n                            \"o-abcd1234\",\n                            \"o-defg6789\")\n                        .build(),\n                    PolicyPolicyContentStatementArgs.builder()\n                        .actions(\"ocean:createCluster\")\n                        .effect(\"DENY\")\n                        .resources(                        \n                            \"o-fhau4752\",\n                            \"o-761owf4r3\")\n                        .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  terraformPolicy:\n    type: spotinst:organization:Policy\n    name: terraform_policy\n    properties:\n      name: test-policy\n      description: policy by terraform\n      policyContents:\n        - statements:\n            - actions:\n                - ocean:deleteCluster\n              effect: DENY\n              resources:\n                - o-abcd1234\n                - o-defg6789\n            - actions:\n                - ocean:createCluster\n              effect: DENY\n              resources:\n                - o-fhau4752\n                - o-761owf4r3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"description":{"type":"string","description":"Short description of policy.\n"},"name":{"type":"string","description":"Name of the Policy.\n"},"policyContents":{"type":"array","items":{"$ref":"#/types/spotinst:organization/PolicyPolicyContent:PolicyPolicyContent"},"description":"Set permissions objects list.\n"}},"required":["name","policyContents"],"inputProperties":{"description":{"type":"string","description":"Short description of policy.\n"},"name":{"type":"string","description":"Name of the Policy.\n"},"policyContents":{"type":"array","items":{"$ref":"#/types/spotinst:organization/PolicyPolicyContent:PolicyPolicyContent"},"description":"Set permissions objects list.\n"}},"requiredInputs":["policyContents"],"stateInputs":{"description":"Input properties used for looking up and filtering Policy resources.\n","properties":{"description":{"type":"string","description":"Short description of policy.\n"},"name":{"type":"string","description":"Name of the Policy.\n"},"policyContents":{"type":"array","items":{"$ref":"#/types/spotinst:organization/PolicyPolicyContent:PolicyPolicyContent"},"description":"Set permissions objects list.\n"}},"type":"object"}},"spotinst:organization/programmaticUser:ProgrammaticUser":{"description":"Provides a Spotinst programmatic user in the creator's organization.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst terraformProgUser = new spotinst.organization.ProgrammaticUser(\"terraform_prog_user\", {\n    name: \"test-prog-user\",\n    description: \"creating programmatic user\",\n    policies: [{\n        policyId: \"pol-g75d8c06\",\n        policyAccountIds: [\"act-a1b2c3d4\"],\n    }],\n    userGroupIds: [\n        \"ugr-abcd1234\",\n        \"ugr-defg8763\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nterraform_prog_user = spotinst.organization.ProgrammaticUser(\"terraform_prog_user\",\n    name=\"test-prog-user\",\n    description=\"creating programmatic user\",\n    policies=[{\n        \"policy_id\": \"pol-g75d8c06\",\n        \"policy_account_ids\": [\"act-a1b2c3d4\"],\n    }],\n    user_group_ids=[\n        \"ugr-abcd1234\",\n        \"ugr-defg8763\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var terraformProgUser = new SpotInst.Organization.ProgrammaticUser(\"terraform_prog_user\", new()\n    {\n        Name = \"test-prog-user\",\n        Description = \"creating programmatic user\",\n        Policies = new[]\n        {\n            new SpotInst.Organization.Inputs.ProgrammaticUserPolicyArgs\n            {\n                PolicyId = \"pol-g75d8c06\",\n                PolicyAccountIds = new[]\n                {\n                    \"act-a1b2c3d4\",\n                },\n            },\n        },\n        UserGroupIds = new[]\n        {\n            \"ugr-abcd1234\",\n            \"ugr-defg8763\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/organization\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organization.NewProgrammaticUser(ctx, \"terraform_prog_user\", \u0026organization.ProgrammaticUserArgs{\n\t\t\tName:        pulumi.String(\"test-prog-user\"),\n\t\t\tDescription: pulumi.String(\"creating programmatic user\"),\n\t\t\tPolicies: organization.ProgrammaticUserPolicyArray{\n\t\t\t\t\u0026organization.ProgrammaticUserPolicyArgs{\n\t\t\t\t\tPolicyId: pulumi.String(\"pol-g75d8c06\"),\n\t\t\t\t\tPolicyAccountIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"act-a1b2c3d4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ugr-abcd1234\"),\n\t\t\t\tpulumi.String(\"ugr-defg8763\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.organization.ProgrammaticUser;\nimport com.pulumi.spotinst.organization.ProgrammaticUserArgs;\nimport com.pulumi.spotinst.organization.inputs.ProgrammaticUserPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var terraformProgUser = new ProgrammaticUser(\"terraformProgUser\", ProgrammaticUserArgs.builder()\n            .name(\"test-prog-user\")\n            .description(\"creating programmatic user\")\n            .policies(ProgrammaticUserPolicyArgs.builder()\n                .policyId(\"pol-g75d8c06\")\n                .policyAccountIds(\"act-a1b2c3d4\")\n                .build())\n            .userGroupIds(            \n                \"ugr-abcd1234\",\n                \"ugr-defg8763\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  terraformProgUser:\n    type: spotinst:organization:ProgrammaticUser\n    name: terraform_prog_user\n    properties:\n      name: test-prog-user\n      description: creating programmatic user\n      policies:\n        - policyId: pol-g75d8c06\n          policyAccountIds:\n            - act-a1b2c3d4\n      userGroupIds: # account and policies are exclusive\n        - ugr-abcd1234\n        - ugr-defg8763\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"accounts":{"type":"array","items":{"$ref":"#/types/spotinst:organization/ProgrammaticUserAccount:ProgrammaticUserAccount"},"description":"All the accounts the programmatic user will have access to.\nIf used - Cannot be empty.\n"},"description":{"type":"string","description":"Brief description of the user.\n"},"name":{"type":"string","description":"Name of the programmatic user.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/ProgrammaticUserPolicy:ProgrammaticUserPolicy"},"description":"All the policies the programmatic user will have access to.\nIf used - Cannot be empty.\n"},"userGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of the user groups to register the given user to (should be existing user groups only)\n"}},"required":["name"],"inputProperties":{"accounts":{"type":"array","items":{"$ref":"#/types/spotinst:organization/ProgrammaticUserAccount:ProgrammaticUserAccount"},"description":"All the accounts the programmatic user will have access to.\nIf used - Cannot be empty.\n"},"description":{"type":"string","description":"Brief description of the user.\n"},"name":{"type":"string","description":"Name of the programmatic user.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/ProgrammaticUserPolicy:ProgrammaticUserPolicy"},"description":"All the policies the programmatic user will have access to.\nIf used - Cannot be empty.\n"},"userGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of the user groups to register the given user to (should be existing user groups only)\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ProgrammaticUser resources.\n","properties":{"accounts":{"type":"array","items":{"$ref":"#/types/spotinst:organization/ProgrammaticUserAccount:ProgrammaticUserAccount"},"description":"All the accounts the programmatic user will have access to.\nIf used - Cannot be empty.\n"},"description":{"type":"string","description":"Brief description of the user.\n"},"name":{"type":"string","description":"Name of the programmatic user.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/ProgrammaticUserPolicy:ProgrammaticUserPolicy"},"description":"All the policies the programmatic user will have access to.\nIf used - Cannot be empty.\n"},"userGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of the user groups to register the given user to (should be existing user groups only)\n"}},"type":"object"}},"spotinst:organization/user:User":{"description":"Provides a Spotinst User in the creator's organization.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst terraformUser = new spotinst.organization.User(\"terraform_user\", {\n    email: \"abc@xyz.com\",\n    firstName: \"test\",\n    lastName: \"user\",\n    password: \"testUser@123\",\n    role: \"viewer\",\n    policies: [{\n        policyId: \"pol-abcd1236\",\n        policyAccountIds: [\"act-abcf4245\"],\n    }],\n    userGroupIds: [\n        \"ugr-abcd1234\",\n        \"ugr-defg8763\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nterraform_user = spotinst.organization.User(\"terraform_user\",\n    email=\"abc@xyz.com\",\n    first_name=\"test\",\n    last_name=\"user\",\n    password=\"testUser@123\",\n    role=\"viewer\",\n    policies=[{\n        \"policy_id\": \"pol-abcd1236\",\n        \"policy_account_ids\": [\"act-abcf4245\"],\n    }],\n    user_group_ids=[\n        \"ugr-abcd1234\",\n        \"ugr-defg8763\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var terraformUser = new SpotInst.Organization.User(\"terraform_user\", new()\n    {\n        Email = \"abc@xyz.com\",\n        FirstName = \"test\",\n        LastName = \"user\",\n        Password = \"testUser@123\",\n        Role = \"viewer\",\n        Policies = new[]\n        {\n            new SpotInst.Organization.Inputs.UserPolicyArgs\n            {\n                PolicyId = \"pol-abcd1236\",\n                PolicyAccountIds = new[]\n                {\n                    \"act-abcf4245\",\n                },\n            },\n        },\n        UserGroupIds = new[]\n        {\n            \"ugr-abcd1234\",\n            \"ugr-defg8763\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/organization\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organization.NewUser(ctx, \"terraform_user\", \u0026organization.UserArgs{\n\t\t\tEmail:     pulumi.String(\"abc@xyz.com\"),\n\t\t\tFirstName: pulumi.String(\"test\"),\n\t\t\tLastName:  pulumi.String(\"user\"),\n\t\t\tPassword:  pulumi.String(\"testUser@123\"),\n\t\t\tRole:      pulumi.String(\"viewer\"),\n\t\t\tPolicies: organization.UserPolicyArray{\n\t\t\t\t\u0026organization.UserPolicyArgs{\n\t\t\t\t\tPolicyId: pulumi.String(\"pol-abcd1236\"),\n\t\t\t\t\tPolicyAccountIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"act-abcf4245\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ugr-abcd1234\"),\n\t\t\t\tpulumi.String(\"ugr-defg8763\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.organization.User;\nimport com.pulumi.spotinst.organization.UserArgs;\nimport com.pulumi.spotinst.organization.inputs.UserPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var terraformUser = new User(\"terraformUser\", UserArgs.builder()\n            .email(\"abc@xyz.com\")\n            .firstName(\"test\")\n            .lastName(\"user\")\n            .password(\"testUser@123\")\n            .role(\"viewer\")\n            .policies(UserPolicyArgs.builder()\n                .policyId(\"pol-abcd1236\")\n                .policyAccountIds(\"act-abcf4245\")\n                .build())\n            .userGroupIds(            \n                \"ugr-abcd1234\",\n                \"ugr-defg8763\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  terraformUser:\n    type: spotinst:organization:User\n    name: terraform_user\n    properties:\n      email: abc@xyz.com\n      firstName: test\n      lastName: user\n      password: testUser@123\n      role: viewer\n      policies:\n        - policyId: pol-abcd1236\n          policyAccountIds:\n            - act-abcf4245\n      userGroupIds:\n        - ugr-abcd1234\n        - ugr-defg8763\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"email":{"type":"string","description":"Email.\n"},"firstName":{"type":"string","description":"The first name of the user.\n"},"lastName":{"type":"string","description":"The last name of the user.\n"},"password":{"type":"string","description":"Password.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/UserPolicy:UserPolicy"},"description":"The policies to register under the given group\n(should be existing policies only).\n"},"role":{"type":"string","description":"User's role.\n"},"userGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of the user groups to register the given user to (should be existing user groups only)\n"}},"required":["email","firstName","lastName","password"],"inputProperties":{"email":{"type":"string","description":"Email.\n"},"firstName":{"type":"string","description":"The first name of the user.\n"},"lastName":{"type":"string","description":"The last name of the user.\n"},"password":{"type":"string","description":"Password.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/UserPolicy:UserPolicy"},"description":"The policies to register under the given group\n(should be existing policies only).\n"},"role":{"type":"string","description":"User's role.\n"},"userGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of the user groups to register the given user to (should be existing user groups only)\n"}},"requiredInputs":["email","firstName","lastName"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"email":{"type":"string","description":"Email.\n"},"firstName":{"type":"string","description":"The first name of the user.\n"},"lastName":{"type":"string","description":"The last name of the user.\n"},"password":{"type":"string","description":"Password.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/UserPolicy:UserPolicy"},"description":"The policies to register under the given group\n(should be existing policies only).\n"},"role":{"type":"string","description":"User's role.\n"},"userGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of the user groups to register the given user to (should be existing user groups only)\n"}},"type":"object"}},"spotinst:organization/userGroup:UserGroup":{"description":"Provides a Spotinst user-group of your Spot organization.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst terraformUserGroup = new spotinst.organization.UserGroup(\"terraform_user_group\", {\n    name: \"test_user_group\",\n    description: \"user group by terraform\",\n    userIds: [\"u-372gf6ae\"],\n    policies: [{\n        accountIds: [\"act-a1b2c3d4\"],\n        policyId: \"pol-vv7d8c06\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nterraform_user_group = spotinst.organization.UserGroup(\"terraform_user_group\",\n    name=\"test_user_group\",\n    description=\"user group by terraform\",\n    user_ids=[\"u-372gf6ae\"],\n    policies=[{\n        \"account_ids\": [\"act-a1b2c3d4\"],\n        \"policy_id\": \"pol-vv7d8c06\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var terraformUserGroup = new SpotInst.Organization.UserGroup(\"terraform_user_group\", new()\n    {\n        Name = \"test_user_group\",\n        Description = \"user group by terraform\",\n        UserIds = new[]\n        {\n            \"u-372gf6ae\",\n        },\n        Policies = new[]\n        {\n            new SpotInst.Organization.Inputs.UserGroupPolicyArgs\n            {\n                AccountIds = new[]\n                {\n                    \"act-a1b2c3d4\",\n                },\n                PolicyId = \"pol-vv7d8c06\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/organization\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organization.NewUserGroup(ctx, \"terraform_user_group\", \u0026organization.UserGroupArgs{\n\t\t\tName:        pulumi.String(\"test_user_group\"),\n\t\t\tDescription: pulumi.String(\"user group by terraform\"),\n\t\t\tUserIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"u-372gf6ae\"),\n\t\t\t},\n\t\t\tPolicies: organization.UserGroupPolicyArray{\n\t\t\t\t\u0026organization.UserGroupPolicyArgs{\n\t\t\t\t\tAccountIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"act-a1b2c3d4\"),\n\t\t\t\t\t},\n\t\t\t\t\tPolicyId: pulumi.String(\"pol-vv7d8c06\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.organization.UserGroup;\nimport com.pulumi.spotinst.organization.UserGroupArgs;\nimport com.pulumi.spotinst.organization.inputs.UserGroupPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var terraformUserGroup = new UserGroup(\"terraformUserGroup\", UserGroupArgs.builder()\n            .name(\"test_user_group\")\n            .description(\"user group by terraform\")\n            .userIds(\"u-372gf6ae\")\n            .policies(UserGroupPolicyArgs.builder()\n                .accountIds(\"act-a1b2c3d4\")\n                .policyId(\"pol-vv7d8c06\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  terraformUserGroup:\n    type: spotinst:organization:UserGroup\n    name: terraform_user_group\n    properties:\n      name: test_user_group\n      description: user group by terraform\n      userIds:\n        - u-372gf6ae\n      policies:\n        - accountIds:\n            - act-a1b2c3d4\n          policyId: pol-vv7d8c06\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"description":{"type":"string","description":"User group description.\n"},"name":{"type":"string","description":"User group name.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/UserGroupPolicy:UserGroupPolicy"},"description":"The policies to register under the given group\n(should be existing policies only).\n"},"userIds":{"type":"array","items":{"type":"string"},"description":"The users to register under the created group\n(should be existing users only).\n"}},"required":["name"],"inputProperties":{"description":{"type":"string","description":"User group description.\n"},"name":{"type":"string","description":"User group name.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/UserGroupPolicy:UserGroupPolicy"},"description":"The policies to register under the given group\n(should be existing policies only).\n"},"userIds":{"type":"array","items":{"type":"string"},"description":"The users to register under the created group\n(should be existing users only).\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering UserGroup resources.\n","properties":{"description":{"type":"string","description":"User group description.\n"},"name":{"type":"string","description":"User group name.\n"},"policies":{"type":"array","items":{"$ref":"#/types/spotinst:organization/UserGroupPolicy:UserGroupPolicy"},"description":"The policies to register under the given group\n(should be existing policies only).\n"},"userIds":{"type":"array","items":{"type":"string"},"description":"The users to register under the created group\n(should be existing users only).\n"}},"type":"object"}},"spotinst:spark/ocean:Ocean":{"description":"Manages a Spotinst Ocean Spark resource on AWS or GCP.\n\n## Prerequisites\n\nAn existing Ocean cluster is required by this resource. See e.g. the \u003cspan pulumi-lang-nodejs=\"`spotinst.aws.Ocean`\" pulumi-lang-dotnet=\"`spotinst.aws.Ocean`\" pulumi-lang-go=\"`aws.Ocean`\" pulumi-lang-python=\"`aws.Ocean`\" pulumi-lang-yaml=\"`spotinst.aws.Ocean`\" pulumi-lang-java=\"`spotinst.aws.Ocean`\"\u003e`spotinst.aws.Ocean`\u003c/span\u003e resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.spark.Ocean(\"example\", {\n    oceanClusterId: \"ocean-cluster-id\",\n    ingress: {\n        controller: {\n            managed: true,\n        },\n        loadBalancer: {\n            managed: true,\n            targetGroupArn: \"arn:aws:elasticloadbalancing:eu-north-1:XXXXXXXXXXXX:targetgroup/my-spark-cluster-nlb-tg/a38c2b83XXXXXXXX\",\n            serviceAnnotations: {\n                \"service.beta.kubernetes.io/aws-load-balancer-security-groups\": \"sg-XXXXXXXXXXXXXXXXX\",\n                \"some-service-annotation-2\": \"some-service-annotation-value-2\",\n            },\n        },\n        customEndpoint: {\n            enabled: false,\n            address: \"my-spark-cluster-nlb-8cbb8da7XXXXXXXX.elb.us-east-1.amazonaws.com\",\n        },\n        privateLink: {\n            enabled: false,\n            vpcEndpointService: \"com.amazonaws.vpce.eu-north-1.vpce-svc-XXXXXXXXXXXXXXXXX\",\n        },\n    },\n    compute: {\n        createVngs: true,\n        useTaints: true,\n    },\n    logCollection: {\n        collectAppLogs: true,\n    },\n    webhook: {\n        useHostNetwork: false,\n        hostNetworkPorts: [25554],\n    },\n    spark: {\n        additionalAppNamespaces: [\n            \"extra-spark-app-ns-1\",\n            \"extra-spark-app-ns-2\",\n        ],\n    },\n    workspaces: {\n        storage: {\n            defaults: {\n                storageClassName: \"my-custom-storage-class\",\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.spark.Ocean(\"example\",\n    ocean_cluster_id=\"ocean-cluster-id\",\n    ingress={\n        \"controller\": {\n            \"managed\": True,\n        },\n        \"load_balancer\": {\n            \"managed\": True,\n            \"target_group_arn\": \"arn:aws:elasticloadbalancing:eu-north-1:XXXXXXXXXXXX:targetgroup/my-spark-cluster-nlb-tg/a38c2b83XXXXXXXX\",\n            \"service_annotations\": {\n                \"service.beta.kubernetes.io/aws-load-balancer-security-groups\": \"sg-XXXXXXXXXXXXXXXXX\",\n                \"some-service-annotation-2\": \"some-service-annotation-value-2\",\n            },\n        },\n        \"custom_endpoint\": {\n            \"enabled\": False,\n            \"address\": \"my-spark-cluster-nlb-8cbb8da7XXXXXXXX.elb.us-east-1.amazonaws.com\",\n        },\n        \"private_link\": {\n            \"enabled\": False,\n            \"vpc_endpoint_service\": \"com.amazonaws.vpce.eu-north-1.vpce-svc-XXXXXXXXXXXXXXXXX\",\n        },\n    },\n    compute={\n        \"create_vngs\": True,\n        \"use_taints\": True,\n    },\n    log_collection={\n        \"collect_app_logs\": True,\n    },\n    webhook={\n        \"use_host_network\": False,\n        \"host_network_ports\": [25554],\n    },\n    spark={\n        \"additional_app_namespaces\": [\n            \"extra-spark-app-ns-1\",\n            \"extra-spark-app-ns-2\",\n        ],\n    },\n    workspaces={\n        \"storage\": {\n            \"defaults\": {\n                \"storage_class_name\": \"my-custom-storage-class\",\n            },\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Spark.Ocean(\"example\", new()\n    {\n        OceanClusterId = \"ocean-cluster-id\",\n        Ingress = new SpotInst.Spark.Inputs.OceanIngressArgs\n        {\n            Controller = new SpotInst.Spark.Inputs.OceanIngressControllerArgs\n            {\n                Managed = true,\n            },\n            LoadBalancer = new SpotInst.Spark.Inputs.OceanIngressLoadBalancerArgs\n            {\n                Managed = true,\n                TargetGroupArn = \"arn:aws:elasticloadbalancing:eu-north-1:XXXXXXXXXXXX:targetgroup/my-spark-cluster-nlb-tg/a38c2b83XXXXXXXX\",\n                ServiceAnnotations = \n                {\n                    { \"service.beta.kubernetes.io/aws-load-balancer-security-groups\", \"sg-XXXXXXXXXXXXXXXXX\" },\n                    { \"some-service-annotation-2\", \"some-service-annotation-value-2\" },\n                },\n            },\n            CustomEndpoint = new SpotInst.Spark.Inputs.OceanIngressCustomEndpointArgs\n            {\n                Enabled = false,\n                Address = \"my-spark-cluster-nlb-8cbb8da7XXXXXXXX.elb.us-east-1.amazonaws.com\",\n            },\n            PrivateLink = new SpotInst.Spark.Inputs.OceanIngressPrivateLinkArgs\n            {\n                Enabled = false,\n                VpcEndpointService = \"com.amazonaws.vpce.eu-north-1.vpce-svc-XXXXXXXXXXXXXXXXX\",\n            },\n        },\n        Compute = new SpotInst.Spark.Inputs.OceanComputeArgs\n        {\n            CreateVngs = true,\n            UseTaints = true,\n        },\n        LogCollection = new SpotInst.Spark.Inputs.OceanLogCollectionArgs\n        {\n            CollectAppLogs = true,\n        },\n        Webhook = new SpotInst.Spark.Inputs.OceanWebhookArgs\n        {\n            UseHostNetwork = false,\n            HostNetworkPorts = new[]\n            {\n                25554,\n            },\n        },\n        Spark = new SpotInst.Spark.Inputs.OceanSparkArgs\n        {\n            AdditionalAppNamespaces = new[]\n            {\n                \"extra-spark-app-ns-1\",\n                \"extra-spark-app-ns-2\",\n            },\n        },\n        Workspaces = new SpotInst.Spark.Inputs.OceanWorkspacesArgs\n        {\n            Storage = new SpotInst.Spark.Inputs.OceanWorkspacesStorageArgs\n            {\n                Defaults = new SpotInst.Spark.Inputs.OceanWorkspacesStorageDefaultsArgs\n                {\n                    StorageClassName = \"my-custom-storage-class\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/spark\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := spark.NewOcean(ctx, \"example\", \u0026spark.OceanArgs{\n\t\t\tOceanClusterId: pulumi.String(\"ocean-cluster-id\"),\n\t\t\tIngress: \u0026spark.OceanIngressArgs{\n\t\t\t\tController: \u0026spark.OceanIngressControllerArgs{\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tLoadBalancer: \u0026spark.OceanIngressLoadBalancerArgs{\n\t\t\t\t\tManaged:        pulumi.Bool(true),\n\t\t\t\t\tTargetGroupArn: pulumi.String(\"arn:aws:elasticloadbalancing:eu-north-1:XXXXXXXXXXXX:targetgroup/my-spark-cluster-nlb-tg/a38c2b83XXXXXXXX\"),\n\t\t\t\t\tServiceAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"service.beta.kubernetes.io/aws-load-balancer-security-groups\": pulumi.String(\"sg-XXXXXXXXXXXXXXXXX\"),\n\t\t\t\t\t\t\"some-service-annotation-2\":                                    pulumi.String(\"some-service-annotation-value-2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tCustomEndpoint: \u0026spark.OceanIngressCustomEndpointArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\tAddress: pulumi.String(\"my-spark-cluster-nlb-8cbb8da7XXXXXXXX.elb.us-east-1.amazonaws.com\"),\n\t\t\t\t},\n\t\t\t\tPrivateLink: \u0026spark.OceanIngressPrivateLinkArgs{\n\t\t\t\t\tEnabled:            pulumi.Bool(false),\n\t\t\t\t\tVpcEndpointService: pulumi.String(\"com.amazonaws.vpce.eu-north-1.vpce-svc-XXXXXXXXXXXXXXXXX\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCompute: \u0026spark.OceanComputeArgs{\n\t\t\t\tCreateVngs: pulumi.Bool(true),\n\t\t\t\tUseTaints:  pulumi.Bool(true),\n\t\t\t},\n\t\t\tLogCollection: \u0026spark.OceanLogCollectionArgs{\n\t\t\t\tCollectAppLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tWebhook: \u0026spark.OceanWebhookArgs{\n\t\t\t\tUseHostNetwork: pulumi.Bool(false),\n\t\t\t\tHostNetworkPorts: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(25554),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026spark.OceanSparkArgs{\n\t\t\t\tAdditionalAppNamespaces: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"extra-spark-app-ns-1\"),\n\t\t\t\t\tpulumi.String(\"extra-spark-app-ns-2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tWorkspaces: \u0026spark.OceanWorkspacesArgs{\n\t\t\t\tStorage: \u0026spark.OceanWorkspacesStorageArgs{\n\t\t\t\t\tDefaults: \u0026spark.OceanWorkspacesStorageDefaultsArgs{\n\t\t\t\t\t\tStorageClassName: pulumi.String(\"my-custom-storage-class\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.spark.Ocean;\nimport com.pulumi.spotinst.spark.OceanArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanIngressArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanIngressControllerArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanIngressLoadBalancerArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanIngressCustomEndpointArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanIngressPrivateLinkArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanComputeArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanLogCollectionArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanWebhookArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanSparkArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanWorkspacesArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanWorkspacesStorageArgs;\nimport com.pulumi.spotinst.spark.inputs.OceanWorkspacesStorageDefaultsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Ocean(\"example\", OceanArgs.builder()\n            .oceanClusterId(\"ocean-cluster-id\")\n            .ingress(OceanIngressArgs.builder()\n                .controller(OceanIngressControllerArgs.builder()\n                    .managed(true)\n                    .build())\n                .loadBalancer(OceanIngressLoadBalancerArgs.builder()\n                    .managed(true)\n                    .targetGroupArn(\"arn:aws:elasticloadbalancing:eu-north-1:XXXXXXXXXXXX:targetgroup/my-spark-cluster-nlb-tg/a38c2b83XXXXXXXX\")\n                    .serviceAnnotations(Map.ofEntries(\n                        Map.entry(\"service.beta.kubernetes.io/aws-load-balancer-security-groups\", \"sg-XXXXXXXXXXXXXXXXX\"),\n                        Map.entry(\"some-service-annotation-2\", \"some-service-annotation-value-2\")\n                    ))\n                    .build())\n                .customEndpoint(OceanIngressCustomEndpointArgs.builder()\n                    .enabled(false)\n                    .address(\"my-spark-cluster-nlb-8cbb8da7XXXXXXXX.elb.us-east-1.amazonaws.com\")\n                    .build())\n                .privateLink(OceanIngressPrivateLinkArgs.builder()\n                    .enabled(false)\n                    .vpcEndpointService(\"com.amazonaws.vpce.eu-north-1.vpce-svc-XXXXXXXXXXXXXXXXX\")\n                    .build())\n                .build())\n            .compute(OceanComputeArgs.builder()\n                .createVngs(true)\n                .useTaints(true)\n                .build())\n            .logCollection(OceanLogCollectionArgs.builder()\n                .collectAppLogs(true)\n                .build())\n            .webhook(OceanWebhookArgs.builder()\n                .useHostNetwork(false)\n                .hostNetworkPorts(25554)\n                .build())\n            .spark(OceanSparkArgs.builder()\n                .additionalAppNamespaces(                \n                    \"extra-spark-app-ns-1\",\n                    \"extra-spark-app-ns-2\")\n                .build())\n            .workspaces(OceanWorkspacesArgs.builder()\n                .storage(OceanWorkspacesStorageArgs.builder()\n                    .defaults(OceanWorkspacesStorageDefaultsArgs.builder()\n                        .storageClassName(\"my-custom-storage-class\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:spark:Ocean\n    properties:\n      oceanClusterId: ocean-cluster-id\n      ingress:\n        controller:\n          managed: true\n        loadBalancer:\n          managed: true\n          targetGroupArn: arn:aws:elasticloadbalancing:eu-north-1:XXXXXXXXXXXX:targetgroup/my-spark-cluster-nlb-tg/a38c2b83XXXXXXXX\n          serviceAnnotations:\n            service.beta.kubernetes.io/aws-load-balancer-security-groups: sg-XXXXXXXXXXXXXXXXX\n            some-service-annotation-2: some-service-annotation-value-2\n        customEndpoint:\n          enabled: false\n          address: my-spark-cluster-nlb-8cbb8da7XXXXXXXX.elb.us-east-1.amazonaws.com\n        privateLink:\n          enabled: false\n          vpcEndpointService: com.amazonaws.vpce.eu-north-1.vpce-svc-XXXXXXXXXXXXXXXXX\n      compute:\n        createVngs: true\n        useTaints: true\n      logCollection:\n        collectAppLogs: true\n      webhook:\n        useHostNetwork: false\n        hostNetworkPorts:\n          - 25554\n      spark:\n        additionalAppNamespaces:\n          - extra-spark-app-ns-1\n          - extra-spark-app-ns-2\n      workspaces:\n        storage:\n          defaults:\n            storageClassName: my-custom-storage-class\n```\n\u003c!--End PulumiCodeChooser --\u003e\n```\noutput \"ocean_spark_id\" {\n  value = spotinst_ocean_spark.example.id\n}\n```\n","properties":{"compute":{"$ref":"#/types/spotinst:spark/OceanCompute:OceanCompute"},"ingress":{"$ref":"#/types/spotinst:spark/OceanIngress:OceanIngress"},"logCollection":{"$ref":"#/types/spotinst:spark/OceanLogCollection:OceanLogCollection"},"oceanClusterId":{"type":"string","description":"- The ID of the Ocean cluster that Ocean for Apache Spark should be installed on.\n"},"spark":{"$ref":"#/types/spotinst:spark/OceanSpark:OceanSpark"},"webhook":{"$ref":"#/types/spotinst:spark/OceanWebhook:OceanWebhook"},"workspaces":{"$ref":"#/types/spotinst:spark/OceanWorkspaces:OceanWorkspaces"}},"required":["compute","ingress","logCollection","oceanClusterId","spark","webhook","workspaces"],"inputProperties":{"compute":{"$ref":"#/types/spotinst:spark/OceanCompute:OceanCompute"},"ingress":{"$ref":"#/types/spotinst:spark/OceanIngress:OceanIngress"},"logCollection":{"$ref":"#/types/spotinst:spark/OceanLogCollection:OceanLogCollection"},"oceanClusterId":{"type":"string","description":"- The ID of the Ocean cluster that Ocean for Apache Spark should be installed on.\n","willReplaceOnChanges":true},"spark":{"$ref":"#/types/spotinst:spark/OceanSpark:OceanSpark"},"webhook":{"$ref":"#/types/spotinst:spark/OceanWebhook:OceanWebhook"},"workspaces":{"$ref":"#/types/spotinst:spark/OceanWorkspaces:OceanWorkspaces"}},"requiredInputs":["oceanClusterId"],"stateInputs":{"description":"Input properties used for looking up and filtering Ocean resources.\n","properties":{"compute":{"$ref":"#/types/spotinst:spark/OceanCompute:OceanCompute"},"ingress":{"$ref":"#/types/spotinst:spark/OceanIngress:OceanIngress"},"logCollection":{"$ref":"#/types/spotinst:spark/OceanLogCollection:OceanLogCollection"},"oceanClusterId":{"type":"string","description":"- The ID of the Ocean cluster that Ocean for Apache Spark should be installed on.\n","willReplaceOnChanges":true},"spark":{"$ref":"#/types/spotinst:spark/OceanSpark:OceanSpark"},"webhook":{"$ref":"#/types/spotinst:spark/OceanWebhook:OceanWebhook"},"workspaces":{"$ref":"#/types/spotinst:spark/OceanWorkspaces:OceanWorkspaces"}},"type":"object"}},"spotinst:spark/oceanVirtualNodeGroup:OceanVirtualNodeGroup":{"description":"Manage a dedicated Spotinst Ocean Spark Virtual Node Group resource\n\n## Prerequisites\n\nAn existing Ocean cluster and Ocean VNG is required by this resource\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as spotinst from \"@pulumi/spotinst\";\n\nconst example = new spotinst.spark.OceanVirtualNodeGroup(\"example\", {\n    virtualNodeGroupId: \"vng_id\",\n    oceanSparkClusterId: \"cluster_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_spotinst as spotinst\n\nexample = spotinst.spark.OceanVirtualNodeGroup(\"example\",\n    virtual_node_group_id=\"vng_id\",\n    ocean_spark_cluster_id=\"cluster_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing SpotInst = Pulumi.SpotInst;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new SpotInst.Spark.OceanVirtualNodeGroup(\"example\", new()\n    {\n        VirtualNodeGroupId = \"vng_id\",\n        OceanSparkClusterId = \"cluster_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/spark\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := spark.NewOceanVirtualNodeGroup(ctx, \"example\", \u0026spark.OceanVirtualNodeGroupArgs{\n\t\t\tVirtualNodeGroupId:  pulumi.String(\"vng_id\"),\n\t\t\tOceanSparkClusterId: pulumi.String(\"cluster_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.spotinst.spark.OceanVirtualNodeGroup;\nimport com.pulumi.spotinst.spark.OceanVirtualNodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new OceanVirtualNodeGroup(\"example\", OceanVirtualNodeGroupArgs.builder()\n            .virtualNodeGroupId(\"vng_id\")\n            .oceanSparkClusterId(\"cluster_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: spotinst:spark:OceanVirtualNodeGroup\n    properties:\n      virtualNodeGroupId: vng_id\n      oceanSparkClusterId: cluster_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"oceanSparkClusterId":{"type":"string"},"virtualNodeGroupId":{"type":"string"}},"required":["oceanSparkClusterId","virtualNodeGroupId"],"inputProperties":{"oceanSparkClusterId":{"type":"string","willReplaceOnChanges":true},"virtualNodeGroupId":{"type":"string"}},"requiredInputs":["oceanSparkClusterId","virtualNodeGroupId"],"stateInputs":{"description":"Input properties used for looking up and filtering OceanVirtualNodeGroup resources.\n","properties":{"oceanSparkClusterId":{"type":"string","willReplaceOnChanges":true},"virtualNodeGroupId":{"type":"string"}},"type":"object"}}},"functions":{"pulumi:providers:spotinst/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:spotinst/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}