packages feed

stratosphere-0.36.0: library-gen/Stratosphere/ResourceProperties/AppMeshVirtualNodeVirtualNodeSpec.hs

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

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

module Stratosphere.ResourceProperties.AppMeshVirtualNodeVirtualNodeSpec where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppMeshVirtualNodeBackend
import Stratosphere.ResourceProperties.AppMeshVirtualNodeListener
import Stratosphere.ResourceProperties.AppMeshVirtualNodeLogging
import Stratosphere.ResourceProperties.AppMeshVirtualNodeServiceDiscovery

-- | Full data type definition for AppMeshVirtualNodeVirtualNodeSpec. See
-- 'appMeshVirtualNodeVirtualNodeSpec' for a more convenient constructor.
data AppMeshVirtualNodeVirtualNodeSpec =
  AppMeshVirtualNodeVirtualNodeSpec
  { _appMeshVirtualNodeVirtualNodeSpecBackends :: Maybe [AppMeshVirtualNodeBackend]
  , _appMeshVirtualNodeVirtualNodeSpecListeners :: Maybe [AppMeshVirtualNodeListener]
  , _appMeshVirtualNodeVirtualNodeSpecLogging :: Maybe AppMeshVirtualNodeLogging
  , _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery :: Maybe AppMeshVirtualNodeServiceDiscovery
  } deriving (Show, Eq)

instance ToJSON AppMeshVirtualNodeVirtualNodeSpec where
  toJSON AppMeshVirtualNodeVirtualNodeSpec{..} =
    object $
    catMaybes
    [ fmap (("Backends",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecBackends
    , fmap (("Listeners",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecListeners
    , fmap (("Logging",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecLogging
    , fmap (("ServiceDiscovery",) . toJSON) _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery
    ]

-- | Constructor for 'AppMeshVirtualNodeVirtualNodeSpec' containing required
-- fields as arguments.
appMeshVirtualNodeVirtualNodeSpec
  :: AppMeshVirtualNodeVirtualNodeSpec
appMeshVirtualNodeVirtualNodeSpec  =
  AppMeshVirtualNodeVirtualNodeSpec
  { _appMeshVirtualNodeVirtualNodeSpecBackends = Nothing
  , _appMeshVirtualNodeVirtualNodeSpecListeners = Nothing
  , _appMeshVirtualNodeVirtualNodeSpecLogging = Nothing
  , _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html#cfn-appmesh-virtualnode-virtualnodespec-backends
amvnvnsBackends :: Lens' AppMeshVirtualNodeVirtualNodeSpec (Maybe [AppMeshVirtualNodeBackend])
amvnvnsBackends = lens _appMeshVirtualNodeVirtualNodeSpecBackends (\s a -> s { _appMeshVirtualNodeVirtualNodeSpecBackends = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html#cfn-appmesh-virtualnode-virtualnodespec-listeners
amvnvnsListeners :: Lens' AppMeshVirtualNodeVirtualNodeSpec (Maybe [AppMeshVirtualNodeListener])
amvnvnsListeners = lens _appMeshVirtualNodeVirtualNodeSpecListeners (\s a -> s { _appMeshVirtualNodeVirtualNodeSpecListeners = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html#cfn-appmesh-virtualnode-virtualnodespec-logging
amvnvnsLogging :: Lens' AppMeshVirtualNodeVirtualNodeSpec (Maybe AppMeshVirtualNodeLogging)
amvnvnsLogging = lens _appMeshVirtualNodeVirtualNodeSpecLogging (\s a -> s { _appMeshVirtualNodeVirtualNodeSpecLogging = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html#cfn-appmesh-virtualnode-virtualnodespec-servicediscovery
amvnvnsServiceDiscovery :: Lens' AppMeshVirtualNodeVirtualNodeSpec (Maybe AppMeshVirtualNodeServiceDiscovery)
amvnvnsServiceDiscovery = lens _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery (\s a -> s { _appMeshVirtualNodeVirtualNodeSpecServiceDiscovery = a })