stratosphere-0.4.2: library-gen/Stratosphere/Resources/OpsWorksInstance.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-instance.html
module Stratosphere.Resources.OpsWorksInstance where
import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text
import Stratosphere.Values
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 [Val Text]
, _opsWorksInstanceHostname :: Maybe (Val Text)
, _opsWorksInstanceInstallUpdatesOnBoot :: Maybe (Val Bool')
, _opsWorksInstanceInstanceType :: Val Text
, _opsWorksInstanceLayerIds :: [Val 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 [Val Text]
} deriving (Show, Eq)
instance ToJSON OpsWorksInstance where
toJSON OpsWorksInstance{..} =
object $
catMaybes
[ ("AgentVersion" .=) <$> _opsWorksInstanceAgentVersion
, ("AmiId" .=) <$> _opsWorksInstanceAmiId
, ("Architecture" .=) <$> _opsWorksInstanceArchitecture
, ("AutoScalingType" .=) <$> _opsWorksInstanceAutoScalingType
, ("AvailabilityZone" .=) <$> _opsWorksInstanceAvailabilityZone
, ("BlockDeviceMappings" .=) <$> _opsWorksInstanceBlockDeviceMappings
, ("EbsOptimized" .=) <$> _opsWorksInstanceEbsOptimized
, ("ElasticIps" .=) <$> _opsWorksInstanceElasticIps
, ("Hostname" .=) <$> _opsWorksInstanceHostname
, ("InstallUpdatesOnBoot" .=) <$> _opsWorksInstanceInstallUpdatesOnBoot
, Just ("InstanceType" .= _opsWorksInstanceInstanceType)
, Just ("LayerIds" .= _opsWorksInstanceLayerIds)
, ("Os" .=) <$> _opsWorksInstanceOs
, ("RootDeviceType" .=) <$> _opsWorksInstanceRootDeviceType
, ("SshKeyName" .=) <$> _opsWorksInstanceSshKeyName
, Just ("StackId" .= _opsWorksInstanceStackId)
, ("SubnetId" .=) <$> _opsWorksInstanceSubnetId
, ("Tenancy" .=) <$> _opsWorksInstanceTenancy
, ("TimeBasedAutoScaling" .=) <$> _opsWorksInstanceTimeBasedAutoScaling
, ("VirtualizationType" .=) <$> _opsWorksInstanceVirtualizationType
, ("Volumes" .=) <$> _opsWorksInstanceVolumes
]
instance FromJSON OpsWorksInstance where
parseJSON (Object obj) =
OpsWorksInstance <$>
obj .:? "AgentVersion" <*>
obj .:? "AmiId" <*>
obj .:? "Architecture" <*>
obj .:? "AutoScalingType" <*>
obj .:? "AvailabilityZone" <*>
obj .:? "BlockDeviceMappings" <*>
obj .:? "EbsOptimized" <*>
obj .:? "ElasticIps" <*>
obj .:? "Hostname" <*>
obj .:? "InstallUpdatesOnBoot" <*>
obj .: "InstanceType" <*>
obj .: "LayerIds" <*>
obj .:? "Os" <*>
obj .:? "RootDeviceType" <*>
obj .:? "SshKeyName" <*>
obj .: "StackId" <*>
obj .:? "SubnetId" <*>
obj .:? "Tenancy" <*>
obj .:? "TimeBasedAutoScaling" <*>
obj .:? "VirtualizationType" <*>
obj .:? "Volumes"
parseJSON _ = mempty
-- | Constructor for 'OpsWorksInstance' containing required fields as
-- arguments.
opsWorksInstance
:: Val Text -- ^ 'owiInstanceType'
-> [Val 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 [Val 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 [Val 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 [Val Text])
owiVolumes = lens _opsWorksInstanceVolumes (\s a -> s { _opsWorksInstanceVolumes = a })