{-# 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.StoreImageTaskResult
-- 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.StoreImageTaskResult 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 qualified Amazonka.Prelude as Prelude

-- | The information about the AMI store task, including the progress of the
-- task.
--
-- /See:/ 'newStoreImageTaskResult' smart constructor.
data StoreImageTaskResult = StoreImageTaskResult'
  { -- | The ID of the AMI that is being stored.
    StoreImageTaskResult -> Maybe Text
amiId :: Prelude.Maybe Prelude.Text,
    -- | The name of the Amazon S3 bucket that contains the stored AMI object.
    StoreImageTaskResult -> Maybe Text
bucket :: Prelude.Maybe Prelude.Text,
    -- | The progress of the task as a percentage.
    StoreImageTaskResult -> Maybe Int
progressPercentage :: Prelude.Maybe Prelude.Int,
    -- | The name of the stored AMI object in the bucket.
    StoreImageTaskResult -> Maybe Text
s3objectKey :: Prelude.Maybe Prelude.Text,
    -- | If the tasks fails, the reason for the failure is returned. If the task
    -- succeeds, @null@ is returned.
    StoreImageTaskResult -> Maybe Text
storeTaskFailureReason :: Prelude.Maybe Prelude.Text,
    -- | The state of the store task (@InProgress@, @Completed@, or @Failed@).
    StoreImageTaskResult -> Maybe Text
storeTaskState :: Prelude.Maybe Prelude.Text,
    -- | The time the task started.
    StoreImageTaskResult -> Maybe ISO8601
taskStartTime :: Prelude.Maybe Data.ISO8601
  }
  deriving (StoreImageTaskResult -> StoreImageTaskResult -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StoreImageTaskResult -> StoreImageTaskResult -> Bool
$c/= :: StoreImageTaskResult -> StoreImageTaskResult -> Bool
== :: StoreImageTaskResult -> StoreImageTaskResult -> Bool
$c== :: StoreImageTaskResult -> StoreImageTaskResult -> Bool
Prelude.Eq, ReadPrec [StoreImageTaskResult]
ReadPrec StoreImageTaskResult
Int -> ReadS StoreImageTaskResult
ReadS [StoreImageTaskResult]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StoreImageTaskResult]
$creadListPrec :: ReadPrec [StoreImageTaskResult]
readPrec :: ReadPrec StoreImageTaskResult
$creadPrec :: ReadPrec StoreImageTaskResult
readList :: ReadS [StoreImageTaskResult]
$creadList :: ReadS [StoreImageTaskResult]
readsPrec :: Int -> ReadS StoreImageTaskResult
$creadsPrec :: Int -> ReadS StoreImageTaskResult
Prelude.Read, Int -> StoreImageTaskResult -> ShowS
[StoreImageTaskResult] -> ShowS
StoreImageTaskResult -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StoreImageTaskResult] -> ShowS
$cshowList :: [StoreImageTaskResult] -> ShowS
show :: StoreImageTaskResult -> String
$cshow :: StoreImageTaskResult -> String
showsPrec :: Int -> StoreImageTaskResult -> ShowS
$cshowsPrec :: Int -> StoreImageTaskResult -> ShowS
Prelude.Show, forall x. Rep StoreImageTaskResult x -> StoreImageTaskResult
forall x. StoreImageTaskResult -> Rep StoreImageTaskResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StoreImageTaskResult x -> StoreImageTaskResult
$cfrom :: forall x. StoreImageTaskResult -> Rep StoreImageTaskResult x
Prelude.Generic)

-- |
-- Create a value of 'StoreImageTaskResult' 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:
--
-- 'amiId', 'storeImageTaskResult_amiId' - The ID of the AMI that is being stored.
--
-- 'bucket', 'storeImageTaskResult_bucket' - The name of the Amazon S3 bucket that contains the stored AMI object.
--
-- 'progressPercentage', 'storeImageTaskResult_progressPercentage' - The progress of the task as a percentage.
--
-- 's3objectKey', 'storeImageTaskResult_s3objectKey' - The name of the stored AMI object in the bucket.
--
-- 'storeTaskFailureReason', 'storeImageTaskResult_storeTaskFailureReason' - If the tasks fails, the reason for the failure is returned. If the task
-- succeeds, @null@ is returned.
--
-- 'storeTaskState', 'storeImageTaskResult_storeTaskState' - The state of the store task (@InProgress@, @Completed@, or @Failed@).
--
-- 'taskStartTime', 'storeImageTaskResult_taskStartTime' - The time the task started.
newStoreImageTaskResult ::
  StoreImageTaskResult
newStoreImageTaskResult :: StoreImageTaskResult
newStoreImageTaskResult =
  StoreImageTaskResult'
    { $sel:amiId:StoreImageTaskResult' :: Maybe Text
amiId = forall a. Maybe a
Prelude.Nothing,
      $sel:bucket:StoreImageTaskResult' :: Maybe Text
bucket = forall a. Maybe a
Prelude.Nothing,
      $sel:progressPercentage:StoreImageTaskResult' :: Maybe Int
progressPercentage = forall a. Maybe a
Prelude.Nothing,
      $sel:s3objectKey:StoreImageTaskResult' :: Maybe Text
s3objectKey = forall a. Maybe a
Prelude.Nothing,
      $sel:storeTaskFailureReason:StoreImageTaskResult' :: Maybe Text
storeTaskFailureReason = forall a. Maybe a
Prelude.Nothing,
      $sel:storeTaskState:StoreImageTaskResult' :: Maybe Text
storeTaskState = forall a. Maybe a
Prelude.Nothing,
      $sel:taskStartTime:StoreImageTaskResult' :: Maybe ISO8601
taskStartTime = forall a. Maybe a
Prelude.Nothing
    }

-- | The ID of the AMI that is being stored.
storeImageTaskResult_amiId :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.Text)
storeImageTaskResult_amiId :: Lens' StoreImageTaskResult (Maybe Text)
storeImageTaskResult_amiId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe Text
amiId :: Maybe Text
$sel:amiId:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
amiId} -> Maybe Text
amiId) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe Text
a -> StoreImageTaskResult
s {$sel:amiId:StoreImageTaskResult' :: Maybe Text
amiId = Maybe Text
a} :: StoreImageTaskResult)

-- | The name of the Amazon S3 bucket that contains the stored AMI object.
storeImageTaskResult_bucket :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.Text)
storeImageTaskResult_bucket :: Lens' StoreImageTaskResult (Maybe Text)
storeImageTaskResult_bucket = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe Text
bucket :: Maybe Text
$sel:bucket:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
bucket} -> Maybe Text
bucket) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe Text
a -> StoreImageTaskResult
s {$sel:bucket:StoreImageTaskResult' :: Maybe Text
bucket = Maybe Text
a} :: StoreImageTaskResult)

-- | The progress of the task as a percentage.
storeImageTaskResult_progressPercentage :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.Int)
storeImageTaskResult_progressPercentage :: Lens' StoreImageTaskResult (Maybe Int)
storeImageTaskResult_progressPercentage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe Int
progressPercentage :: Maybe Int
$sel:progressPercentage:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Int
progressPercentage} -> Maybe Int
progressPercentage) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe Int
a -> StoreImageTaskResult
s {$sel:progressPercentage:StoreImageTaskResult' :: Maybe Int
progressPercentage = Maybe Int
a} :: StoreImageTaskResult)

-- | The name of the stored AMI object in the bucket.
storeImageTaskResult_s3objectKey :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.Text)
storeImageTaskResult_s3objectKey :: Lens' StoreImageTaskResult (Maybe Text)
storeImageTaskResult_s3objectKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe Text
s3objectKey :: Maybe Text
$sel:s3objectKey:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
s3objectKey} -> Maybe Text
s3objectKey) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe Text
a -> StoreImageTaskResult
s {$sel:s3objectKey:StoreImageTaskResult' :: Maybe Text
s3objectKey = Maybe Text
a} :: StoreImageTaskResult)

-- | If the tasks fails, the reason for the failure is returned. If the task
-- succeeds, @null@ is returned.
storeImageTaskResult_storeTaskFailureReason :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.Text)
storeImageTaskResult_storeTaskFailureReason :: Lens' StoreImageTaskResult (Maybe Text)
storeImageTaskResult_storeTaskFailureReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe Text
storeTaskFailureReason :: Maybe Text
$sel:storeTaskFailureReason:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
storeTaskFailureReason} -> Maybe Text
storeTaskFailureReason) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe Text
a -> StoreImageTaskResult
s {$sel:storeTaskFailureReason:StoreImageTaskResult' :: Maybe Text
storeTaskFailureReason = Maybe Text
a} :: StoreImageTaskResult)

-- | The state of the store task (@InProgress@, @Completed@, or @Failed@).
storeImageTaskResult_storeTaskState :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.Text)
storeImageTaskResult_storeTaskState :: Lens' StoreImageTaskResult (Maybe Text)
storeImageTaskResult_storeTaskState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe Text
storeTaskState :: Maybe Text
$sel:storeTaskState:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
storeTaskState} -> Maybe Text
storeTaskState) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe Text
a -> StoreImageTaskResult
s {$sel:storeTaskState:StoreImageTaskResult' :: Maybe Text
storeTaskState = Maybe Text
a} :: StoreImageTaskResult)

-- | The time the task started.
storeImageTaskResult_taskStartTime :: Lens.Lens' StoreImageTaskResult (Prelude.Maybe Prelude.UTCTime)
storeImageTaskResult_taskStartTime :: Lens' StoreImageTaskResult (Maybe UTCTime)
storeImageTaskResult_taskStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StoreImageTaskResult' {Maybe ISO8601
taskStartTime :: Maybe ISO8601
$sel:taskStartTime:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe ISO8601
taskStartTime} -> Maybe ISO8601
taskStartTime) (\s :: StoreImageTaskResult
s@StoreImageTaskResult' {} Maybe ISO8601
a -> StoreImageTaskResult
s {$sel:taskStartTime:StoreImageTaskResult' :: Maybe ISO8601
taskStartTime = Maybe ISO8601
a} :: StoreImageTaskResult) 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

instance Data.FromXML StoreImageTaskResult where
  parseXML :: [Node] -> Either String StoreImageTaskResult
parseXML [Node]
x =
    Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> StoreImageTaskResult
StoreImageTaskResult'
      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
"amiId")
      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
"bucket")
      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
"progressPercentage")
      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
"s3objectKey")
      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
"storeTaskFailureReason")
      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
"storeTaskState")
      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
"taskStartTime")

instance Prelude.Hashable StoreImageTaskResult where
  hashWithSalt :: Int -> StoreImageTaskResult -> Int
hashWithSalt Int
_salt StoreImageTaskResult' {Maybe Int
Maybe Text
Maybe ISO8601
taskStartTime :: Maybe ISO8601
storeTaskState :: Maybe Text
storeTaskFailureReason :: Maybe Text
s3objectKey :: Maybe Text
progressPercentage :: Maybe Int
bucket :: Maybe Text
amiId :: Maybe Text
$sel:taskStartTime:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe ISO8601
$sel:storeTaskState:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:storeTaskFailureReason:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:s3objectKey:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:progressPercentage:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Int
$sel:bucket:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:amiId:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
amiId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
bucket
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
progressPercentage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
s3objectKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
storeTaskFailureReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
storeTaskState
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
taskStartTime

instance Prelude.NFData StoreImageTaskResult where
  rnf :: StoreImageTaskResult -> ()
rnf StoreImageTaskResult' {Maybe Int
Maybe Text
Maybe ISO8601
taskStartTime :: Maybe ISO8601
storeTaskState :: Maybe Text
storeTaskFailureReason :: Maybe Text
s3objectKey :: Maybe Text
progressPercentage :: Maybe Int
bucket :: Maybe Text
amiId :: Maybe Text
$sel:taskStartTime:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe ISO8601
$sel:storeTaskState:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:storeTaskFailureReason:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:s3objectKey:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:progressPercentage:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Int
$sel:bucket:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
$sel:amiId:StoreImageTaskResult' :: StoreImageTaskResult -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
amiId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
bucket
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
progressPercentage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
s3objectKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
storeTaskFailureReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
storeTaskState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
taskStartTime