{-# 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.CreateDeploymentGroup -- Copyright : (c) 2013-2014 Brendan Hay -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Creates a new deployment group for application revisions to be deployed to. -- -- module Network.AWS.CodeDeploy.CreateDeploymentGroup ( -- * Request CreateDeploymentGroup -- ** Request constructor , createDeploymentGroup -- ** Request lenses , cdgApplicationName , cdgAutoScalingGroups , cdgDeploymentConfigName , cdgDeploymentGroupName , cdgEc2TagFilters , cdgOnPremisesInstanceTagFilters , cdgServiceRoleArn -- * Response , CreateDeploymentGroupResponse -- ** Response constructor , createDeploymentGroupResponse -- ** Response lenses , cdgrDeploymentGroupId ) where import Network.AWS.Data (Object) import Network.AWS.Prelude import Network.AWS.Request.JSON import Network.AWS.CodeDeploy.Types import qualified GHC.Exts data CreateDeploymentGroup = CreateDeploymentGroup { _cdgApplicationName :: Text , _cdgAutoScalingGroups :: List "autoScalingGroups" Text , _cdgDeploymentConfigName :: Maybe Text , _cdgDeploymentGroupName :: Text , _cdgEc2TagFilters :: List "ec2TagFilters" EC2TagFilter , _cdgOnPremisesInstanceTagFilters :: List "onPremisesInstanceTagFilters" TagFilter , _cdgServiceRoleArn :: Text } deriving (Eq, Read, Show) -- | 'CreateDeploymentGroup' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdgApplicationName' @::@ 'Text' -- -- * 'cdgAutoScalingGroups' @::@ ['Text'] -- -- * 'cdgDeploymentConfigName' @::@ 'Maybe' 'Text' -- -- * 'cdgDeploymentGroupName' @::@ 'Text' -- -- * 'cdgEc2TagFilters' @::@ ['EC2TagFilter'] -- -- * 'cdgOnPremisesInstanceTagFilters' @::@ ['TagFilter'] -- -- * 'cdgServiceRoleArn' @::@ 'Text' -- createDeploymentGroup :: Text -- ^ 'cdgApplicationName' -> Text -- ^ 'cdgDeploymentGroupName' -> Text -- ^ 'cdgServiceRoleArn' -> CreateDeploymentGroup createDeploymentGroup p1 p2 p3 = CreateDeploymentGroup { _cdgApplicationName = p1 , _cdgDeploymentGroupName = p2 , _cdgServiceRoleArn = p3 , _cdgDeploymentConfigName = Nothing , _cdgEc2TagFilters = mempty , _cdgOnPremisesInstanceTagFilters = mempty , _cdgAutoScalingGroups = mempty } -- | The name of an existing AWS CodeDeploy application associated with the -- applicable IAM user or AWS account. cdgApplicationName :: Lens' CreateDeploymentGroup Text cdgApplicationName = lens _cdgApplicationName (\s a -> s { _cdgApplicationName = a }) -- | A list of associated Auto Scaling groups. cdgAutoScalingGroups :: Lens' CreateDeploymentGroup [Text] cdgAutoScalingGroups = lens _cdgAutoScalingGroups (\s a -> s { _cdgAutoScalingGroups = a }) . _List -- | If specified, the deployment configuration name must be one of the predefined -- values, or it can be a custom deployment configuration: -- -- CodeDeployDefault.AllAtOnce deploys an application revision to up to all of -- the instances at once. The overall deployment succeeds if the application -- revision deploys to at least one of the instances. The overall deployment -- fails after the application revision fails to deploy to all of the instances. -- For example, for 9 instances, deploy to up to all 9 instances at once. The -- overall deployment succeeds if any of the 9 instances is successfully -- deployed to, and it fails if all 9 instances fail to be deployed to. CodeDeployDefault.HalfAtATime deploys to up to half of the instances at a time (with fractions rounded down). The overall deployment succeeds if the application revision deploys to at least half of the instances (with fractions rounded up); otherwise, the deployment fails. For example, for 9 instances, deploy to up to 4 instances at a time. The overall deployment succeeds if 5 or more instances are successfully deployed to; otherwise, the deployment fails. Note that the deployment may successfully deploy to some instances, even if the overall deployment fails. -- CodeDeployDefault.OneAtATime deploys the application revision to only one of -- the instances at a time. The overall deployment succeeds if the application -- revision deploys to all of the instances. The overall deployment fails after -- the application revision first fails to deploy to any one instances. For -- example, for 9 instances, deploy to one instance at a time. The overall -- deployment succeeds if all 9 instances are successfully deployed to, and it -- fails if any of one of the 9 instances fail to be deployed to. Note that the -- deployment may successfully deploy to some instances, even if the overall -- deployment fails. This is the default deployment configuration if a -- configuration isn't specified for either the deployment or the deployment -- group. To create a custom deployment configuration, call the create -- deployment configuration operation. cdgDeploymentConfigName :: Lens' CreateDeploymentGroup (Maybe Text) cdgDeploymentConfigName = lens _cdgDeploymentConfigName (\s a -> s { _cdgDeploymentConfigName = a }) -- | The name of an existing deployment group for the specified application. cdgDeploymentGroupName :: Lens' CreateDeploymentGroup Text cdgDeploymentGroupName = lens _cdgDeploymentGroupName (\s a -> s { _cdgDeploymentGroupName = a }) -- | The Amazon EC2 tags to filter on. cdgEc2TagFilters :: Lens' CreateDeploymentGroup [EC2TagFilter] cdgEc2TagFilters = lens _cdgEc2TagFilters (\s a -> s { _cdgEc2TagFilters = a }) . _List -- | The on-premises instance tags to filter on. cdgOnPremisesInstanceTagFilters :: Lens' CreateDeploymentGroup [TagFilter] cdgOnPremisesInstanceTagFilters = lens _cdgOnPremisesInstanceTagFilters (\s a -> s { _cdgOnPremisesInstanceTagFilters = a }) . _List -- | A service role ARN that allows AWS CodeDeploy to act on the user's behalf -- when interacting with AWS services. cdgServiceRoleArn :: Lens' CreateDeploymentGroup Text cdgServiceRoleArn = lens _cdgServiceRoleArn (\s a -> s { _cdgServiceRoleArn = a }) newtype CreateDeploymentGroupResponse = CreateDeploymentGroupResponse { _cdgrDeploymentGroupId :: Maybe Text } deriving (Eq, Ord, Read, Show, Monoid) -- | 'CreateDeploymentGroupResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdgrDeploymentGroupId' @::@ 'Maybe' 'Text' -- createDeploymentGroupResponse :: CreateDeploymentGroupResponse createDeploymentGroupResponse = CreateDeploymentGroupResponse { _cdgrDeploymentGroupId = Nothing } -- | A unique deployment group ID. cdgrDeploymentGroupId :: Lens' CreateDeploymentGroupResponse (Maybe Text) cdgrDeploymentGroupId = lens _cdgrDeploymentGroupId (\s a -> s { _cdgrDeploymentGroupId = a }) instance ToPath CreateDeploymentGroup where toPath = const "/" instance ToQuery CreateDeploymentGroup where toQuery = const mempty instance ToHeaders CreateDeploymentGroup instance ToJSON CreateDeploymentGroup where toJSON CreateDeploymentGroup{..} = object [ "applicationName" .= _cdgApplicationName , "deploymentGroupName" .= _cdgDeploymentGroupName , "deploymentConfigName" .= _cdgDeploymentConfigName , "ec2TagFilters" .= _cdgEc2TagFilters , "onPremisesInstanceTagFilters" .= _cdgOnPremisesInstanceTagFilters , "autoScalingGroups" .= _cdgAutoScalingGroups , "serviceRoleArn" .= _cdgServiceRoleArn ] instance AWSRequest CreateDeploymentGroup where type Sv CreateDeploymentGroup = CodeDeploy type Rs CreateDeploymentGroup = CreateDeploymentGroupResponse request = post "CreateDeploymentGroup" response = jsonResponse instance FromJSON CreateDeploymentGroupResponse where parseJSON = withObject "CreateDeploymentGroupResponse" $ \o -> CreateDeploymentGroupResponse <$> o .:? "deploymentGroupId"