packages feed

stratosphere-0.40.0: library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeAwsCloudMapServiceDiscovery.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-awscloudmapservicediscovery.html

module Stratosphere.ResourceProperties.AppMeshVirtualNodeAwsCloudMapServiceDiscovery where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppMeshVirtualNodeAwsCloudMapInstanceAttribute

-- | Full data type definition for
-- AppMeshVirtualNodeAwsCloudMapServiceDiscovery. See
-- 'appMeshVirtualNodeAwsCloudMapServiceDiscovery' for a more convenient
-- constructor.
data AppMeshVirtualNodeAwsCloudMapServiceDiscovery =
  AppMeshVirtualNodeAwsCloudMapServiceDiscovery
  { _appMeshVirtualNodeAwsCloudMapServiceDiscoveryAttributes :: Maybe [AppMeshVirtualNodeAwsCloudMapInstanceAttribute]
  , _appMeshVirtualNodeAwsCloudMapServiceDiscoveryNamespaceName :: Val Text
  , _appMeshVirtualNodeAwsCloudMapServiceDiscoveryServiceName :: Val Text
  } deriving (Show, Eq)

instance ToJSON AppMeshVirtualNodeAwsCloudMapServiceDiscovery where
  toJSON AppMeshVirtualNodeAwsCloudMapServiceDiscovery{..} =
    object $
    catMaybes
    [ fmap (("Attributes",) . toJSON) _appMeshVirtualNodeAwsCloudMapServiceDiscoveryAttributes
    , (Just . ("NamespaceName",) . toJSON) _appMeshVirtualNodeAwsCloudMapServiceDiscoveryNamespaceName
    , (Just . ("ServiceName",) . toJSON) _appMeshVirtualNodeAwsCloudMapServiceDiscoveryServiceName
    ]

-- | Constructor for 'AppMeshVirtualNodeAwsCloudMapServiceDiscovery'
-- containing required fields as arguments.
appMeshVirtualNodeAwsCloudMapServiceDiscovery
  :: Val Text -- ^ 'amvnacmsdNamespaceName'
  -> Val Text -- ^ 'amvnacmsdServiceName'
  -> AppMeshVirtualNodeAwsCloudMapServiceDiscovery
appMeshVirtualNodeAwsCloudMapServiceDiscovery namespaceNamearg serviceNamearg =
  AppMeshVirtualNodeAwsCloudMapServiceDiscovery
  { _appMeshVirtualNodeAwsCloudMapServiceDiscoveryAttributes = Nothing
  , _appMeshVirtualNodeAwsCloudMapServiceDiscoveryNamespaceName = namespaceNamearg
  , _appMeshVirtualNodeAwsCloudMapServiceDiscoveryServiceName = serviceNamearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-awscloudmapservicediscovery.html#cfn-appmesh-virtualnode-awscloudmapservicediscovery-attributes
amvnacmsdAttributes :: Lens' AppMeshVirtualNodeAwsCloudMapServiceDiscovery (Maybe [AppMeshVirtualNodeAwsCloudMapInstanceAttribute])
amvnacmsdAttributes = lens _appMeshVirtualNodeAwsCloudMapServiceDiscoveryAttributes (\s a -> s { _appMeshVirtualNodeAwsCloudMapServiceDiscoveryAttributes = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-awscloudmapservicediscovery.html#cfn-appmesh-virtualnode-awscloudmapservicediscovery-namespacename
amvnacmsdNamespaceName :: Lens' AppMeshVirtualNodeAwsCloudMapServiceDiscovery (Val Text)
amvnacmsdNamespaceName = lens _appMeshVirtualNodeAwsCloudMapServiceDiscoveryNamespaceName (\s a -> s { _appMeshVirtualNodeAwsCloudMapServiceDiscoveryNamespaceName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-awscloudmapservicediscovery.html#cfn-appmesh-virtualnode-awscloudmapservicediscovery-servicename
amvnacmsdServiceName :: Lens' AppMeshVirtualNodeAwsCloudMapServiceDiscovery (Val Text)
amvnacmsdServiceName = lens _appMeshVirtualNodeAwsCloudMapServiceDiscoveryServiceName (\s a -> s { _appMeshVirtualNodeAwsCloudMapServiceDiscoveryServiceName = a })