{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.ECS.RegisterTaskDefinition -- Copyright : (c) 2013-2015 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Registers a new task definition from the supplied 'family' and -- 'containerDefinitions'. Optionally, you can add data volumes to your -- containers with the 'volumes' parameter. For more information on task -- definition parameters and defaults, see -- -- in the /Amazon EC2 Container Service Developer Guide/. -- -- /See:/ for RegisterTaskDefinition. module Network.AWS.ECS.RegisterTaskDefinition ( -- * Creating a Request registerTaskDefinition , RegisterTaskDefinition -- * Request Lenses , rtdVolumes , rtdFamily , rtdContainerDefinitions -- * Destructuring the Response , registerTaskDefinitionResponse , RegisterTaskDefinitionResponse -- * Response Lenses , rtdrsTaskDefinition , rtdrsResponseStatus ) where import Network.AWS.ECS.Types import Network.AWS.ECS.Types.Product import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | /See:/ 'registerTaskDefinition' smart constructor. data RegisterTaskDefinition = RegisterTaskDefinition' { _rtdVolumes :: !(Maybe [Volume]) , _rtdFamily :: !Text , _rtdContainerDefinitions :: ![ContainerDefinition] } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterTaskDefinition' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rtdVolumes' -- -- * 'rtdFamily' -- -- * 'rtdContainerDefinitions' registerTaskDefinition :: Text -- ^ 'rtdFamily' -> RegisterTaskDefinition registerTaskDefinition pFamily_ = RegisterTaskDefinition' { _rtdVolumes = Nothing , _rtdFamily = pFamily_ , _rtdContainerDefinitions = mempty } -- | A list of volume definitions in JSON format that containers in your task -- may use. rtdVolumes :: Lens' RegisterTaskDefinition [Volume] rtdVolumes = lens _rtdVolumes (\ s a -> s{_rtdVolumes = a}) . _Default . _Coerce; -- | You must specify a 'family' for a task definition, which allows you to -- track multiple versions of the same task definition. You can think of -- the 'family' as a name for your task definition. Up to 255 letters -- (uppercase and lowercase), numbers, hyphens, and underscores are -- allowed. rtdFamily :: Lens' RegisterTaskDefinition Text rtdFamily = lens _rtdFamily (\ s a -> s{_rtdFamily = a}); -- | A list of container definitions in JSON format that describe the -- different containers that make up your task. rtdContainerDefinitions :: Lens' RegisterTaskDefinition [ContainerDefinition] rtdContainerDefinitions = lens _rtdContainerDefinitions (\ s a -> s{_rtdContainerDefinitions = a}) . _Coerce; instance AWSRequest RegisterTaskDefinition where type Rs RegisterTaskDefinition = RegisterTaskDefinitionResponse request = postJSON eCS response = receiveJSON (\ s h x -> RegisterTaskDefinitionResponse' <$> (x .?> "taskDefinition") <*> (pure (fromEnum s))) instance ToHeaders RegisterTaskDefinition where toHeaders = const (mconcat ["X-Amz-Target" =# ("AmazonEC2ContainerServiceV20141113.RegisterTaskDefinition" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON RegisterTaskDefinition where toJSON RegisterTaskDefinition'{..} = object (catMaybes [("volumes" .=) <$> _rtdVolumes, Just ("family" .= _rtdFamily), Just ("containerDefinitions" .= _rtdContainerDefinitions)]) instance ToPath RegisterTaskDefinition where toPath = const "/" instance ToQuery RegisterTaskDefinition where toQuery = const mempty -- | /See:/ 'registerTaskDefinitionResponse' smart constructor. data RegisterTaskDefinitionResponse = RegisterTaskDefinitionResponse' { _rtdrsTaskDefinition :: !(Maybe TaskDefinition) , _rtdrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterTaskDefinitionResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rtdrsTaskDefinition' -- -- * 'rtdrsResponseStatus' registerTaskDefinitionResponse :: Int -- ^ 'rtdrsResponseStatus' -> RegisterTaskDefinitionResponse registerTaskDefinitionResponse pResponseStatus_ = RegisterTaskDefinitionResponse' { _rtdrsTaskDefinition = Nothing , _rtdrsResponseStatus = pResponseStatus_ } -- | Undocumented member. rtdrsTaskDefinition :: Lens' RegisterTaskDefinitionResponse (Maybe TaskDefinition) rtdrsTaskDefinition = lens _rtdrsTaskDefinition (\ s a -> s{_rtdrsTaskDefinition = a}); -- | The response status code. rtdrsResponseStatus :: Lens' RegisterTaskDefinitionResponse Int rtdrsResponseStatus = lens _rtdrsResponseStatus (\ s a -> s{_rtdrsResponseStatus = a});