{-# 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.ElastiCache.DescribeGlobalReplicationGroups
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about a particular global replication group. If no
-- identifier is specified, returns information about all Global
-- datastores.
--
-- This operation returns paginated results.
module Amazonka.ElastiCache.DescribeGlobalReplicationGroups
  ( -- * Creating a Request
    DescribeGlobalReplicationGroups (..),
    newDescribeGlobalReplicationGroups,

    -- * Request Lenses
    describeGlobalReplicationGroups_globalReplicationGroupId,
    describeGlobalReplicationGroups_marker,
    describeGlobalReplicationGroups_maxRecords,
    describeGlobalReplicationGroups_showMemberInfo,

    -- * Destructuring the Response
    DescribeGlobalReplicationGroupsResponse (..),
    newDescribeGlobalReplicationGroupsResponse,

    -- * Response Lenses
    describeGlobalReplicationGroupsResponse_globalReplicationGroups,
    describeGlobalReplicationGroupsResponse_marker,
    describeGlobalReplicationGroupsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeGlobalReplicationGroups' smart constructor.
data DescribeGlobalReplicationGroups = DescribeGlobalReplicationGroups'
  { -- | The name of the Global datastore
    DescribeGlobalReplicationGroups -> Maybe Text
globalReplicationGroupId :: Prelude.Maybe Prelude.Text,
    -- | An optional marker returned from a prior request. Use this marker for
    -- pagination of results from this operation. If this parameter is
    -- specified, the response includes only records beyond the marker, up to
    -- the value specified by @MaxRecords@.
    DescribeGlobalReplicationGroups -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of records to include in the response. If more
    -- records exist than the specified MaxRecords value, a marker is included
    -- in the response so that the remaining results can be retrieved.
    DescribeGlobalReplicationGroups -> Maybe Int
maxRecords :: Prelude.Maybe Prelude.Int,
    -- | Returns the list of members that comprise the Global datastore.
    DescribeGlobalReplicationGroups -> Maybe Bool
showMemberInfo :: Prelude.Maybe Prelude.Bool
  }
  deriving (DescribeGlobalReplicationGroups
-> DescribeGlobalReplicationGroups -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeGlobalReplicationGroups
-> DescribeGlobalReplicationGroups -> Bool
$c/= :: DescribeGlobalReplicationGroups
-> DescribeGlobalReplicationGroups -> Bool
== :: DescribeGlobalReplicationGroups
-> DescribeGlobalReplicationGroups -> Bool
$c== :: DescribeGlobalReplicationGroups
-> DescribeGlobalReplicationGroups -> Bool
Prelude.Eq, ReadPrec [DescribeGlobalReplicationGroups]
ReadPrec DescribeGlobalReplicationGroups
Int -> ReadS DescribeGlobalReplicationGroups
ReadS [DescribeGlobalReplicationGroups]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeGlobalReplicationGroups]
$creadListPrec :: ReadPrec [DescribeGlobalReplicationGroups]
readPrec :: ReadPrec DescribeGlobalReplicationGroups
$creadPrec :: ReadPrec DescribeGlobalReplicationGroups
readList :: ReadS [DescribeGlobalReplicationGroups]
$creadList :: ReadS [DescribeGlobalReplicationGroups]
readsPrec :: Int -> ReadS DescribeGlobalReplicationGroups
$creadsPrec :: Int -> ReadS DescribeGlobalReplicationGroups
Prelude.Read, Int -> DescribeGlobalReplicationGroups -> ShowS
[DescribeGlobalReplicationGroups] -> ShowS
DescribeGlobalReplicationGroups -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeGlobalReplicationGroups] -> ShowS
$cshowList :: [DescribeGlobalReplicationGroups] -> ShowS
show :: DescribeGlobalReplicationGroups -> String
$cshow :: DescribeGlobalReplicationGroups -> String
showsPrec :: Int -> DescribeGlobalReplicationGroups -> ShowS
$cshowsPrec :: Int -> DescribeGlobalReplicationGroups -> ShowS
Prelude.Show, forall x.
Rep DescribeGlobalReplicationGroups x
-> DescribeGlobalReplicationGroups
forall x.
DescribeGlobalReplicationGroups
-> Rep DescribeGlobalReplicationGroups x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeGlobalReplicationGroups x
-> DescribeGlobalReplicationGroups
$cfrom :: forall x.
DescribeGlobalReplicationGroups
-> Rep DescribeGlobalReplicationGroups x
Prelude.Generic)

-- |
-- Create a value of 'DescribeGlobalReplicationGroups' 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:
--
-- 'globalReplicationGroupId', 'describeGlobalReplicationGroups_globalReplicationGroupId' - The name of the Global datastore
--
-- 'marker', 'describeGlobalReplicationGroups_marker' - An optional marker returned from a prior request. Use this marker for
-- pagination of results from this operation. If this parameter is
-- specified, the response includes only records beyond the marker, up to
-- the value specified by @MaxRecords@.
--
-- 'maxRecords', 'describeGlobalReplicationGroups_maxRecords' - The maximum number of records to include in the response. If more
-- records exist than the specified MaxRecords value, a marker is included
-- in the response so that the remaining results can be retrieved.
--
-- 'showMemberInfo', 'describeGlobalReplicationGroups_showMemberInfo' - Returns the list of members that comprise the Global datastore.
newDescribeGlobalReplicationGroups ::
  DescribeGlobalReplicationGroups
newDescribeGlobalReplicationGroups :: DescribeGlobalReplicationGroups
newDescribeGlobalReplicationGroups =
  DescribeGlobalReplicationGroups'
    { $sel:globalReplicationGroupId:DescribeGlobalReplicationGroups' :: Maybe Text
globalReplicationGroupId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeGlobalReplicationGroups' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:maxRecords:DescribeGlobalReplicationGroups' :: Maybe Int
maxRecords = forall a. Maybe a
Prelude.Nothing,
      $sel:showMemberInfo:DescribeGlobalReplicationGroups' :: Maybe Bool
showMemberInfo = forall a. Maybe a
Prelude.Nothing
    }

-- | The name of the Global datastore
describeGlobalReplicationGroups_globalReplicationGroupId :: Lens.Lens' DescribeGlobalReplicationGroups (Prelude.Maybe Prelude.Text)
describeGlobalReplicationGroups_globalReplicationGroupId :: Lens' DescribeGlobalReplicationGroups (Maybe Text)
describeGlobalReplicationGroups_globalReplicationGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGlobalReplicationGroups' {Maybe Text
globalReplicationGroupId :: Maybe Text
$sel:globalReplicationGroupId:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
globalReplicationGroupId} -> Maybe Text
globalReplicationGroupId) (\s :: DescribeGlobalReplicationGroups
s@DescribeGlobalReplicationGroups' {} Maybe Text
a -> DescribeGlobalReplicationGroups
s {$sel:globalReplicationGroupId:DescribeGlobalReplicationGroups' :: Maybe Text
globalReplicationGroupId = Maybe Text
a} :: DescribeGlobalReplicationGroups)

-- | An optional marker returned from a prior request. Use this marker for
-- pagination of results from this operation. If this parameter is
-- specified, the response includes only records beyond the marker, up to
-- the value specified by @MaxRecords@.
describeGlobalReplicationGroups_marker :: Lens.Lens' DescribeGlobalReplicationGroups (Prelude.Maybe Prelude.Text)
describeGlobalReplicationGroups_marker :: Lens' DescribeGlobalReplicationGroups (Maybe Text)
describeGlobalReplicationGroups_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGlobalReplicationGroups' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeGlobalReplicationGroups
s@DescribeGlobalReplicationGroups' {} Maybe Text
a -> DescribeGlobalReplicationGroups
s {$sel:marker:DescribeGlobalReplicationGroups' :: Maybe Text
marker = Maybe Text
a} :: DescribeGlobalReplicationGroups)

-- | The maximum number of records to include in the response. If more
-- records exist than the specified MaxRecords value, a marker is included
-- in the response so that the remaining results can be retrieved.
describeGlobalReplicationGroups_maxRecords :: Lens.Lens' DescribeGlobalReplicationGroups (Prelude.Maybe Prelude.Int)
describeGlobalReplicationGroups_maxRecords :: Lens' DescribeGlobalReplicationGroups (Maybe Int)
describeGlobalReplicationGroups_maxRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGlobalReplicationGroups' {Maybe Int
maxRecords :: Maybe Int
$sel:maxRecords:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Int
maxRecords} -> Maybe Int
maxRecords) (\s :: DescribeGlobalReplicationGroups
s@DescribeGlobalReplicationGroups' {} Maybe Int
a -> DescribeGlobalReplicationGroups
s {$sel:maxRecords:DescribeGlobalReplicationGroups' :: Maybe Int
maxRecords = Maybe Int
a} :: DescribeGlobalReplicationGroups)

-- | Returns the list of members that comprise the Global datastore.
describeGlobalReplicationGroups_showMemberInfo :: Lens.Lens' DescribeGlobalReplicationGroups (Prelude.Maybe Prelude.Bool)
describeGlobalReplicationGroups_showMemberInfo :: Lens' DescribeGlobalReplicationGroups (Maybe Bool)
describeGlobalReplicationGroups_showMemberInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGlobalReplicationGroups' {Maybe Bool
showMemberInfo :: Maybe Bool
$sel:showMemberInfo:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Bool
showMemberInfo} -> Maybe Bool
showMemberInfo) (\s :: DescribeGlobalReplicationGroups
s@DescribeGlobalReplicationGroups' {} Maybe Bool
a -> DescribeGlobalReplicationGroups
s {$sel:showMemberInfo:DescribeGlobalReplicationGroups' :: Maybe Bool
showMemberInfo = Maybe Bool
a} :: DescribeGlobalReplicationGroups)

instance
  Core.AWSPager
    DescribeGlobalReplicationGroups
  where
  page :: DescribeGlobalReplicationGroups
-> AWSResponse DescribeGlobalReplicationGroups
-> Maybe DescribeGlobalReplicationGroups
page DescribeGlobalReplicationGroups
rq AWSResponse DescribeGlobalReplicationGroups
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeGlobalReplicationGroups
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeGlobalReplicationGroupsResponse (Maybe Text)
describeGlobalReplicationGroupsResponse_marker
            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 DescribeGlobalReplicationGroups
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeGlobalReplicationGroupsResponse
  (Maybe [GlobalReplicationGroup])
describeGlobalReplicationGroupsResponse_globalReplicationGroups
            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.$ DescribeGlobalReplicationGroups
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeGlobalReplicationGroups (Maybe Text)
describeGlobalReplicationGroups_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeGlobalReplicationGroups
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeGlobalReplicationGroupsResponse (Maybe Text)
describeGlobalReplicationGroupsResponse_marker
          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
    DescribeGlobalReplicationGroups
  where
  type
    AWSResponse DescribeGlobalReplicationGroups =
      DescribeGlobalReplicationGroupsResponse
  request :: (Service -> Service)
-> DescribeGlobalReplicationGroups
-> Request DescribeGlobalReplicationGroups
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 DescribeGlobalReplicationGroups
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeGlobalReplicationGroups)))
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
"DescribeGlobalReplicationGroupsResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [GlobalReplicationGroup]
-> Maybe Text -> Int -> DescribeGlobalReplicationGroupsResponse
DescribeGlobalReplicationGroupsResponse'
            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
"GlobalReplicationGroups"
                            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
"GlobalReplicationGroup")
                        )
            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
"Marker")
            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
    DescribeGlobalReplicationGroups
  where
  hashWithSalt :: Int -> DescribeGlobalReplicationGroups -> Int
hashWithSalt
    Int
_salt
    DescribeGlobalReplicationGroups' {Maybe Bool
Maybe Int
Maybe Text
showMemberInfo :: Maybe Bool
maxRecords :: Maybe Int
marker :: Maybe Text
globalReplicationGroupId :: Maybe Text
$sel:showMemberInfo:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Bool
$sel:maxRecords:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Int
$sel:marker:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
$sel:globalReplicationGroupId:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
globalReplicationGroupId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxRecords
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
showMemberInfo

instance
  Prelude.NFData
    DescribeGlobalReplicationGroups
  where
  rnf :: DescribeGlobalReplicationGroups -> ()
rnf DescribeGlobalReplicationGroups' {Maybe Bool
Maybe Int
Maybe Text
showMemberInfo :: Maybe Bool
maxRecords :: Maybe Int
marker :: Maybe Text
globalReplicationGroupId :: Maybe Text
$sel:showMemberInfo:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Bool
$sel:maxRecords:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Int
$sel:marker:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
$sel:globalReplicationGroupId:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
globalReplicationGroupId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
showMemberInfo

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

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

instance Data.ToQuery DescribeGlobalReplicationGroups where
  toQuery :: DescribeGlobalReplicationGroups -> QueryString
toQuery DescribeGlobalReplicationGroups' {Maybe Bool
Maybe Int
Maybe Text
showMemberInfo :: Maybe Bool
maxRecords :: Maybe Int
marker :: Maybe Text
globalReplicationGroupId :: Maybe Text
$sel:showMemberInfo:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Bool
$sel:maxRecords:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Int
$sel:marker:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
$sel:globalReplicationGroupId:DescribeGlobalReplicationGroups' :: DescribeGlobalReplicationGroups -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeGlobalReplicationGroups" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2015-02-02" :: Prelude.ByteString),
        ByteString
"GlobalReplicationGroupId"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
globalReplicationGroupId,
        ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"MaxRecords" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxRecords,
        ByteString
"ShowMemberInfo" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
showMemberInfo
      ]

-- | /See:/ 'newDescribeGlobalReplicationGroupsResponse' smart constructor.
data DescribeGlobalReplicationGroupsResponse = DescribeGlobalReplicationGroupsResponse'
  { -- | Indicates the slot configuration and global identifier for each slice
    -- group.
    DescribeGlobalReplicationGroupsResponse
-> Maybe [GlobalReplicationGroup]
globalReplicationGroups :: Prelude.Maybe [GlobalReplicationGroup],
    -- | An optional marker returned from a prior request. Use this marker for
    -- pagination of results from this operation. If this parameter is
    -- specified, the response includes only records beyond the marker, up to
    -- the value specified by MaxRecords. >
    DescribeGlobalReplicationGroupsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeGlobalReplicationGroupsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeGlobalReplicationGroupsResponse
-> DescribeGlobalReplicationGroupsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeGlobalReplicationGroupsResponse
-> DescribeGlobalReplicationGroupsResponse -> Bool
$c/= :: DescribeGlobalReplicationGroupsResponse
-> DescribeGlobalReplicationGroupsResponse -> Bool
== :: DescribeGlobalReplicationGroupsResponse
-> DescribeGlobalReplicationGroupsResponse -> Bool
$c== :: DescribeGlobalReplicationGroupsResponse
-> DescribeGlobalReplicationGroupsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeGlobalReplicationGroupsResponse]
ReadPrec DescribeGlobalReplicationGroupsResponse
Int -> ReadS DescribeGlobalReplicationGroupsResponse
ReadS [DescribeGlobalReplicationGroupsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeGlobalReplicationGroupsResponse]
$creadListPrec :: ReadPrec [DescribeGlobalReplicationGroupsResponse]
readPrec :: ReadPrec DescribeGlobalReplicationGroupsResponse
$creadPrec :: ReadPrec DescribeGlobalReplicationGroupsResponse
readList :: ReadS [DescribeGlobalReplicationGroupsResponse]
$creadList :: ReadS [DescribeGlobalReplicationGroupsResponse]
readsPrec :: Int -> ReadS DescribeGlobalReplicationGroupsResponse
$creadsPrec :: Int -> ReadS DescribeGlobalReplicationGroupsResponse
Prelude.Read, Int -> DescribeGlobalReplicationGroupsResponse -> ShowS
[DescribeGlobalReplicationGroupsResponse] -> ShowS
DescribeGlobalReplicationGroupsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeGlobalReplicationGroupsResponse] -> ShowS
$cshowList :: [DescribeGlobalReplicationGroupsResponse] -> ShowS
show :: DescribeGlobalReplicationGroupsResponse -> String
$cshow :: DescribeGlobalReplicationGroupsResponse -> String
showsPrec :: Int -> DescribeGlobalReplicationGroupsResponse -> ShowS
$cshowsPrec :: Int -> DescribeGlobalReplicationGroupsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeGlobalReplicationGroupsResponse x
-> DescribeGlobalReplicationGroupsResponse
forall x.
DescribeGlobalReplicationGroupsResponse
-> Rep DescribeGlobalReplicationGroupsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeGlobalReplicationGroupsResponse x
-> DescribeGlobalReplicationGroupsResponse
$cfrom :: forall x.
DescribeGlobalReplicationGroupsResponse
-> Rep DescribeGlobalReplicationGroupsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeGlobalReplicationGroupsResponse' 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:
--
-- 'globalReplicationGroups', 'describeGlobalReplicationGroupsResponse_globalReplicationGroups' - Indicates the slot configuration and global identifier for each slice
-- group.
--
-- 'marker', 'describeGlobalReplicationGroupsResponse_marker' - An optional marker returned from a prior request. Use this marker for
-- pagination of results from this operation. If this parameter is
-- specified, the response includes only records beyond the marker, up to
-- the value specified by MaxRecords. >
--
-- 'httpStatus', 'describeGlobalReplicationGroupsResponse_httpStatus' - The response's http status code.
newDescribeGlobalReplicationGroupsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeGlobalReplicationGroupsResponse
newDescribeGlobalReplicationGroupsResponse :: Int -> DescribeGlobalReplicationGroupsResponse
newDescribeGlobalReplicationGroupsResponse
  Int
pHttpStatus_ =
    DescribeGlobalReplicationGroupsResponse'
      { $sel:globalReplicationGroups:DescribeGlobalReplicationGroupsResponse' :: Maybe [GlobalReplicationGroup]
globalReplicationGroups =
          forall a. Maybe a
Prelude.Nothing,
        $sel:marker:DescribeGlobalReplicationGroupsResponse' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeGlobalReplicationGroupsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Indicates the slot configuration and global identifier for each slice
-- group.
describeGlobalReplicationGroupsResponse_globalReplicationGroups :: Lens.Lens' DescribeGlobalReplicationGroupsResponse (Prelude.Maybe [GlobalReplicationGroup])
describeGlobalReplicationGroupsResponse_globalReplicationGroups :: Lens'
  DescribeGlobalReplicationGroupsResponse
  (Maybe [GlobalReplicationGroup])
describeGlobalReplicationGroupsResponse_globalReplicationGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGlobalReplicationGroupsResponse' {Maybe [GlobalReplicationGroup]
globalReplicationGroups :: Maybe [GlobalReplicationGroup]
$sel:globalReplicationGroups:DescribeGlobalReplicationGroupsResponse' :: DescribeGlobalReplicationGroupsResponse
-> Maybe [GlobalReplicationGroup]
globalReplicationGroups} -> Maybe [GlobalReplicationGroup]
globalReplicationGroups) (\s :: DescribeGlobalReplicationGroupsResponse
s@DescribeGlobalReplicationGroupsResponse' {} Maybe [GlobalReplicationGroup]
a -> DescribeGlobalReplicationGroupsResponse
s {$sel:globalReplicationGroups:DescribeGlobalReplicationGroupsResponse' :: Maybe [GlobalReplicationGroup]
globalReplicationGroups = Maybe [GlobalReplicationGroup]
a} :: DescribeGlobalReplicationGroupsResponse) 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

-- | An optional marker returned from a prior request. Use this marker for
-- pagination of results from this operation. If this parameter is
-- specified, the response includes only records beyond the marker, up to
-- the value specified by MaxRecords. >
describeGlobalReplicationGroupsResponse_marker :: Lens.Lens' DescribeGlobalReplicationGroupsResponse (Prelude.Maybe Prelude.Text)
describeGlobalReplicationGroupsResponse_marker :: Lens' DescribeGlobalReplicationGroupsResponse (Maybe Text)
describeGlobalReplicationGroupsResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeGlobalReplicationGroupsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeGlobalReplicationGroupsResponse' :: DescribeGlobalReplicationGroupsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeGlobalReplicationGroupsResponse
s@DescribeGlobalReplicationGroupsResponse' {} Maybe Text
a -> DescribeGlobalReplicationGroupsResponse
s {$sel:marker:DescribeGlobalReplicationGroupsResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeGlobalReplicationGroupsResponse)

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

instance
  Prelude.NFData
    DescribeGlobalReplicationGroupsResponse
  where
  rnf :: DescribeGlobalReplicationGroupsResponse -> ()
rnf DescribeGlobalReplicationGroupsResponse' {Int
Maybe [GlobalReplicationGroup]
Maybe Text
httpStatus :: Int
marker :: Maybe Text
globalReplicationGroups :: Maybe [GlobalReplicationGroup]
$sel:httpStatus:DescribeGlobalReplicationGroupsResponse' :: DescribeGlobalReplicationGroupsResponse -> Int
$sel:marker:DescribeGlobalReplicationGroupsResponse' :: DescribeGlobalReplicationGroupsResponse -> Maybe Text
$sel:globalReplicationGroups:DescribeGlobalReplicationGroupsResponse' :: DescribeGlobalReplicationGroupsResponse
-> Maybe [GlobalReplicationGroup]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [GlobalReplicationGroup]
globalReplicationGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus