module Network.AWS.EMR.AddInstanceGroups
(
addInstanceGroups
, AddInstanceGroups
, aigInstanceGroups
, aigJobFlowId
, addInstanceGroupsResponse
, AddInstanceGroupsResponse
, aigrsJobFlowId
, aigrsInstanceGroupIds
, aigrsStatus
) where
import Network.AWS.EMR.Types
import Network.AWS.EMR.Types.Product
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 Sv AddInstanceGroups = EMR
type Rs AddInstanceGroups = AddInstanceGroupsResponse
request = postJSON
response
= receiveJSON
(\ s h x ->
AddInstanceGroupsResponse' <$>
(x .?> "JobFlowId") <*>
(x .?> "InstanceGroupIds" .!@ mempty)
<*> (pure (fromEnum s)))
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
["InstanceGroups" .= _aigInstanceGroups,
"JobFlowId" .= _aigJobFlowId]
instance ToPath AddInstanceGroups where
toPath = const "/"
instance ToQuery AddInstanceGroups where
toQuery = const mempty
data AddInstanceGroupsResponse = AddInstanceGroupsResponse'
{ _aigrsJobFlowId :: !(Maybe Text)
, _aigrsInstanceGroupIds :: !(Maybe [Text])
, _aigrsStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
addInstanceGroupsResponse
:: Int
-> AddInstanceGroupsResponse
addInstanceGroupsResponse pStatus_ =
AddInstanceGroupsResponse'
{ _aigrsJobFlowId = Nothing
, _aigrsInstanceGroupIds = Nothing
, _aigrsStatus = pStatus_
}
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;
aigrsStatus :: Lens' AddInstanceGroupsResponse Int
aigrsStatus = lens _aigrsStatus (\ s a -> s{_aigrsStatus = a});