{-# 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.EC2.Types.ScheduledInstance
-- 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.EC2.Types.ScheduledInstance where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.ScheduledInstanceRecurrence
import qualified Amazonka.Prelude as Prelude

-- | Describes a Scheduled Instance.
--
-- /See:/ 'newScheduledInstance' smart constructor.
data ScheduledInstance = ScheduledInstance'
  { -- | The Availability Zone.
    ScheduledInstance -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The date when the Scheduled Instance was purchased.
    ScheduledInstance -> Maybe ISO8601
createDate :: Prelude.Maybe Data.ISO8601,
    -- | The hourly price for a single instance.
    ScheduledInstance -> Maybe Text
hourlyPrice :: Prelude.Maybe Prelude.Text,
    -- | The number of instances.
    ScheduledInstance -> Maybe Int
instanceCount :: Prelude.Maybe Prelude.Int,
    -- | The instance type.
    ScheduledInstance -> Maybe Text
instanceType :: Prelude.Maybe Prelude.Text,
    -- | The network platform (@EC2-Classic@ or @EC2-VPC@).
    ScheduledInstance -> Maybe Text
networkPlatform :: Prelude.Maybe Prelude.Text,
    -- | The time for the next schedule to start.
    ScheduledInstance -> Maybe ISO8601
nextSlotStartTime :: Prelude.Maybe Data.ISO8601,
    -- | The platform (@Linux\/UNIX@ or @Windows@).
    ScheduledInstance -> Maybe Text
platform :: Prelude.Maybe Prelude.Text,
    -- | The time that the previous schedule ended or will end.
    ScheduledInstance -> Maybe ISO8601
previousSlotEndTime :: Prelude.Maybe Data.ISO8601,
    -- | The schedule recurrence.
    ScheduledInstance -> Maybe ScheduledInstanceRecurrence
recurrence :: Prelude.Maybe ScheduledInstanceRecurrence,
    -- | The Scheduled Instance ID.
    ScheduledInstance -> Maybe Text
scheduledInstanceId :: Prelude.Maybe Prelude.Text,
    -- | The number of hours in the schedule.
    ScheduledInstance -> Maybe Int
slotDurationInHours :: Prelude.Maybe Prelude.Int,
    -- | The end date for the Scheduled Instance.
    ScheduledInstance -> Maybe ISO8601
termEndDate :: Prelude.Maybe Data.ISO8601,
    -- | The start date for the Scheduled Instance.
    ScheduledInstance -> Maybe ISO8601
termStartDate :: Prelude.Maybe Data.ISO8601,
    -- | The total number of hours for a single instance for the entire term.
    ScheduledInstance -> Maybe Int
totalScheduledInstanceHours :: Prelude.Maybe Prelude.Int
  }
  deriving (ScheduledInstance -> ScheduledInstance -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ScheduledInstance -> ScheduledInstance -> Bool
$c/= :: ScheduledInstance -> ScheduledInstance -> Bool
== :: ScheduledInstance -> ScheduledInstance -> Bool
$c== :: ScheduledInstance -> ScheduledInstance -> Bool
Prelude.Eq, ReadPrec [ScheduledInstance]
ReadPrec ScheduledInstance
Int -> ReadS ScheduledInstance
ReadS [ScheduledInstance]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ScheduledInstance]
$creadListPrec :: ReadPrec [ScheduledInstance]
readPrec :: ReadPrec ScheduledInstance
$creadPrec :: ReadPrec ScheduledInstance
readList :: ReadS [ScheduledInstance]
$creadList :: ReadS [ScheduledInstance]
readsPrec :: Int -> ReadS ScheduledInstance
$creadsPrec :: Int -> ReadS ScheduledInstance
Prelude.Read, Int -> ScheduledInstance -> ShowS
[ScheduledInstance] -> ShowS
ScheduledInstance -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ScheduledInstance] -> ShowS
$cshowList :: [ScheduledInstance] -> ShowS
show :: ScheduledInstance -> String
$cshow :: ScheduledInstance -> String
showsPrec :: Int -> ScheduledInstance -> ShowS
$cshowsPrec :: Int -> ScheduledInstance -> ShowS
Prelude.Show, forall x. Rep ScheduledInstance x -> ScheduledInstance
forall x. ScheduledInstance -> Rep ScheduledInstance x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ScheduledInstance x -> ScheduledInstance
$cfrom :: forall x. ScheduledInstance -> Rep ScheduledInstance x
Prelude.Generic)

-- |
-- Create a value of 'ScheduledInstance' 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:
--
-- 'availabilityZone', 'scheduledInstance_availabilityZone' - The Availability Zone.
--
-- 'createDate', 'scheduledInstance_createDate' - The date when the Scheduled Instance was purchased.
--
-- 'hourlyPrice', 'scheduledInstance_hourlyPrice' - The hourly price for a single instance.
--
-- 'instanceCount', 'scheduledInstance_instanceCount' - The number of instances.
--
-- 'instanceType', 'scheduledInstance_instanceType' - The instance type.
--
-- 'networkPlatform', 'scheduledInstance_networkPlatform' - The network platform (@EC2-Classic@ or @EC2-VPC@).
--
-- 'nextSlotStartTime', 'scheduledInstance_nextSlotStartTime' - The time for the next schedule to start.
--
-- 'platform', 'scheduledInstance_platform' - The platform (@Linux\/UNIX@ or @Windows@).
--
-- 'previousSlotEndTime', 'scheduledInstance_previousSlotEndTime' - The time that the previous schedule ended or will end.
--
-- 'recurrence', 'scheduledInstance_recurrence' - The schedule recurrence.
--
-- 'scheduledInstanceId', 'scheduledInstance_scheduledInstanceId' - The Scheduled Instance ID.
--
-- 'slotDurationInHours', 'scheduledInstance_slotDurationInHours' - The number of hours in the schedule.
--
-- 'termEndDate', 'scheduledInstance_termEndDate' - The end date for the Scheduled Instance.
--
-- 'termStartDate', 'scheduledInstance_termStartDate' - The start date for the Scheduled Instance.
--
-- 'totalScheduledInstanceHours', 'scheduledInstance_totalScheduledInstanceHours' - The total number of hours for a single instance for the entire term.
newScheduledInstance ::
  ScheduledInstance
newScheduledInstance :: ScheduledInstance
newScheduledInstance =
  ScheduledInstance'
    { $sel:availabilityZone:ScheduledInstance' :: Maybe Text
availabilityZone =
        forall a. Maybe a
Prelude.Nothing,
      $sel:createDate:ScheduledInstance' :: Maybe ISO8601
createDate = forall a. Maybe a
Prelude.Nothing,
      $sel:hourlyPrice:ScheduledInstance' :: Maybe Text
hourlyPrice = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceCount:ScheduledInstance' :: Maybe Int
instanceCount = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:ScheduledInstance' :: Maybe Text
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:networkPlatform:ScheduledInstance' :: Maybe Text
networkPlatform = forall a. Maybe a
Prelude.Nothing,
      $sel:nextSlotStartTime:ScheduledInstance' :: Maybe ISO8601
nextSlotStartTime = forall a. Maybe a
Prelude.Nothing,
      $sel:platform:ScheduledInstance' :: Maybe Text
platform = forall a. Maybe a
Prelude.Nothing,
      $sel:previousSlotEndTime:ScheduledInstance' :: Maybe ISO8601
previousSlotEndTime = forall a. Maybe a
Prelude.Nothing,
      $sel:recurrence:ScheduledInstance' :: Maybe ScheduledInstanceRecurrence
recurrence = forall a. Maybe a
Prelude.Nothing,
      $sel:scheduledInstanceId:ScheduledInstance' :: Maybe Text
scheduledInstanceId = forall a. Maybe a
Prelude.Nothing,
      $sel:slotDurationInHours:ScheduledInstance' :: Maybe Int
slotDurationInHours = forall a. Maybe a
Prelude.Nothing,
      $sel:termEndDate:ScheduledInstance' :: Maybe ISO8601
termEndDate = forall a. Maybe a
Prelude.Nothing,
      $sel:termStartDate:ScheduledInstance' :: Maybe ISO8601
termStartDate = forall a. Maybe a
Prelude.Nothing,
      $sel:totalScheduledInstanceHours:ScheduledInstance' :: Maybe Int
totalScheduledInstanceHours = forall a. Maybe a
Prelude.Nothing
    }

-- | The Availability Zone.
scheduledInstance_availabilityZone :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Text)
scheduledInstance_availabilityZone :: Lens' ScheduledInstance (Maybe Text)
scheduledInstance_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:ScheduledInstance' :: ScheduledInstance -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Text
a -> ScheduledInstance
s {$sel:availabilityZone:ScheduledInstance' :: Maybe Text
availabilityZone = Maybe Text
a} :: ScheduledInstance)

-- | The date when the Scheduled Instance was purchased.
scheduledInstance_createDate :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.UTCTime)
scheduledInstance_createDate :: Lens' ScheduledInstance (Maybe UTCTime)
scheduledInstance_createDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe ISO8601
createDate :: Maybe ISO8601
$sel:createDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
createDate} -> Maybe ISO8601
createDate) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe ISO8601
a -> ScheduledInstance
s {$sel:createDate:ScheduledInstance' :: Maybe ISO8601
createDate = Maybe ISO8601
a} :: ScheduledInstance) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The hourly price for a single instance.
scheduledInstance_hourlyPrice :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Text)
scheduledInstance_hourlyPrice :: Lens' ScheduledInstance (Maybe Text)
scheduledInstance_hourlyPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Text
hourlyPrice :: Maybe Text
$sel:hourlyPrice:ScheduledInstance' :: ScheduledInstance -> Maybe Text
hourlyPrice} -> Maybe Text
hourlyPrice) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Text
a -> ScheduledInstance
s {$sel:hourlyPrice:ScheduledInstance' :: Maybe Text
hourlyPrice = Maybe Text
a} :: ScheduledInstance)

-- | The number of instances.
scheduledInstance_instanceCount :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Int)
scheduledInstance_instanceCount :: Lens' ScheduledInstance (Maybe Int)
scheduledInstance_instanceCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Int
instanceCount :: Maybe Int
$sel:instanceCount:ScheduledInstance' :: ScheduledInstance -> Maybe Int
instanceCount} -> Maybe Int
instanceCount) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Int
a -> ScheduledInstance
s {$sel:instanceCount:ScheduledInstance' :: Maybe Int
instanceCount = Maybe Int
a} :: ScheduledInstance)

-- | The instance type.
scheduledInstance_instanceType :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Text)
scheduledInstance_instanceType :: Lens' ScheduledInstance (Maybe Text)
scheduledInstance_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Text
instanceType :: Maybe Text
$sel:instanceType:ScheduledInstance' :: ScheduledInstance -> Maybe Text
instanceType} -> Maybe Text
instanceType) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Text
a -> ScheduledInstance
s {$sel:instanceType:ScheduledInstance' :: Maybe Text
instanceType = Maybe Text
a} :: ScheduledInstance)

-- | The network platform (@EC2-Classic@ or @EC2-VPC@).
scheduledInstance_networkPlatform :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Text)
scheduledInstance_networkPlatform :: Lens' ScheduledInstance (Maybe Text)
scheduledInstance_networkPlatform = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Text
networkPlatform :: Maybe Text
$sel:networkPlatform:ScheduledInstance' :: ScheduledInstance -> Maybe Text
networkPlatform} -> Maybe Text
networkPlatform) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Text
a -> ScheduledInstance
s {$sel:networkPlatform:ScheduledInstance' :: Maybe Text
networkPlatform = Maybe Text
a} :: ScheduledInstance)

-- | The time for the next schedule to start.
scheduledInstance_nextSlotStartTime :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.UTCTime)
scheduledInstance_nextSlotStartTime :: Lens' ScheduledInstance (Maybe UTCTime)
scheduledInstance_nextSlotStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe ISO8601
nextSlotStartTime :: Maybe ISO8601
$sel:nextSlotStartTime:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
nextSlotStartTime} -> Maybe ISO8601
nextSlotStartTime) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe ISO8601
a -> ScheduledInstance
s {$sel:nextSlotStartTime:ScheduledInstance' :: Maybe ISO8601
nextSlotStartTime = Maybe ISO8601
a} :: ScheduledInstance) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The platform (@Linux\/UNIX@ or @Windows@).
scheduledInstance_platform :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Text)
scheduledInstance_platform :: Lens' ScheduledInstance (Maybe Text)
scheduledInstance_platform = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Text
platform :: Maybe Text
$sel:platform:ScheduledInstance' :: ScheduledInstance -> Maybe Text
platform} -> Maybe Text
platform) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Text
a -> ScheduledInstance
s {$sel:platform:ScheduledInstance' :: Maybe Text
platform = Maybe Text
a} :: ScheduledInstance)

-- | The time that the previous schedule ended or will end.
scheduledInstance_previousSlotEndTime :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.UTCTime)
scheduledInstance_previousSlotEndTime :: Lens' ScheduledInstance (Maybe UTCTime)
scheduledInstance_previousSlotEndTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe ISO8601
previousSlotEndTime :: Maybe ISO8601
$sel:previousSlotEndTime:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
previousSlotEndTime} -> Maybe ISO8601
previousSlotEndTime) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe ISO8601
a -> ScheduledInstance
s {$sel:previousSlotEndTime:ScheduledInstance' :: Maybe ISO8601
previousSlotEndTime = Maybe ISO8601
a} :: ScheduledInstance) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The schedule recurrence.
scheduledInstance_recurrence :: Lens.Lens' ScheduledInstance (Prelude.Maybe ScheduledInstanceRecurrence)
scheduledInstance_recurrence :: Lens' ScheduledInstance (Maybe ScheduledInstanceRecurrence)
scheduledInstance_recurrence = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe ScheduledInstanceRecurrence
recurrence :: Maybe ScheduledInstanceRecurrence
$sel:recurrence:ScheduledInstance' :: ScheduledInstance -> Maybe ScheduledInstanceRecurrence
recurrence} -> Maybe ScheduledInstanceRecurrence
recurrence) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe ScheduledInstanceRecurrence
a -> ScheduledInstance
s {$sel:recurrence:ScheduledInstance' :: Maybe ScheduledInstanceRecurrence
recurrence = Maybe ScheduledInstanceRecurrence
a} :: ScheduledInstance)

-- | The Scheduled Instance ID.
scheduledInstance_scheduledInstanceId :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Text)
scheduledInstance_scheduledInstanceId :: Lens' ScheduledInstance (Maybe Text)
scheduledInstance_scheduledInstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Text
scheduledInstanceId :: Maybe Text
$sel:scheduledInstanceId:ScheduledInstance' :: ScheduledInstance -> Maybe Text
scheduledInstanceId} -> Maybe Text
scheduledInstanceId) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Text
a -> ScheduledInstance
s {$sel:scheduledInstanceId:ScheduledInstance' :: Maybe Text
scheduledInstanceId = Maybe Text
a} :: ScheduledInstance)

-- | The number of hours in the schedule.
scheduledInstance_slotDurationInHours :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Int)
scheduledInstance_slotDurationInHours :: Lens' ScheduledInstance (Maybe Int)
scheduledInstance_slotDurationInHours = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Int
slotDurationInHours :: Maybe Int
$sel:slotDurationInHours:ScheduledInstance' :: ScheduledInstance -> Maybe Int
slotDurationInHours} -> Maybe Int
slotDurationInHours) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Int
a -> ScheduledInstance
s {$sel:slotDurationInHours:ScheduledInstance' :: Maybe Int
slotDurationInHours = Maybe Int
a} :: ScheduledInstance)

-- | The end date for the Scheduled Instance.
scheduledInstance_termEndDate :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.UTCTime)
scheduledInstance_termEndDate :: Lens' ScheduledInstance (Maybe UTCTime)
scheduledInstance_termEndDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe ISO8601
termEndDate :: Maybe ISO8601
$sel:termEndDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
termEndDate} -> Maybe ISO8601
termEndDate) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe ISO8601
a -> ScheduledInstance
s {$sel:termEndDate:ScheduledInstance' :: Maybe ISO8601
termEndDate = Maybe ISO8601
a} :: ScheduledInstance) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The start date for the Scheduled Instance.
scheduledInstance_termStartDate :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.UTCTime)
scheduledInstance_termStartDate :: Lens' ScheduledInstance (Maybe UTCTime)
scheduledInstance_termStartDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe ISO8601
termStartDate :: Maybe ISO8601
$sel:termStartDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
termStartDate} -> Maybe ISO8601
termStartDate) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe ISO8601
a -> ScheduledInstance
s {$sel:termStartDate:ScheduledInstance' :: Maybe ISO8601
termStartDate = Maybe ISO8601
a} :: ScheduledInstance) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The total number of hours for a single instance for the entire term.
scheduledInstance_totalScheduledInstanceHours :: Lens.Lens' ScheduledInstance (Prelude.Maybe Prelude.Int)
scheduledInstance_totalScheduledInstanceHours :: Lens' ScheduledInstance (Maybe Int)
scheduledInstance_totalScheduledInstanceHours = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ScheduledInstance' {Maybe Int
totalScheduledInstanceHours :: Maybe Int
$sel:totalScheduledInstanceHours:ScheduledInstance' :: ScheduledInstance -> Maybe Int
totalScheduledInstanceHours} -> Maybe Int
totalScheduledInstanceHours) (\s :: ScheduledInstance
s@ScheduledInstance' {} Maybe Int
a -> ScheduledInstance
s {$sel:totalScheduledInstanceHours:ScheduledInstance' :: Maybe Int
totalScheduledInstanceHours = Maybe Int
a} :: ScheduledInstance)

instance Data.FromXML ScheduledInstance where
  parseXML :: [Node] -> Either String ScheduledInstance
parseXML [Node]
x =
    Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe Text
-> Maybe ISO8601
-> Maybe ScheduledInstanceRecurrence
-> Maybe Text
-> Maybe Int
-> Maybe ISO8601
-> Maybe ISO8601
-> Maybe Int
-> ScheduledInstance
ScheduledInstance'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"availabilityZone")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"createDate")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"hourlyPrice")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"instanceCount")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"instanceType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"networkPlatform")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"nextSlotStartTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"platform")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"previousSlotEndTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"recurrence")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"scheduledInstanceId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"slotDurationInHours")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"termEndDate")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"termStartDate")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"totalScheduledInstanceHours")

instance Prelude.Hashable ScheduledInstance where
  hashWithSalt :: Int -> ScheduledInstance -> Int
hashWithSalt Int
_salt ScheduledInstance' {Maybe Int
Maybe Text
Maybe ISO8601
Maybe ScheduledInstanceRecurrence
totalScheduledInstanceHours :: Maybe Int
termStartDate :: Maybe ISO8601
termEndDate :: Maybe ISO8601
slotDurationInHours :: Maybe Int
scheduledInstanceId :: Maybe Text
recurrence :: Maybe ScheduledInstanceRecurrence
previousSlotEndTime :: Maybe ISO8601
platform :: Maybe Text
nextSlotStartTime :: Maybe ISO8601
networkPlatform :: Maybe Text
instanceType :: Maybe Text
instanceCount :: Maybe Int
hourlyPrice :: Maybe Text
createDate :: Maybe ISO8601
availabilityZone :: Maybe Text
$sel:totalScheduledInstanceHours:ScheduledInstance' :: ScheduledInstance -> Maybe Int
$sel:termStartDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:termEndDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:slotDurationInHours:ScheduledInstance' :: ScheduledInstance -> Maybe Int
$sel:scheduledInstanceId:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:recurrence:ScheduledInstance' :: ScheduledInstance -> Maybe ScheduledInstanceRecurrence
$sel:previousSlotEndTime:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:platform:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:nextSlotStartTime:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:networkPlatform:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:instanceType:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:instanceCount:ScheduledInstance' :: ScheduledInstance -> Maybe Int
$sel:hourlyPrice:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:createDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:availabilityZone:ScheduledInstance' :: ScheduledInstance -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
createDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
hourlyPrice
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
instanceCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
networkPlatform
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
nextSlotStartTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
platform
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
previousSlotEndTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScheduledInstanceRecurrence
recurrence
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
scheduledInstanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
slotDurationInHours
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
termEndDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
termStartDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
totalScheduledInstanceHours

instance Prelude.NFData ScheduledInstance where
  rnf :: ScheduledInstance -> ()
rnf ScheduledInstance' {Maybe Int
Maybe Text
Maybe ISO8601
Maybe ScheduledInstanceRecurrence
totalScheduledInstanceHours :: Maybe Int
termStartDate :: Maybe ISO8601
termEndDate :: Maybe ISO8601
slotDurationInHours :: Maybe Int
scheduledInstanceId :: Maybe Text
recurrence :: Maybe ScheduledInstanceRecurrence
previousSlotEndTime :: Maybe ISO8601
platform :: Maybe Text
nextSlotStartTime :: Maybe ISO8601
networkPlatform :: Maybe Text
instanceType :: Maybe Text
instanceCount :: Maybe Int
hourlyPrice :: Maybe Text
createDate :: Maybe ISO8601
availabilityZone :: Maybe Text
$sel:totalScheduledInstanceHours:ScheduledInstance' :: ScheduledInstance -> Maybe Int
$sel:termStartDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:termEndDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:slotDurationInHours:ScheduledInstance' :: ScheduledInstance -> Maybe Int
$sel:scheduledInstanceId:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:recurrence:ScheduledInstance' :: ScheduledInstance -> Maybe ScheduledInstanceRecurrence
$sel:previousSlotEndTime:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:platform:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:nextSlotStartTime:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:networkPlatform:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:instanceType:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:instanceCount:ScheduledInstance' :: ScheduledInstance -> Maybe Int
$sel:hourlyPrice:ScheduledInstance' :: ScheduledInstance -> Maybe Text
$sel:createDate:ScheduledInstance' :: ScheduledInstance -> Maybe ISO8601
$sel:availabilityZone:ScheduledInstance' :: ScheduledInstance -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
createDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
hourlyPrice
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
instanceCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
networkPlatform
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
nextSlotStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
platform
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
previousSlotEndTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ScheduledInstanceRecurrence
recurrence
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
scheduledInstanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
slotDurationInHours
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
termEndDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
termStartDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
totalScheduledInstanceHours