packages feed

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

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

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

module Stratosphere.ResourceProperties.AppMeshRouteWeightedTarget where

import Stratosphere.ResourceImports


-- | Full data type definition for AppMeshRouteWeightedTarget. See
-- 'appMeshRouteWeightedTarget' for a more convenient constructor.
data AppMeshRouteWeightedTarget =
  AppMeshRouteWeightedTarget
  { _appMeshRouteWeightedTargetVirtualNode :: Val Text
  , _appMeshRouteWeightedTargetWeight :: Val Integer
  } deriving (Show, Eq)

instance ToJSON AppMeshRouteWeightedTarget where
  toJSON AppMeshRouteWeightedTarget{..} =
    object $
    catMaybes
    [ (Just . ("VirtualNode",) . toJSON) _appMeshRouteWeightedTargetVirtualNode
    , (Just . ("Weight",) . toJSON) _appMeshRouteWeightedTargetWeight
    ]

-- | Constructor for 'AppMeshRouteWeightedTarget' containing required fields
-- as arguments.
appMeshRouteWeightedTarget
  :: Val Text -- ^ 'amrwtVirtualNode'
  -> Val Integer -- ^ 'amrwtWeight'
  -> AppMeshRouteWeightedTarget
appMeshRouteWeightedTarget virtualNodearg weightarg =
  AppMeshRouteWeightedTarget
  { _appMeshRouteWeightedTargetVirtualNode = virtualNodearg
  , _appMeshRouteWeightedTargetWeight = weightarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-weightedtarget.html#cfn-appmesh-route-weightedtarget-virtualnode
amrwtVirtualNode :: Lens' AppMeshRouteWeightedTarget (Val Text)
amrwtVirtualNode = lens _appMeshRouteWeightedTargetVirtualNode (\s a -> s { _appMeshRouteWeightedTargetVirtualNode = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-weightedtarget.html#cfn-appmesh-route-weightedtarget-weight
amrwtWeight :: Lens' AppMeshRouteWeightedTarget (Val Integer)
amrwtWeight = lens _appMeshRouteWeightedTargetWeight (\s a -> s { _appMeshRouteWeightedTargetWeight = a })