module Network.AWS.ECS.CreateService
(
createService
, CreateService
, cCluster
, cClientToken
, cLoadBalancers
, cRole
, cServiceName
, cTaskDefinition
, cDesiredCount
, createServiceResponse
, CreateServiceResponse
, csrsService
, csrsResponseStatus
) where
import Network.AWS.ECS.Types
import Network.AWS.ECS.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateService = CreateService'
{ _cCluster :: !(Maybe Text)
, _cClientToken :: !(Maybe Text)
, _cLoadBalancers :: !(Maybe [LoadBalancer])
, _cRole :: !(Maybe Text)
, _cServiceName :: !Text
, _cTaskDefinition :: !Text
, _cDesiredCount :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createService
:: Text
-> Text
-> Int
-> CreateService
createService pServiceName_ pTaskDefinition_ pDesiredCount_ =
CreateService'
{ _cCluster = Nothing
, _cClientToken = Nothing
, _cLoadBalancers = Nothing
, _cRole = Nothing
, _cServiceName = pServiceName_
, _cTaskDefinition = pTaskDefinition_
, _cDesiredCount = pDesiredCount_
}
cCluster :: Lens' CreateService (Maybe Text)
cCluster = lens _cCluster (\ s a -> s{_cCluster = a});
cClientToken :: Lens' CreateService (Maybe Text)
cClientToken = lens _cClientToken (\ s a -> s{_cClientToken = a});
cLoadBalancers :: Lens' CreateService [LoadBalancer]
cLoadBalancers = lens _cLoadBalancers (\ s a -> s{_cLoadBalancers = a}) . _Default . _Coerce;
cRole :: Lens' CreateService (Maybe Text)
cRole = lens _cRole (\ s a -> s{_cRole = a});
cServiceName :: Lens' CreateService Text
cServiceName = lens _cServiceName (\ s a -> s{_cServiceName = a});
cTaskDefinition :: Lens' CreateService Text
cTaskDefinition = lens _cTaskDefinition (\ s a -> s{_cTaskDefinition = a});
cDesiredCount :: Lens' CreateService Int
cDesiredCount = lens _cDesiredCount (\ s a -> s{_cDesiredCount = a});
instance AWSRequest CreateService where
type Rs CreateService = CreateServiceResponse
request = postJSON eCS
response
= receiveJSON
(\ s h x ->
CreateServiceResponse' <$>
(x .?> "service") <*> (pure (fromEnum s)))
instance ToHeaders CreateService where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AmazonEC2ContainerServiceV20141113.CreateService"
:: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateService where
toJSON CreateService'{..}
= object
(catMaybes
[("cluster" .=) <$> _cCluster,
("clientToken" .=) <$> _cClientToken,
("loadBalancers" .=) <$> _cLoadBalancers,
("role" .=) <$> _cRole,
Just ("serviceName" .= _cServiceName),
Just ("taskDefinition" .= _cTaskDefinition),
Just ("desiredCount" .= _cDesiredCount)])
instance ToPath CreateService where
toPath = const "/"
instance ToQuery CreateService where
toQuery = const mempty
data CreateServiceResponse = CreateServiceResponse'
{ _csrsService :: !(Maybe ContainerService)
, _csrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createServiceResponse
:: Int
-> CreateServiceResponse
createServiceResponse pResponseStatus_ =
CreateServiceResponse'
{ _csrsService = Nothing
, _csrsResponseStatus = pResponseStatus_
}
csrsService :: Lens' CreateServiceResponse (Maybe ContainerService)
csrsService = lens _csrsService (\ s a -> s{_csrsService = a});
csrsResponseStatus :: Lens' CreateServiceResponse Int
csrsResponseStatus = lens _csrsResponseStatus (\ s a -> s{_csrsResponseStatus = a});