module AWS.CloudWatch.Types
where
import AWS.Lib.FromText
data Metric = Metric
{ metricDimensions :: [Dimension]
, metricName :: Text
, metricNameSpace :: Text
}
deriving (Show, Eq)
data Dimension = Dimension
{ dimensionName :: Text
, dimensionValue :: Text
}
deriving (Show, Eq)
type DimensionFilter = (Text, Text)
data Datapoint = Datapoint
{ datapointTimestamp :: UTCTime
, datapointSampleCount :: Maybe Double
, datapointUnit :: Text
, datapointMinimum :: Maybe Double
, datapointMaximum :: Maybe Double
, datapointSum :: Maybe Double
, datapointAverage :: Maybe Double
}
deriving (Show, Eq)
data Statistic
= StatisticAverage
| StatisticSum
| StatisticSampleCount
| StatisticMaximum
| StatisticMinimum
deriving (Show, Eq, Read)
deriveFromText "Statistic" ["Average", "Sum", "SampleCount", "Maximum", "Minimum"]
allStatistics :: [Statistic]
allStatistics =
[ StatisticAverage
, StatisticSum
, StatisticSampleCount
, StatisticMaximum
, StatisticMinimum
]
data AlarmNameSpec
= AlarmSpecNothing
| AlarmSpecNamePrefix Text
| AlarmSpecNames [Text]
deriving (Show, Eq)
data StateValue
= StateValueOk
| StateValueAlarm
| StateValueInsufficientData
deriving (Show, Eq, Read)
deriveFromText "StateValue" ["OK", "ALARM", "INSUFFICIENT_DATA"]
data ComparisonOperator
= GreaterThanOrEqualToThreshold
| GreaterThanThreshold
| LessThanThreshold
| LessThanOrEqualToThreshold
deriving (Show, Eq, Read)
deriveFromText "ComparisonOperator"
[ "GreaterThanOrEqualToThreshold"
, "GreaterThanThreshold"
, "LessThanThreshold"
, "LessThanOrEqualToThreshold"
]
data MetricAlarm = MetricAlarm
{ metricAlarmAlarmDescription :: Maybe Text
, metricAlarmStateUpdatedTimestamp :: UTCTime
, metricAlarmInsufficientDataActions :: [Text]
, metricAlarmStateReasonData :: Maybe Text
, metricAlarmAlarmArn :: Text
, metricAlarmConfigurationUpdatedTimestamp :: UTCTime
, metricAlarmAlarmName :: Text
, metricAlarmStateValue :: StateValue
, metricAlarmPeriod :: Int
, metricAlarmOKActions :: [Text]
, metricAlarmActionsEnabled :: Bool
, metricAlarmNamespace :: Text
, metricAlarmThreshold :: Double
, metricAlarmEvaluationPeriods :: Int
, metricAlarmStatistic :: Statistic
, metricAlarmAlarmActions :: [Text]
, metricAlarmUnit :: Maybe Text
, metricAlarmStateReason :: Maybe Text
, metricAlarmDimensions :: [Dimension]
, metricAlarmComparisonOperator :: ComparisonOperator
, metricAlarmMetricName :: Text
}
deriving (Show, Eq)
data PutMetricAlarmRequest = PutMetricAlarmRequest
{ putMetricAlarmActionsEnabled :: Maybe Bool
, putMetricAlarmAlarmActions :: [Text]
, putMetricAlarmAlarmDescription :: Maybe Text
, putMetricAlarmAlarmName :: Text
, putMetricAlarmComparisonOperator :: ComparisonOperator
, putMetricAlarmDimensions :: [Dimension]
, putMetricAlarmEvaluationPeriods :: Int
, putMetricAlarmInsufficientDataActions :: [Text]
, putMetricAlarmMetricName :: Text
, putMetricAlarmNamespace :: Text
, putMetricAlarmOKActions :: [Text]
, putMetricAlarmPeriod :: Int
, putMetricAlarmStatistic :: Statistic
, putMetricAlarmThreshold :: Double
, putMetricAlarmUnit :: Maybe Text
}
deriving (Show, Eq)
data AlarmHistory = AlarmHistory
{ alarmHistoryTimestamp :: UTCTime
, alarmHistoryHistoryItemType :: HistoryType
, alarmHistoryAlarmName :: Text
, alarmHistoryHistoryData :: Text
, alarmHistoryHistorySummary :: Text
}
deriving (Show, Eq)
data HistoryType
= HistoryTypeConfigurationUpdate
| HistoryTypeStateUpdate
| HistoryTypeAction
deriving (Show, Eq, Read)
deriveFromText "HistoryType" ["ConfigurationUpdate", "StateUpdate", "Action"]
data MetricDatum = MetricDatum
{ metricDatumDimensions :: [Dimension]
, metricDatumMetricName :: Text
, metricDatumTimestamp :: Maybe UTCTime
, metricDatumUnit :: Maybe Text
, metricDatumValue :: MetricDatumValue
}
deriving (Show, Eq)
data MetricDatumValue
= MetricDatumValue Double
| MetricDatumStatisticValues StatisticSet
deriving (Show, Eq)
data StatisticSet = StatisticSet
{ statisticSetMaximum :: Double
, statisticSetMinimum :: Double
, statisticSetSampleCount :: Double
, statisticSetSum :: Double
}
deriving (Show, Eq)