amazonka-codedeploy-0.0.7: gen/Network/AWS/CodeDeploy/UpdateDeploymentGroup.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.CodeDeploy.UpdateDeploymentGroup
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | Changes information about an existing deployment group.
--
-- <http://docs.aws.amazon.com/codedeploy/latest/APIReference/API_UpdateDeploymentGroup.html>
module Network.AWS.CodeDeploy.UpdateDeploymentGroup
(
-- * Request
UpdateDeploymentGroup
-- ** Request constructor
, updateDeploymentGroup
-- ** Request lenses
, udgApplicationName
, udgAutoScalingGroups
, udgCurrentDeploymentGroupName
, udgDeploymentConfigName
, udgEc2TagFilters
, udgNewDeploymentGroupName
, udgServiceRoleArn
-- * Response
, UpdateDeploymentGroupResponse
-- ** Response constructor
, updateDeploymentGroupResponse
-- ** Response lenses
, udgrHooksNotCleanedUp
) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.CodeDeploy.Types
import qualified GHC.Exts
data UpdateDeploymentGroup = UpdateDeploymentGroup
{ _udgApplicationName :: Text
, _udgAutoScalingGroups :: List "autoScalingGroups" Text
, _udgCurrentDeploymentGroupName :: Text
, _udgDeploymentConfigName :: Maybe Text
, _udgEc2TagFilters :: List "ec2TagFilters" EC2TagFilter
, _udgNewDeploymentGroupName :: Maybe Text
, _udgServiceRoleArn :: Maybe Text
} deriving (Eq, Show)
-- | 'UpdateDeploymentGroup' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'udgApplicationName' @::@ 'Text'
--
-- * 'udgAutoScalingGroups' @::@ ['Text']
--
-- * 'udgCurrentDeploymentGroupName' @::@ 'Text'
--
-- * 'udgDeploymentConfigName' @::@ 'Maybe' 'Text'
--
-- * 'udgEc2TagFilters' @::@ ['EC2TagFilter']
--
-- * 'udgNewDeploymentGroupName' @::@ 'Maybe' 'Text'
--
-- * 'udgServiceRoleArn' @::@ 'Maybe' 'Text'
--
updateDeploymentGroup :: Text -- ^ 'udgApplicationName'
-> Text -- ^ 'udgCurrentDeploymentGroupName'
-> UpdateDeploymentGroup
updateDeploymentGroup p1 p2 = UpdateDeploymentGroup
{ _udgApplicationName = p1
, _udgCurrentDeploymentGroupName = p2
, _udgNewDeploymentGroupName = Nothing
, _udgDeploymentConfigName = Nothing
, _udgEc2TagFilters = mempty
, _udgAutoScalingGroups = mempty
, _udgServiceRoleArn = Nothing
}
-- | The application name corresponding to the deployment group to update.
udgApplicationName :: Lens' UpdateDeploymentGroup Text
udgApplicationName =
lens _udgApplicationName (\s a -> s { _udgApplicationName = a })
-- | The replacement list of Auto Scaling groups to be included in the deployment
-- group, if you want to change them.
udgAutoScalingGroups :: Lens' UpdateDeploymentGroup [Text]
udgAutoScalingGroups =
lens _udgAutoScalingGroups (\s a -> s { _udgAutoScalingGroups = a })
. _List
-- | The current name of the existing deployment group.
udgCurrentDeploymentGroupName :: Lens' UpdateDeploymentGroup Text
udgCurrentDeploymentGroupName =
lens _udgCurrentDeploymentGroupName
(\s a -> s { _udgCurrentDeploymentGroupName = a })
-- | The replacement deployment configuration name to use, if you want to change
-- it.
udgDeploymentConfigName :: Lens' UpdateDeploymentGroup (Maybe Text)
udgDeploymentConfigName =
lens _udgDeploymentConfigName (\s a -> s { _udgDeploymentConfigName = a })
-- | The replacement set of Amazon EC2 tags to filter on, if you want to change
-- them.
udgEc2TagFilters :: Lens' UpdateDeploymentGroup [EC2TagFilter]
udgEc2TagFilters = lens _udgEc2TagFilters (\s a -> s { _udgEc2TagFilters = a }) . _List
-- | The new name of the deployment group, if you want to change it.
udgNewDeploymentGroupName :: Lens' UpdateDeploymentGroup (Maybe Text)
udgNewDeploymentGroupName =
lens _udgNewDeploymentGroupName
(\s a -> s { _udgNewDeploymentGroupName = a })
-- | A replacement service role's ARN, if you want to change it.
udgServiceRoleArn :: Lens' UpdateDeploymentGroup (Maybe Text)
udgServiceRoleArn =
lens _udgServiceRoleArn (\s a -> s { _udgServiceRoleArn = a })
newtype UpdateDeploymentGroupResponse = UpdateDeploymentGroupResponse
{ _udgrHooksNotCleanedUp :: List "autoScalingGroups" AutoScalingGroup
} deriving (Eq, Show, Monoid, Semigroup)
instance GHC.Exts.IsList UpdateDeploymentGroupResponse where
type Item UpdateDeploymentGroupResponse = AutoScalingGroup
fromList = UpdateDeploymentGroupResponse . GHC.Exts.fromList
toList = GHC.Exts.toList . _udgrHooksNotCleanedUp
-- | 'UpdateDeploymentGroupResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'udgrHooksNotCleanedUp' @::@ ['AutoScalingGroup']
--
updateDeploymentGroupResponse :: UpdateDeploymentGroupResponse
updateDeploymentGroupResponse = UpdateDeploymentGroupResponse
{ _udgrHooksNotCleanedUp = mempty
}
-- | If the output contains no data, and the corresponding deployment group
-- contained at least one Auto Scaling group, AWS CodeDeploy successfully
-- removed all corresponding Auto Scaling lifecycle event hooks from the AWS
-- user account. If the output does contain data, AWS CodeDeploy could not
-- remove some Auto Scaling lifecycle event hooks from the AWS user account.
udgrHooksNotCleanedUp :: Lens' UpdateDeploymentGroupResponse [AutoScalingGroup]
udgrHooksNotCleanedUp =
lens _udgrHooksNotCleanedUp (\s a -> s { _udgrHooksNotCleanedUp = a })
. _List
instance ToPath UpdateDeploymentGroup where
toPath = const "/"
instance ToQuery UpdateDeploymentGroup where
toQuery = const mempty
instance ToHeaders UpdateDeploymentGroup
instance ToJSON UpdateDeploymentGroup where
toJSON UpdateDeploymentGroup{..} = object
[ "applicationName" .= _udgApplicationName
, "currentDeploymentGroupName" .= _udgCurrentDeploymentGroupName
, "newDeploymentGroupName" .= _udgNewDeploymentGroupName
, "deploymentConfigName" .= _udgDeploymentConfigName
, "ec2TagFilters" .= _udgEc2TagFilters
, "autoScalingGroups" .= _udgAutoScalingGroups
, "serviceRoleArn" .= _udgServiceRoleArn
]
instance AWSRequest UpdateDeploymentGroup where
type Sv UpdateDeploymentGroup = CodeDeploy
type Rs UpdateDeploymentGroup = UpdateDeploymentGroupResponse
request = post "UpdateDeploymentGroup"
response = jsonResponse
instance FromJSON UpdateDeploymentGroupResponse where
parseJSON = withObject "UpdateDeploymentGroupResponse" $ \o -> UpdateDeploymentGroupResponse
<$> o .:? "hooksNotCleanedUp" .!= mempty