{-# 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.Lightsail.GetInstanceMetricData
(
getInstanceMetricData
, GetInstanceMetricData
, gimdInstanceName
, gimdMetricName
, gimdPeriod
, gimdStartTime
, gimdEndTime
, gimdUnit
, gimdStatistics
, getInstanceMetricDataResponse
, GetInstanceMetricDataResponse
, gimdrsMetricName
, gimdrsMetricData
, gimdrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Lightsail.Types
import Network.AWS.Lightsail.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data GetInstanceMetricData = GetInstanceMetricData'
{ _gimdInstanceName :: !Text
, _gimdMetricName :: !InstanceMetricName
, _gimdPeriod :: !Nat
, _gimdStartTime :: !POSIX
, _gimdEndTime :: !POSIX
, _gimdUnit :: !MetricUnit
, _gimdStatistics :: ![MetricStatistic]
} deriving (Eq, Read, Show, Data, Typeable, Generic)
getInstanceMetricData
:: Text
-> InstanceMetricName
-> Natural
-> UTCTime
-> UTCTime
-> MetricUnit
-> GetInstanceMetricData
getInstanceMetricData pInstanceName_ pMetricName_ pPeriod_ pStartTime_ pEndTime_ pUnit_ =
GetInstanceMetricData'
{ _gimdInstanceName = pInstanceName_
, _gimdMetricName = pMetricName_
, _gimdPeriod = _Nat # pPeriod_
, _gimdStartTime = _Time # pStartTime_
, _gimdEndTime = _Time # pEndTime_
, _gimdUnit = pUnit_
, _gimdStatistics = mempty
}
gimdInstanceName :: Lens' GetInstanceMetricData Text
gimdInstanceName = lens _gimdInstanceName (\ s a -> s{_gimdInstanceName = a})
gimdMetricName :: Lens' GetInstanceMetricData InstanceMetricName
gimdMetricName = lens _gimdMetricName (\ s a -> s{_gimdMetricName = a})
gimdPeriod :: Lens' GetInstanceMetricData Natural
gimdPeriod = lens _gimdPeriod (\ s a -> s{_gimdPeriod = a}) . _Nat
gimdStartTime :: Lens' GetInstanceMetricData UTCTime
gimdStartTime = lens _gimdStartTime (\ s a -> s{_gimdStartTime = a}) . _Time
gimdEndTime :: Lens' GetInstanceMetricData UTCTime
gimdEndTime = lens _gimdEndTime (\ s a -> s{_gimdEndTime = a}) . _Time
gimdUnit :: Lens' GetInstanceMetricData MetricUnit
gimdUnit = lens _gimdUnit (\ s a -> s{_gimdUnit = a})
gimdStatistics :: Lens' GetInstanceMetricData [MetricStatistic]
gimdStatistics = lens _gimdStatistics (\ s a -> s{_gimdStatistics = a}) . _Coerce
instance AWSRequest GetInstanceMetricData where
type Rs GetInstanceMetricData =
GetInstanceMetricDataResponse
request = postJSON lightsail
response
= receiveJSON
(\ s h x ->
GetInstanceMetricDataResponse' <$>
(x .?> "metricName") <*>
(x .?> "metricData" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable GetInstanceMetricData where
instance NFData GetInstanceMetricData where
instance ToHeaders GetInstanceMetricData where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("Lightsail_20161128.GetInstanceMetricData" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetInstanceMetricData where
toJSON GetInstanceMetricData'{..}
= object
(catMaybes
[Just ("instanceName" .= _gimdInstanceName),
Just ("metricName" .= _gimdMetricName),
Just ("period" .= _gimdPeriod),
Just ("startTime" .= _gimdStartTime),
Just ("endTime" .= _gimdEndTime),
Just ("unit" .= _gimdUnit),
Just ("statistics" .= _gimdStatistics)])
instance ToPath GetInstanceMetricData where
toPath = const "/"
instance ToQuery GetInstanceMetricData where
toQuery = const mempty
data GetInstanceMetricDataResponse = GetInstanceMetricDataResponse'
{ _gimdrsMetricName :: !(Maybe InstanceMetricName)
, _gimdrsMetricData :: !(Maybe [MetricDatapoint])
, _gimdrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
getInstanceMetricDataResponse
:: Int
-> GetInstanceMetricDataResponse
getInstanceMetricDataResponse pResponseStatus_ =
GetInstanceMetricDataResponse'
{ _gimdrsMetricName = Nothing
, _gimdrsMetricData = Nothing
, _gimdrsResponseStatus = pResponseStatus_
}
gimdrsMetricName :: Lens' GetInstanceMetricDataResponse (Maybe InstanceMetricName)
gimdrsMetricName = lens _gimdrsMetricName (\ s a -> s{_gimdrsMetricName = a})
gimdrsMetricData :: Lens' GetInstanceMetricDataResponse [MetricDatapoint]
gimdrsMetricData = lens _gimdrsMetricData (\ s a -> s{_gimdrsMetricData = a}) . _Default . _Coerce
gimdrsResponseStatus :: Lens' GetInstanceMetricDataResponse Int
gimdrsResponseStatus = lens _gimdrsResponseStatus (\ s a -> s{_gimdrsResponseStatus = a})
instance NFData GetInstanceMetricDataResponse where