packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/OpsWorksInstance.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html

module Stratosphere.Resources.OpsWorksInstance where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.OpsWorksInstanceBlockDeviceMapping
import Stratosphere.ResourceProperties.OpsWorksInstanceTimeBasedAutoScaling

-- | Full data type definition for OpsWorksInstance. See 'opsWorksInstance'
-- for a more convenient constructor.
data OpsWorksInstance =
  OpsWorksInstance
  { _opsWorksInstanceAgentVersion :: Maybe (Val Text)
  , _opsWorksInstanceAmiId :: Maybe (Val Text)
  , _opsWorksInstanceArchitecture :: Maybe (Val Text)
  , _opsWorksInstanceAutoScalingType :: Maybe (Val Text)
  , _opsWorksInstanceAvailabilityZone :: Maybe (Val Text)
  , _opsWorksInstanceBlockDeviceMappings :: Maybe [OpsWorksInstanceBlockDeviceMapping]
  , _opsWorksInstanceEbsOptimized :: Maybe (Val Bool)
  , _opsWorksInstanceElasticIps :: Maybe (ValList Text)
  , _opsWorksInstanceHostname :: Maybe (Val Text)
  , _opsWorksInstanceInstallUpdatesOnBoot :: Maybe (Val Bool)
  , _opsWorksInstanceInstanceType :: Val Text
  , _opsWorksInstanceLayerIds :: ValList Text
  , _opsWorksInstanceOs :: Maybe (Val Text)
  , _opsWorksInstanceRootDeviceType :: Maybe (Val Text)
  , _opsWorksInstanceSshKeyName :: Maybe (Val Text)
  , _opsWorksInstanceStackId :: Val Text
  , _opsWorksInstanceSubnetId :: Maybe (Val Text)
  , _opsWorksInstanceTenancy :: Maybe (Val Text)
  , _opsWorksInstanceTimeBasedAutoScaling :: Maybe OpsWorksInstanceTimeBasedAutoScaling
  , _opsWorksInstanceVirtualizationType :: Maybe (Val Text)
  , _opsWorksInstanceVolumes :: Maybe (ValList Text)
  } deriving (Show, Eq)

instance ToResourceProperties OpsWorksInstance where
  toResourceProperties OpsWorksInstance{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::OpsWorks::Instance"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ fmap (("AgentVersion",) . toJSON) _opsWorksInstanceAgentVersion
        , fmap (("AmiId",) . toJSON) _opsWorksInstanceAmiId
        , fmap (("Architecture",) . toJSON) _opsWorksInstanceArchitecture
        , fmap (("AutoScalingType",) . toJSON) _opsWorksInstanceAutoScalingType
        , fmap (("AvailabilityZone",) . toJSON) _opsWorksInstanceAvailabilityZone
        , fmap (("BlockDeviceMappings",) . toJSON) _opsWorksInstanceBlockDeviceMappings
        , fmap (("EbsOptimized",) . toJSON) _opsWorksInstanceEbsOptimized
        , fmap (("ElasticIps",) . toJSON) _opsWorksInstanceElasticIps
        , fmap (("Hostname",) . toJSON) _opsWorksInstanceHostname
        , fmap (("InstallUpdatesOnBoot",) . toJSON) _opsWorksInstanceInstallUpdatesOnBoot
        , (Just . ("InstanceType",) . toJSON) _opsWorksInstanceInstanceType
        , (Just . ("LayerIds",) . toJSON) _opsWorksInstanceLayerIds
        , fmap (("Os",) . toJSON) _opsWorksInstanceOs
        , fmap (("RootDeviceType",) . toJSON) _opsWorksInstanceRootDeviceType
        , fmap (("SshKeyName",) . toJSON) _opsWorksInstanceSshKeyName
        , (Just . ("StackId",) . toJSON) _opsWorksInstanceStackId
        , fmap (("SubnetId",) . toJSON) _opsWorksInstanceSubnetId
        , fmap (("Tenancy",) . toJSON) _opsWorksInstanceTenancy
        , fmap (("TimeBasedAutoScaling",) . toJSON) _opsWorksInstanceTimeBasedAutoScaling
        , fmap (("VirtualizationType",) . toJSON) _opsWorksInstanceVirtualizationType
        , fmap (("Volumes",) . toJSON) _opsWorksInstanceVolumes
        ]
    }

-- | Constructor for 'OpsWorksInstance' containing required fields as
-- arguments.
opsWorksInstance
  :: Val Text -- ^ 'owiInstanceType'
  -> ValList Text -- ^ 'owiLayerIds'
  -> Val Text -- ^ 'owiStackId'
  -> OpsWorksInstance
opsWorksInstance instanceTypearg layerIdsarg stackIdarg =
  OpsWorksInstance
  { _opsWorksInstanceAgentVersion = Nothing
  , _opsWorksInstanceAmiId = Nothing
  , _opsWorksInstanceArchitecture = Nothing
  , _opsWorksInstanceAutoScalingType = Nothing
  , _opsWorksInstanceAvailabilityZone = Nothing
  , _opsWorksInstanceBlockDeviceMappings = Nothing
  , _opsWorksInstanceEbsOptimized = Nothing
  , _opsWorksInstanceElasticIps = Nothing
  , _opsWorksInstanceHostname = Nothing
  , _opsWorksInstanceInstallUpdatesOnBoot = Nothing
  , _opsWorksInstanceInstanceType = instanceTypearg
  , _opsWorksInstanceLayerIds = layerIdsarg
  , _opsWorksInstanceOs = Nothing
  , _opsWorksInstanceRootDeviceType = Nothing
  , _opsWorksInstanceSshKeyName = Nothing
  , _opsWorksInstanceStackId = stackIdarg
  , _opsWorksInstanceSubnetId = Nothing
  , _opsWorksInstanceTenancy = Nothing
  , _opsWorksInstanceTimeBasedAutoScaling = Nothing
  , _opsWorksInstanceVirtualizationType = Nothing
  , _opsWorksInstanceVolumes = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-agentversion
owiAgentVersion :: Lens' OpsWorksInstance (Maybe (Val Text))
owiAgentVersion = lens _opsWorksInstanceAgentVersion (\s a -> s { _opsWorksInstanceAgentVersion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-amiid
owiAmiId :: Lens' OpsWorksInstance (Maybe (Val Text))
owiAmiId = lens _opsWorksInstanceAmiId (\s a -> s { _opsWorksInstanceAmiId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-architecture
owiArchitecture :: Lens' OpsWorksInstance (Maybe (Val Text))
owiArchitecture = lens _opsWorksInstanceArchitecture (\s a -> s { _opsWorksInstanceArchitecture = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-autoscalingtype
owiAutoScalingType :: Lens' OpsWorksInstance (Maybe (Val Text))
owiAutoScalingType = lens _opsWorksInstanceAutoScalingType (\s a -> s { _opsWorksInstanceAutoScalingType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-availabilityzone
owiAvailabilityZone :: Lens' OpsWorksInstance (Maybe (Val Text))
owiAvailabilityZone = lens _opsWorksInstanceAvailabilityZone (\s a -> s { _opsWorksInstanceAvailabilityZone = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-blockdevicemappings
owiBlockDeviceMappings :: Lens' OpsWorksInstance (Maybe [OpsWorksInstanceBlockDeviceMapping])
owiBlockDeviceMappings = lens _opsWorksInstanceBlockDeviceMappings (\s a -> s { _opsWorksInstanceBlockDeviceMappings = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-ebsoptimized
owiEbsOptimized :: Lens' OpsWorksInstance (Maybe (Val Bool))
owiEbsOptimized = lens _opsWorksInstanceEbsOptimized (\s a -> s { _opsWorksInstanceEbsOptimized = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-elasticips
owiElasticIps :: Lens' OpsWorksInstance (Maybe (ValList Text))
owiElasticIps = lens _opsWorksInstanceElasticIps (\s a -> s { _opsWorksInstanceElasticIps = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-hostname
owiHostname :: Lens' OpsWorksInstance (Maybe (Val Text))
owiHostname = lens _opsWorksInstanceHostname (\s a -> s { _opsWorksInstanceHostname = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-installupdatesonboot
owiInstallUpdatesOnBoot :: Lens' OpsWorksInstance (Maybe (Val Bool))
owiInstallUpdatesOnBoot = lens _opsWorksInstanceInstallUpdatesOnBoot (\s a -> s { _opsWorksInstanceInstallUpdatesOnBoot = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-instancetype
owiInstanceType :: Lens' OpsWorksInstance (Val Text)
owiInstanceType = lens _opsWorksInstanceInstanceType (\s a -> s { _opsWorksInstanceInstanceType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-layerids
owiLayerIds :: Lens' OpsWorksInstance (ValList Text)
owiLayerIds = lens _opsWorksInstanceLayerIds (\s a -> s { _opsWorksInstanceLayerIds = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-os
owiOs :: Lens' OpsWorksInstance (Maybe (Val Text))
owiOs = lens _opsWorksInstanceOs (\s a -> s { _opsWorksInstanceOs = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-rootdevicetype
owiRootDeviceType :: Lens' OpsWorksInstance (Maybe (Val Text))
owiRootDeviceType = lens _opsWorksInstanceRootDeviceType (\s a -> s { _opsWorksInstanceRootDeviceType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-sshkeyname
owiSshKeyName :: Lens' OpsWorksInstance (Maybe (Val Text))
owiSshKeyName = lens _opsWorksInstanceSshKeyName (\s a -> s { _opsWorksInstanceSshKeyName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-stackid
owiStackId :: Lens' OpsWorksInstance (Val Text)
owiStackId = lens _opsWorksInstanceStackId (\s a -> s { _opsWorksInstanceStackId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-subnetid
owiSubnetId :: Lens' OpsWorksInstance (Maybe (Val Text))
owiSubnetId = lens _opsWorksInstanceSubnetId (\s a -> s { _opsWorksInstanceSubnetId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-tenancy
owiTenancy :: Lens' OpsWorksInstance (Maybe (Val Text))
owiTenancy = lens _opsWorksInstanceTenancy (\s a -> s { _opsWorksInstanceTenancy = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-timebasedautoscaling
owiTimeBasedAutoScaling :: Lens' OpsWorksInstance (Maybe OpsWorksInstanceTimeBasedAutoScaling)
owiTimeBasedAutoScaling = lens _opsWorksInstanceTimeBasedAutoScaling (\s a -> s { _opsWorksInstanceTimeBasedAutoScaling = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-virtualizationtype
owiVirtualizationType :: Lens' OpsWorksInstance (Maybe (Val Text))
owiVirtualizationType = lens _opsWorksInstanceVirtualizationType (\s a -> s { _opsWorksInstanceVirtualizationType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html#cfn-opsworks-instance-volumes
owiVolumes :: Lens' OpsWorksInstance (Maybe (ValList Text))
owiVolumes = lens _opsWorksInstanceVolumes (\s a -> s { _opsWorksInstanceVolumes = a })