{-# 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.OpsWorks.DescribeEcsClusters
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes Amazon ECS clusters that are registered with a stack. If you
-- specify only a stack ID, you can use the @MaxResults@ and @NextToken@
-- parameters to paginate the response. However, AWS OpsWorks Stacks
-- currently supports only one cluster per layer, so the result set has a
-- maximum of one element.
--
-- __Required Permissions__: To use this action, an IAM user must have a
-- Show, Deploy, or Manage permissions level for the stack or an attached
-- policy that explicitly grants permission. For more information about
-- user permissions, see
-- <https://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
--
-- This call accepts only one resource-identifying parameter.
--
-- This operation returns paginated results.
module Amazonka.OpsWorks.DescribeEcsClusters
  ( -- * Creating a Request
    DescribeEcsClusters (..),
    newDescribeEcsClusters,

    -- * Request Lenses
    describeEcsClusters_ecsClusterArns,
    describeEcsClusters_maxResults,
    describeEcsClusters_nextToken,
    describeEcsClusters_stackId,

    -- * Destructuring the Response
    DescribeEcsClustersResponse (..),
    newDescribeEcsClustersResponse,

    -- * Response Lenses
    describeEcsClustersResponse_ecsClusters,
    describeEcsClustersResponse_nextToken,
    describeEcsClustersResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeEcsClusters' smart constructor.
data DescribeEcsClusters = DescribeEcsClusters'
  { -- | A list of ARNs, one for each cluster to be described.
    DescribeEcsClusters -> Maybe [Text]
ecsClusterArns :: Prelude.Maybe [Prelude.Text],
    -- | To receive a paginated response, use this parameter to specify the
    -- maximum number of results to be returned with a single call. If the
    -- number of available results exceeds this maximum, the response includes
    -- a @NextToken@ value that you can assign to the @NextToken@ request
    -- parameter to get the next set of results.
    DescribeEcsClusters -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | If the previous paginated request did not return all of the remaining
    -- results, the response object\'s@NextToken@ parameter value is set to a
    -- token. To retrieve the next set of results, call @DescribeEcsClusters@
    -- again and assign that token to the request object\'s @NextToken@
    -- parameter. If there are no remaining results, the previous response
    -- object\'s @NextToken@ parameter is set to @null@.
    DescribeEcsClusters -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | A stack ID. @DescribeEcsClusters@ returns a description of the cluster
    -- that is registered with the stack.
    DescribeEcsClusters -> Maybe Text
stackId :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeEcsClusters -> DescribeEcsClusters -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEcsClusters -> DescribeEcsClusters -> Bool
$c/= :: DescribeEcsClusters -> DescribeEcsClusters -> Bool
== :: DescribeEcsClusters -> DescribeEcsClusters -> Bool
$c== :: DescribeEcsClusters -> DescribeEcsClusters -> Bool
Prelude.Eq, ReadPrec [DescribeEcsClusters]
ReadPrec DescribeEcsClusters
Int -> ReadS DescribeEcsClusters
ReadS [DescribeEcsClusters]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEcsClusters]
$creadListPrec :: ReadPrec [DescribeEcsClusters]
readPrec :: ReadPrec DescribeEcsClusters
$creadPrec :: ReadPrec DescribeEcsClusters
readList :: ReadS [DescribeEcsClusters]
$creadList :: ReadS [DescribeEcsClusters]
readsPrec :: Int -> ReadS DescribeEcsClusters
$creadsPrec :: Int -> ReadS DescribeEcsClusters
Prelude.Read, Int -> DescribeEcsClusters -> ShowS
[DescribeEcsClusters] -> ShowS
DescribeEcsClusters -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEcsClusters] -> ShowS
$cshowList :: [DescribeEcsClusters] -> ShowS
show :: DescribeEcsClusters -> String
$cshow :: DescribeEcsClusters -> String
showsPrec :: Int -> DescribeEcsClusters -> ShowS
$cshowsPrec :: Int -> DescribeEcsClusters -> ShowS
Prelude.Show, forall x. Rep DescribeEcsClusters x -> DescribeEcsClusters
forall x. DescribeEcsClusters -> Rep DescribeEcsClusters x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeEcsClusters x -> DescribeEcsClusters
$cfrom :: forall x. DescribeEcsClusters -> Rep DescribeEcsClusters x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEcsClusters' 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:
--
-- 'ecsClusterArns', 'describeEcsClusters_ecsClusterArns' - A list of ARNs, one for each cluster to be described.
--
-- 'maxResults', 'describeEcsClusters_maxResults' - To receive a paginated response, use this parameter to specify the
-- maximum number of results to be returned with a single call. If the
-- number of available results exceeds this maximum, the response includes
-- a @NextToken@ value that you can assign to the @NextToken@ request
-- parameter to get the next set of results.
--
-- 'nextToken', 'describeEcsClusters_nextToken' - If the previous paginated request did not return all of the remaining
-- results, the response object\'s@NextToken@ parameter value is set to a
-- token. To retrieve the next set of results, call @DescribeEcsClusters@
-- again and assign that token to the request object\'s @NextToken@
-- parameter. If there are no remaining results, the previous response
-- object\'s @NextToken@ parameter is set to @null@.
--
-- 'stackId', 'describeEcsClusters_stackId' - A stack ID. @DescribeEcsClusters@ returns a description of the cluster
-- that is registered with the stack.
newDescribeEcsClusters ::
  DescribeEcsClusters
newDescribeEcsClusters :: DescribeEcsClusters
newDescribeEcsClusters =
  DescribeEcsClusters'
    { $sel:ecsClusterArns:DescribeEcsClusters' :: Maybe [Text]
ecsClusterArns =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeEcsClusters' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeEcsClusters' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:stackId:DescribeEcsClusters' :: Maybe Text
stackId = forall a. Maybe a
Prelude.Nothing
    }

-- | A list of ARNs, one for each cluster to be described.
describeEcsClusters_ecsClusterArns :: Lens.Lens' DescribeEcsClusters (Prelude.Maybe [Prelude.Text])
describeEcsClusters_ecsClusterArns :: Lens' DescribeEcsClusters (Maybe [Text])
describeEcsClusters_ecsClusterArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEcsClusters' {Maybe [Text]
ecsClusterArns :: Maybe [Text]
$sel:ecsClusterArns:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe [Text]
ecsClusterArns} -> Maybe [Text]
ecsClusterArns) (\s :: DescribeEcsClusters
s@DescribeEcsClusters' {} Maybe [Text]
a -> DescribeEcsClusters
s {$sel:ecsClusterArns:DescribeEcsClusters' :: Maybe [Text]
ecsClusterArns = Maybe [Text]
a} :: DescribeEcsClusters) 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

-- | To receive a paginated response, use this parameter to specify the
-- maximum number of results to be returned with a single call. If the
-- number of available results exceeds this maximum, the response includes
-- a @NextToken@ value that you can assign to the @NextToken@ request
-- parameter to get the next set of results.
describeEcsClusters_maxResults :: Lens.Lens' DescribeEcsClusters (Prelude.Maybe Prelude.Int)
describeEcsClusters_maxResults :: Lens' DescribeEcsClusters (Maybe Int)
describeEcsClusters_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEcsClusters' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: DescribeEcsClusters
s@DescribeEcsClusters' {} Maybe Int
a -> DescribeEcsClusters
s {$sel:maxResults:DescribeEcsClusters' :: Maybe Int
maxResults = Maybe Int
a} :: DescribeEcsClusters)

-- | If the previous paginated request did not return all of the remaining
-- results, the response object\'s@NextToken@ parameter value is set to a
-- token. To retrieve the next set of results, call @DescribeEcsClusters@
-- again and assign that token to the request object\'s @NextToken@
-- parameter. If there are no remaining results, the previous response
-- object\'s @NextToken@ parameter is set to @null@.
describeEcsClusters_nextToken :: Lens.Lens' DescribeEcsClusters (Prelude.Maybe Prelude.Text)
describeEcsClusters_nextToken :: Lens' DescribeEcsClusters (Maybe Text)
describeEcsClusters_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEcsClusters' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeEcsClusters
s@DescribeEcsClusters' {} Maybe Text
a -> DescribeEcsClusters
s {$sel:nextToken:DescribeEcsClusters' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeEcsClusters)

-- | A stack ID. @DescribeEcsClusters@ returns a description of the cluster
-- that is registered with the stack.
describeEcsClusters_stackId :: Lens.Lens' DescribeEcsClusters (Prelude.Maybe Prelude.Text)
describeEcsClusters_stackId :: Lens' DescribeEcsClusters (Maybe Text)
describeEcsClusters_stackId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEcsClusters' {Maybe Text
stackId :: Maybe Text
$sel:stackId:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Text
stackId} -> Maybe Text
stackId) (\s :: DescribeEcsClusters
s@DescribeEcsClusters' {} Maybe Text
a -> DescribeEcsClusters
s {$sel:stackId:DescribeEcsClusters' :: Maybe Text
stackId = Maybe Text
a} :: DescribeEcsClusters)

instance Core.AWSPager DescribeEcsClusters where
  page :: DescribeEcsClusters
-> AWSResponse DescribeEcsClusters -> Maybe DescribeEcsClusters
page DescribeEcsClusters
rq AWSResponse DescribeEcsClusters
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeEcsClusters
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEcsClustersResponse (Maybe Text)
describeEcsClustersResponse_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 DescribeEcsClusters
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEcsClustersResponse (Maybe [EcsCluster])
describeEcsClustersResponse_ecsClusters
            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.$ DescribeEcsClusters
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeEcsClusters (Maybe Text)
describeEcsClusters_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeEcsClusters
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeEcsClustersResponse (Maybe Text)
describeEcsClustersResponse_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 DescribeEcsClusters where
  type
    AWSResponse DescribeEcsClusters =
      DescribeEcsClustersResponse
  request :: (Service -> Service)
-> DescribeEcsClusters -> Request DescribeEcsClusters
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 DescribeEcsClusters
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeEcsClusters)))
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 [EcsCluster]
-> Maybe Text -> Int -> DescribeEcsClustersResponse
DescribeEcsClustersResponse'
            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
"EcsClusters" 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.<*> (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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeEcsClusters where
  hashWithSalt :: Int -> DescribeEcsClusters -> Int
hashWithSalt Int
_salt DescribeEcsClusters' {Maybe Int
Maybe [Text]
Maybe Text
stackId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
ecsClusterArns :: Maybe [Text]
$sel:stackId:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Text
$sel:nextToken:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Text
$sel:maxResults:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Int
$sel:ecsClusterArns:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
ecsClusterArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stackId

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

instance Data.ToHeaders DescribeEcsClusters where
  toHeaders :: DescribeEcsClusters -> 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
"OpsWorks_20130218.DescribeEcsClusters" ::
                          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 DescribeEcsClusters where
  toJSON :: DescribeEcsClusters -> Value
toJSON DescribeEcsClusters' {Maybe Int
Maybe [Text]
Maybe Text
stackId :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Int
ecsClusterArns :: Maybe [Text]
$sel:stackId:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Text
$sel:nextToken:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Text
$sel:maxResults:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe Int
$sel:ecsClusterArns:DescribeEcsClusters' :: DescribeEcsClusters -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"EcsClusterArns" 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]
ecsClusterArns,
            (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 Int
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
"StackId" 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
stackId
          ]
      )

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

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

-- | Contains the response to a @DescribeEcsClusters@ request.
--
-- /See:/ 'newDescribeEcsClustersResponse' smart constructor.
data DescribeEcsClustersResponse = DescribeEcsClustersResponse'
  { -- | A list of @EcsCluster@ objects containing the cluster descriptions.
    DescribeEcsClustersResponse -> Maybe [EcsCluster]
ecsClusters :: Prelude.Maybe [EcsCluster],
    -- | If a paginated request does not return all of the remaining results,
    -- this parameter is set to a token that you can assign to the request
    -- object\'s @NextToken@ parameter to retrieve the next set of results. If
    -- the previous paginated request returned all of the remaining results,
    -- this parameter is set to @null@.
    DescribeEcsClustersResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeEcsClustersResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeEcsClustersResponse -> DescribeEcsClustersResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeEcsClustersResponse -> DescribeEcsClustersResponse -> Bool
$c/= :: DescribeEcsClustersResponse -> DescribeEcsClustersResponse -> Bool
== :: DescribeEcsClustersResponse -> DescribeEcsClustersResponse -> Bool
$c== :: DescribeEcsClustersResponse -> DescribeEcsClustersResponse -> Bool
Prelude.Eq, ReadPrec [DescribeEcsClustersResponse]
ReadPrec DescribeEcsClustersResponse
Int -> ReadS DescribeEcsClustersResponse
ReadS [DescribeEcsClustersResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeEcsClustersResponse]
$creadListPrec :: ReadPrec [DescribeEcsClustersResponse]
readPrec :: ReadPrec DescribeEcsClustersResponse
$creadPrec :: ReadPrec DescribeEcsClustersResponse
readList :: ReadS [DescribeEcsClustersResponse]
$creadList :: ReadS [DescribeEcsClustersResponse]
readsPrec :: Int -> ReadS DescribeEcsClustersResponse
$creadsPrec :: Int -> ReadS DescribeEcsClustersResponse
Prelude.Read, Int -> DescribeEcsClustersResponse -> ShowS
[DescribeEcsClustersResponse] -> ShowS
DescribeEcsClustersResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeEcsClustersResponse] -> ShowS
$cshowList :: [DescribeEcsClustersResponse] -> ShowS
show :: DescribeEcsClustersResponse -> String
$cshow :: DescribeEcsClustersResponse -> String
showsPrec :: Int -> DescribeEcsClustersResponse -> ShowS
$cshowsPrec :: Int -> DescribeEcsClustersResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeEcsClustersResponse x -> DescribeEcsClustersResponse
forall x.
DescribeEcsClustersResponse -> Rep DescribeEcsClustersResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeEcsClustersResponse x -> DescribeEcsClustersResponse
$cfrom :: forall x.
DescribeEcsClustersResponse -> Rep DescribeEcsClustersResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeEcsClustersResponse' 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:
--
-- 'ecsClusters', 'describeEcsClustersResponse_ecsClusters' - A list of @EcsCluster@ objects containing the cluster descriptions.
--
-- 'nextToken', 'describeEcsClustersResponse_nextToken' - If a paginated request does not return all of the remaining results,
-- this parameter is set to a token that you can assign to the request
-- object\'s @NextToken@ parameter to retrieve the next set of results. If
-- the previous paginated request returned all of the remaining results,
-- this parameter is set to @null@.
--
-- 'httpStatus', 'describeEcsClustersResponse_httpStatus' - The response's http status code.
newDescribeEcsClustersResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeEcsClustersResponse
newDescribeEcsClustersResponse :: Int -> DescribeEcsClustersResponse
newDescribeEcsClustersResponse Int
pHttpStatus_ =
  DescribeEcsClustersResponse'
    { $sel:ecsClusters:DescribeEcsClustersResponse' :: Maybe [EcsCluster]
ecsClusters =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeEcsClustersResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeEcsClustersResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A list of @EcsCluster@ objects containing the cluster descriptions.
describeEcsClustersResponse_ecsClusters :: Lens.Lens' DescribeEcsClustersResponse (Prelude.Maybe [EcsCluster])
describeEcsClustersResponse_ecsClusters :: Lens' DescribeEcsClustersResponse (Maybe [EcsCluster])
describeEcsClustersResponse_ecsClusters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEcsClustersResponse' {Maybe [EcsCluster]
ecsClusters :: Maybe [EcsCluster]
$sel:ecsClusters:DescribeEcsClustersResponse' :: DescribeEcsClustersResponse -> Maybe [EcsCluster]
ecsClusters} -> Maybe [EcsCluster]
ecsClusters) (\s :: DescribeEcsClustersResponse
s@DescribeEcsClustersResponse' {} Maybe [EcsCluster]
a -> DescribeEcsClustersResponse
s {$sel:ecsClusters:DescribeEcsClustersResponse' :: Maybe [EcsCluster]
ecsClusters = Maybe [EcsCluster]
a} :: DescribeEcsClustersResponse) 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

-- | If a paginated request does not return all of the remaining results,
-- this parameter is set to a token that you can assign to the request
-- object\'s @NextToken@ parameter to retrieve the next set of results. If
-- the previous paginated request returned all of the remaining results,
-- this parameter is set to @null@.
describeEcsClustersResponse_nextToken :: Lens.Lens' DescribeEcsClustersResponse (Prelude.Maybe Prelude.Text)
describeEcsClustersResponse_nextToken :: Lens' DescribeEcsClustersResponse (Maybe Text)
describeEcsClustersResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeEcsClustersResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeEcsClustersResponse' :: DescribeEcsClustersResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeEcsClustersResponse
s@DescribeEcsClustersResponse' {} Maybe Text
a -> DescribeEcsClustersResponse
s {$sel:nextToken:DescribeEcsClustersResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeEcsClustersResponse)

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

instance Prelude.NFData DescribeEcsClustersResponse where
  rnf :: DescribeEcsClustersResponse -> ()
rnf DescribeEcsClustersResponse' {Int
Maybe [EcsCluster]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
ecsClusters :: Maybe [EcsCluster]
$sel:httpStatus:DescribeEcsClustersResponse' :: DescribeEcsClustersResponse -> Int
$sel:nextToken:DescribeEcsClustersResponse' :: DescribeEcsClustersResponse -> Maybe Text
$sel:ecsClusters:DescribeEcsClustersResponse' :: DescribeEcsClustersResponse -> Maybe [EcsCluster]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [EcsCluster]
ecsClusters
      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 Int
httpStatus