packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/AppMeshRoute.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html

module Stratosphere.Resources.AppMeshRoute where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppMeshRouteRouteSpec
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for AppMeshRoute. See 'appMeshRoute' for a more
-- convenient constructor.
data AppMeshRoute =
  AppMeshRoute
  { _appMeshRouteMeshName :: Val Text
  , _appMeshRouteMeshOwner :: Maybe (Val Text)
  , _appMeshRouteRouteName :: Val Text
  , _appMeshRouteSpec :: AppMeshRouteRouteSpec
  , _appMeshRouteTags :: Maybe [Tag]
  , _appMeshRouteVirtualRouterName :: Val Text
  } deriving (Show, Eq)

instance ToResourceProperties AppMeshRoute where
  toResourceProperties AppMeshRoute{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::AppMesh::Route"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ (Just . ("MeshName",) . toJSON) _appMeshRouteMeshName
        , fmap (("MeshOwner",) . toJSON) _appMeshRouteMeshOwner
        , (Just . ("RouteName",) . toJSON) _appMeshRouteRouteName
        , (Just . ("Spec",) . toJSON) _appMeshRouteSpec
        , fmap (("Tags",) . toJSON) _appMeshRouteTags
        , (Just . ("VirtualRouterName",) . toJSON) _appMeshRouteVirtualRouterName
        ]
    }

-- | Constructor for 'AppMeshRoute' containing required fields as arguments.
appMeshRoute
  :: Val Text -- ^ 'amrMeshName'
  -> Val Text -- ^ 'amrRouteName'
  -> AppMeshRouteRouteSpec -- ^ 'amrSpec'
  -> Val Text -- ^ 'amrVirtualRouterName'
  -> AppMeshRoute
appMeshRoute meshNamearg routeNamearg specarg virtualRouterNamearg =
  AppMeshRoute
  { _appMeshRouteMeshName = meshNamearg
  , _appMeshRouteMeshOwner = Nothing
  , _appMeshRouteRouteName = routeNamearg
  , _appMeshRouteSpec = specarg
  , _appMeshRouteTags = Nothing
  , _appMeshRouteVirtualRouterName = virtualRouterNamearg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html#cfn-appmesh-route-meshname
amrMeshName :: Lens' AppMeshRoute (Val Text)
amrMeshName = lens _appMeshRouteMeshName (\s a -> s { _appMeshRouteMeshName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html#cfn-appmesh-route-meshowner
amrMeshOwner :: Lens' AppMeshRoute (Maybe (Val Text))
amrMeshOwner = lens _appMeshRouteMeshOwner (\s a -> s { _appMeshRouteMeshOwner = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html#cfn-appmesh-route-routename
amrRouteName :: Lens' AppMeshRoute (Val Text)
amrRouteName = lens _appMeshRouteRouteName (\s a -> s { _appMeshRouteRouteName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html#cfn-appmesh-route-spec
amrSpec :: Lens' AppMeshRoute AppMeshRouteRouteSpec
amrSpec = lens _appMeshRouteSpec (\s a -> s { _appMeshRouteSpec = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html#cfn-appmesh-route-tags
amrTags :: Lens' AppMeshRoute (Maybe [Tag])
amrTags = lens _appMeshRouteTags (\s a -> s { _appMeshRouteTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appmesh-route.html#cfn-appmesh-route-virtualroutername
amrVirtualRouterName :: Lens' AppMeshRoute (Val Text)
amrVirtualRouterName = lens _appMeshRouteVirtualRouterName (\s a -> s { _appMeshRouteVirtualRouterName = a })