{-# 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-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)
--
-- 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_environmentName,
    describeEnvironmentHealth_attributeNames,
    describeEnvironmentHealth_environmentId,

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

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

import qualified Amazonka.Core as Core
import Amazonka.ElasticBeanstalk.Types
import qualified Amazonka.Lens as Lens
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 environment by name.
    --
    -- You must specify either this or an EnvironmentName, or both.
    DescribeEnvironmentHealth -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | 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
  }
  deriving (DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool
(DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool)
-> (DescribeEnvironmentHealth -> DescribeEnvironmentHealth -> Bool)
-> Eq DescribeEnvironmentHealth
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]
(Int -> ReadS DescribeEnvironmentHealth)
-> ReadS [DescribeEnvironmentHealth]
-> ReadPrec DescribeEnvironmentHealth
-> ReadPrec [DescribeEnvironmentHealth]
-> Read 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
(Int -> DescribeEnvironmentHealth -> ShowS)
-> (DescribeEnvironmentHealth -> String)
-> ([DescribeEnvironmentHealth] -> ShowS)
-> Show DescribeEnvironmentHealth
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.
 DescribeEnvironmentHealth -> Rep DescribeEnvironmentHealth x)
-> (forall x.
    Rep DescribeEnvironmentHealth x -> DescribeEnvironmentHealth)
-> Generic DescribeEnvironmentHealth
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:
--
-- 'environmentName', 'describeEnvironmentHealth_environmentName' - Specify the environment by name.
--
-- You must specify either this or an EnvironmentName, or both.
--
-- '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.
newDescribeEnvironmentHealth ::
  DescribeEnvironmentHealth
newDescribeEnvironmentHealth :: DescribeEnvironmentHealth
newDescribeEnvironmentHealth =
  DescribeEnvironmentHealth' :: Maybe Text
-> Maybe [EnvironmentHealthAttribute]
-> Maybe Text
-> DescribeEnvironmentHealth
DescribeEnvironmentHealth'
    { $sel:environmentName:DescribeEnvironmentHealth' :: Maybe Text
environmentName =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:attributeNames:DescribeEnvironmentHealth' :: Maybe [EnvironmentHealthAttribute]
attributeNames = Maybe [EnvironmentHealthAttribute]
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentId:DescribeEnvironmentHealth' :: Maybe Text
environmentId = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | 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 :: (Maybe Text -> f (Maybe Text))
-> DescribeEnvironmentHealth -> f DescribeEnvironmentHealth
describeEnvironmentHealth_environmentName = (DescribeEnvironmentHealth -> Maybe Text)
-> (DescribeEnvironmentHealth
    -> Maybe Text -> DescribeEnvironmentHealth)
-> Lens
     DescribeEnvironmentHealth
     DescribeEnvironmentHealth
     (Maybe Text)
     (Maybe Text)
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)

-- | 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 :: (Maybe [EnvironmentHealthAttribute]
 -> f (Maybe [EnvironmentHealthAttribute]))
-> DescribeEnvironmentHealth -> f DescribeEnvironmentHealth
describeEnvironmentHealth_attributeNames = (DescribeEnvironmentHealth -> Maybe [EnvironmentHealthAttribute])
-> (DescribeEnvironmentHealth
    -> Maybe [EnvironmentHealthAttribute] -> DescribeEnvironmentHealth)
-> Lens
     DescribeEnvironmentHealth
     DescribeEnvironmentHealth
     (Maybe [EnvironmentHealthAttribute])
     (Maybe [EnvironmentHealthAttribute])
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) ((Maybe [EnvironmentHealthAttribute]
  -> f (Maybe [EnvironmentHealthAttribute]))
 -> DescribeEnvironmentHealth -> f DescribeEnvironmentHealth)
-> ((Maybe [EnvironmentHealthAttribute]
     -> f (Maybe [EnvironmentHealthAttribute]))
    -> Maybe [EnvironmentHealthAttribute]
    -> f (Maybe [EnvironmentHealthAttribute]))
-> (Maybe [EnvironmentHealthAttribute]
    -> f (Maybe [EnvironmentHealthAttribute]))
-> DescribeEnvironmentHealth
-> f DescribeEnvironmentHealth
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [EnvironmentHealthAttribute]
  [EnvironmentHealthAttribute]
  [EnvironmentHealthAttribute]
  [EnvironmentHealthAttribute]
-> Iso
     (Maybe [EnvironmentHealthAttribute])
     (Maybe [EnvironmentHealthAttribute])
     (Maybe [EnvironmentHealthAttribute])
     (Maybe [EnvironmentHealthAttribute])
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 AnIso
  [EnvironmentHealthAttribute]
  [EnvironmentHealthAttribute]
  [EnvironmentHealthAttribute]
  [EnvironmentHealthAttribute]
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 :: (Maybe Text -> f (Maybe Text))
-> DescribeEnvironmentHealth -> f DescribeEnvironmentHealth
describeEnvironmentHealth_environmentId = (DescribeEnvironmentHealth -> Maybe Text)
-> (DescribeEnvironmentHealth
    -> Maybe Text -> DescribeEnvironmentHealth)
-> Lens
     DescribeEnvironmentHealth
     DescribeEnvironmentHealth
     (Maybe Text)
     (Maybe Text)
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)

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

instance Prelude.Hashable DescribeEnvironmentHealth

instance Prelude.NFData DescribeEnvironmentHealth

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

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

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

-- | Health details for an AWS Elastic Beanstalk environment.
--
-- /See:/ 'newDescribeEnvironmentHealthResponse' smart constructor.
data DescribeEnvironmentHealthResponse = DescribeEnvironmentHealthResponse'
  { -- | The environment\'s operational status. @Ready@, @Launching@, @Updating@,
    -- @Terminating@, or @Terminated@.
    DescribeEnvironmentHealthResponse -> Maybe EnvironmentHealth
status :: Prelude.Maybe EnvironmentHealth,
    -- | Descriptions of the data that contributed to the environment\'s current
    -- health status.
    DescribeEnvironmentHealthResponse -> Maybe [Text]
causes :: Prelude.Maybe [Prelude.Text],
    -- | Application request metrics for the environment.
    DescribeEnvironmentHealthResponse -> Maybe ApplicationMetrics
applicationMetrics :: Prelude.Maybe ApplicationMetrics,
    -- | 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 Core.ISO8601,
    -- | The response's http status code.
    DescribeEnvironmentHealthResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeEnvironmentHealthResponse
-> DescribeEnvironmentHealthResponse -> Bool
(DescribeEnvironmentHealthResponse
 -> DescribeEnvironmentHealthResponse -> Bool)
-> (DescribeEnvironmentHealthResponse
    -> DescribeEnvironmentHealthResponse -> Bool)
-> Eq DescribeEnvironmentHealthResponse
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]
(Int -> ReadS DescribeEnvironmentHealthResponse)
-> ReadS [DescribeEnvironmentHealthResponse]
-> ReadPrec DescribeEnvironmentHealthResponse
-> ReadPrec [DescribeEnvironmentHealthResponse]
-> Read 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
(Int -> DescribeEnvironmentHealthResponse -> ShowS)
-> (DescribeEnvironmentHealthResponse -> String)
-> ([DescribeEnvironmentHealthResponse] -> ShowS)
-> Show DescribeEnvironmentHealthResponse
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.
 DescribeEnvironmentHealthResponse
 -> Rep DescribeEnvironmentHealthResponse x)
-> (forall x.
    Rep DescribeEnvironmentHealthResponse x
    -> DescribeEnvironmentHealthResponse)
-> Generic DescribeEnvironmentHealthResponse
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:
--
-- 'status', 'describeEnvironmentHealthResponse_status' - The environment\'s operational status. @Ready@, @Launching@, @Updating@,
-- @Terminating@, or @Terminated@.
--
-- 'causes', 'describeEnvironmentHealthResponse_causes' - Descriptions of the data that contributed to the environment\'s current
-- health status.
--
-- 'applicationMetrics', 'describeEnvironmentHealthResponse_applicationMetrics' - Application request metrics for the environment.
--
-- '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.
--
-- 'httpStatus', 'describeEnvironmentHealthResponse_httpStatus' - The response's http status code.
newDescribeEnvironmentHealthResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeEnvironmentHealthResponse
newDescribeEnvironmentHealthResponse :: Int -> DescribeEnvironmentHealthResponse
newDescribeEnvironmentHealthResponse Int
pHttpStatus_ =
  DescribeEnvironmentHealthResponse' :: Maybe EnvironmentHealth
-> Maybe [Text]
-> Maybe ApplicationMetrics
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InstanceHealthSummary
-> Maybe ISO8601
-> Int
-> DescribeEnvironmentHealthResponse
DescribeEnvironmentHealthResponse'
    { $sel:status:DescribeEnvironmentHealthResponse' :: Maybe EnvironmentHealth
status =
        Maybe EnvironmentHealth
forall a. Maybe a
Prelude.Nothing,
      $sel:causes:DescribeEnvironmentHealthResponse' :: Maybe [Text]
causes = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:applicationMetrics:DescribeEnvironmentHealthResponse' :: Maybe ApplicationMetrics
applicationMetrics = Maybe ApplicationMetrics
forall a. Maybe a
Prelude.Nothing,
      $sel:color:DescribeEnvironmentHealthResponse' :: Maybe Text
color = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:DescribeEnvironmentHealthResponse' :: Maybe Text
environmentName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:healthStatus:DescribeEnvironmentHealthResponse' :: Maybe Text
healthStatus = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instancesHealth:DescribeEnvironmentHealthResponse' :: Maybe InstanceHealthSummary
instancesHealth = Maybe InstanceHealthSummary
forall a. Maybe a
Prelude.Nothing,
      $sel:refreshedAt:DescribeEnvironmentHealthResponse' :: Maybe ISO8601
refreshedAt = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeEnvironmentHealthResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The environment\'s operational status. @Ready@, @Launching@, @Updating@,
-- @Terminating@, or @Terminated@.
describeEnvironmentHealthResponse_status :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe EnvironmentHealth)
describeEnvironmentHealthResponse_status :: (Maybe EnvironmentHealth -> f (Maybe EnvironmentHealth))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_status = (DescribeEnvironmentHealthResponse -> Maybe EnvironmentHealth)
-> (DescribeEnvironmentHealthResponse
    -> Maybe EnvironmentHealth -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe EnvironmentHealth)
     (Maybe EnvironmentHealth)
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)

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

-- | Application request metrics for the environment.
describeEnvironmentHealthResponse_applicationMetrics :: Lens.Lens' DescribeEnvironmentHealthResponse (Prelude.Maybe ApplicationMetrics)
describeEnvironmentHealthResponse_applicationMetrics :: (Maybe ApplicationMetrics -> f (Maybe ApplicationMetrics))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_applicationMetrics = (DescribeEnvironmentHealthResponse -> Maybe ApplicationMetrics)
-> (DescribeEnvironmentHealthResponse
    -> Maybe ApplicationMetrics -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe ApplicationMetrics)
     (Maybe 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)

-- | 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 :: (Maybe Text -> f (Maybe Text))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_color = (DescribeEnvironmentHealthResponse -> Maybe Text)
-> (DescribeEnvironmentHealthResponse
    -> Maybe Text -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe Text)
     (Maybe Text)
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 :: (Maybe Text -> f (Maybe Text))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_environmentName = (DescribeEnvironmentHealthResponse -> Maybe Text)
-> (DescribeEnvironmentHealthResponse
    -> Maybe Text -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe Text)
     (Maybe Text)
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 :: (Maybe Text -> f (Maybe Text))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_healthStatus = (DescribeEnvironmentHealthResponse -> Maybe Text)
-> (DescribeEnvironmentHealthResponse
    -> Maybe Text -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe Text)
     (Maybe Text)
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 :: (Maybe InstanceHealthSummary -> f (Maybe InstanceHealthSummary))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_instancesHealth = (DescribeEnvironmentHealthResponse -> Maybe InstanceHealthSummary)
-> (DescribeEnvironmentHealthResponse
    -> Maybe InstanceHealthSummary
    -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe InstanceHealthSummary)
     (Maybe InstanceHealthSummary)
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 :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_refreshedAt = (DescribeEnvironmentHealthResponse -> Maybe ISO8601)
-> (DescribeEnvironmentHealthResponse
    -> Maybe ISO8601 -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     (Maybe ISO8601)
     (Maybe ISO8601)
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) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> DescribeEnvironmentHealthResponse
 -> f DescribeEnvironmentHealthResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The response's http status code.
describeEnvironmentHealthResponse_httpStatus :: Lens.Lens' DescribeEnvironmentHealthResponse Prelude.Int
describeEnvironmentHealthResponse_httpStatus :: (Int -> f Int)
-> DescribeEnvironmentHealthResponse
-> f DescribeEnvironmentHealthResponse
describeEnvironmentHealthResponse_httpStatus = (DescribeEnvironmentHealthResponse -> Int)
-> (DescribeEnvironmentHealthResponse
    -> Int -> DescribeEnvironmentHealthResponse)
-> Lens
     DescribeEnvironmentHealthResponse
     DescribeEnvironmentHealthResponse
     Int
     Int
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