{-# 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 #-}
module Network.AWS.EMR.AddInstanceGroups
(
addInstanceGroups
, AddInstanceGroups
, aigInstanceGroups
, aigJobFlowId
, addInstanceGroupsResponse
, AddInstanceGroupsResponse
, aigrsJobFlowId
, aigrsInstanceGroupIds
, aigrsResponseStatus
) where
import Network.AWS.EMR.Types
import Network.AWS.EMR.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data AddInstanceGroups = AddInstanceGroups'
{ _aigInstanceGroups :: ![InstanceGroupConfig]
, _aigJobFlowId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
addInstanceGroups
:: Text
-> AddInstanceGroups
addInstanceGroups pJobFlowId_ =
AddInstanceGroups'
{ _aigInstanceGroups = mempty
, _aigJobFlowId = pJobFlowId_
}
aigInstanceGroups :: Lens' AddInstanceGroups [InstanceGroupConfig]
aigInstanceGroups = lens _aigInstanceGroups (\ s a -> s{_aigInstanceGroups = a}) . _Coerce;
aigJobFlowId :: Lens' AddInstanceGroups Text
aigJobFlowId = lens _aigJobFlowId (\ s a -> s{_aigJobFlowId = a});
instance AWSRequest AddInstanceGroups where
type Rs AddInstanceGroups = AddInstanceGroupsResponse
request = postJSON emr
response
= receiveJSON
(\ s h x ->
AddInstanceGroupsResponse' <$>
(x .?> "JobFlowId") <*>
(x .?> "InstanceGroupIds" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable AddInstanceGroups
instance NFData AddInstanceGroups
instance ToHeaders AddInstanceGroups where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("ElasticMapReduce.AddInstanceGroups" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON AddInstanceGroups where
toJSON AddInstanceGroups'{..}
= object
(catMaybes
[Just ("InstanceGroups" .= _aigInstanceGroups),
Just ("JobFlowId" .= _aigJobFlowId)])
instance ToPath AddInstanceGroups where
toPath = const "/"
instance ToQuery AddInstanceGroups where
toQuery = const mempty
data AddInstanceGroupsResponse = AddInstanceGroupsResponse'
{ _aigrsJobFlowId :: !(Maybe Text)
, _aigrsInstanceGroupIds :: !(Maybe [Text])
, _aigrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
addInstanceGroupsResponse
:: Int
-> AddInstanceGroupsResponse
addInstanceGroupsResponse pResponseStatus_ =
AddInstanceGroupsResponse'
{ _aigrsJobFlowId = Nothing
, _aigrsInstanceGroupIds = Nothing
, _aigrsResponseStatus = pResponseStatus_
}
aigrsJobFlowId :: Lens' AddInstanceGroupsResponse (Maybe Text)
aigrsJobFlowId = lens _aigrsJobFlowId (\ s a -> s{_aigrsJobFlowId = a});
aigrsInstanceGroupIds :: Lens' AddInstanceGroupsResponse [Text]
aigrsInstanceGroupIds = lens _aigrsInstanceGroupIds (\ s a -> s{_aigrsInstanceGroupIds = a}) . _Default . _Coerce;
aigrsResponseStatus :: Lens' AddInstanceGroupsResponse Int
aigrsResponseStatus = lens _aigrsResponseStatus (\ s a -> s{_aigrsResponseStatus = a});
instance NFData AddInstanceGroupsResponse