{-# 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.Kafka.Types.ClusterOperationStepInfo
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Kafka.Types.ClusterOperationStepInfo where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | State information about the operation step.
--
-- /See:/ 'newClusterOperationStepInfo' smart constructor.
data ClusterOperationStepInfo = ClusterOperationStepInfo'
  { -- | The steps current status.
    ClusterOperationStepInfo -> Maybe Text
stepStatus :: Prelude.Maybe Prelude.Text
  }
  deriving (ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool
(ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool)
-> (ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool)
-> Eq ClusterOperationStepInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool
$c/= :: ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool
== :: ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool
$c== :: ClusterOperationStepInfo -> ClusterOperationStepInfo -> Bool
Prelude.Eq, ReadPrec [ClusterOperationStepInfo]
ReadPrec ClusterOperationStepInfo
Int -> ReadS ClusterOperationStepInfo
ReadS [ClusterOperationStepInfo]
(Int -> ReadS ClusterOperationStepInfo)
-> ReadS [ClusterOperationStepInfo]
-> ReadPrec ClusterOperationStepInfo
-> ReadPrec [ClusterOperationStepInfo]
-> Read ClusterOperationStepInfo
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ClusterOperationStepInfo]
$creadListPrec :: ReadPrec [ClusterOperationStepInfo]
readPrec :: ReadPrec ClusterOperationStepInfo
$creadPrec :: ReadPrec ClusterOperationStepInfo
readList :: ReadS [ClusterOperationStepInfo]
$creadList :: ReadS [ClusterOperationStepInfo]
readsPrec :: Int -> ReadS ClusterOperationStepInfo
$creadsPrec :: Int -> ReadS ClusterOperationStepInfo
Prelude.Read, Int -> ClusterOperationStepInfo -> ShowS
[ClusterOperationStepInfo] -> ShowS
ClusterOperationStepInfo -> String
(Int -> ClusterOperationStepInfo -> ShowS)
-> (ClusterOperationStepInfo -> String)
-> ([ClusterOperationStepInfo] -> ShowS)
-> Show ClusterOperationStepInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ClusterOperationStepInfo] -> ShowS
$cshowList :: [ClusterOperationStepInfo] -> ShowS
show :: ClusterOperationStepInfo -> String
$cshow :: ClusterOperationStepInfo -> String
showsPrec :: Int -> ClusterOperationStepInfo -> ShowS
$cshowsPrec :: Int -> ClusterOperationStepInfo -> ShowS
Prelude.Show, (forall x.
 ClusterOperationStepInfo -> Rep ClusterOperationStepInfo x)
-> (forall x.
    Rep ClusterOperationStepInfo x -> ClusterOperationStepInfo)
-> Generic ClusterOperationStepInfo
forall x.
Rep ClusterOperationStepInfo x -> ClusterOperationStepInfo
forall x.
ClusterOperationStepInfo -> Rep ClusterOperationStepInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ClusterOperationStepInfo x -> ClusterOperationStepInfo
$cfrom :: forall x.
ClusterOperationStepInfo -> Rep ClusterOperationStepInfo x
Prelude.Generic)

-- |
-- Create a value of 'ClusterOperationStepInfo' 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:
--
-- 'stepStatus', 'clusterOperationStepInfo_stepStatus' - The steps current status.
newClusterOperationStepInfo ::
  ClusterOperationStepInfo
newClusterOperationStepInfo :: ClusterOperationStepInfo
newClusterOperationStepInfo =
  ClusterOperationStepInfo' :: Maybe Text -> ClusterOperationStepInfo
ClusterOperationStepInfo'
    { $sel:stepStatus:ClusterOperationStepInfo' :: Maybe Text
stepStatus =
        Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The steps current status.
clusterOperationStepInfo_stepStatus :: Lens.Lens' ClusterOperationStepInfo (Prelude.Maybe Prelude.Text)
clusterOperationStepInfo_stepStatus :: (Maybe Text -> f (Maybe Text))
-> ClusterOperationStepInfo -> f ClusterOperationStepInfo
clusterOperationStepInfo_stepStatus = (ClusterOperationStepInfo -> Maybe Text)
-> (ClusterOperationStepInfo
    -> Maybe Text -> ClusterOperationStepInfo)
-> Lens
     ClusterOperationStepInfo
     ClusterOperationStepInfo
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterOperationStepInfo' {Maybe Text
stepStatus :: Maybe Text
$sel:stepStatus:ClusterOperationStepInfo' :: ClusterOperationStepInfo -> Maybe Text
stepStatus} -> Maybe Text
stepStatus) (\s :: ClusterOperationStepInfo
s@ClusterOperationStepInfo' {} Maybe Text
a -> ClusterOperationStepInfo
s {$sel:stepStatus:ClusterOperationStepInfo' :: Maybe Text
stepStatus = Maybe Text
a} :: ClusterOperationStepInfo)

instance Core.FromJSON ClusterOperationStepInfo where
  parseJSON :: Value -> Parser ClusterOperationStepInfo
parseJSON =
    String
-> (Object -> Parser ClusterOperationStepInfo)
-> Value
-> Parser ClusterOperationStepInfo
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ClusterOperationStepInfo"
      ( \Object
x ->
          Maybe Text -> ClusterOperationStepInfo
ClusterOperationStepInfo'
            (Maybe Text -> ClusterOperationStepInfo)
-> Parser (Maybe Text) -> Parser ClusterOperationStepInfo
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"stepStatus")
      )

instance Prelude.Hashable ClusterOperationStepInfo

instance Prelude.NFData ClusterOperationStepInfo