{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CostExplorer.Types.CurrentInstance
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CostExplorer.Types.CurrentInstance where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.CostExplorer.Types.ResourceDetails
import Amazonka.CostExplorer.Types.ResourceUtilization
import Amazonka.CostExplorer.Types.TagValues
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Context about the current instance.
--
-- /See:/ 'newCurrentInstance' smart constructor.
data CurrentInstance = CurrentInstance'
  { -- | The currency code that Amazon Web Services used to calculate the costs
    -- for this instance.
    CurrentInstance -> Maybe Text
currencyCode :: Prelude.Maybe Prelude.Text,
    -- | The name that you given an instance. This field shows as blank if you
    -- haven\'t given the instance a name.
    CurrentInstance -> Maybe Text
instanceName :: Prelude.Maybe Prelude.Text,
    -- | The current On-Demand cost of operating this instance on a monthly
    -- basis.
    CurrentInstance -> Maybe Text
monthlyCost :: Prelude.Maybe Prelude.Text,
    -- | The number of hours during the lookback period that\'s billed at
    -- On-Demand rates.
    CurrentInstance -> Maybe Text
onDemandHoursInLookbackPeriod :: Prelude.Maybe Prelude.Text,
    -- | The number of hours during the lookback period that\'s covered by
    -- reservations.
    CurrentInstance -> Maybe Text
reservationCoveredHoursInLookbackPeriod :: Prelude.Maybe Prelude.Text,
    -- | Details about the resource and utilization.
    CurrentInstance -> Maybe ResourceDetails
resourceDetails :: Prelude.Maybe ResourceDetails,
    -- | Resource ID of the current instance.
    CurrentInstance -> Maybe Text
resourceId :: Prelude.Maybe Prelude.Text,
    -- | Utilization information of the current instance during the lookback
    -- period.
    CurrentInstance -> Maybe ResourceUtilization
resourceUtilization :: Prelude.Maybe ResourceUtilization,
    -- | The number of hours during the lookback period that\'s covered by
    -- Savings Plans.
    CurrentInstance -> Maybe Text
savingsPlansCoveredHoursInLookbackPeriod :: Prelude.Maybe Prelude.Text,
    -- | Cost allocation resource tags that are applied to the instance.
    CurrentInstance -> Maybe [TagValues]
tags :: Prelude.Maybe [TagValues],
    -- | The total number of hours that the instance ran during the lookback
    -- period.
    CurrentInstance -> Maybe Text
totalRunningHoursInLookbackPeriod :: Prelude.Maybe Prelude.Text
  }
  deriving (CurrentInstance -> CurrentInstance -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CurrentInstance -> CurrentInstance -> Bool
$c/= :: CurrentInstance -> CurrentInstance -> Bool
== :: CurrentInstance -> CurrentInstance -> Bool
$c== :: CurrentInstance -> CurrentInstance -> Bool
Prelude.Eq, ReadPrec [CurrentInstance]
ReadPrec CurrentInstance
Int -> ReadS CurrentInstance
ReadS [CurrentInstance]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CurrentInstance]
$creadListPrec :: ReadPrec [CurrentInstance]
readPrec :: ReadPrec CurrentInstance
$creadPrec :: ReadPrec CurrentInstance
readList :: ReadS [CurrentInstance]
$creadList :: ReadS [CurrentInstance]
readsPrec :: Int -> ReadS CurrentInstance
$creadsPrec :: Int -> ReadS CurrentInstance
Prelude.Read, Int -> CurrentInstance -> ShowS
[CurrentInstance] -> ShowS
CurrentInstance -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CurrentInstance] -> ShowS
$cshowList :: [CurrentInstance] -> ShowS
show :: CurrentInstance -> String
$cshow :: CurrentInstance -> String
showsPrec :: Int -> CurrentInstance -> ShowS
$cshowsPrec :: Int -> CurrentInstance -> ShowS
Prelude.Show, forall x. Rep CurrentInstance x -> CurrentInstance
forall x. CurrentInstance -> Rep CurrentInstance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CurrentInstance x -> CurrentInstance
$cfrom :: forall x. CurrentInstance -> Rep CurrentInstance x
Prelude.Generic)

-- |
-- Create a value of 'CurrentInstance' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'currencyCode', 'currentInstance_currencyCode' - The currency code that Amazon Web Services used to calculate the costs
-- for this instance.
--
-- 'instanceName', 'currentInstance_instanceName' - The name that you given an instance. This field shows as blank if you
-- haven\'t given the instance a name.
--
-- 'monthlyCost', 'currentInstance_monthlyCost' - The current On-Demand cost of operating this instance on a monthly
-- basis.
--
-- 'onDemandHoursInLookbackPeriod', 'currentInstance_onDemandHoursInLookbackPeriod' - The number of hours during the lookback period that\'s billed at
-- On-Demand rates.
--
-- 'reservationCoveredHoursInLookbackPeriod', 'currentInstance_reservationCoveredHoursInLookbackPeriod' - The number of hours during the lookback period that\'s covered by
-- reservations.
--
-- 'resourceDetails', 'currentInstance_resourceDetails' - Details about the resource and utilization.
--
-- 'resourceId', 'currentInstance_resourceId' - Resource ID of the current instance.
--
-- 'resourceUtilization', 'currentInstance_resourceUtilization' - Utilization information of the current instance during the lookback
-- period.
--
-- 'savingsPlansCoveredHoursInLookbackPeriod', 'currentInstance_savingsPlansCoveredHoursInLookbackPeriod' - The number of hours during the lookback period that\'s covered by
-- Savings Plans.
--
-- 'tags', 'currentInstance_tags' - Cost allocation resource tags that are applied to the instance.
--
-- 'totalRunningHoursInLookbackPeriod', 'currentInstance_totalRunningHoursInLookbackPeriod' - The total number of hours that the instance ran during the lookback
-- period.
newCurrentInstance ::
  CurrentInstance
newCurrentInstance :: CurrentInstance
newCurrentInstance =
  CurrentInstance'
    { $sel:currencyCode:CurrentInstance' :: Maybe Text
currencyCode = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceName:CurrentInstance' :: Maybe Text
instanceName = forall a. Maybe a
Prelude.Nothing,
      $sel:monthlyCost:CurrentInstance' :: Maybe Text
monthlyCost = forall a. Maybe a
Prelude.Nothing,
      $sel:onDemandHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
onDemandHoursInLookbackPeriod = forall a. Maybe a
Prelude.Nothing,
      $sel:reservationCoveredHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
reservationCoveredHoursInLookbackPeriod =
        forall a. Maybe a
Prelude.Nothing,
      $sel:resourceDetails:CurrentInstance' :: Maybe ResourceDetails
resourceDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceId:CurrentInstance' :: Maybe Text
resourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceUtilization:CurrentInstance' :: Maybe ResourceUtilization
resourceUtilization = forall a. Maybe a
Prelude.Nothing,
      $sel:savingsPlansCoveredHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
savingsPlansCoveredHoursInLookbackPeriod =
        forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CurrentInstance' :: Maybe [TagValues]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:totalRunningHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
totalRunningHoursInLookbackPeriod = forall a. Maybe a
Prelude.Nothing
    }

-- | The currency code that Amazon Web Services used to calculate the costs
-- for this instance.
currentInstance_currencyCode :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_currencyCode :: Lens' CurrentInstance (Maybe Text)
currentInstance_currencyCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
currencyCode :: Maybe Text
$sel:currencyCode:CurrentInstance' :: CurrentInstance -> Maybe Text
currencyCode} -> Maybe Text
currencyCode) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:currencyCode:CurrentInstance' :: Maybe Text
currencyCode = Maybe Text
a} :: CurrentInstance)

-- | The name that you given an instance. This field shows as blank if you
-- haven\'t given the instance a name.
currentInstance_instanceName :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_instanceName :: Lens' CurrentInstance (Maybe Text)
currentInstance_instanceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
instanceName :: Maybe Text
$sel:instanceName:CurrentInstance' :: CurrentInstance -> Maybe Text
instanceName} -> Maybe Text
instanceName) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:instanceName:CurrentInstance' :: Maybe Text
instanceName = Maybe Text
a} :: CurrentInstance)

-- | The current On-Demand cost of operating this instance on a monthly
-- basis.
currentInstance_monthlyCost :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_monthlyCost :: Lens' CurrentInstance (Maybe Text)
currentInstance_monthlyCost = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
monthlyCost :: Maybe Text
$sel:monthlyCost:CurrentInstance' :: CurrentInstance -> Maybe Text
monthlyCost} -> Maybe Text
monthlyCost) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:monthlyCost:CurrentInstance' :: Maybe Text
monthlyCost = Maybe Text
a} :: CurrentInstance)

-- | The number of hours during the lookback period that\'s billed at
-- On-Demand rates.
currentInstance_onDemandHoursInLookbackPeriod :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_onDemandHoursInLookbackPeriod :: Lens' CurrentInstance (Maybe Text)
currentInstance_onDemandHoursInLookbackPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
onDemandHoursInLookbackPeriod :: Maybe Text
$sel:onDemandHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
onDemandHoursInLookbackPeriod} -> Maybe Text
onDemandHoursInLookbackPeriod) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:onDemandHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
onDemandHoursInLookbackPeriod = Maybe Text
a} :: CurrentInstance)

-- | The number of hours during the lookback period that\'s covered by
-- reservations.
currentInstance_reservationCoveredHoursInLookbackPeriod :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_reservationCoveredHoursInLookbackPeriod :: Lens' CurrentInstance (Maybe Text)
currentInstance_reservationCoveredHoursInLookbackPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
reservationCoveredHoursInLookbackPeriod :: Maybe Text
$sel:reservationCoveredHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
reservationCoveredHoursInLookbackPeriod} -> Maybe Text
reservationCoveredHoursInLookbackPeriod) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:reservationCoveredHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
reservationCoveredHoursInLookbackPeriod = Maybe Text
a} :: CurrentInstance)

-- | Details about the resource and utilization.
currentInstance_resourceDetails :: Lens.Lens' CurrentInstance (Prelude.Maybe ResourceDetails)
currentInstance_resourceDetails :: Lens' CurrentInstance (Maybe ResourceDetails)
currentInstance_resourceDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe ResourceDetails
resourceDetails :: Maybe ResourceDetails
$sel:resourceDetails:CurrentInstance' :: CurrentInstance -> Maybe ResourceDetails
resourceDetails} -> Maybe ResourceDetails
resourceDetails) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe ResourceDetails
a -> CurrentInstance
s {$sel:resourceDetails:CurrentInstance' :: Maybe ResourceDetails
resourceDetails = Maybe ResourceDetails
a} :: CurrentInstance)

-- | Resource ID of the current instance.
currentInstance_resourceId :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_resourceId :: Lens' CurrentInstance (Maybe Text)
currentInstance_resourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
resourceId :: Maybe Text
$sel:resourceId:CurrentInstance' :: CurrentInstance -> Maybe Text
resourceId} -> Maybe Text
resourceId) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:resourceId:CurrentInstance' :: Maybe Text
resourceId = Maybe Text
a} :: CurrentInstance)

-- | Utilization information of the current instance during the lookback
-- period.
currentInstance_resourceUtilization :: Lens.Lens' CurrentInstance (Prelude.Maybe ResourceUtilization)
currentInstance_resourceUtilization :: Lens' CurrentInstance (Maybe ResourceUtilization)
currentInstance_resourceUtilization = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe ResourceUtilization
resourceUtilization :: Maybe ResourceUtilization
$sel:resourceUtilization:CurrentInstance' :: CurrentInstance -> Maybe ResourceUtilization
resourceUtilization} -> Maybe ResourceUtilization
resourceUtilization) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe ResourceUtilization
a -> CurrentInstance
s {$sel:resourceUtilization:CurrentInstance' :: Maybe ResourceUtilization
resourceUtilization = Maybe ResourceUtilization
a} :: CurrentInstance)

-- | The number of hours during the lookback period that\'s covered by
-- Savings Plans.
currentInstance_savingsPlansCoveredHoursInLookbackPeriod :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_savingsPlansCoveredHoursInLookbackPeriod :: Lens' CurrentInstance (Maybe Text)
currentInstance_savingsPlansCoveredHoursInLookbackPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
savingsPlansCoveredHoursInLookbackPeriod :: Maybe Text
$sel:savingsPlansCoveredHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
savingsPlansCoveredHoursInLookbackPeriod} -> Maybe Text
savingsPlansCoveredHoursInLookbackPeriod) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:savingsPlansCoveredHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
savingsPlansCoveredHoursInLookbackPeriod = Maybe Text
a} :: CurrentInstance)

-- | Cost allocation resource tags that are applied to the instance.
currentInstance_tags :: Lens.Lens' CurrentInstance (Prelude.Maybe [TagValues])
currentInstance_tags :: Lens' CurrentInstance (Maybe [TagValues])
currentInstance_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe [TagValues]
tags :: Maybe [TagValues]
$sel:tags:CurrentInstance' :: CurrentInstance -> Maybe [TagValues]
tags} -> Maybe [TagValues]
tags) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe [TagValues]
a -> CurrentInstance
s {$sel:tags:CurrentInstance' :: Maybe [TagValues]
tags = Maybe [TagValues]
a} :: CurrentInstance) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The total number of hours that the instance ran during the lookback
-- period.
currentInstance_totalRunningHoursInLookbackPeriod :: Lens.Lens' CurrentInstance (Prelude.Maybe Prelude.Text)
currentInstance_totalRunningHoursInLookbackPeriod :: Lens' CurrentInstance (Maybe Text)
currentInstance_totalRunningHoursInLookbackPeriod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CurrentInstance' {Maybe Text
totalRunningHoursInLookbackPeriod :: Maybe Text
$sel:totalRunningHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
totalRunningHoursInLookbackPeriod} -> Maybe Text
totalRunningHoursInLookbackPeriod) (\s :: CurrentInstance
s@CurrentInstance' {} Maybe Text
a -> CurrentInstance
s {$sel:totalRunningHoursInLookbackPeriod:CurrentInstance' :: Maybe Text
totalRunningHoursInLookbackPeriod = Maybe Text
a} :: CurrentInstance)

instance Data.FromJSON CurrentInstance where
  parseJSON :: Value -> Parser CurrentInstance
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CurrentInstance"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ResourceDetails
-> Maybe Text
-> Maybe ResourceUtilization
-> Maybe Text
-> Maybe [TagValues]
-> Maybe Text
-> CurrentInstance
CurrentInstance'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CurrencyCode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InstanceName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MonthlyCost")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"OnDemandHoursInLookbackPeriod")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ReservationCoveredHoursInLookbackPeriod"
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ResourceDetails")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ResourceId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ResourceUtilization")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SavingsPlansCoveredHoursInLookbackPeriod"
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TotalRunningHoursInLookbackPeriod")
      )

instance Prelude.Hashable CurrentInstance where
  hashWithSalt :: Int -> CurrentInstance -> Int
hashWithSalt Int
_salt CurrentInstance' {Maybe [TagValues]
Maybe Text
Maybe ResourceDetails
Maybe ResourceUtilization
totalRunningHoursInLookbackPeriod :: Maybe Text
tags :: Maybe [TagValues]
savingsPlansCoveredHoursInLookbackPeriod :: Maybe Text
resourceUtilization :: Maybe ResourceUtilization
resourceId :: Maybe Text
resourceDetails :: Maybe ResourceDetails
reservationCoveredHoursInLookbackPeriod :: Maybe Text
onDemandHoursInLookbackPeriod :: Maybe Text
monthlyCost :: Maybe Text
instanceName :: Maybe Text
currencyCode :: Maybe Text
$sel:totalRunningHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:tags:CurrentInstance' :: CurrentInstance -> Maybe [TagValues]
$sel:savingsPlansCoveredHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:resourceUtilization:CurrentInstance' :: CurrentInstance -> Maybe ResourceUtilization
$sel:resourceId:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:resourceDetails:CurrentInstance' :: CurrentInstance -> Maybe ResourceDetails
$sel:reservationCoveredHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:onDemandHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:monthlyCost:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:instanceName:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:currencyCode:CurrentInstance' :: CurrentInstance -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
currencyCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
monthlyCost
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
onDemandHoursInLookbackPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservationCoveredHoursInLookbackPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceDetails
resourceDetails
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceUtilization
resourceUtilization
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
savingsPlansCoveredHoursInLookbackPeriod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagValues]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
totalRunningHoursInLookbackPeriod

instance Prelude.NFData CurrentInstance where
  rnf :: CurrentInstance -> ()
rnf CurrentInstance' {Maybe [TagValues]
Maybe Text
Maybe ResourceDetails
Maybe ResourceUtilization
totalRunningHoursInLookbackPeriod :: Maybe Text
tags :: Maybe [TagValues]
savingsPlansCoveredHoursInLookbackPeriod :: Maybe Text
resourceUtilization :: Maybe ResourceUtilization
resourceId :: Maybe Text
resourceDetails :: Maybe ResourceDetails
reservationCoveredHoursInLookbackPeriod :: Maybe Text
onDemandHoursInLookbackPeriod :: Maybe Text
monthlyCost :: Maybe Text
instanceName :: Maybe Text
currencyCode :: Maybe Text
$sel:totalRunningHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:tags:CurrentInstance' :: CurrentInstance -> Maybe [TagValues]
$sel:savingsPlansCoveredHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:resourceUtilization:CurrentInstance' :: CurrentInstance -> Maybe ResourceUtilization
$sel:resourceId:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:resourceDetails:CurrentInstance' :: CurrentInstance -> Maybe ResourceDetails
$sel:reservationCoveredHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:onDemandHoursInLookbackPeriod:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:monthlyCost:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:instanceName:CurrentInstance' :: CurrentInstance -> Maybe Text
$sel:currencyCode:CurrentInstance' :: CurrentInstance -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
currencyCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
monthlyCost
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
onDemandHoursInLookbackPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reservationCoveredHoursInLookbackPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceDetails
resourceDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceUtilization
resourceUtilization
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
savingsPlansCoveredHoursInLookbackPeriod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [TagValues]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
totalRunningHoursInLookbackPeriod