{-# 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.OpsWorks.CreateDeployment -- 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. -- | Runs deployment or stack commands. For more information, see -- and . -- -- Required Permissions: To use this action, an IAM user must have a Deploy or -- Manage permissions level for the stack, or an attached policy that explicitly -- grants permissions. For more information on user permissions, see . -- -- module Network.AWS.OpsWorks.CreateDeployment ( -- * Request CreateDeployment -- ** Request constructor , createDeployment -- ** Request lenses , cdAppId , cdCommand , cdComment , cdCustomJson , cdInstanceIds , cdStackId -- * Response , CreateDeploymentResponse -- ** Response constructor , createDeploymentResponse -- ** Response lenses , cdrDeploymentId ) where import Network.AWS.Prelude import Network.AWS.Request.JSON import Network.AWS.OpsWorks.Types import qualified GHC.Exts data CreateDeployment = CreateDeployment { _cdAppId :: Maybe Text , _cdCommand :: DeploymentCommand , _cdComment :: Maybe Text , _cdCustomJson :: Maybe Text , _cdInstanceIds :: List "InstanceIds" Text , _cdStackId :: Text } deriving (Eq, Show) -- | 'CreateDeployment' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdAppId' @::@ 'Maybe' 'Text' -- -- * 'cdCommand' @::@ 'DeploymentCommand' -- -- * 'cdComment' @::@ 'Maybe' 'Text' -- -- * 'cdCustomJson' @::@ 'Maybe' 'Text' -- -- * 'cdInstanceIds' @::@ ['Text'] -- -- * 'cdStackId' @::@ 'Text' -- createDeployment :: Text -- ^ 'cdStackId' -> DeploymentCommand -- ^ 'cdCommand' -> CreateDeployment createDeployment p1 p2 = CreateDeployment { _cdStackId = p1 , _cdCommand = p2 , _cdAppId = Nothing , _cdInstanceIds = mempty , _cdComment = Nothing , _cdCustomJson = Nothing } -- | The app ID. This parameter is required for app deployments, but not for other -- deployment commands. cdAppId :: Lens' CreateDeployment (Maybe Text) cdAppId = lens _cdAppId (\s a -> s { _cdAppId = a }) -- | A 'DeploymentCommand' object that specifies the deployment command and any -- associated arguments. cdCommand :: Lens' CreateDeployment DeploymentCommand cdCommand = lens _cdCommand (\s a -> s { _cdCommand = a }) -- | A user-defined comment. cdComment :: Lens' CreateDeployment (Maybe Text) cdComment = lens _cdComment (\s a -> s { _cdComment = a }) -- | A string that contains user-defined, custom JSON. It is used to override the -- corresponding default stack configuration JSON values. The string should be -- in the following format and must escape characters such as '"'.: -- -- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"' -- -- For more information on custom JSON, see . cdCustomJson :: Lens' CreateDeployment (Maybe Text) cdCustomJson = lens _cdCustomJson (\s a -> s { _cdCustomJson = a }) -- | The instance IDs for the deployment targets. cdInstanceIds :: Lens' CreateDeployment [Text] cdInstanceIds = lens _cdInstanceIds (\s a -> s { _cdInstanceIds = a }) . _List -- | The stack ID. cdStackId :: Lens' CreateDeployment Text cdStackId = lens _cdStackId (\s a -> s { _cdStackId = a }) newtype CreateDeploymentResponse = CreateDeploymentResponse { _cdrDeploymentId :: Maybe Text } deriving (Eq, Ord, Show, Monoid) -- | 'CreateDeploymentResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdrDeploymentId' @::@ 'Maybe' 'Text' -- createDeploymentResponse :: CreateDeploymentResponse createDeploymentResponse = CreateDeploymentResponse { _cdrDeploymentId = Nothing } -- | The deployment ID, which can be used with other requests to identify the -- deployment. cdrDeploymentId :: Lens' CreateDeploymentResponse (Maybe Text) cdrDeploymentId = lens _cdrDeploymentId (\s a -> s { _cdrDeploymentId = a }) instance ToPath CreateDeployment where toPath = const "/" instance ToQuery CreateDeployment where toQuery = const mempty instance ToHeaders CreateDeployment instance ToJSON CreateDeployment where toJSON CreateDeployment{..} = object [ "StackId" .= _cdStackId , "AppId" .= _cdAppId , "InstanceIds" .= _cdInstanceIds , "Command" .= _cdCommand , "Comment" .= _cdComment , "CustomJson" .= _cdCustomJson ] instance AWSRequest CreateDeployment where type Sv CreateDeployment = OpsWorks type Rs CreateDeployment = CreateDeploymentResponse request = post "CreateDeployment" response = jsonResponse instance FromJSON CreateDeploymentResponse where parseJSON = withObject "CreateDeploymentResponse" $ \o -> CreateDeploymentResponse <$> o .:? "DeploymentId"