{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.ElasticBeanstalk.DescribeEnvironmentHealth
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about the overall health of the specified
-- environment. The __DescribeEnvironmentHealth__ operation is only
-- available with AWS Elastic Beanstalk Enhanced Health.
module Amazonka.ElasticBeanstalk.DescribeEnvironmentHealth
  ( -- * Creating a Request
    DescribeEnvironmentHealth (..),
    newDescribeEnvironmentHealth,

    -- * Request Lenses
    describeEnvironmentHealth_attributeNames,
    describeEnvironmentHealth_environmentId,
    describeEnvironmentHealth_environmentName,

    -- * Destructuring the Response
    DescribeEnvironmentHealthResponse (..),
    newDescribeEnvironmentHealthResponse,

    -- * Response Lenses
    describeEnvironmentHealthResponse_applicationMetrics,
    describeEnvironmentHealthResponse_causes,
    describeEnvironmentHealthResponse_color,
    describeEnvironmentHealthResponse_environmentName,
    describeEnvironmentHealthResponse_healthStatus,
    describeEnvironmentHealthResponse_instancesHealth,
    describeEnvironmentHealthResponse_refreshedAt,
    describeEnvironmentHealthResponse_status,
    describeEnvironmentHealthResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ElasticBeanstalk.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | See the example below to learn how to create a request body.
--
-- /See:/ 'newDescribeEnvironmentHealth' smart constructor.
data DescribeEnvironmentHealth = DescribeEnvironmentHealth'
  { -- | Specify the response elements to return. To retrieve all attributes, set
    -- to @All@. If no attribute names are specified, returns the name of the
    -- environment.
    DescribeEnvironmentHealth -> Maybe [EnvironmentHealthAttribute]
attributeNames :: Prelude.Maybe [EnvironmentHealthAttribute],
    -- | Specify the environment by ID.
    --
    -- You must specify either this or an EnvironmentName, or both.
    DescribeEnvironmentHealth -> Maybe Text
environmentId :: Prelude.Maybe Prelude.Text,
    -- | Specify the environment by name.
    --
    -- You must specify either this or an EnvironmentName, or both.
    DescribeEnvironmentHealth -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool
$c/= :: DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool
== :: DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool
$c== :: DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool
Prelude.Eq, ReadPrec [DescribeEnvironmentHealth]
ReadPrec DescribeEnvironmentHealth
Int -> ReadS DescribeEnvironmentHealth
ReadS [DescribeEnvironmentHealth]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEnvironmentHealth]
$creadListPrec :: ReadPrec [DescribeEnvironmentHealth]
readPrec :: ReadPrec DescribeEnvironmentHealth
$creadPrec :: ReadPrec DescribeEnvironmentHealth
readList :: ReadS [DescribeEnvironmentHealth]
$creadList :: ReadS [DescribeEnvironmentHealth]
readsPrec :: Int -> ReadS DescribeEnvironmentHealth
$creadsPrec :: Int -> ReadS DescribeEnvironmentHealth
Prelude.Read, Int -> DescribeEnvironmentHealth -> ShowS
[DescribeEnvironmentHealth] -> ShowS
DescribeEnvironmentHealth -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEnvironmentHealth] -> ShowS
$cshowList :: [DescribeEnvironmentHealth] -> ShowS
show :: DescribeEnvironmentHealth -> String
$cshow :: DescribeEnvironmentHealth -> String
showsPrec :: Int -> DescribeEnvironmentHealth -> ShowS
$cshowsPrec :: Int -> DescribeEnvironmentHealth -> ShowS
Prelude.Show, forall x.
Rep DescribeEnvironmentHealth x -> DescribeEnvironmentHealth
forall x.
DescribeEnvironmentHealth -> Rep DescribeEnvironmentHealth x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEnvironmentHealth x -> DescribeEnvironmentHealth
$cfrom :: forall x.
DescribeEnvironmentHealth -> Rep DescribeEnvironmentHealth x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEnvironmentHealth' 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:
--
-- 'attributeNames', 'describeEnvironmentHealth_attributeNames' - Specify the response elements to return. To retrieve all attributes, set
-- to @All@. If no attribute names are specified, returns the name of the
-- environment.
--
-- 'environmentId', 'describeEnvironmentHealth_environmentId' - Specify the environment by ID.
--
-- You must specify either this or an EnvironmentName, or both.
--
-- 'environmentName', 'describeEnvironmentHealth_environmentName' - Specify the environment by name.
--
-- You must specify either this or an EnvironmentName, or both.
newDescribeEnvironmentHealth ::
  DescribeEnvironmentHealth
newDescribeEnvironmentHealth :: DescribeEnvironmentHealth
newDescribeEnvironmentHealth =
  DescribeEnvironmentHealth'
    { $sel:attributeNames:DescribeEnvironmentHealth' :: Maybe [EnvironmentHealthAttribute]
attributeNames =
        forall a. Maybe a
Prelude.Nothing,
      $sel:environmentId:DescribeEnvironmentHealth' :: Maybe Text
environmentId = forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:DescribeEnvironmentHealth' :: Maybe Text
environmentName = forall a. Maybe a
Prelude.Nothing
    }

-- | Specify the response elements to return. To retrieve all attributes, set
-- to @All@. If no attribute names are specified, returns the name of the
-- environment.
describeEnvironmentHealth_attributeNames :: Lens.Lens' DescribeEnvironmentHealth (Prelude.Maybe [EnvironmentHealthAttribute])
describeEnvironmentHealth_attributeNames :: Lens'
  DescribeEnvironmentHealth (Maybe [EnvironmentHealthAttribute])
describeEnvironmentHealth_attributeNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealth' {Maybe [EnvironmentHealthAttribute]
attributeNames :: Maybe [EnvironmentHealthAttribute]
$sel:attributeNames:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe [EnvironmentHealthAttribute]
attributeNames} -> Maybe [EnvironmentHealthAttribute]
attributeNames) (\s :: DescribeEnvironmentHealth
s@DescribeEnvironmentHealth' {} Maybe [EnvironmentHealthAttribute]
a -> DescribeEnvironmentHealth
s {$sel:attributeNames:DescribeEnvironmentHealth' :: Maybe [EnvironmentHealthAttribute]
attributeNames = Maybe [EnvironmentHealthAttribute]
a} :: DescribeEnvironmentHealth) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Specify the environment by ID.
--
-- You must specify either this or an EnvironmentName, or both.
describeEnvironmentHealth_environmentId :: Lens.Lens' DescribeEnvironmentHealth (Prelude.Maybe Prelude.Text)
describeEnvironmentHealth_environmentId :: Lens' DescribeEnvironmentHealth (Maybe Text)
describeEnvironmentHealth_environmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealth' {Maybe Text
environmentId :: Maybe Text
$sel:environmentId:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
environmentId} -> Maybe Text
environmentId) (\s :: DescribeEnvironmentHealth
s@DescribeEnvironmentHealth' {} Maybe Text
a -> DescribeEnvironmentHealth
s {$sel:environmentId:DescribeEnvironmentHealth' :: Maybe Text
environmentId = Maybe Text
a} :: DescribeEnvironmentHealth)

-- | Specify the environment by name.
--
-- You must specify either this or an EnvironmentName, or both.
describeEnvironmentHealth_environmentName :: Lens.Lens' DescribeEnvironmentHealth (Prelude.Maybe Prelude.Text)
describeEnvironmentHealth_environmentName :: Lens' DescribeEnvironmentHealth (Maybe Text)
describeEnvironmentHealth_environmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealth' {Maybe Text
environmentName :: Maybe Text
$sel:environmentName:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
environmentName} -> Maybe Text
environmentName) (\s :: DescribeEnvironmentHealth
s@DescribeEnvironmentHealth' {} Maybe Text
a -> DescribeEnvironmentHealth
s {$sel:environmentName:DescribeEnvironmentHealth' :: Maybe Text
environmentName = Maybe Text
a} :: DescribeEnvironmentHealth)

instance Core.AWSRequest DescribeEnvironmentHealth where
  type
    AWSResponse DescribeEnvironmentHealth =
      DescribeEnvironmentHealthResponse
  request :: (Service -> Service)
-> DescribeEnvironmentHealth -> Request DescribeEnvironmentHealth
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeEnvironmentHealth
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeEnvironmentHealth)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"DescribeEnvironmentHealthResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe ApplicationMetrics
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InstanceHealthSummary
-> Maybe ISO8601
-> Maybe EnvironmentHealth
-> Int
-> DescribeEnvironmentHealthResponse
DescribeEnvironmentHealthResponse'
            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
"ApplicationMetrics")
            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
"Causes"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            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
"Color")
            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
"EnvironmentName")
            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
"HealthStatus")
            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
"InstancesHealth")
            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
"RefreshedAt")
            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
"Status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeEnvironmentHealth where
  hashWithSalt :: Int -> DescribeEnvironmentHealth -> Int
hashWithSalt Int
_salt DescribeEnvironmentHealth' {Maybe [EnvironmentHealthAttribute]
Maybe Text
environmentName :: Maybe Text
environmentId :: Maybe Text
attributeNames :: Maybe [EnvironmentHealthAttribute]
$sel:environmentName:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
$sel:environmentId:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
$sel:attributeNames:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe [EnvironmentHealthAttribute]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [EnvironmentHealthAttribute]
attributeNames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
environmentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
environmentName

instance Prelude.NFData DescribeEnvironmentHealth where
  rnf :: DescribeEnvironmentHealth -> ()
rnf DescribeEnvironmentHealth' {Maybe [EnvironmentHealthAttribute]
Maybe Text
environmentName :: Maybe Text
environmentId :: Maybe Text
attributeNames :: Maybe [EnvironmentHealthAttribute]
$sel:environmentName:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
$sel:environmentId:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
$sel:attributeNames:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe [EnvironmentHealthAttribute]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [EnvironmentHealthAttribute]
attributeNames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentName

instance Data.ToHeaders DescribeEnvironmentHealth where
  toHeaders :: DescribeEnvironmentHealth -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DescribeEnvironmentHealth where
  toPath :: DescribeEnvironmentHealth -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeEnvironmentHealth where
  toQuery :: DescribeEnvironmentHealth -> QueryString
toQuery DescribeEnvironmentHealth' {Maybe [EnvironmentHealthAttribute]
Maybe Text
environmentName :: Maybe Text
environmentId :: Maybe Text
attributeNames :: Maybe [EnvironmentHealthAttribute]
$sel:environmentName:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
$sel:environmentId:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe Text
$sel:attributeNames:DescribeEnvironmentHealth' :: DescribeEnvironmentHealth -> Maybe [EnvironmentHealthAttribute]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeEnvironmentHealth" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-12-01" :: Prelude.ByteString),
        ByteString
"AttributeNames"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"member"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [EnvironmentHealthAttribute]
attributeNames
            ),
        ByteString
"EnvironmentId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
environmentId,
        ByteString
"EnvironmentName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
environmentName
      ]

-- | Health details for an AWS Elastic Beanstalk environment.
--
-- /See:/ 'newDescribeEnvironmentHealthResponse' smart constructor.
data DescribeEnvironmentHealthResponse = DescribeEnvironmentHealthResponse'
  { -- | Application request metrics for the environment.
    DescribeEnvironmentHealthResponse -> Maybe ApplicationMetrics
applicationMetrics :: Prelude.Maybe ApplicationMetrics,
    -- | Descriptions of the data that contributed to the environment\'s current
    -- health status.
    DescribeEnvironmentHealthResponse -> Maybe [Text]
causes :: Prelude.Maybe [Prelude.Text],
    -- | The
    -- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html health color>
    -- of the environment.
    DescribeEnvironmentHealthResponse -> Maybe Text
color :: Prelude.Maybe Prelude.Text,
    -- | The environment\'s name.
    DescribeEnvironmentHealthResponse -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | The
    -- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html health status>
    -- of the environment. For example, @Ok@.
    DescribeEnvironmentHealthResponse -> Maybe Text
healthStatus :: Prelude.Maybe Prelude.Text,
    -- | Summary health information for the instances in the environment.
    DescribeEnvironmentHealthResponse -> Maybe InstanceHealthSummary
instancesHealth :: Prelude.Maybe InstanceHealthSummary,
    -- | The date and time that the health information was retrieved.
    DescribeEnvironmentHealthResponse -> Maybe ISO8601
refreshedAt :: Prelude.Maybe Data.ISO8601,
    -- | The environment\'s operational status. @Ready@, @Launching@, @Updating@,
    -- @Terminating@, or @Terminated@.
    DescribeEnvironmentHealthResponse -> Maybe EnvironmentHealth
status :: Prelude.Maybe EnvironmentHealth,
    -- | The response's http status code.
    DescribeEnvironmentHealthResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeEnvironmentHealthResponse
-> DescribeEnvironmentHealthResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEnvironmentHealthResponse
-> DescribeEnvironmentHealthResponse -> Bool
$c/= :: DescribeEnvironmentHealthResponse
-> DescribeEnvironmentHealthResponse -> Bool
== :: DescribeEnvironmentHealthResponse
-> DescribeEnvironmentHealthResponse -> Bool
$c== :: DescribeEnvironmentHealthResponse
-> DescribeEnvironmentHealthResponse -> Bool
Prelude.Eq, ReadPrec [DescribeEnvironmentHealthResponse]
ReadPrec DescribeEnvironmentHealthResponse
Int -> ReadS DescribeEnvironmentHealthResponse
ReadS [DescribeEnvironmentHealthResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEnvironmentHealthResponse]
$creadListPrec :: ReadPrec [DescribeEnvironmentHealthResponse]
readPrec :: ReadPrec DescribeEnvironmentHealthResponse
$creadPrec :: ReadPrec DescribeEnvironmentHealthResponse
readList :: ReadS [DescribeEnvironmentHealthResponse]
$creadList :: ReadS [DescribeEnvironmentHealthResponse]
readsPrec :: Int -> ReadS DescribeEnvironmentHealthResponse
$creadsPrec :: Int -> ReadS DescribeEnvironmentHealthResponse
Prelude.Read, Int -> DescribeEnvironmentHealthResponse -> ShowS
[DescribeEnvironmentHealthResponse] -> ShowS
DescribeEnvironmentHealthResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEnvironmentHealthResponse] -> ShowS
$cshowList :: [DescribeEnvironmentHealthResponse] -> ShowS
show :: DescribeEnvironmentHealthResponse -> String
$cshow :: DescribeEnvironmentHealthResponse -> String
showsPrec :: Int -> DescribeEnvironmentHealthResponse -> ShowS
$cshowsPrec :: Int -> DescribeEnvironmentHealthResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeEnvironmentHealthResponse x
-> DescribeEnvironmentHealthResponse
forall x.
DescribeEnvironmentHealthResponse
-> Rep DescribeEnvironmentHealthResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEnvironmentHealthResponse x
-> DescribeEnvironmentHealthResponse
$cfrom :: forall x.
DescribeEnvironmentHealthResponse
-> Rep DescribeEnvironmentHealthResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEnvironmentHealthResponse' 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:
--
-- 'applicationMetrics', 'describeEnvironmentHealthResponse_applicationMetrics' - Application request metrics for the environment.
--
-- 'causes', 'describeEnvironmentHealthResponse_causes' - Descriptions of the data that contributed to the environment\'s current
-- health status.
--
-- 'color', 'describeEnvironmentHealthResponse_color' - The
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html health color>
-- of the environment.
--
-- 'environmentName', 'describeEnvironmentHealthResponse_environmentName' - The environment\'s name.
--
-- 'healthStatus', 'describeEnvironmentHealthResponse_healthStatus' - The
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html health status>
-- of the environment. For example, @Ok@.
--
-- 'instancesHealth', 'describeEnvironmentHealthResponse_instancesHealth' - Summary health information for the instances in the environment.
--
-- 'refreshedAt', 'describeEnvironmentHealthResponse_refreshedAt' - The date and time that the health information was retrieved.
--
-- 'status', 'describeEnvironmentHealthResponse_status' - The environment\'s operational status. @Ready@, @Launching@, @Updating@,
-- @Terminating@, or @Terminated@.
--
-- 'httpStatus', 'describeEnvironmentHealthResponse_httpStatus' - The response's http status code.
newDescribeEnvironmentHealthResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeEnvironmentHealthResponse
newDescribeEnvironmentHealthResponse :: Int -> DescribeEnvironmentHealthResponse
newDescribeEnvironmentHealthResponse Int
pHttpStatus_ =
  DescribeEnvironmentHealthResponse'
    { $sel:applicationMetrics:DescribeEnvironmentHealthResponse' :: Maybe ApplicationMetrics
applicationMetrics =
        forall a. Maybe a
Prelude.Nothing,
      $sel:causes:DescribeEnvironmentHealthResponse' :: Maybe [Text]
causes = forall a. Maybe a
Prelude.Nothing,
      $sel:color:DescribeEnvironmentHealthResponse' :: Maybe Text
color = forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:DescribeEnvironmentHealthResponse' :: Maybe Text
environmentName = forall a. Maybe a
Prelude.Nothing,
      $sel:healthStatus:DescribeEnvironmentHealthResponse' :: Maybe Text
healthStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:instancesHealth:DescribeEnvironmentHealthResponse' :: Maybe InstanceHealthSummary
instancesHealth = forall a. Maybe a
Prelude.Nothing,
      $sel:refreshedAt:DescribeEnvironmentHealthResponse' :: Maybe ISO8601
refreshedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeEnvironmentHealthResponse' :: Maybe EnvironmentHealth
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeEnvironmentHealthResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Application request metrics for the environment.
describeEnvironmentHealthResponse_applicationMetrics :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe ApplicationMetrics)
describeEnvironmentHealthResponse_applicationMetrics :: Lens' DescribeEnvironmentHealthResponse (Maybe ApplicationMetrics)
describeEnvironmentHealthResponse_applicationMetrics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe ApplicationMetrics
applicationMetrics :: Maybe ApplicationMetrics
$sel:applicationMetrics:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe ApplicationMetrics
applicationMetrics} -> Maybe ApplicationMetrics
applicationMetrics) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe ApplicationMetrics
a -> DescribeEnvironmentHealthResponse
s {$sel:applicationMetrics:DescribeEnvironmentHealthResponse' :: Maybe ApplicationMetrics
applicationMetrics = Maybe ApplicationMetrics
a} :: DescribeEnvironmentHealthResponse)

-- | Descriptions of the data that contributed to the environment\'s current
-- health status.
describeEnvironmentHealthResponse_causes :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe [Prelude.Text])
describeEnvironmentHealthResponse_causes :: Lens' DescribeEnvironmentHealthResponse (Maybe [Text])
describeEnvironmentHealthResponse_causes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe [Text]
causes :: Maybe [Text]
$sel:causes:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe [Text]
causes} -> Maybe [Text]
causes) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe [Text]
a -> DescribeEnvironmentHealthResponse
s {$sel:causes:DescribeEnvironmentHealthResponse' :: Maybe [Text]
causes = Maybe [Text]
a} :: DescribeEnvironmentHealthResponse) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html health color>
-- of the environment.
describeEnvironmentHealthResponse_color :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe Prelude.Text)
describeEnvironmentHealthResponse_color :: Lens' DescribeEnvironmentHealthResponse (Maybe Text)
describeEnvironmentHealthResponse_color = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe Text
color :: Maybe Text
$sel:color:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe Text
color} -> Maybe Text
color) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe Text
a -> DescribeEnvironmentHealthResponse
s {$sel:color:DescribeEnvironmentHealthResponse' :: Maybe Text
color = Maybe Text
a} :: DescribeEnvironmentHealthResponse)

-- | The environment\'s name.
describeEnvironmentHealthResponse_environmentName :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe Prelude.Text)
describeEnvironmentHealthResponse_environmentName :: Lens' DescribeEnvironmentHealthResponse (Maybe Text)
describeEnvironmentHealthResponse_environmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe Text
environmentName :: Maybe Text
$sel:environmentName:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe Text
environmentName} -> Maybe Text
environmentName) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe Text
a -> DescribeEnvironmentHealthResponse
s {$sel:environmentName:DescribeEnvironmentHealthResponse' :: Maybe Text
environmentName = Maybe Text
a} :: DescribeEnvironmentHealthResponse)

-- | The
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html health status>
-- of the environment. For example, @Ok@.
describeEnvironmentHealthResponse_healthStatus :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe Prelude.Text)
describeEnvironmentHealthResponse_healthStatus :: Lens' DescribeEnvironmentHealthResponse (Maybe Text)
describeEnvironmentHealthResponse_healthStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe Text
healthStatus :: Maybe Text
$sel:healthStatus:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe Text
healthStatus} -> Maybe Text
healthStatus) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe Text
a -> DescribeEnvironmentHealthResponse
s {$sel:healthStatus:DescribeEnvironmentHealthResponse' :: Maybe Text
healthStatus = Maybe Text
a} :: DescribeEnvironmentHealthResponse)

-- | Summary health information for the instances in the environment.
describeEnvironmentHealthResponse_instancesHealth :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe InstanceHealthSummary)
describeEnvironmentHealthResponse_instancesHealth :: Lens'
  DescribeEnvironmentHealthResponse (Maybe InstanceHealthSummary)
describeEnvironmentHealthResponse_instancesHealth = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe InstanceHealthSummary
instancesHealth :: Maybe InstanceHealthSummary
$sel:instancesHealth:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe InstanceHealthSummary
instancesHealth} -> Maybe InstanceHealthSummary
instancesHealth) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe InstanceHealthSummary
a -> DescribeEnvironmentHealthResponse
s {$sel:instancesHealth:DescribeEnvironmentHealthResponse' :: Maybe InstanceHealthSummary
instancesHealth = Maybe InstanceHealthSummary
a} :: DescribeEnvironmentHealthResponse)

-- | The date and time that the health information was retrieved.
describeEnvironmentHealthResponse_refreshedAt :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe Prelude.UTCTime)
describeEnvironmentHealthResponse_refreshedAt :: Lens' DescribeEnvironmentHealthResponse (Maybe UTCTime)
describeEnvironmentHealthResponse_refreshedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe ISO8601
refreshedAt :: Maybe ISO8601
$sel:refreshedAt:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe ISO8601
refreshedAt} -> Maybe ISO8601
refreshedAt) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe ISO8601
a -> DescribeEnvironmentHealthResponse
s {$sel:refreshedAt:DescribeEnvironmentHealthResponse' :: Maybe ISO8601
refreshedAt = Maybe ISO8601
a} :: DescribeEnvironmentHealthResponse) 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 environment\'s operational status. @Ready@, @Launching@, @Updating@,
-- @Terminating@, or @Terminated@.
describeEnvironmentHealthResponse_status :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe EnvironmentHealth)
describeEnvironmentHealthResponse_status :: Lens' DescribeEnvironmentHealthResponse (Maybe EnvironmentHealth)
describeEnvironmentHealthResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Maybe EnvironmentHealth
status :: Maybe EnvironmentHealth
$sel:status:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe EnvironmentHealth
status} -> Maybe EnvironmentHealth
status) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Maybe EnvironmentHealth
a -> DescribeEnvironmentHealthResponse
s {$sel:status:DescribeEnvironmentHealthResponse' :: Maybe EnvironmentHealth
status = Maybe EnvironmentHealth
a} :: DescribeEnvironmentHealthResponse)

-- | The response's http status code.
describeEnvironmentHealthResponse_httpStatus :: Lens.Lens' DescribeEnvironmentHealthResponse Prelude.Int
describeEnvironmentHealthResponse_httpStatus :: Lens' DescribeEnvironmentHealthResponse Int
describeEnvironmentHealthResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEnvironmentHealthResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeEnvironmentHealthResponse
s@DescribeEnvironmentHealthResponse' {} Int
a -> DescribeEnvironmentHealthResponse
s {$sel:httpStatus:DescribeEnvironmentHealthResponse' :: Int
httpStatus = Int
a} :: DescribeEnvironmentHealthResponse)

instance
  Prelude.NFData
    DescribeEnvironmentHealthResponse
  where
  rnf :: DescribeEnvironmentHealthResponse -> ()
rnf DescribeEnvironmentHealthResponse' {Int
Maybe [Text]
Maybe Text
Maybe ISO8601
Maybe EnvironmentHealth
Maybe InstanceHealthSummary
Maybe ApplicationMetrics
httpStatus :: Int
status :: Maybe EnvironmentHealth
refreshedAt :: Maybe ISO8601
instancesHealth :: Maybe InstanceHealthSummary
healthStatus :: Maybe Text
environmentName :: Maybe Text
color :: Maybe Text
causes :: Maybe [Text]
applicationMetrics :: Maybe ApplicationMetrics
$sel:httpStatus:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Int
$sel:status:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe EnvironmentHealth
$sel:refreshedAt:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe ISO8601
$sel:instancesHealth:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe InstanceHealthSummary
$sel:healthStatus:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe Text
$sel:environmentName:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe Text
$sel:color:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe Text
$sel:causes:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe [Text]
$sel:applicationMetrics:DescribeEnvironmentHealthResponse' :: DescribeEnvironmentHealthResponse -> Maybe ApplicationMetrics
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ApplicationMetrics
applicationMetrics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
causes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
color
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
environmentName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
healthStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceHealthSummary
instancesHealth
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
refreshedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EnvironmentHealth
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus