stratosphere-0.4.1: library-gen/Stratosphere/Resources/ElasticsearchDomain.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html
module Stratosphere.Resources.ElasticsearchDomain 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.ElasticsearchDomainEBSOptions
import Stratosphere.ResourceProperties.ElasticsearchDomainElasticsearchClusterConfig
import Stratosphere.ResourceProperties.ElasticsearchDomainSnapshotOptions
import Stratosphere.ResourceProperties.Tag
-- | Full data type definition for ElasticsearchDomain. See
-- | 'elasticsearchDomain' for a more convenient constructor.
data ElasticsearchDomain =
ElasticsearchDomain
{ _elasticsearchDomainAccessPolicies :: Maybe Object
, _elasticsearchDomainAdvancedOptions :: Maybe Object
, _elasticsearchDomainDomainName :: Maybe (Val Text)
, _elasticsearchDomainEBSOptions :: Maybe ElasticsearchDomainEBSOptions
, _elasticsearchDomainElasticsearchClusterConfig :: Maybe ElasticsearchDomainElasticsearchClusterConfig
, _elasticsearchDomainElasticsearchVersion :: Maybe (Val Text)
, _elasticsearchDomainSnapshotOptions :: Maybe ElasticsearchDomainSnapshotOptions
, _elasticsearchDomainTags :: Maybe [Tag]
} deriving (Show, Eq)
instance ToJSON ElasticsearchDomain where
toJSON ElasticsearchDomain{..} =
object $
catMaybes
[ ("AccessPolicies" .=) <$> _elasticsearchDomainAccessPolicies
, ("AdvancedOptions" .=) <$> _elasticsearchDomainAdvancedOptions
, ("DomainName" .=) <$> _elasticsearchDomainDomainName
, ("EBSOptions" .=) <$> _elasticsearchDomainEBSOptions
, ("ElasticsearchClusterConfig" .=) <$> _elasticsearchDomainElasticsearchClusterConfig
, ("ElasticsearchVersion" .=) <$> _elasticsearchDomainElasticsearchVersion
, ("SnapshotOptions" .=) <$> _elasticsearchDomainSnapshotOptions
, ("Tags" .=) <$> _elasticsearchDomainTags
]
instance FromJSON ElasticsearchDomain where
parseJSON (Object obj) =
ElasticsearchDomain <$>
obj .:? "AccessPolicies" <*>
obj .:? "AdvancedOptions" <*>
obj .:? "DomainName" <*>
obj .:? "EBSOptions" <*>
obj .:? "ElasticsearchClusterConfig" <*>
obj .:? "ElasticsearchVersion" <*>
obj .:? "SnapshotOptions" <*>
obj .:? "Tags"
parseJSON _ = mempty
-- | Constructor for 'ElasticsearchDomain' containing required fields as
-- | arguments.
elasticsearchDomain
:: ElasticsearchDomain
elasticsearchDomain =
ElasticsearchDomain
{ _elasticsearchDomainAccessPolicies = Nothing
, _elasticsearchDomainAdvancedOptions = Nothing
, _elasticsearchDomainDomainName = Nothing
, _elasticsearchDomainEBSOptions = Nothing
, _elasticsearchDomainElasticsearchClusterConfig = Nothing
, _elasticsearchDomainElasticsearchVersion = Nothing
, _elasticsearchDomainSnapshotOptions = Nothing
, _elasticsearchDomainTags = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-accesspolicies
edAccessPolicies :: Lens' ElasticsearchDomain (Maybe Object)
edAccessPolicies = lens _elasticsearchDomainAccessPolicies (\s a -> s { _elasticsearchDomainAccessPolicies = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-advancedoptions
edAdvancedOptions :: Lens' ElasticsearchDomain (Maybe Object)
edAdvancedOptions = lens _elasticsearchDomainAdvancedOptions (\s a -> s { _elasticsearchDomainAdvancedOptions = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-domainname
edDomainName :: Lens' ElasticsearchDomain (Maybe (Val Text))
edDomainName = lens _elasticsearchDomainDomainName (\s a -> s { _elasticsearchDomainDomainName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-ebsoptions
edEBSOptions :: Lens' ElasticsearchDomain (Maybe ElasticsearchDomainEBSOptions)
edEBSOptions = lens _elasticsearchDomainEBSOptions (\s a -> s { _elasticsearchDomainEBSOptions = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchclusterconfig
edElasticsearchClusterConfig :: Lens' ElasticsearchDomain (Maybe ElasticsearchDomainElasticsearchClusterConfig)
edElasticsearchClusterConfig = lens _elasticsearchDomainElasticsearchClusterConfig (\s a -> s { _elasticsearchDomainElasticsearchClusterConfig = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchversion
edElasticsearchVersion :: Lens' ElasticsearchDomain (Maybe (Val Text))
edElasticsearchVersion = lens _elasticsearchDomainElasticsearchVersion (\s a -> s { _elasticsearchDomainElasticsearchVersion = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-snapshotoptions
edSnapshotOptions :: Lens' ElasticsearchDomain (Maybe ElasticsearchDomainSnapshotOptions)
edSnapshotOptions = lens _elasticsearchDomainSnapshotOptions (\s a -> s { _elasticsearchDomainSnapshotOptions = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-tags
edTags :: Lens' ElasticsearchDomain (Maybe [Tag])
edTags = lens _elasticsearchDomainTags (\s a -> s { _elasticsearchDomainTags = a })