{-# 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.DescribeInstancesHealth
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves detailed information about the health of instances in your AWS
-- Elastic Beanstalk. This operation requires
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced.html enhanced health reporting>.
module Amazonka.ElasticBeanstalk.DescribeInstancesHealth
  ( -- * Creating a Request
    DescribeInstancesHealth (..),
    newDescribeInstancesHealth,

    -- * Request Lenses
    describeInstancesHealth_attributeNames,
    describeInstancesHealth_environmentId,
    describeInstancesHealth_environmentName,
    describeInstancesHealth_nextToken,

    -- * Destructuring the Response
    DescribeInstancesHealthResponse (..),
    newDescribeInstancesHealthResponse,

    -- * Response Lenses
    describeInstancesHealthResponse_instanceHealthList,
    describeInstancesHealthResponse_nextToken,
    describeInstancesHealthResponse_refreshedAt,
    describeInstancesHealthResponse_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

-- | Parameters for a call to @DescribeInstancesHealth@.
--
-- /See:/ 'newDescribeInstancesHealth' smart constructor.
data DescribeInstancesHealth = DescribeInstancesHealth'
  { -- | Specifies the response elements you wish to receive. To retrieve all
    -- attributes, set to @All@. If no attribute names are specified, returns a
    -- list of instances.
    DescribeInstancesHealth -> Maybe [InstancesHealthAttribute]
attributeNames :: Prelude.Maybe [InstancesHealthAttribute],
    -- | Specify the AWS Elastic Beanstalk environment by ID.
    DescribeInstancesHealth -> Maybe Text
environmentId :: Prelude.Maybe Prelude.Text,
    -- | Specify the AWS Elastic Beanstalk environment by name.
    DescribeInstancesHealth -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | Specify the pagination token returned by a previous call.
    DescribeInstancesHealth -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeInstancesHealth -> DescribeInstancesHealth -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeInstancesHealth -> DescribeInstancesHealth -> Bool
$c/= :: DescribeInstancesHealth -> DescribeInstancesHealth -> Bool
== :: DescribeInstancesHealth -> DescribeInstancesHealth -> Bool
$c== :: DescribeInstancesHealth -> DescribeInstancesHealth -> Bool
Prelude.Eq, ReadPrec [DescribeInstancesHealth]
ReadPrec DescribeInstancesHealth
Int -> ReadS DescribeInstancesHealth
ReadS [DescribeInstancesHealth]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeInstancesHealth]
$creadListPrec :: ReadPrec [DescribeInstancesHealth]
readPrec :: ReadPrec DescribeInstancesHealth
$creadPrec :: ReadPrec DescribeInstancesHealth
readList :: ReadS [DescribeInstancesHealth]
$creadList :: ReadS [DescribeInstancesHealth]
readsPrec :: Int -> ReadS DescribeInstancesHealth
$creadsPrec :: Int -> ReadS DescribeInstancesHealth
Prelude.Read, Int -> DescribeInstancesHealth -> ShowS
[DescribeInstancesHealth] -> ShowS
DescribeInstancesHealth -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeInstancesHealth] -> ShowS
$cshowList :: [DescribeInstancesHealth] -> ShowS
show :: DescribeInstancesHealth -> String
$cshow :: DescribeInstancesHealth -> String
showsPrec :: Int -> DescribeInstancesHealth -> ShowS
$cshowsPrec :: Int -> DescribeInstancesHealth -> ShowS
Prelude.Show, forall x. Rep DescribeInstancesHealth x -> DescribeInstancesHealth
forall x. DescribeInstancesHealth -> Rep DescribeInstancesHealth x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeInstancesHealth x -> DescribeInstancesHealth
$cfrom :: forall x. DescribeInstancesHealth -> Rep DescribeInstancesHealth x
Prelude.Generic)

-- |
-- Create a value of 'DescribeInstancesHealth' 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', 'describeInstancesHealth_attributeNames' - Specifies the response elements you wish to receive. To retrieve all
-- attributes, set to @All@. If no attribute names are specified, returns a
-- list of instances.
--
-- 'environmentId', 'describeInstancesHealth_environmentId' - Specify the AWS Elastic Beanstalk environment by ID.
--
-- 'environmentName', 'describeInstancesHealth_environmentName' - Specify the AWS Elastic Beanstalk environment by name.
--
-- 'nextToken', 'describeInstancesHealth_nextToken' - Specify the pagination token returned by a previous call.
newDescribeInstancesHealth ::
  DescribeInstancesHealth
newDescribeInstancesHealth :: DescribeInstancesHealth
newDescribeInstancesHealth =
  DescribeInstancesHealth'
    { $sel:attributeNames:DescribeInstancesHealth' :: Maybe [InstancesHealthAttribute]
attributeNames =
        forall a. Maybe a
Prelude.Nothing,
      $sel:environmentId:DescribeInstancesHealth' :: Maybe Text
environmentId = forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:DescribeInstancesHealth' :: Maybe Text
environmentName = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeInstancesHealth' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies the response elements you wish to receive. To retrieve all
-- attributes, set to @All@. If no attribute names are specified, returns a
-- list of instances.
describeInstancesHealth_attributeNames :: Lens.Lens' DescribeInstancesHealth (Prelude.Maybe [InstancesHealthAttribute])
describeInstancesHealth_attributeNames :: Lens' DescribeInstancesHealth (Maybe [InstancesHealthAttribute])
describeInstancesHealth_attributeNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealth' {Maybe [InstancesHealthAttribute]
attributeNames :: Maybe [InstancesHealthAttribute]
$sel:attributeNames:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe [InstancesHealthAttribute]
attributeNames} -> Maybe [InstancesHealthAttribute]
attributeNames) (\s :: DescribeInstancesHealth
s@DescribeInstancesHealth' {} Maybe [InstancesHealthAttribute]
a -> DescribeInstancesHealth
s {$sel:attributeNames:DescribeInstancesHealth' :: Maybe [InstancesHealthAttribute]
attributeNames = Maybe [InstancesHealthAttribute]
a} :: DescribeInstancesHealth) 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 AWS Elastic Beanstalk environment by ID.
describeInstancesHealth_environmentId :: Lens.Lens' DescribeInstancesHealth (Prelude.Maybe Prelude.Text)
describeInstancesHealth_environmentId :: Lens' DescribeInstancesHealth (Maybe Text)
describeInstancesHealth_environmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealth' {Maybe Text
environmentId :: Maybe Text
$sel:environmentId:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
environmentId} -> Maybe Text
environmentId) (\s :: DescribeInstancesHealth
s@DescribeInstancesHealth' {} Maybe Text
a -> DescribeInstancesHealth
s {$sel:environmentId:DescribeInstancesHealth' :: Maybe Text
environmentId = Maybe Text
a} :: DescribeInstancesHealth)

-- | Specify the AWS Elastic Beanstalk environment by name.
describeInstancesHealth_environmentName :: Lens.Lens' DescribeInstancesHealth (Prelude.Maybe Prelude.Text)
describeInstancesHealth_environmentName :: Lens' DescribeInstancesHealth (Maybe Text)
describeInstancesHealth_environmentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealth' {Maybe Text
environmentName :: Maybe Text
$sel:environmentName:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
environmentName} -> Maybe Text
environmentName) (\s :: DescribeInstancesHealth
s@DescribeInstancesHealth' {} Maybe Text
a -> DescribeInstancesHealth
s {$sel:environmentName:DescribeInstancesHealth' :: Maybe Text
environmentName = Maybe Text
a} :: DescribeInstancesHealth)

-- | Specify the pagination token returned by a previous call.
describeInstancesHealth_nextToken :: Lens.Lens' DescribeInstancesHealth (Prelude.Maybe Prelude.Text)
describeInstancesHealth_nextToken :: Lens' DescribeInstancesHealth (Maybe Text)
describeInstancesHealth_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealth' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeInstancesHealth
s@DescribeInstancesHealth' {} Maybe Text
a -> DescribeInstancesHealth
s {$sel:nextToken:DescribeInstancesHealth' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeInstancesHealth)

instance Core.AWSRequest DescribeInstancesHealth where
  type
    AWSResponse DescribeInstancesHealth =
      DescribeInstancesHealthResponse
  request :: (Service -> Service)
-> DescribeInstancesHealth -> Request DescribeInstancesHealth
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 DescribeInstancesHealth
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeInstancesHealth)))
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
"DescribeInstancesHealthResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [SingleInstanceHealth]
-> Maybe Text
-> Maybe ISO8601
-> Int
-> DescribeInstancesHealthResponse
DescribeInstancesHealthResponse'
            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
"InstanceHealthList"
                            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
"NextToken")
            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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeInstancesHealth where
  hashWithSalt :: Int -> DescribeInstancesHealth -> Int
hashWithSalt Int
_salt DescribeInstancesHealth' {Maybe [InstancesHealthAttribute]
Maybe Text
nextToken :: Maybe Text
environmentName :: Maybe Text
environmentId :: Maybe Text
attributeNames :: Maybe [InstancesHealthAttribute]
$sel:nextToken:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:environmentName:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:environmentId:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:attributeNames:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe [InstancesHealthAttribute]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [InstancesHealthAttribute]
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
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData DescribeInstancesHealth where
  rnf :: DescribeInstancesHealth -> ()
rnf DescribeInstancesHealth' {Maybe [InstancesHealthAttribute]
Maybe Text
nextToken :: Maybe Text
environmentName :: Maybe Text
environmentId :: Maybe Text
attributeNames :: Maybe [InstancesHealthAttribute]
$sel:nextToken:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:environmentName:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:environmentId:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:attributeNames:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe [InstancesHealthAttribute]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [InstancesHealthAttribute]
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
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

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

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

instance Data.ToQuery DescribeInstancesHealth where
  toQuery :: DescribeInstancesHealth -> QueryString
toQuery DescribeInstancesHealth' {Maybe [InstancesHealthAttribute]
Maybe Text
nextToken :: Maybe Text
environmentName :: Maybe Text
environmentId :: Maybe Text
attributeNames :: Maybe [InstancesHealthAttribute]
$sel:nextToken:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:environmentName:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:environmentId:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe Text
$sel:attributeNames:DescribeInstancesHealth' :: DescribeInstancesHealth -> Maybe [InstancesHealthAttribute]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeInstancesHealth" :: 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 [InstancesHealthAttribute]
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,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | Detailed health information about the Amazon EC2 instances in an AWS
-- Elastic Beanstalk environment.
--
-- /See:/ 'newDescribeInstancesHealthResponse' smart constructor.
data DescribeInstancesHealthResponse = DescribeInstancesHealthResponse'
  { -- | Detailed health information about each instance.
    --
    -- The output differs slightly between Linux and Windows environments.
    -- There is a difference in the members that are supported under the
    -- @\<CPUUtilization>@ type.
    DescribeInstancesHealthResponse -> Maybe [SingleInstanceHealth]
instanceHealthList :: Prelude.Maybe [SingleInstanceHealth],
    -- | Pagination token for the next page of results, if available.
    DescribeInstancesHealthResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The date and time that the health information was retrieved.
    DescribeInstancesHealthResponse -> Maybe ISO8601
refreshedAt :: Prelude.Maybe Data.ISO8601,
    -- | The response's http status code.
    DescribeInstancesHealthResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeInstancesHealthResponse
-> DescribeInstancesHealthResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeInstancesHealthResponse
-> DescribeInstancesHealthResponse -> Bool
$c/= :: DescribeInstancesHealthResponse
-> DescribeInstancesHealthResponse -> Bool
== :: DescribeInstancesHealthResponse
-> DescribeInstancesHealthResponse -> Bool
$c== :: DescribeInstancesHealthResponse
-> DescribeInstancesHealthResponse -> Bool
Prelude.Eq, ReadPrec [DescribeInstancesHealthResponse]
ReadPrec DescribeInstancesHealthResponse
Int -> ReadS DescribeInstancesHealthResponse
ReadS [DescribeInstancesHealthResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeInstancesHealthResponse]
$creadListPrec :: ReadPrec [DescribeInstancesHealthResponse]
readPrec :: ReadPrec DescribeInstancesHealthResponse
$creadPrec :: ReadPrec DescribeInstancesHealthResponse
readList :: ReadS [DescribeInstancesHealthResponse]
$creadList :: ReadS [DescribeInstancesHealthResponse]
readsPrec :: Int -> ReadS DescribeInstancesHealthResponse
$creadsPrec :: Int -> ReadS DescribeInstancesHealthResponse
Prelude.Read, Int -> DescribeInstancesHealthResponse -> ShowS
[DescribeInstancesHealthResponse] -> ShowS
DescribeInstancesHealthResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeInstancesHealthResponse] -> ShowS
$cshowList :: [DescribeInstancesHealthResponse] -> ShowS
show :: DescribeInstancesHealthResponse -> String
$cshow :: DescribeInstancesHealthResponse -> String
showsPrec :: Int -> DescribeInstancesHealthResponse -> ShowS
$cshowsPrec :: Int -> DescribeInstancesHealthResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeInstancesHealthResponse x
-> DescribeInstancesHealthResponse
forall x.
DescribeInstancesHealthResponse
-> Rep DescribeInstancesHealthResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeInstancesHealthResponse x
-> DescribeInstancesHealthResponse
$cfrom :: forall x.
DescribeInstancesHealthResponse
-> Rep DescribeInstancesHealthResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeInstancesHealthResponse' 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:
--
-- 'instanceHealthList', 'describeInstancesHealthResponse_instanceHealthList' - Detailed health information about each instance.
--
-- The output differs slightly between Linux and Windows environments.
-- There is a difference in the members that are supported under the
-- @\<CPUUtilization>@ type.
--
-- 'nextToken', 'describeInstancesHealthResponse_nextToken' - Pagination token for the next page of results, if available.
--
-- 'refreshedAt', 'describeInstancesHealthResponse_refreshedAt' - The date and time that the health information was retrieved.
--
-- 'httpStatus', 'describeInstancesHealthResponse_httpStatus' - The response's http status code.
newDescribeInstancesHealthResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeInstancesHealthResponse
newDescribeInstancesHealthResponse :: Int -> DescribeInstancesHealthResponse
newDescribeInstancesHealthResponse Int
pHttpStatus_ =
  DescribeInstancesHealthResponse'
    { $sel:instanceHealthList:DescribeInstancesHealthResponse' :: Maybe [SingleInstanceHealth]
instanceHealthList =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeInstancesHealthResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:refreshedAt:DescribeInstancesHealthResponse' :: Maybe ISO8601
refreshedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeInstancesHealthResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Detailed health information about each instance.
--
-- The output differs slightly between Linux and Windows environments.
-- There is a difference in the members that are supported under the
-- @\<CPUUtilization>@ type.
describeInstancesHealthResponse_instanceHealthList :: Lens.Lens' DescribeInstancesHealthResponse (Prelude.Maybe [SingleInstanceHealth])
describeInstancesHealthResponse_instanceHealthList :: Lens'
  DescribeInstancesHealthResponse (Maybe [SingleInstanceHealth])
describeInstancesHealthResponse_instanceHealthList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealthResponse' {Maybe [SingleInstanceHealth]
instanceHealthList :: Maybe [SingleInstanceHealth]
$sel:instanceHealthList:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Maybe [SingleInstanceHealth]
instanceHealthList} -> Maybe [SingleInstanceHealth]
instanceHealthList) (\s :: DescribeInstancesHealthResponse
s@DescribeInstancesHealthResponse' {} Maybe [SingleInstanceHealth]
a -> DescribeInstancesHealthResponse
s {$sel:instanceHealthList:DescribeInstancesHealthResponse' :: Maybe [SingleInstanceHealth]
instanceHealthList = Maybe [SingleInstanceHealth]
a} :: DescribeInstancesHealthResponse) 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

-- | Pagination token for the next page of results, if available.
describeInstancesHealthResponse_nextToken :: Lens.Lens' DescribeInstancesHealthResponse (Prelude.Maybe Prelude.Text)
describeInstancesHealthResponse_nextToken :: Lens' DescribeInstancesHealthResponse (Maybe Text)
describeInstancesHealthResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealthResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeInstancesHealthResponse
s@DescribeInstancesHealthResponse' {} Maybe Text
a -> DescribeInstancesHealthResponse
s {$sel:nextToken:DescribeInstancesHealthResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeInstancesHealthResponse)

-- | The date and time that the health information was retrieved.
describeInstancesHealthResponse_refreshedAt :: Lens.Lens' DescribeInstancesHealthResponse (Prelude.Maybe Prelude.UTCTime)
describeInstancesHealthResponse_refreshedAt :: Lens' DescribeInstancesHealthResponse (Maybe UTCTime)
describeInstancesHealthResponse_refreshedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealthResponse' {Maybe ISO8601
refreshedAt :: Maybe ISO8601
$sel:refreshedAt:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Maybe ISO8601
refreshedAt} -> Maybe ISO8601
refreshedAt) (\s :: DescribeInstancesHealthResponse
s@DescribeInstancesHealthResponse' {} Maybe ISO8601
a -> DescribeInstancesHealthResponse
s {$sel:refreshedAt:DescribeInstancesHealthResponse' :: Maybe ISO8601
refreshedAt = Maybe ISO8601
a} :: DescribeInstancesHealthResponse) 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 response's http status code.
describeInstancesHealthResponse_httpStatus :: Lens.Lens' DescribeInstancesHealthResponse Prelude.Int
describeInstancesHealthResponse_httpStatus :: Lens' DescribeInstancesHealthResponse Int
describeInstancesHealthResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstancesHealthResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeInstancesHealthResponse
s@DescribeInstancesHealthResponse' {} Int
a -> DescribeInstancesHealthResponse
s {$sel:httpStatus:DescribeInstancesHealthResponse' :: Int
httpStatus = Int
a} :: DescribeInstancesHealthResponse)

instance
  Prelude.NFData
    DescribeInstancesHealthResponse
  where
  rnf :: DescribeInstancesHealthResponse -> ()
rnf DescribeInstancesHealthResponse' {Int
Maybe [SingleInstanceHealth]
Maybe Text
Maybe ISO8601
httpStatus :: Int
refreshedAt :: Maybe ISO8601
nextToken :: Maybe Text
instanceHealthList :: Maybe [SingleInstanceHealth]
$sel:httpStatus:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Int
$sel:refreshedAt:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Maybe ISO8601
$sel:nextToken:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Maybe Text
$sel:instanceHealthList:DescribeInstancesHealthResponse' :: DescribeInstancesHealthResponse -> Maybe [SingleInstanceHealth]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [SingleInstanceHealth]
instanceHealthList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      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 Int
httpStatus