{-# 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.OpsWorksCM.DescribeServers
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists all configuration management servers that are identified with your
-- account. Only the stored results from Amazon DynamoDB are returned. AWS
-- OpsWorks CM does not query other services.
--
-- This operation is synchronous.
--
-- A @ResourceNotFoundException@ is thrown when the server does not exist.
-- A @ValidationException@ is raised when parameters of the request are not
-- valid.
--
-- This operation returns paginated results.
module Amazonka.OpsWorksCM.DescribeServers
  ( -- * Creating a Request
    DescribeServers (..),
    newDescribeServers,

    -- * Request Lenses
    describeServers_maxResults,
    describeServers_nextToken,
    describeServers_serverName,

    -- * Destructuring the Response
    DescribeServersResponse (..),
    newDescribeServersResponse,

    -- * Response Lenses
    describeServersResponse_nextToken,
    describeServersResponse_servers,
    describeServersResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeServers' smart constructor.
data DescribeServers = DescribeServers'
  { -- | This is not currently implemented for @DescribeServers@ requests.
    DescribeServers -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | This is not currently implemented for @DescribeServers@ requests.
    DescribeServers -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Describes the server with the specified ServerName.
    DescribeServers -> Maybe Text
serverName :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeServers -> DescribeServers -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeServers -> DescribeServers -> Bool
$c/= :: DescribeServers -> DescribeServers -> Bool
== :: DescribeServers -> DescribeServers -> Bool
$c== :: DescribeServers -> DescribeServers -> Bool
Prelude.Eq, ReadPrec [DescribeServers]
ReadPrec DescribeServers
Int -> ReadS DescribeServers
ReadS [DescribeServers]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeServers]
$creadListPrec :: ReadPrec [DescribeServers]
readPrec :: ReadPrec DescribeServers
$creadPrec :: ReadPrec DescribeServers
readList :: ReadS [DescribeServers]
$creadList :: ReadS [DescribeServers]
readsPrec :: Int -> ReadS DescribeServers
$creadsPrec :: Int -> ReadS DescribeServers
Prelude.Read, Int -> DescribeServers -> ShowS
[DescribeServers] -> ShowS
DescribeServers -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeServers] -> ShowS
$cshowList :: [DescribeServers] -> ShowS
show :: DescribeServers -> String
$cshow :: DescribeServers -> String
showsPrec :: Int -> DescribeServers -> ShowS
$cshowsPrec :: Int -> DescribeServers -> ShowS
Prelude.Show, forall x. Rep DescribeServers x -> DescribeServers
forall x. DescribeServers -> Rep DescribeServers x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeServers x -> DescribeServers
$cfrom :: forall x. DescribeServers -> Rep DescribeServers x
Prelude.Generic)

-- |
-- Create a value of 'DescribeServers' 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:
--
-- 'maxResults', 'describeServers_maxResults' - This is not currently implemented for @DescribeServers@ requests.
--
-- 'nextToken', 'describeServers_nextToken' - This is not currently implemented for @DescribeServers@ requests.
--
-- 'serverName', 'describeServers_serverName' - Describes the server with the specified ServerName.
newDescribeServers ::
  DescribeServers
newDescribeServers :: DescribeServers
newDescribeServers =
  DescribeServers'
    { $sel:maxResults:DescribeServers' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeServers' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:serverName:DescribeServers' :: Maybe Text
serverName = forall a. Maybe a
Prelude.Nothing
    }

-- | This is not currently implemented for @DescribeServers@ requests.
describeServers_maxResults :: Lens.Lens' DescribeServers (Prelude.Maybe Prelude.Natural)
describeServers_maxResults :: Lens' DescribeServers (Maybe Natural)
describeServers_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeServers' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeServers' :: DescribeServers -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeServers
s@DescribeServers' {} Maybe Natural
a -> DescribeServers
s {$sel:maxResults:DescribeServers' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeServers)

-- | This is not currently implemented for @DescribeServers@ requests.
describeServers_nextToken :: Lens.Lens' DescribeServers (Prelude.Maybe Prelude.Text)
describeServers_nextToken :: Lens' DescribeServers (Maybe Text)
describeServers_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeServers' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeServers' :: DescribeServers -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeServers
s@DescribeServers' {} Maybe Text
a -> DescribeServers
s {$sel:nextToken:DescribeServers' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeServers)

-- | Describes the server with the specified ServerName.
describeServers_serverName :: Lens.Lens' DescribeServers (Prelude.Maybe Prelude.Text)
describeServers_serverName :: Lens' DescribeServers (Maybe Text)
describeServers_serverName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeServers' {Maybe Text
serverName :: Maybe Text
$sel:serverName:DescribeServers' :: DescribeServers -> Maybe Text
serverName} -> Maybe Text
serverName) (\s :: DescribeServers
s@DescribeServers' {} Maybe Text
a -> DescribeServers
s {$sel:serverName:DescribeServers' :: Maybe Text
serverName = Maybe Text
a} :: DescribeServers)

instance Core.AWSPager DescribeServers where
  page :: DescribeServers
-> AWSResponse DescribeServers -> Maybe DescribeServers
page DescribeServers
rq AWSResponse DescribeServers
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeServers
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeServersResponse (Maybe Text)
describeServersResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeServers
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeServersResponse (Maybe [Server])
describeServersResponse_servers
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeServers
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeServers (Maybe Text)
describeServers_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeServers
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeServersResponse (Maybe Text)
describeServersResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeServers where
  type
    AWSResponse DescribeServers =
      DescribeServersResponse
  request :: (Service -> Service) -> DescribeServers -> Request DescribeServers
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeServers
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeServers)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Maybe [Server] -> Int -> DescribeServersResponse
DescribeServersResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Servers" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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 DescribeServers where
  hashWithSalt :: Int -> DescribeServers -> Int
hashWithSalt Int
_salt DescribeServers' {Maybe Natural
Maybe Text
serverName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:serverName:DescribeServers' :: DescribeServers -> Maybe Text
$sel:nextToken:DescribeServers' :: DescribeServers -> Maybe Text
$sel:maxResults:DescribeServers' :: DescribeServers -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serverName

instance Prelude.NFData DescribeServers where
  rnf :: DescribeServers -> ()
rnf DescribeServers' {Maybe Natural
Maybe Text
serverName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:serverName:DescribeServers' :: DescribeServers -> Maybe Text
$sel:nextToken:DescribeServers' :: DescribeServers -> Maybe Text
$sel:maxResults:DescribeServers' :: DescribeServers -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      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 Text
serverName

instance Data.ToHeaders DescribeServers where
  toHeaders :: DescribeServers -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"OpsWorksCM_V2016_11_01.DescribeServers" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeServers where
  toJSON :: DescribeServers -> Value
toJSON DescribeServers' {Maybe Natural
Maybe Text
serverName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:serverName:DescribeServers' :: DescribeServers -> Maybe Text
$sel:nextToken:DescribeServers' :: DescribeServers -> Maybe Text
$sel:maxResults:DescribeServers' :: DescribeServers -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"MaxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"ServerName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
serverName
          ]
      )

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

instance Data.ToQuery DescribeServers where
  toQuery :: DescribeServers -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeServersResponse' smart constructor.
data DescribeServersResponse = DescribeServersResponse'
  { -- | This is not currently implemented for @DescribeServers@ requests.
    DescribeServersResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Contains the response to a @DescribeServers@ request.
    --
    -- /For Chef Automate servers:/ If
    -- @DescribeServersResponse$Servers$EngineAttributes@ includes
    -- CHEF_MAJOR_UPGRADE_AVAILABLE, you can upgrade the Chef Automate server
    -- to Chef Automate 2. To be eligible for upgrade, a server running Chef
    -- Automate 1 must have had at least one successful maintenance run after
    -- November 1, 2019.
    --
    -- /For Puppet servers:/ @DescribeServersResponse$Servers$EngineAttributes@
    -- contains the following two responses:
    --
    -- -   @PUPPET_API_CA_CERT@, the PEM-encoded CA certificate that is used by
    --     the Puppet API over TCP port number 8140. The CA certificate is also
    --     used to sign node certificates.
    --
    -- -   @PUPPET_API_CRL@, a certificate revocation list. The certificate
    --     revocation list is for internal maintenance purposes only. For more
    --     information about the Puppet certificate revocation list, see
    --     <https://puppet.com/docs/puppet/5.5/man/certificate_revocation_list.html Man Page: puppet certificate_revocation_list>
    --     in the Puppet documentation.
    DescribeServersResponse -> Maybe [Server]
servers :: Prelude.Maybe [Server],
    -- | The response's http status code.
    DescribeServersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeServersResponse -> DescribeServersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeServersResponse -> DescribeServersResponse -> Bool
$c/= :: DescribeServersResponse -> DescribeServersResponse -> Bool
== :: DescribeServersResponse -> DescribeServersResponse -> Bool
$c== :: DescribeServersResponse -> DescribeServersResponse -> Bool
Prelude.Eq, Int -> DescribeServersResponse -> ShowS
[DescribeServersResponse] -> ShowS
DescribeServersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeServersResponse] -> ShowS
$cshowList :: [DescribeServersResponse] -> ShowS
show :: DescribeServersResponse -> String
$cshow :: DescribeServersResponse -> String
showsPrec :: Int -> DescribeServersResponse -> ShowS
$cshowsPrec :: Int -> DescribeServersResponse -> ShowS
Prelude.Show, forall x. Rep DescribeServersResponse x -> DescribeServersResponse
forall x. DescribeServersResponse -> Rep DescribeServersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeServersResponse x -> DescribeServersResponse
$cfrom :: forall x. DescribeServersResponse -> Rep DescribeServersResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeServersResponse' 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:
--
-- 'nextToken', 'describeServersResponse_nextToken' - This is not currently implemented for @DescribeServers@ requests.
--
-- 'servers', 'describeServersResponse_servers' - Contains the response to a @DescribeServers@ request.
--
-- /For Chef Automate servers:/ If
-- @DescribeServersResponse$Servers$EngineAttributes@ includes
-- CHEF_MAJOR_UPGRADE_AVAILABLE, you can upgrade the Chef Automate server
-- to Chef Automate 2. To be eligible for upgrade, a server running Chef
-- Automate 1 must have had at least one successful maintenance run after
-- November 1, 2019.
--
-- /For Puppet servers:/ @DescribeServersResponse$Servers$EngineAttributes@
-- contains the following two responses:
--
-- -   @PUPPET_API_CA_CERT@, the PEM-encoded CA certificate that is used by
--     the Puppet API over TCP port number 8140. The CA certificate is also
--     used to sign node certificates.
--
-- -   @PUPPET_API_CRL@, a certificate revocation list. The certificate
--     revocation list is for internal maintenance purposes only. For more
--     information about the Puppet certificate revocation list, see
--     <https://puppet.com/docs/puppet/5.5/man/certificate_revocation_list.html Man Page: puppet certificate_revocation_list>
--     in the Puppet documentation.
--
-- 'httpStatus', 'describeServersResponse_httpStatus' - The response's http status code.
newDescribeServersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeServersResponse
newDescribeServersResponse :: Int -> DescribeServersResponse
newDescribeServersResponse Int
pHttpStatus_ =
  DescribeServersResponse'
    { $sel:nextToken:DescribeServersResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:servers:DescribeServersResponse' :: Maybe [Server]
servers = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeServersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | This is not currently implemented for @DescribeServers@ requests.
describeServersResponse_nextToken :: Lens.Lens' DescribeServersResponse (Prelude.Maybe Prelude.Text)
describeServersResponse_nextToken :: Lens' DescribeServersResponse (Maybe Text)
describeServersResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeServersResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeServersResponse' :: DescribeServersResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeServersResponse
s@DescribeServersResponse' {} Maybe Text
a -> DescribeServersResponse
s {$sel:nextToken:DescribeServersResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeServersResponse)

-- | Contains the response to a @DescribeServers@ request.
--
-- /For Chef Automate servers:/ If
-- @DescribeServersResponse$Servers$EngineAttributes@ includes
-- CHEF_MAJOR_UPGRADE_AVAILABLE, you can upgrade the Chef Automate server
-- to Chef Automate 2. To be eligible for upgrade, a server running Chef
-- Automate 1 must have had at least one successful maintenance run after
-- November 1, 2019.
--
-- /For Puppet servers:/ @DescribeServersResponse$Servers$EngineAttributes@
-- contains the following two responses:
--
-- -   @PUPPET_API_CA_CERT@, the PEM-encoded CA certificate that is used by
--     the Puppet API over TCP port number 8140. The CA certificate is also
--     used to sign node certificates.
--
-- -   @PUPPET_API_CRL@, a certificate revocation list. The certificate
--     revocation list is for internal maintenance purposes only. For more
--     information about the Puppet certificate revocation list, see
--     <https://puppet.com/docs/puppet/5.5/man/certificate_revocation_list.html Man Page: puppet certificate_revocation_list>
--     in the Puppet documentation.
describeServersResponse_servers :: Lens.Lens' DescribeServersResponse (Prelude.Maybe [Server])
describeServersResponse_servers :: Lens' DescribeServersResponse (Maybe [Server])
describeServersResponse_servers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeServersResponse' {Maybe [Server]
servers :: Maybe [Server]
$sel:servers:DescribeServersResponse' :: DescribeServersResponse -> Maybe [Server]
servers} -> Maybe [Server]
servers) (\s :: DescribeServersResponse
s@DescribeServersResponse' {} Maybe [Server]
a -> DescribeServersResponse
s {$sel:servers:DescribeServersResponse' :: Maybe [Server]
servers = Maybe [Server]
a} :: DescribeServersResponse) 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 response's http status code.
describeServersResponse_httpStatus :: Lens.Lens' DescribeServersResponse Prelude.Int
describeServersResponse_httpStatus :: Lens' DescribeServersResponse Int
describeServersResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeServersResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeServersResponse' :: DescribeServersResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeServersResponse
s@DescribeServersResponse' {} Int
a -> DescribeServersResponse
s {$sel:httpStatus:DescribeServersResponse' :: Int
httpStatus = Int
a} :: DescribeServersResponse)

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