{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module Network.AWS.CostExplorer.Types.Product where
import Network.AWS.CostExplorer.Types.Sum
import Network.AWS.Lens
import Network.AWS.Prelude
newtype Coverage = Coverage'
{ _cCoverageHours :: Maybe CoverageHours
} deriving (Eq, Read, Show, Data, Typeable, Generic)
coverage
:: Coverage
coverage = Coverage' {_cCoverageHours = Nothing}
cCoverageHours :: Lens' Coverage (Maybe CoverageHours)
cCoverageHours = lens _cCoverageHours (\ s a -> s{_cCoverageHours = a})
instance FromJSON Coverage where
parseJSON
= withObject "Coverage"
(\ x -> Coverage' <$> (x .:? "CoverageHours"))
instance Hashable Coverage where
instance NFData Coverage where
data CoverageByTime = CoverageByTime'
{ _cbtGroups :: !(Maybe [ReservationCoverageGroup])
, _cbtTimePeriod :: !(Maybe DateInterval)
, _cbtTotal :: !(Maybe Coverage)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
coverageByTime
:: CoverageByTime
coverageByTime =
CoverageByTime'
{_cbtGroups = Nothing, _cbtTimePeriod = Nothing, _cbtTotal = Nothing}
cbtGroups :: Lens' CoverageByTime [ReservationCoverageGroup]
cbtGroups = lens _cbtGroups (\ s a -> s{_cbtGroups = a}) . _Default . _Coerce
cbtTimePeriod :: Lens' CoverageByTime (Maybe DateInterval)
cbtTimePeriod = lens _cbtTimePeriod (\ s a -> s{_cbtTimePeriod = a})
cbtTotal :: Lens' CoverageByTime (Maybe Coverage)
cbtTotal = lens _cbtTotal (\ s a -> s{_cbtTotal = a})
instance FromJSON CoverageByTime where
parseJSON
= withObject "CoverageByTime"
(\ x ->
CoverageByTime' <$>
(x .:? "Groups" .!= mempty) <*> (x .:? "TimePeriod")
<*> (x .:? "Total"))
instance Hashable CoverageByTime where
instance NFData CoverageByTime where
data CoverageHours = CoverageHours'
{ _chCoverageHoursPercentage :: !(Maybe Text)
, _chOnDemandHours :: !(Maybe Text)
, _chTotalRunningHours :: !(Maybe Text)
, _chReservedHours :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
coverageHours
:: CoverageHours
coverageHours =
CoverageHours'
{ _chCoverageHoursPercentage = Nothing
, _chOnDemandHours = Nothing
, _chTotalRunningHours = Nothing
, _chReservedHours = Nothing
}
chCoverageHoursPercentage :: Lens' CoverageHours (Maybe Text)
chCoverageHoursPercentage = lens _chCoverageHoursPercentage (\ s a -> s{_chCoverageHoursPercentage = a})
chOnDemandHours :: Lens' CoverageHours (Maybe Text)
chOnDemandHours = lens _chOnDemandHours (\ s a -> s{_chOnDemandHours = a})
chTotalRunningHours :: Lens' CoverageHours (Maybe Text)
chTotalRunningHours = lens _chTotalRunningHours (\ s a -> s{_chTotalRunningHours = a})
chReservedHours :: Lens' CoverageHours (Maybe Text)
chReservedHours = lens _chReservedHours (\ s a -> s{_chReservedHours = a})
instance FromJSON CoverageHours where
parseJSON
= withObject "CoverageHours"
(\ x ->
CoverageHours' <$>
(x .:? "CoverageHoursPercentage") <*>
(x .:? "OnDemandHours")
<*> (x .:? "TotalRunningHours")
<*> (x .:? "ReservedHours"))
instance Hashable CoverageHours where
instance NFData CoverageHours where
data DateInterval = DateInterval'
{ _diStart :: !Text
, _diEnd :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
dateInterval
:: Text
-> Text
-> DateInterval
dateInterval pStart_ pEnd_ = DateInterval' {_diStart = pStart_, _diEnd = pEnd_}
diStart :: Lens' DateInterval Text
diStart = lens _diStart (\ s a -> s{_diStart = a})
diEnd :: Lens' DateInterval Text
diEnd = lens _diEnd (\ s a -> s{_diEnd = a})
instance FromJSON DateInterval where
parseJSON
= withObject "DateInterval"
(\ x ->
DateInterval' <$> (x .: "Start") <*> (x .: "End"))
instance Hashable DateInterval where
instance NFData DateInterval where
instance ToJSON DateInterval where
toJSON DateInterval'{..}
= object
(catMaybes
[Just ("Start" .= _diStart), Just ("End" .= _diEnd)])
data DimensionValues = DimensionValues'
{ _dvValues :: !(Maybe [Text])
, _dvKey :: !(Maybe Dimension)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
dimensionValues
:: DimensionValues
dimensionValues = DimensionValues' {_dvValues = Nothing, _dvKey = Nothing}
dvValues :: Lens' DimensionValues [Text]
dvValues = lens _dvValues (\ s a -> s{_dvValues = a}) . _Default . _Coerce
dvKey :: Lens' DimensionValues (Maybe Dimension)
dvKey = lens _dvKey (\ s a -> s{_dvKey = a})
instance Hashable DimensionValues where
instance NFData DimensionValues where
instance ToJSON DimensionValues where
toJSON DimensionValues'{..}
= object
(catMaybes
[("Values" .=) <$> _dvValues, ("Key" .=) <$> _dvKey])
data DimensionValuesWithAttributes = DimensionValuesWithAttributes'
{ _dvwaValue :: !(Maybe Text)
, _dvwaAttributes :: !(Maybe (Map Text Text))
} deriving (Eq, Read, Show, Data, Typeable, Generic)
dimensionValuesWithAttributes
:: DimensionValuesWithAttributes
dimensionValuesWithAttributes =
DimensionValuesWithAttributes'
{_dvwaValue = Nothing, _dvwaAttributes = Nothing}
dvwaValue :: Lens' DimensionValuesWithAttributes (Maybe Text)
dvwaValue = lens _dvwaValue (\ s a -> s{_dvwaValue = a})
dvwaAttributes :: Lens' DimensionValuesWithAttributes (HashMap Text Text)
dvwaAttributes = lens _dvwaAttributes (\ s a -> s{_dvwaAttributes = a}) . _Default . _Map
instance FromJSON DimensionValuesWithAttributes where
parseJSON
= withObject "DimensionValuesWithAttributes"
(\ x ->
DimensionValuesWithAttributes' <$>
(x .:? "Value") <*> (x .:? "Attributes" .!= mempty))
instance Hashable DimensionValuesWithAttributes where
instance NFData DimensionValuesWithAttributes where
data EC2InstanceDetails = EC2InstanceDetails'
{ _eidCurrentGeneration :: !(Maybe Bool)
, _eidPlatform :: !(Maybe Text)
, _eidFamily :: !(Maybe Text)
, _eidInstanceType :: !(Maybe Text)
, _eidAvailabilityZone :: !(Maybe Text)
, _eidSizeFlexEligible :: !(Maybe Bool)
, _eidTenancy :: !(Maybe Text)
, _eidRegion :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
ec2InstanceDetails
:: EC2InstanceDetails
ec2InstanceDetails =
EC2InstanceDetails'
{ _eidCurrentGeneration = Nothing
, _eidPlatform = Nothing
, _eidFamily = Nothing
, _eidInstanceType = Nothing
, _eidAvailabilityZone = Nothing
, _eidSizeFlexEligible = Nothing
, _eidTenancy = Nothing
, _eidRegion = Nothing
}
eidCurrentGeneration :: Lens' EC2InstanceDetails (Maybe Bool)
eidCurrentGeneration = lens _eidCurrentGeneration (\ s a -> s{_eidCurrentGeneration = a})
eidPlatform :: Lens' EC2InstanceDetails (Maybe Text)
eidPlatform = lens _eidPlatform (\ s a -> s{_eidPlatform = a})
eidFamily :: Lens' EC2InstanceDetails (Maybe Text)
eidFamily = lens _eidFamily (\ s a -> s{_eidFamily = a})
eidInstanceType :: Lens' EC2InstanceDetails (Maybe Text)
eidInstanceType = lens _eidInstanceType (\ s a -> s{_eidInstanceType = a})
eidAvailabilityZone :: Lens' EC2InstanceDetails (Maybe Text)
eidAvailabilityZone = lens _eidAvailabilityZone (\ s a -> s{_eidAvailabilityZone = a})
eidSizeFlexEligible :: Lens' EC2InstanceDetails (Maybe Bool)
eidSizeFlexEligible = lens _eidSizeFlexEligible (\ s a -> s{_eidSizeFlexEligible = a})
eidTenancy :: Lens' EC2InstanceDetails (Maybe Text)
eidTenancy = lens _eidTenancy (\ s a -> s{_eidTenancy = a})
eidRegion :: Lens' EC2InstanceDetails (Maybe Text)
eidRegion = lens _eidRegion (\ s a -> s{_eidRegion = a})
instance FromJSON EC2InstanceDetails where
parseJSON
= withObject "EC2InstanceDetails"
(\ x ->
EC2InstanceDetails' <$>
(x .:? "CurrentGeneration") <*> (x .:? "Platform")
<*> (x .:? "Family")
<*> (x .:? "InstanceType")
<*> (x .:? "AvailabilityZone")
<*> (x .:? "SizeFlexEligible")
<*> (x .:? "Tenancy")
<*> (x .:? "Region"))
instance Hashable EC2InstanceDetails where
instance NFData EC2InstanceDetails where
newtype EC2Specification = EC2Specification'
{ _esOfferingClass :: Maybe OfferingClass
} deriving (Eq, Read, Show, Data, Typeable, Generic)
ec2Specification
:: EC2Specification
ec2Specification = EC2Specification' {_esOfferingClass = Nothing}
esOfferingClass :: Lens' EC2Specification (Maybe OfferingClass)
esOfferingClass = lens _esOfferingClass (\ s a -> s{_esOfferingClass = a})
instance FromJSON EC2Specification where
parseJSON
= withObject "EC2Specification"
(\ x ->
EC2Specification' <$> (x .:? "OfferingClass"))
instance Hashable EC2Specification where
instance NFData EC2Specification where
instance ToJSON EC2Specification where
toJSON EC2Specification'{..}
= object
(catMaybes
[("OfferingClass" .=) <$> _esOfferingClass])
data Expression = Expression'
{ _eNot :: !(Maybe Expression)
, _eAnd :: !(Maybe [Expression])
, _eOr :: !(Maybe [Expression])
, _eDimensions :: !(Maybe DimensionValues)
, _eTags :: !(Maybe TagValues)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
expression
:: Expression
expression =
Expression'
{ _eNot = Nothing
, _eAnd = Nothing
, _eOr = Nothing
, _eDimensions = Nothing
, _eTags = Nothing
}
eNot :: Lens' Expression (Maybe Expression)
eNot = lens _eNot (\ s a -> s{_eNot = a})
eAnd :: Lens' Expression [Expression]
eAnd = lens _eAnd (\ s a -> s{_eAnd = a}) . _Default . _Coerce
eOr :: Lens' Expression [Expression]
eOr = lens _eOr (\ s a -> s{_eOr = a}) . _Default . _Coerce
eDimensions :: Lens' Expression (Maybe DimensionValues)
eDimensions = lens _eDimensions (\ s a -> s{_eDimensions = a})
eTags :: Lens' Expression (Maybe TagValues)
eTags = lens _eTags (\ s a -> s{_eTags = a})
instance Hashable Expression where
instance NFData Expression where
instance ToJSON Expression where
toJSON Expression'{..}
= object
(catMaybes
[("Not" .=) <$> _eNot, ("And" .=) <$> _eAnd,
("Or" .=) <$> _eOr,
("Dimensions" .=) <$> _eDimensions,
("Tags" .=) <$> _eTags])
data Group = Group'
{ _gMetrics :: !(Maybe (Map Text MetricValue))
, _gKeys :: !(Maybe [Text])
} deriving (Eq, Read, Show, Data, Typeable, Generic)
group'
:: Group
group' = Group' {_gMetrics = Nothing, _gKeys = Nothing}
gMetrics :: Lens' Group (HashMap Text MetricValue)
gMetrics = lens _gMetrics (\ s a -> s{_gMetrics = a}) . _Default . _Map
gKeys :: Lens' Group [Text]
gKeys = lens _gKeys (\ s a -> s{_gKeys = a}) . _Default . _Coerce
instance FromJSON Group where
parseJSON
= withObject "Group"
(\ x ->
Group' <$>
(x .:? "Metrics" .!= mempty) <*>
(x .:? "Keys" .!= mempty))
instance Hashable Group where
instance NFData Group where
data GroupDefinition = GroupDefinition'
{ _gdKey :: !(Maybe Text)
, _gdType :: !(Maybe GroupDefinitionType)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
groupDefinition
:: GroupDefinition
groupDefinition = GroupDefinition' {_gdKey = Nothing, _gdType = Nothing}
gdKey :: Lens' GroupDefinition (Maybe Text)
gdKey = lens _gdKey (\ s a -> s{_gdKey = a})
gdType :: Lens' GroupDefinition (Maybe GroupDefinitionType)
gdType = lens _gdType (\ s a -> s{_gdType = a})
instance FromJSON GroupDefinition where
parseJSON
= withObject "GroupDefinition"
(\ x ->
GroupDefinition' <$>
(x .:? "Key") <*> (x .:? "Type"))
instance Hashable GroupDefinition where
instance NFData GroupDefinition where
instance ToJSON GroupDefinition where
toJSON GroupDefinition'{..}
= object
(catMaybes
[("Key" .=) <$> _gdKey, ("Type" .=) <$> _gdType])
data InstanceDetails = InstanceDetails'
{ _idRDSInstanceDetails :: !(Maybe RDSInstanceDetails)
, _idEC2InstanceDetails :: !(Maybe EC2InstanceDetails)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
instanceDetails
:: InstanceDetails
instanceDetails =
InstanceDetails'
{_idRDSInstanceDetails = Nothing, _idEC2InstanceDetails = Nothing}
idRDSInstanceDetails :: Lens' InstanceDetails (Maybe RDSInstanceDetails)
idRDSInstanceDetails = lens _idRDSInstanceDetails (\ s a -> s{_idRDSInstanceDetails = a})
idEC2InstanceDetails :: Lens' InstanceDetails (Maybe EC2InstanceDetails)
idEC2InstanceDetails = lens _idEC2InstanceDetails (\ s a -> s{_idEC2InstanceDetails = a})
instance FromJSON InstanceDetails where
parseJSON
= withObject "InstanceDetails"
(\ x ->
InstanceDetails' <$>
(x .:? "RDSInstanceDetails") <*>
(x .:? "EC2InstanceDetails"))
instance Hashable InstanceDetails where
instance NFData InstanceDetails where
data MetricValue = MetricValue'
{ _mvAmount :: !(Maybe Text)
, _mvUnit :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
metricValue
:: MetricValue
metricValue = MetricValue' {_mvAmount = Nothing, _mvUnit = Nothing}
mvAmount :: Lens' MetricValue (Maybe Text)
mvAmount = lens _mvAmount (\ s a -> s{_mvAmount = a})
mvUnit :: Lens' MetricValue (Maybe Text)
mvUnit = lens _mvUnit (\ s a -> s{_mvUnit = a})
instance FromJSON MetricValue where
parseJSON
= withObject "MetricValue"
(\ x ->
MetricValue' <$> (x .:? "Amount") <*> (x .:? "Unit"))
instance Hashable MetricValue where
instance NFData MetricValue where
data RDSInstanceDetails = RDSInstanceDetails'
{ _ridCurrentGeneration :: !(Maybe Bool)
, _ridDeploymentOption :: !(Maybe Text)
, _ridFamily :: !(Maybe Text)
, _ridInstanceType :: !(Maybe Text)
, _ridLicenseModel :: !(Maybe Text)
, _ridSizeFlexEligible :: !(Maybe Bool)
, _ridRegion :: !(Maybe Text)
, _ridDatabaseEngine :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
rdsInstanceDetails
:: RDSInstanceDetails
rdsInstanceDetails =
RDSInstanceDetails'
{ _ridCurrentGeneration = Nothing
, _ridDeploymentOption = Nothing
, _ridFamily = Nothing
, _ridInstanceType = Nothing
, _ridLicenseModel = Nothing
, _ridSizeFlexEligible = Nothing
, _ridRegion = Nothing
, _ridDatabaseEngine = Nothing
}
ridCurrentGeneration :: Lens' RDSInstanceDetails (Maybe Bool)
ridCurrentGeneration = lens _ridCurrentGeneration (\ s a -> s{_ridCurrentGeneration = a})
ridDeploymentOption :: Lens' RDSInstanceDetails (Maybe Text)
ridDeploymentOption = lens _ridDeploymentOption (\ s a -> s{_ridDeploymentOption = a})
ridFamily :: Lens' RDSInstanceDetails (Maybe Text)
ridFamily = lens _ridFamily (\ s a -> s{_ridFamily = a})
ridInstanceType :: Lens' RDSInstanceDetails (Maybe Text)
ridInstanceType = lens _ridInstanceType (\ s a -> s{_ridInstanceType = a})
ridLicenseModel :: Lens' RDSInstanceDetails (Maybe Text)
ridLicenseModel = lens _ridLicenseModel (\ s a -> s{_ridLicenseModel = a})
ridSizeFlexEligible :: Lens' RDSInstanceDetails (Maybe Bool)
ridSizeFlexEligible = lens _ridSizeFlexEligible (\ s a -> s{_ridSizeFlexEligible = a})
ridRegion :: Lens' RDSInstanceDetails (Maybe Text)
ridRegion = lens _ridRegion (\ s a -> s{_ridRegion = a})
ridDatabaseEngine :: Lens' RDSInstanceDetails (Maybe Text)
ridDatabaseEngine = lens _ridDatabaseEngine (\ s a -> s{_ridDatabaseEngine = a})
instance FromJSON RDSInstanceDetails where
parseJSON
= withObject "RDSInstanceDetails"
(\ x ->
RDSInstanceDetails' <$>
(x .:? "CurrentGeneration") <*>
(x .:? "DeploymentOption")
<*> (x .:? "Family")
<*> (x .:? "InstanceType")
<*> (x .:? "LicenseModel")
<*> (x .:? "SizeFlexEligible")
<*> (x .:? "Region")
<*> (x .:? "DatabaseEngine"))
instance Hashable RDSInstanceDetails where
instance NFData RDSInstanceDetails where
data ReservationAggregates = ReservationAggregates'
{ _raPurchasedHours :: !(Maybe Text)
, _raTotalActualHours :: !(Maybe Text)
, _raUtilizationPercentage :: !(Maybe Text)
, _raUnusedHours :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationAggregates
:: ReservationAggregates
reservationAggregates =
ReservationAggregates'
{ _raPurchasedHours = Nothing
, _raTotalActualHours = Nothing
, _raUtilizationPercentage = Nothing
, _raUnusedHours = Nothing
}
raPurchasedHours :: Lens' ReservationAggregates (Maybe Text)
raPurchasedHours = lens _raPurchasedHours (\ s a -> s{_raPurchasedHours = a})
raTotalActualHours :: Lens' ReservationAggregates (Maybe Text)
raTotalActualHours = lens _raTotalActualHours (\ s a -> s{_raTotalActualHours = a})
raUtilizationPercentage :: Lens' ReservationAggregates (Maybe Text)
raUtilizationPercentage = lens _raUtilizationPercentage (\ s a -> s{_raUtilizationPercentage = a})
raUnusedHours :: Lens' ReservationAggregates (Maybe Text)
raUnusedHours = lens _raUnusedHours (\ s a -> s{_raUnusedHours = a})
instance FromJSON ReservationAggregates where
parseJSON
= withObject "ReservationAggregates"
(\ x ->
ReservationAggregates' <$>
(x .:? "PurchasedHours") <*>
(x .:? "TotalActualHours")
<*> (x .:? "UtilizationPercentage")
<*> (x .:? "UnusedHours"))
instance Hashable ReservationAggregates where
instance NFData ReservationAggregates where
data ReservationCoverageGroup = ReservationCoverageGroup'
{ _rcgCoverage :: !(Maybe Coverage)
, _rcgAttributes :: !(Maybe (Map Text Text))
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationCoverageGroup
:: ReservationCoverageGroup
reservationCoverageGroup =
ReservationCoverageGroup' {_rcgCoverage = Nothing, _rcgAttributes = Nothing}
rcgCoverage :: Lens' ReservationCoverageGroup (Maybe Coverage)
rcgCoverage = lens _rcgCoverage (\ s a -> s{_rcgCoverage = a})
rcgAttributes :: Lens' ReservationCoverageGroup (HashMap Text Text)
rcgAttributes = lens _rcgAttributes (\ s a -> s{_rcgAttributes = a}) . _Default . _Map
instance FromJSON ReservationCoverageGroup where
parseJSON
= withObject "ReservationCoverageGroup"
(\ x ->
ReservationCoverageGroup' <$>
(x .:? "Coverage") <*>
(x .:? "Attributes" .!= mempty))
instance Hashable ReservationCoverageGroup where
instance NFData ReservationCoverageGroup where
data ReservationPurchaseRecommendation = ReservationPurchaseRecommendation'
{ _rprTermInYears :: !(Maybe TermInYears)
, _rprRecommendationSummary :: !(Maybe ReservationPurchaseRecommendationSummary)
, _rprServiceSpecification :: !(Maybe ServiceSpecification)
, _rprAccountScope :: !(Maybe AccountScope)
, _rprRecommendationDetails :: !(Maybe [ReservationPurchaseRecommendationDetail])
, _rprLookbackPeriodInDays :: !(Maybe LookbackPeriodInDays)
, _rprPaymentOption :: !(Maybe PaymentOption)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationPurchaseRecommendation
:: ReservationPurchaseRecommendation
reservationPurchaseRecommendation =
ReservationPurchaseRecommendation'
{ _rprTermInYears = Nothing
, _rprRecommendationSummary = Nothing
, _rprServiceSpecification = Nothing
, _rprAccountScope = Nothing
, _rprRecommendationDetails = Nothing
, _rprLookbackPeriodInDays = Nothing
, _rprPaymentOption = Nothing
}
rprTermInYears :: Lens' ReservationPurchaseRecommendation (Maybe TermInYears)
rprTermInYears = lens _rprTermInYears (\ s a -> s{_rprTermInYears = a})
rprRecommendationSummary :: Lens' ReservationPurchaseRecommendation (Maybe ReservationPurchaseRecommendationSummary)
rprRecommendationSummary = lens _rprRecommendationSummary (\ s a -> s{_rprRecommendationSummary = a})
rprServiceSpecification :: Lens' ReservationPurchaseRecommendation (Maybe ServiceSpecification)
rprServiceSpecification = lens _rprServiceSpecification (\ s a -> s{_rprServiceSpecification = a})
rprAccountScope :: Lens' ReservationPurchaseRecommendation (Maybe AccountScope)
rprAccountScope = lens _rprAccountScope (\ s a -> s{_rprAccountScope = a})
rprRecommendationDetails :: Lens' ReservationPurchaseRecommendation [ReservationPurchaseRecommendationDetail]
rprRecommendationDetails = lens _rprRecommendationDetails (\ s a -> s{_rprRecommendationDetails = a}) . _Default . _Coerce
rprLookbackPeriodInDays :: Lens' ReservationPurchaseRecommendation (Maybe LookbackPeriodInDays)
rprLookbackPeriodInDays = lens _rprLookbackPeriodInDays (\ s a -> s{_rprLookbackPeriodInDays = a})
rprPaymentOption :: Lens' ReservationPurchaseRecommendation (Maybe PaymentOption)
rprPaymentOption = lens _rprPaymentOption (\ s a -> s{_rprPaymentOption = a})
instance FromJSON ReservationPurchaseRecommendation
where
parseJSON
= withObject "ReservationPurchaseRecommendation"
(\ x ->
ReservationPurchaseRecommendation' <$>
(x .:? "TermInYears") <*>
(x .:? "RecommendationSummary")
<*> (x .:? "ServiceSpecification")
<*> (x .:? "AccountScope")
<*> (x .:? "RecommendationDetails" .!= mempty)
<*> (x .:? "LookbackPeriodInDays")
<*> (x .:? "PaymentOption"))
instance Hashable ReservationPurchaseRecommendation
where
instance NFData ReservationPurchaseRecommendation
where
data ReservationPurchaseRecommendationDetail = ReservationPurchaseRecommendationDetail'
{ _rprdMaximumNormalizedUnitsUsedPerHour :: !(Maybe Text)
, _rprdRecurringStandardMonthlyCost :: !(Maybe Text)
, _rprdAverageNormalizedUnitsUsedPerHour :: !(Maybe Text)
, _rprdCurrencyCode :: !(Maybe Text)
, _rprdEstimatedMonthlySavingsPercentage :: !(Maybe Text)
, _rprdRecommendedNormalizedUnitsToPurchase :: !(Maybe Text)
, _rprdAverageUtilization :: !(Maybe Text)
, _rprdEstimatedMonthlySavingsAmount :: !(Maybe Text)
, _rprdUpfrontCost :: !(Maybe Text)
, _rprdMinimumNormalizedUnitsUsedPerHour :: !(Maybe Text)
, _rprdEstimatedMonthlyOnDemandCost :: !(Maybe Text)
, _rprdRecommendedNumberOfInstancesToPurchase :: !(Maybe Text)
, _rprdMaximumNumberOfInstancesUsedPerHour :: !(Maybe Text)
, _rprdEstimatedReservationCostForLookbackPeriod :: !(Maybe Text)
, _rprdInstanceDetails :: !(Maybe InstanceDetails)
, _rprdAverageNumberOfInstancesUsedPerHour :: !(Maybe Text)
, _rprdMinimumNumberOfInstancesUsedPerHour :: !(Maybe Text)
, _rprdEstimatedBreakEvenInMonths :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationPurchaseRecommendationDetail
:: ReservationPurchaseRecommendationDetail
reservationPurchaseRecommendationDetail =
ReservationPurchaseRecommendationDetail'
{ _rprdMaximumNormalizedUnitsUsedPerHour = Nothing
, _rprdRecurringStandardMonthlyCost = Nothing
, _rprdAverageNormalizedUnitsUsedPerHour = Nothing
, _rprdCurrencyCode = Nothing
, _rprdEstimatedMonthlySavingsPercentage = Nothing
, _rprdRecommendedNormalizedUnitsToPurchase = Nothing
, _rprdAverageUtilization = Nothing
, _rprdEstimatedMonthlySavingsAmount = Nothing
, _rprdUpfrontCost = Nothing
, _rprdMinimumNormalizedUnitsUsedPerHour = Nothing
, _rprdEstimatedMonthlyOnDemandCost = Nothing
, _rprdRecommendedNumberOfInstancesToPurchase = Nothing
, _rprdMaximumNumberOfInstancesUsedPerHour = Nothing
, _rprdEstimatedReservationCostForLookbackPeriod = Nothing
, _rprdInstanceDetails = Nothing
, _rprdAverageNumberOfInstancesUsedPerHour = Nothing
, _rprdMinimumNumberOfInstancesUsedPerHour = Nothing
, _rprdEstimatedBreakEvenInMonths = Nothing
}
rprdMaximumNormalizedUnitsUsedPerHour :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdMaximumNormalizedUnitsUsedPerHour = lens _rprdMaximumNormalizedUnitsUsedPerHour (\ s a -> s{_rprdMaximumNormalizedUnitsUsedPerHour = a})
rprdRecurringStandardMonthlyCost :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdRecurringStandardMonthlyCost = lens _rprdRecurringStandardMonthlyCost (\ s a -> s{_rprdRecurringStandardMonthlyCost = a})
rprdAverageNormalizedUnitsUsedPerHour :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdAverageNormalizedUnitsUsedPerHour = lens _rprdAverageNormalizedUnitsUsedPerHour (\ s a -> s{_rprdAverageNormalizedUnitsUsedPerHour = a})
rprdCurrencyCode :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdCurrencyCode = lens _rprdCurrencyCode (\ s a -> s{_rprdCurrencyCode = a})
rprdEstimatedMonthlySavingsPercentage :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdEstimatedMonthlySavingsPercentage = lens _rprdEstimatedMonthlySavingsPercentage (\ s a -> s{_rprdEstimatedMonthlySavingsPercentage = a})
rprdRecommendedNormalizedUnitsToPurchase :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdRecommendedNormalizedUnitsToPurchase = lens _rprdRecommendedNormalizedUnitsToPurchase (\ s a -> s{_rprdRecommendedNormalizedUnitsToPurchase = a})
rprdAverageUtilization :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdAverageUtilization = lens _rprdAverageUtilization (\ s a -> s{_rprdAverageUtilization = a})
rprdEstimatedMonthlySavingsAmount :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdEstimatedMonthlySavingsAmount = lens _rprdEstimatedMonthlySavingsAmount (\ s a -> s{_rprdEstimatedMonthlySavingsAmount = a})
rprdUpfrontCost :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdUpfrontCost = lens _rprdUpfrontCost (\ s a -> s{_rprdUpfrontCost = a})
rprdMinimumNormalizedUnitsUsedPerHour :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdMinimumNormalizedUnitsUsedPerHour = lens _rprdMinimumNormalizedUnitsUsedPerHour (\ s a -> s{_rprdMinimumNormalizedUnitsUsedPerHour = a})
rprdEstimatedMonthlyOnDemandCost :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdEstimatedMonthlyOnDemandCost = lens _rprdEstimatedMonthlyOnDemandCost (\ s a -> s{_rprdEstimatedMonthlyOnDemandCost = a})
rprdRecommendedNumberOfInstancesToPurchase :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdRecommendedNumberOfInstancesToPurchase = lens _rprdRecommendedNumberOfInstancesToPurchase (\ s a -> s{_rprdRecommendedNumberOfInstancesToPurchase = a})
rprdMaximumNumberOfInstancesUsedPerHour :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdMaximumNumberOfInstancesUsedPerHour = lens _rprdMaximumNumberOfInstancesUsedPerHour (\ s a -> s{_rprdMaximumNumberOfInstancesUsedPerHour = a})
rprdEstimatedReservationCostForLookbackPeriod :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdEstimatedReservationCostForLookbackPeriod = lens _rprdEstimatedReservationCostForLookbackPeriod (\ s a -> s{_rprdEstimatedReservationCostForLookbackPeriod = a})
rprdInstanceDetails :: Lens' ReservationPurchaseRecommendationDetail (Maybe InstanceDetails)
rprdInstanceDetails = lens _rprdInstanceDetails (\ s a -> s{_rprdInstanceDetails = a})
rprdAverageNumberOfInstancesUsedPerHour :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdAverageNumberOfInstancesUsedPerHour = lens _rprdAverageNumberOfInstancesUsedPerHour (\ s a -> s{_rprdAverageNumberOfInstancesUsedPerHour = a})
rprdMinimumNumberOfInstancesUsedPerHour :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdMinimumNumberOfInstancesUsedPerHour = lens _rprdMinimumNumberOfInstancesUsedPerHour (\ s a -> s{_rprdMinimumNumberOfInstancesUsedPerHour = a})
rprdEstimatedBreakEvenInMonths :: Lens' ReservationPurchaseRecommendationDetail (Maybe Text)
rprdEstimatedBreakEvenInMonths = lens _rprdEstimatedBreakEvenInMonths (\ s a -> s{_rprdEstimatedBreakEvenInMonths = a})
instance FromJSON
ReservationPurchaseRecommendationDetail
where
parseJSON
= withObject
"ReservationPurchaseRecommendationDetail"
(\ x ->
ReservationPurchaseRecommendationDetail' <$>
(x .:? "MaximumNormalizedUnitsUsedPerHour") <*>
(x .:? "RecurringStandardMonthlyCost")
<*> (x .:? "AverageNormalizedUnitsUsedPerHour")
<*> (x .:? "CurrencyCode")
<*> (x .:? "EstimatedMonthlySavingsPercentage")
<*> (x .:? "RecommendedNormalizedUnitsToPurchase")
<*> (x .:? "AverageUtilization")
<*> (x .:? "EstimatedMonthlySavingsAmount")
<*> (x .:? "UpfrontCost")
<*> (x .:? "MinimumNormalizedUnitsUsedPerHour")
<*> (x .:? "EstimatedMonthlyOnDemandCost")
<*> (x .:? "RecommendedNumberOfInstancesToPurchase")
<*> (x .:? "MaximumNumberOfInstancesUsedPerHour")
<*>
(x .:? "EstimatedReservationCostForLookbackPeriod")
<*> (x .:? "InstanceDetails")
<*> (x .:? "AverageNumberOfInstancesUsedPerHour")
<*> (x .:? "MinimumNumberOfInstancesUsedPerHour")
<*> (x .:? "EstimatedBreakEvenInMonths"))
instance Hashable
ReservationPurchaseRecommendationDetail
where
instance NFData
ReservationPurchaseRecommendationDetail
where
data ReservationPurchaseRecommendationMetadata = ReservationPurchaseRecommendationMetadata'
{ _rprmRecommendationId :: !(Maybe Text)
, _rprmGenerationTimestamp :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationPurchaseRecommendationMetadata
:: ReservationPurchaseRecommendationMetadata
reservationPurchaseRecommendationMetadata =
ReservationPurchaseRecommendationMetadata'
{_rprmRecommendationId = Nothing, _rprmGenerationTimestamp = Nothing}
rprmRecommendationId :: Lens' ReservationPurchaseRecommendationMetadata (Maybe Text)
rprmRecommendationId = lens _rprmRecommendationId (\ s a -> s{_rprmRecommendationId = a})
rprmGenerationTimestamp :: Lens' ReservationPurchaseRecommendationMetadata (Maybe Text)
rprmGenerationTimestamp = lens _rprmGenerationTimestamp (\ s a -> s{_rprmGenerationTimestamp = a})
instance FromJSON
ReservationPurchaseRecommendationMetadata
where
parseJSON
= withObject
"ReservationPurchaseRecommendationMetadata"
(\ x ->
ReservationPurchaseRecommendationMetadata' <$>
(x .:? "RecommendationId") <*>
(x .:? "GenerationTimestamp"))
instance Hashable
ReservationPurchaseRecommendationMetadata
where
instance NFData
ReservationPurchaseRecommendationMetadata
where
data ReservationPurchaseRecommendationSummary = ReservationPurchaseRecommendationSummary'
{ _rprsCurrencyCode :: !(Maybe Text)
, _rprsTotalEstimatedMonthlySavingsPercentage :: !(Maybe Text)
, _rprsTotalEstimatedMonthlySavingsAmount :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationPurchaseRecommendationSummary
:: ReservationPurchaseRecommendationSummary
reservationPurchaseRecommendationSummary =
ReservationPurchaseRecommendationSummary'
{ _rprsCurrencyCode = Nothing
, _rprsTotalEstimatedMonthlySavingsPercentage = Nothing
, _rprsTotalEstimatedMonthlySavingsAmount = Nothing
}
rprsCurrencyCode :: Lens' ReservationPurchaseRecommendationSummary (Maybe Text)
rprsCurrencyCode = lens _rprsCurrencyCode (\ s a -> s{_rprsCurrencyCode = a})
rprsTotalEstimatedMonthlySavingsPercentage :: Lens' ReservationPurchaseRecommendationSummary (Maybe Text)
rprsTotalEstimatedMonthlySavingsPercentage = lens _rprsTotalEstimatedMonthlySavingsPercentage (\ s a -> s{_rprsTotalEstimatedMonthlySavingsPercentage = a})
rprsTotalEstimatedMonthlySavingsAmount :: Lens' ReservationPurchaseRecommendationSummary (Maybe Text)
rprsTotalEstimatedMonthlySavingsAmount = lens _rprsTotalEstimatedMonthlySavingsAmount (\ s a -> s{_rprsTotalEstimatedMonthlySavingsAmount = a})
instance FromJSON
ReservationPurchaseRecommendationSummary
where
parseJSON
= withObject
"ReservationPurchaseRecommendationSummary"
(\ x ->
ReservationPurchaseRecommendationSummary' <$>
(x .:? "CurrencyCode") <*>
(x .:? "TotalEstimatedMonthlySavingsPercentage")
<*> (x .:? "TotalEstimatedMonthlySavingsAmount"))
instance Hashable
ReservationPurchaseRecommendationSummary
where
instance NFData
ReservationPurchaseRecommendationSummary
where
data ReservationUtilizationGroup = ReservationUtilizationGroup'
{ _rugValue :: !(Maybe Text)
, _rugKey :: !(Maybe Text)
, _rugAttributes :: !(Maybe (Map Text Text))
, _rugUtilization :: !(Maybe ReservationAggregates)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reservationUtilizationGroup
:: ReservationUtilizationGroup
reservationUtilizationGroup =
ReservationUtilizationGroup'
{ _rugValue = Nothing
, _rugKey = Nothing
, _rugAttributes = Nothing
, _rugUtilization = Nothing
}
rugValue :: Lens' ReservationUtilizationGroup (Maybe Text)
rugValue = lens _rugValue (\ s a -> s{_rugValue = a})
rugKey :: Lens' ReservationUtilizationGroup (Maybe Text)
rugKey = lens _rugKey (\ s a -> s{_rugKey = a})
rugAttributes :: Lens' ReservationUtilizationGroup (HashMap Text Text)
rugAttributes = lens _rugAttributes (\ s a -> s{_rugAttributes = a}) . _Default . _Map
rugUtilization :: Lens' ReservationUtilizationGroup (Maybe ReservationAggregates)
rugUtilization = lens _rugUtilization (\ s a -> s{_rugUtilization = a})
instance FromJSON ReservationUtilizationGroup where
parseJSON
= withObject "ReservationUtilizationGroup"
(\ x ->
ReservationUtilizationGroup' <$>
(x .:? "Value") <*> (x .:? "Key") <*>
(x .:? "Attributes" .!= mempty)
<*> (x .:? "Utilization"))
instance Hashable ReservationUtilizationGroup where
instance NFData ReservationUtilizationGroup where
data ResultByTime = ResultByTime'
{ _rbtGroups :: !(Maybe [Group])
, _rbtTimePeriod :: !(Maybe DateInterval)
, _rbtTotal :: !(Maybe (Map Text MetricValue))
, _rbtEstimated :: !(Maybe Bool)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
resultByTime
:: ResultByTime
resultByTime =
ResultByTime'
{ _rbtGroups = Nothing
, _rbtTimePeriod = Nothing
, _rbtTotal = Nothing
, _rbtEstimated = Nothing
}
rbtGroups :: Lens' ResultByTime [Group]
rbtGroups = lens _rbtGroups (\ s a -> s{_rbtGroups = a}) . _Default . _Coerce
rbtTimePeriod :: Lens' ResultByTime (Maybe DateInterval)
rbtTimePeriod = lens _rbtTimePeriod (\ s a -> s{_rbtTimePeriod = a})
rbtTotal :: Lens' ResultByTime (HashMap Text MetricValue)
rbtTotal = lens _rbtTotal (\ s a -> s{_rbtTotal = a}) . _Default . _Map
rbtEstimated :: Lens' ResultByTime (Maybe Bool)
rbtEstimated = lens _rbtEstimated (\ s a -> s{_rbtEstimated = a})
instance FromJSON ResultByTime where
parseJSON
= withObject "ResultByTime"
(\ x ->
ResultByTime' <$>
(x .:? "Groups" .!= mempty) <*> (x .:? "TimePeriod")
<*> (x .:? "Total" .!= mempty)
<*> (x .:? "Estimated"))
instance Hashable ResultByTime where
instance NFData ResultByTime where
newtype ServiceSpecification = ServiceSpecification'
{ _ssEC2Specification :: Maybe EC2Specification
} deriving (Eq, Read, Show, Data, Typeable, Generic)
serviceSpecification
:: ServiceSpecification
serviceSpecification = ServiceSpecification' {_ssEC2Specification = Nothing}
ssEC2Specification :: Lens' ServiceSpecification (Maybe EC2Specification)
ssEC2Specification = lens _ssEC2Specification (\ s a -> s{_ssEC2Specification = a})
instance FromJSON ServiceSpecification where
parseJSON
= withObject "ServiceSpecification"
(\ x ->
ServiceSpecification' <$> (x .:? "EC2Specification"))
instance Hashable ServiceSpecification where
instance NFData ServiceSpecification where
instance ToJSON ServiceSpecification where
toJSON ServiceSpecification'{..}
= object
(catMaybes
[("EC2Specification" .=) <$> _ssEC2Specification])
data TagValues = TagValues'
{ _tvValues :: !(Maybe [Text])
, _tvKey :: !(Maybe Text)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
tagValues
:: TagValues
tagValues = TagValues' {_tvValues = Nothing, _tvKey = Nothing}
tvValues :: Lens' TagValues [Text]
tvValues = lens _tvValues (\ s a -> s{_tvValues = a}) . _Default . _Coerce
tvKey :: Lens' TagValues (Maybe Text)
tvKey = lens _tvKey (\ s a -> s{_tvKey = a})
instance Hashable TagValues where
instance NFData TagValues where
instance ToJSON TagValues where
toJSON TagValues'{..}
= object
(catMaybes
[("Values" .=) <$> _tvValues, ("Key" .=) <$> _tvKey])
data UtilizationByTime = UtilizationByTime'
{ _ubtGroups :: !(Maybe [ReservationUtilizationGroup])
, _ubtTimePeriod :: !(Maybe DateInterval)
, _ubtTotal :: !(Maybe ReservationAggregates)
} deriving (Eq, Read, Show, Data, Typeable, Generic)
utilizationByTime
:: UtilizationByTime
utilizationByTime =
UtilizationByTime'
{_ubtGroups = Nothing, _ubtTimePeriod = Nothing, _ubtTotal = Nothing}
ubtGroups :: Lens' UtilizationByTime [ReservationUtilizationGroup]
ubtGroups = lens _ubtGroups (\ s a -> s{_ubtGroups = a}) . _Default . _Coerce
ubtTimePeriod :: Lens' UtilizationByTime (Maybe DateInterval)
ubtTimePeriod = lens _ubtTimePeriod (\ s a -> s{_ubtTimePeriod = a})
ubtTotal :: Lens' UtilizationByTime (Maybe ReservationAggregates)
ubtTotal = lens _ubtTotal (\ s a -> s{_ubtTotal = a})
instance FromJSON UtilizationByTime where
parseJSON
= withObject "UtilizationByTime"
(\ x ->
UtilizationByTime' <$>
(x .:? "Groups" .!= mempty) <*> (x .:? "TimePeriod")
<*> (x .:? "Total"))
instance Hashable UtilizationByTime where
instance NFData UtilizationByTime where