Source code for troposphere.opsworks

# Copyright (c) 2012-2024, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***


from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, double, integer
from .validators.opsworks import (
    validate_block_device_mapping,
    validate_data_source_type,
    validate_json_checker,
    validate_stack,
    validate_tags_or_list,
    validate_volume_configuration,
    validate_volume_type,
)


[docs]class DataSource(AWSProperty): """ `DataSource <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-datasource.html>`__ """ props: PropsDictType = { "Arn": (str, False), "DatabaseName": (str, False), "Type": (validate_data_source_type, False), }
[docs]class Environment(AWSProperty): """ `Environment <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-environment.html>`__ """ props: PropsDictType = { "Key": (str, True), "Secure": (boolean, False), "Value": (str, True), }
[docs]class Source(AWSProperty): """ `Source <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-source.html>`__ """ props: PropsDictType = { "Password": (str, False), "Revision": (str, False), "SshKey": (str, False), "Type": (str, False), "Url": (str, False), "Username": (str, False), }
[docs]class SslConfiguration(AWSProperty): """ `SslConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-app-sslconfiguration.html>`__ """ props: PropsDictType = { "Certificate": (str, False), "Chain": (str, False), "PrivateKey": (str, False), }
[docs]class App(AWSObject): """ `App <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-app.html>`__ """ resource_type = "AWS::OpsWorks::App" props: PropsDictType = { "AppSource": (Source, False), "Attributes": (dict, False), "DataSources": ([DataSource], False), "Description": (str, False), "Domains": ([str], False), "EnableSsl": (boolean, False), "Environment": ([Environment], False), "Name": (str, True), "Shortname": (str, False), "SslConfiguration": (SslConfiguration, False), "StackId": (str, True), "Type": (str, True), }
[docs]class ElasticLoadBalancerAttachment(AWSObject): """ `ElasticLoadBalancerAttachment <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-elbattachment.html>`__ """ resource_type = "AWS::OpsWorks::ElasticLoadBalancerAttachment" props: PropsDictType = { "ElasticLoadBalancerName": (str, True), "LayerId": (str, True), }
[docs]class EbsBlockDevice(AWSProperty): """ `EbsBlockDevice <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-ebsblockdevice.html>`__ """ props: PropsDictType = { "DeleteOnTermination": (boolean, False), "Iops": (integer, False), "SnapshotId": (str, False), "VolumeSize": (integer, False), "VolumeType": (str, False), }
[docs]class BlockDeviceMapping(AWSProperty): """ `BlockDeviceMapping <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-blockdevicemapping.html>`__ """ props: PropsDictType = { "DeviceName": (str, False), "Ebs": (EbsBlockDevice, False), "NoDevice": (str, False), "VirtualName": (str, False), }
[docs] def validate(self): validate_block_device_mapping(self)
[docs]class TimeBasedAutoScaling(AWSProperty): """ `TimeBasedAutoScaling <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-instance-timebasedautoscaling.html>`__ """ props: PropsDictType = { "Friday": (dict, False), "Monday": (dict, False), "Saturday": (dict, False), "Sunday": (dict, False), "Thursday": (dict, False), "Tuesday": (dict, False), "Wednesday": (dict, False), }
[docs]class Instance(AWSObject): """ `Instance <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html>`__ """ resource_type = "AWS::OpsWorks::Instance" props: PropsDictType = { "AgentVersion": (str, False), "AmiId": (str, False), "Architecture": (str, False), "AutoScalingType": (str, False), "AvailabilityZone": (str, False), "BlockDeviceMappings": ([BlockDeviceMapping], False), "EbsOptimized": (boolean, False), "ElasticIps": ([str], False), "Hostname": (str, False), "InstallUpdatesOnBoot": (boolean, False), "InstanceType": (str, True), "LayerIds": ([str], True), "Os": (str, False), "RootDeviceType": (str, False), "SshKeyName": (str, False), "StackId": (str, True), "SubnetId": (str, False), "Tenancy": (str, False), "TimeBasedAutoScaling": (TimeBasedAutoScaling, False), "VirtualizationType": (str, False), "Volumes": ([str], False), }
[docs]class ShutdownEventConfiguration(AWSProperty): """ `ShutdownEventConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration-shutdowneventconfiguration.html>`__ """ props: PropsDictType = { "DelayUntilElbConnectionsDrained": (boolean, False), "ExecutionTimeout": (integer, False), }
[docs]class LifeCycleConfiguration(AWSProperty): """ `LifeCycleConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-lifecycleeventconfiguration.html>`__ """ props: PropsDictType = { "ShutdownEventConfiguration": (ShutdownEventConfiguration, False), }
[docs]class AutoScalingThresholds(AWSProperty): """ `AutoScalingThresholds <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling-autoscalingthresholds.html>`__ """ props: PropsDictType = { "CpuThreshold": (double, False), "IgnoreMetricsTime": (integer, False), "InstanceCount": (integer, False), "LoadThreshold": (double, False), "MemoryThreshold": (double, False), "ThresholdsWaitTime": (integer, False), }
[docs]class LoadBasedAutoScaling(AWSProperty): """ `LoadBasedAutoScaling <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-loadbasedautoscaling.html>`__ """ props: PropsDictType = { "DownScaling": (AutoScalingThresholds, False), "Enable": (boolean, False), "UpScaling": (AutoScalingThresholds, False), }
[docs]class Recipes(AWSProperty): """ `Recipes <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-recipes.html>`__ """ props: PropsDictType = { "Configure": ([str], False), "Deploy": ([str], False), "Setup": ([str], False), "Shutdown": ([str], False), "Undeploy": ([str], False), }
[docs]class VolumeConfiguration(AWSProperty): """ `VolumeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-layer-volumeconfiguration.html>`__ """ props: PropsDictType = { "Encrypted": (boolean, False), "Iops": (integer, False), "MountPoint": (str, False), "NumberOfDisks": (integer, False), "RaidLevel": (integer, False), "Size": (integer, False), "VolumeType": (validate_volume_type, False), }
[docs] def validate(self): validate_volume_configuration(self)
[docs]class Layer(AWSObject): """ `Layer <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-layer.html>`__ """ resource_type = "AWS::OpsWorks::Layer" props: PropsDictType = { "Attributes": (dict, False), "AutoAssignElasticIps": (boolean, True), "AutoAssignPublicIps": (boolean, True), "CustomInstanceProfileArn": (str, False), "CustomJson": (validate_json_checker, False), "CustomRecipes": (Recipes, False), "CustomSecurityGroupIds": ([str], False), "EnableAutoHealing": (boolean, True), "InstallUpdatesOnBoot": (boolean, False), "LifecycleEventConfiguration": (LifeCycleConfiguration, False), "LoadBasedAutoScaling": (LoadBasedAutoScaling, False), "Name": (str, True), "Packages": ([str], False), "Shortname": (str, True), "StackId": (str, True), "Tags": (Tags, False), "Type": (str, True), "UseEbsOptimizedInstances": (boolean, False), "VolumeConfigurations": ([VolumeConfiguration], False), }
[docs]class ChefConfiguration(AWSProperty): """ `ChefConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-chefconfiguration.html>`__ """ props: PropsDictType = { "BerkshelfVersion": (str, False), "ManageBerkshelf": (boolean, False), }
[docs]class ElasticIp(AWSProperty): """ `ElasticIp <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-elasticip.html>`__ """ props: PropsDictType = { "Ip": (str, True), "Name": (str, False), }
[docs]class RdsDbInstance(AWSProperty): """ `RdsDbInstance <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-rdsdbinstance.html>`__ """ props: PropsDictType = { "DbPassword": (str, True), "DbUser": (str, True), "RdsDbInstanceArn": (str, True), }
[docs]class StackConfigurationManager(AWSProperty): """ `StackConfigurationManager <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-opsworks-stack-stackconfigmanager.html>`__ """ props: PropsDictType = { "Name": (str, False), "Version": (str, False), }
[docs]class Stack(AWSObject): """ `Stack <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html>`__ """ resource_type = "AWS::OpsWorks::Stack" props: PropsDictType = { "AgentVersion": (str, False), "Attributes": (dict, False), "ChefConfiguration": (ChefConfiguration, False), "CloneAppIds": ([str], False), "ClonePermissions": (boolean, False), "ConfigurationManager": (StackConfigurationManager, False), "CustomCookbooksSource": (Source, False), "CustomJson": (validate_json_checker, False), "DefaultAvailabilityZone": (str, False), "DefaultInstanceProfileArn": (str, True), "DefaultOs": (str, False), "DefaultRootDeviceType": (str, False), "DefaultSshKeyName": (str, False), "DefaultSubnetId": (str, False), "EcsClusterArn": (str, False), "ElasticIps": ([ElasticIp], False), "HostnameTheme": (str, False), "Name": (str, True), "RdsDbInstances": ([RdsDbInstance], False), "ServiceRoleArn": (str, True), "SourceStackId": (str, False), "Tags": (validate_tags_or_list, False), "UseCustomCookbooks": (boolean, False), "UseOpsworksSecurityGroups": (boolean, False), "VpcId": (str, False), }
[docs] def validate(self): validate_stack(self)
[docs]class UserProfile(AWSObject): """ `UserProfile <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-userprofile.html>`__ """ resource_type = "AWS::OpsWorks::UserProfile" props: PropsDictType = { "AllowSelfManagement": (boolean, False), "IamUserArn": (str, True), "SshPublicKey": (str, False), "SshUsername": (str, False), }
[docs]class Volume(AWSObject): """ `Volume <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-volume.html>`__ """ resource_type = "AWS::OpsWorks::Volume" props: PropsDictType = { "Ec2VolumeId": (str, True), "MountPoint": (str, False), "Name": (str, False), "StackId": (str, True), }