{-# 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.DrS.Types.LifeCycleLastLaunchInitiated
-- 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.DrS.Types.LifeCycleLastLaunchInitiated where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DrS.Types.LastLaunchType
import qualified Amazonka.Prelude as Prelude

-- | An object containing information regarding the initiation of the last
-- launch of a Source Server.
--
-- /See:/ 'newLifeCycleLastLaunchInitiated' smart constructor.
data LifeCycleLastLaunchInitiated = LifeCycleLastLaunchInitiated'
  { -- | The date and time the last Source Server launch was initiated.
    LifeCycleLastLaunchInitiated -> Maybe Text
apiCallDateTime :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Job that was used to last launch the Source Server.
    LifeCycleLastLaunchInitiated -> Maybe Text
jobID :: Prelude.Maybe Prelude.Text,
    -- | The Job type that was used to last launch the Source Server.
    LifeCycleLastLaunchInitiated -> Maybe LastLaunchType
type' :: Prelude.Maybe LastLaunchType
  }
  deriving (LifeCycleLastLaunchInitiated
-> LifeCycleLastLaunchInitiated -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LifeCycleLastLaunchInitiated
-> LifeCycleLastLaunchInitiated -> Bool
$c/= :: LifeCycleLastLaunchInitiated
-> LifeCycleLastLaunchInitiated -> Bool
== :: LifeCycleLastLaunchInitiated
-> LifeCycleLastLaunchInitiated -> Bool
$c== :: LifeCycleLastLaunchInitiated
-> LifeCycleLastLaunchInitiated -> Bool
Prelude.Eq, ReadPrec [LifeCycleLastLaunchInitiated]
ReadPrec LifeCycleLastLaunchInitiated
Int -> ReadS LifeCycleLastLaunchInitiated
ReadS [LifeCycleLastLaunchInitiated]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LifeCycleLastLaunchInitiated]
$creadListPrec :: ReadPrec [LifeCycleLastLaunchInitiated]
readPrec :: ReadPrec LifeCycleLastLaunchInitiated
$creadPrec :: ReadPrec LifeCycleLastLaunchInitiated
readList :: ReadS [LifeCycleLastLaunchInitiated]
$creadList :: ReadS [LifeCycleLastLaunchInitiated]
readsPrec :: Int -> ReadS LifeCycleLastLaunchInitiated
$creadsPrec :: Int -> ReadS LifeCycleLastLaunchInitiated
Prelude.Read, Int -> LifeCycleLastLaunchInitiated -> ShowS
[LifeCycleLastLaunchInitiated] -> ShowS
LifeCycleLastLaunchInitiated -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LifeCycleLastLaunchInitiated] -> ShowS
$cshowList :: [LifeCycleLastLaunchInitiated] -> ShowS
show :: LifeCycleLastLaunchInitiated -> String
$cshow :: LifeCycleLastLaunchInitiated -> String
showsPrec :: Int -> LifeCycleLastLaunchInitiated -> ShowS
$cshowsPrec :: Int -> LifeCycleLastLaunchInitiated -> ShowS
Prelude.Show, forall x.
Rep LifeCycleLastLaunchInitiated x -> LifeCycleLastLaunchInitiated
forall x.
LifeCycleLastLaunchInitiated -> Rep LifeCycleLastLaunchInitiated x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep LifeCycleLastLaunchInitiated x -> LifeCycleLastLaunchInitiated
$cfrom :: forall x.
LifeCycleLastLaunchInitiated -> Rep LifeCycleLastLaunchInitiated x
Prelude.Generic)

-- |
-- Create a value of 'LifeCycleLastLaunchInitiated' 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:
--
-- 'apiCallDateTime', 'lifeCycleLastLaunchInitiated_apiCallDateTime' - The date and time the last Source Server launch was initiated.
--
-- 'jobID', 'lifeCycleLastLaunchInitiated_jobID' - The ID of the Job that was used to last launch the Source Server.
--
-- 'type'', 'lifeCycleLastLaunchInitiated_type' - The Job type that was used to last launch the Source Server.
newLifeCycleLastLaunchInitiated ::
  LifeCycleLastLaunchInitiated
newLifeCycleLastLaunchInitiated :: LifeCycleLastLaunchInitiated
newLifeCycleLastLaunchInitiated =
  LifeCycleLastLaunchInitiated'
    { $sel:apiCallDateTime:LifeCycleLastLaunchInitiated' :: Maybe Text
apiCallDateTime =
        forall a. Maybe a
Prelude.Nothing,
      $sel:jobID:LifeCycleLastLaunchInitiated' :: Maybe Text
jobID = forall a. Maybe a
Prelude.Nothing,
      $sel:type':LifeCycleLastLaunchInitiated' :: Maybe LastLaunchType
type' = forall a. Maybe a
Prelude.Nothing
    }

-- | The date and time the last Source Server launch was initiated.
lifeCycleLastLaunchInitiated_apiCallDateTime :: Lens.Lens' LifeCycleLastLaunchInitiated (Prelude.Maybe Prelude.Text)
lifeCycleLastLaunchInitiated_apiCallDateTime :: Lens' LifeCycleLastLaunchInitiated (Maybe Text)
lifeCycleLastLaunchInitiated_apiCallDateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LifeCycleLastLaunchInitiated' {Maybe Text
apiCallDateTime :: Maybe Text
$sel:apiCallDateTime:LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe Text
apiCallDateTime} -> Maybe Text
apiCallDateTime) (\s :: LifeCycleLastLaunchInitiated
s@LifeCycleLastLaunchInitiated' {} Maybe Text
a -> LifeCycleLastLaunchInitiated
s {$sel:apiCallDateTime:LifeCycleLastLaunchInitiated' :: Maybe Text
apiCallDateTime = Maybe Text
a} :: LifeCycleLastLaunchInitiated)

-- | The ID of the Job that was used to last launch the Source Server.
lifeCycleLastLaunchInitiated_jobID :: Lens.Lens' LifeCycleLastLaunchInitiated (Prelude.Maybe Prelude.Text)
lifeCycleLastLaunchInitiated_jobID :: Lens' LifeCycleLastLaunchInitiated (Maybe Text)
lifeCycleLastLaunchInitiated_jobID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LifeCycleLastLaunchInitiated' {Maybe Text
jobID :: Maybe Text
$sel:jobID:LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe Text
jobID} -> Maybe Text
jobID) (\s :: LifeCycleLastLaunchInitiated
s@LifeCycleLastLaunchInitiated' {} Maybe Text
a -> LifeCycleLastLaunchInitiated
s {$sel:jobID:LifeCycleLastLaunchInitiated' :: Maybe Text
jobID = Maybe Text
a} :: LifeCycleLastLaunchInitiated)

-- | The Job type that was used to last launch the Source Server.
lifeCycleLastLaunchInitiated_type :: Lens.Lens' LifeCycleLastLaunchInitiated (Prelude.Maybe LastLaunchType)
lifeCycleLastLaunchInitiated_type :: Lens' LifeCycleLastLaunchInitiated (Maybe LastLaunchType)
lifeCycleLastLaunchInitiated_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LifeCycleLastLaunchInitiated' {Maybe LastLaunchType
type' :: Maybe LastLaunchType
$sel:type':LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe LastLaunchType
type'} -> Maybe LastLaunchType
type') (\s :: LifeCycleLastLaunchInitiated
s@LifeCycleLastLaunchInitiated' {} Maybe LastLaunchType
a -> LifeCycleLastLaunchInitiated
s {$sel:type':LifeCycleLastLaunchInitiated' :: Maybe LastLaunchType
type' = Maybe LastLaunchType
a} :: LifeCycleLastLaunchInitiated)

instance Data.FromJSON LifeCycleLastLaunchInitiated where
  parseJSON :: Value -> Parser LifeCycleLastLaunchInitiated
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"LifeCycleLastLaunchInitiated"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe LastLaunchType
-> LifeCycleLastLaunchInitiated
LifeCycleLastLaunchInitiated'
            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
"apiCallDateTime")
            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
"jobID")
            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
"type")
      )

instance
  Prelude.Hashable
    LifeCycleLastLaunchInitiated
  where
  hashWithSalt :: Int -> LifeCycleLastLaunchInitiated -> Int
hashWithSalt Int
_salt LifeCycleLastLaunchInitiated' {Maybe Text
Maybe LastLaunchType
type' :: Maybe LastLaunchType
jobID :: Maybe Text
apiCallDateTime :: Maybe Text
$sel:type':LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe LastLaunchType
$sel:jobID:LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe Text
$sel:apiCallDateTime:LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
apiCallDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
jobID
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LastLaunchType
type'

instance Prelude.NFData LifeCycleLastLaunchInitiated where
  rnf :: LifeCycleLastLaunchInitiated -> ()
rnf LifeCycleLastLaunchInitiated' {Maybe Text
Maybe LastLaunchType
type' :: Maybe LastLaunchType
jobID :: Maybe Text
apiCallDateTime :: Maybe Text
$sel:type':LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe LastLaunchType
$sel:jobID:LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe Text
$sel:apiCallDateTime:LifeCycleLastLaunchInitiated' :: LifeCycleLastLaunchInitiated -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
apiCallDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
jobID
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LastLaunchType
type'