{-# 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.CodeDeploy.Types.DeploymentOverview
-- 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.CodeDeploy.Types.DeploymentOverview where

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

-- | Information about the deployment status of the instances in the
-- deployment.
--
-- /See:/ 'newDeploymentOverview' smart constructor.
data DeploymentOverview = DeploymentOverview'
  { -- | The number of instances in the deployment in a failed state.
    DeploymentOverview -> Maybe Integer
failed :: Prelude.Maybe Prelude.Integer,
    -- | The number of instances in which the deployment is in progress.
    DeploymentOverview -> Maybe Integer
inProgress :: Prelude.Maybe Prelude.Integer,
    -- | The number of instances in the deployment in a pending state.
    DeploymentOverview -> Maybe Integer
pending :: Prelude.Maybe Prelude.Integer,
    -- | The number of instances in a replacement environment ready to receive
    -- traffic in a blue\/green deployment.
    DeploymentOverview -> Maybe Integer
ready :: Prelude.Maybe Prelude.Integer,
    -- | The number of instances in the deployment in a skipped state.
    DeploymentOverview -> Maybe Integer
skipped :: Prelude.Maybe Prelude.Integer,
    -- | The number of instances in the deployment to which revisions have been
    -- successfully deployed.
    DeploymentOverview -> Maybe Integer
succeeded :: Prelude.Maybe Prelude.Integer
  }
  deriving (DeploymentOverview -> DeploymentOverview -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeploymentOverview -> DeploymentOverview -> Bool
$c/= :: DeploymentOverview -> DeploymentOverview -> Bool
== :: DeploymentOverview -> DeploymentOverview -> Bool
$c== :: DeploymentOverview -> DeploymentOverview -> Bool
Prelude.Eq, ReadPrec [DeploymentOverview]
ReadPrec DeploymentOverview
Int -> ReadS DeploymentOverview
ReadS [DeploymentOverview]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeploymentOverview]
$creadListPrec :: ReadPrec [DeploymentOverview]
readPrec :: ReadPrec DeploymentOverview
$creadPrec :: ReadPrec DeploymentOverview
readList :: ReadS [DeploymentOverview]
$creadList :: ReadS [DeploymentOverview]
readsPrec :: Int -> ReadS DeploymentOverview
$creadsPrec :: Int -> ReadS DeploymentOverview
Prelude.Read, Int -> DeploymentOverview -> ShowS
[DeploymentOverview] -> ShowS
DeploymentOverview -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeploymentOverview] -> ShowS
$cshowList :: [DeploymentOverview] -> ShowS
show :: DeploymentOverview -> String
$cshow :: DeploymentOverview -> String
showsPrec :: Int -> DeploymentOverview -> ShowS
$cshowsPrec :: Int -> DeploymentOverview -> ShowS
Prelude.Show, forall x. Rep DeploymentOverview x -> DeploymentOverview
forall x. DeploymentOverview -> Rep DeploymentOverview x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeploymentOverview x -> DeploymentOverview
$cfrom :: forall x. DeploymentOverview -> Rep DeploymentOverview x
Prelude.Generic)

-- |
-- Create a value of 'DeploymentOverview' 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:
--
-- 'failed', 'deploymentOverview_failed' - The number of instances in the deployment in a failed state.
--
-- 'inProgress', 'deploymentOverview_inProgress' - The number of instances in which the deployment is in progress.
--
-- 'pending', 'deploymentOverview_pending' - The number of instances in the deployment in a pending state.
--
-- 'ready', 'deploymentOverview_ready' - The number of instances in a replacement environment ready to receive
-- traffic in a blue\/green deployment.
--
-- 'skipped', 'deploymentOverview_skipped' - The number of instances in the deployment in a skipped state.
--
-- 'succeeded', 'deploymentOverview_succeeded' - The number of instances in the deployment to which revisions have been
-- successfully deployed.
newDeploymentOverview ::
  DeploymentOverview
newDeploymentOverview :: DeploymentOverview
newDeploymentOverview =
  DeploymentOverview'
    { $sel:failed:DeploymentOverview' :: Maybe Integer
failed = forall a. Maybe a
Prelude.Nothing,
      $sel:inProgress:DeploymentOverview' :: Maybe Integer
inProgress = forall a. Maybe a
Prelude.Nothing,
      $sel:pending:DeploymentOverview' :: Maybe Integer
pending = forall a. Maybe a
Prelude.Nothing,
      $sel:ready:DeploymentOverview' :: Maybe Integer
ready = forall a. Maybe a
Prelude.Nothing,
      $sel:skipped:DeploymentOverview' :: Maybe Integer
skipped = forall a. Maybe a
Prelude.Nothing,
      $sel:succeeded:DeploymentOverview' :: Maybe Integer
succeeded = forall a. Maybe a
Prelude.Nothing
    }

-- | The number of instances in the deployment in a failed state.
deploymentOverview_failed :: Lens.Lens' DeploymentOverview (Prelude.Maybe Prelude.Integer)
deploymentOverview_failed :: Lens' DeploymentOverview (Maybe Integer)
deploymentOverview_failed = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeploymentOverview' {Maybe Integer
failed :: Maybe Integer
$sel:failed:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
failed} -> Maybe Integer
failed) (\s :: DeploymentOverview
s@DeploymentOverview' {} Maybe Integer
a -> DeploymentOverview
s {$sel:failed:DeploymentOverview' :: Maybe Integer
failed = Maybe Integer
a} :: DeploymentOverview)

-- | The number of instances in which the deployment is in progress.
deploymentOverview_inProgress :: Lens.Lens' DeploymentOverview (Prelude.Maybe Prelude.Integer)
deploymentOverview_inProgress :: Lens' DeploymentOverview (Maybe Integer)
deploymentOverview_inProgress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeploymentOverview' {Maybe Integer
inProgress :: Maybe Integer
$sel:inProgress:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
inProgress} -> Maybe Integer
inProgress) (\s :: DeploymentOverview
s@DeploymentOverview' {} Maybe Integer
a -> DeploymentOverview
s {$sel:inProgress:DeploymentOverview' :: Maybe Integer
inProgress = Maybe Integer
a} :: DeploymentOverview)

-- | The number of instances in the deployment in a pending state.
deploymentOverview_pending :: Lens.Lens' DeploymentOverview (Prelude.Maybe Prelude.Integer)
deploymentOverview_pending :: Lens' DeploymentOverview (Maybe Integer)
deploymentOverview_pending = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeploymentOverview' {Maybe Integer
pending :: Maybe Integer
$sel:pending:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
pending} -> Maybe Integer
pending) (\s :: DeploymentOverview
s@DeploymentOverview' {} Maybe Integer
a -> DeploymentOverview
s {$sel:pending:DeploymentOverview' :: Maybe Integer
pending = Maybe Integer
a} :: DeploymentOverview)

-- | The number of instances in a replacement environment ready to receive
-- traffic in a blue\/green deployment.
deploymentOverview_ready :: Lens.Lens' DeploymentOverview (Prelude.Maybe Prelude.Integer)
deploymentOverview_ready :: Lens' DeploymentOverview (Maybe Integer)
deploymentOverview_ready = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeploymentOverview' {Maybe Integer
ready :: Maybe Integer
$sel:ready:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
ready} -> Maybe Integer
ready) (\s :: DeploymentOverview
s@DeploymentOverview' {} Maybe Integer
a -> DeploymentOverview
s {$sel:ready:DeploymentOverview' :: Maybe Integer
ready = Maybe Integer
a} :: DeploymentOverview)

-- | The number of instances in the deployment in a skipped state.
deploymentOverview_skipped :: Lens.Lens' DeploymentOverview (Prelude.Maybe Prelude.Integer)
deploymentOverview_skipped :: Lens' DeploymentOverview (Maybe Integer)
deploymentOverview_skipped = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeploymentOverview' {Maybe Integer
skipped :: Maybe Integer
$sel:skipped:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
skipped} -> Maybe Integer
skipped) (\s :: DeploymentOverview
s@DeploymentOverview' {} Maybe Integer
a -> DeploymentOverview
s {$sel:skipped:DeploymentOverview' :: Maybe Integer
skipped = Maybe Integer
a} :: DeploymentOverview)

-- | The number of instances in the deployment to which revisions have been
-- successfully deployed.
deploymentOverview_succeeded :: Lens.Lens' DeploymentOverview (Prelude.Maybe Prelude.Integer)
deploymentOverview_succeeded :: Lens' DeploymentOverview (Maybe Integer)
deploymentOverview_succeeded = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeploymentOverview' {Maybe Integer
succeeded :: Maybe Integer
$sel:succeeded:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
succeeded} -> Maybe Integer
succeeded) (\s :: DeploymentOverview
s@DeploymentOverview' {} Maybe Integer
a -> DeploymentOverview
s {$sel:succeeded:DeploymentOverview' :: Maybe Integer
succeeded = Maybe Integer
a} :: DeploymentOverview)

instance Data.FromJSON DeploymentOverview where
  parseJSON :: Value -> Parser DeploymentOverview
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DeploymentOverview"
      ( \Object
x ->
          Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> DeploymentOverview
DeploymentOverview'
            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
"Failed")
            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
"InProgress")
            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
"Pending")
            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
"Ready")
            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
"Skipped")
            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
"Succeeded")
      )

instance Prelude.Hashable DeploymentOverview where
  hashWithSalt :: Int -> DeploymentOverview -> Int
hashWithSalt Int
_salt DeploymentOverview' {Maybe Integer
succeeded :: Maybe Integer
skipped :: Maybe Integer
ready :: Maybe Integer
pending :: Maybe Integer
inProgress :: Maybe Integer
failed :: Maybe Integer
$sel:succeeded:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:skipped:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:ready:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:pending:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:inProgress:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:failed:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
failed
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
inProgress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
pending
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
ready
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
skipped
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
succeeded

instance Prelude.NFData DeploymentOverview where
  rnf :: DeploymentOverview -> ()
rnf DeploymentOverview' {Maybe Integer
succeeded :: Maybe Integer
skipped :: Maybe Integer
ready :: Maybe Integer
pending :: Maybe Integer
inProgress :: Maybe Integer
failed :: Maybe Integer
$sel:succeeded:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:skipped:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:ready:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:pending:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:inProgress:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
$sel:failed:DeploymentOverview' :: DeploymentOverview -> Maybe Integer
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
failed
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
inProgress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
pending
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
ready
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
skipped
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
succeeded