packages feed

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

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}

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

module Stratosphere.Resources.OpsWorksInstance where

import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics

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, Generic)

instance ToJSON OpsWorksInstance where
  toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True }

instance FromJSON OpsWorksInstance where
  parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 17, omitNothingFields = True }

-- | 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 })