{-# 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.EMR.ListInstanceGroups
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Provides all available details about the instance groups in a cluster.
--
-- This operation returns paginated results.
module Amazonka.EMR.ListInstanceGroups
  ( -- * Creating a Request
    ListInstanceGroups (..),
    newListInstanceGroups,

    -- * Request Lenses
    listInstanceGroups_marker,
    listInstanceGroups_clusterId,

    -- * Destructuring the Response
    ListInstanceGroupsResponse (..),
    newListInstanceGroupsResponse,

    -- * Response Lenses
    listInstanceGroupsResponse_marker,
    listInstanceGroupsResponse_instanceGroups,
    listInstanceGroupsResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import Amazonka.EMR.Types
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | This input determines which instance groups to retrieve.
--
-- /See:/ 'newListInstanceGroups' smart constructor.
data ListInstanceGroups = ListInstanceGroups'
  { -- | The pagination token that indicates the next set of results to retrieve.
    ListInstanceGroups -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the cluster for which to list the instance groups.
    ListInstanceGroups -> Text
clusterId :: Prelude.Text
  }
  deriving (ListInstanceGroups -> ListInstanceGroups -> Bool
(ListInstanceGroups -> ListInstanceGroups -> Bool)
-> (ListInstanceGroups -> ListInstanceGroups -> Bool)
-> Eq ListInstanceGroups
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListInstanceGroups -> ListInstanceGroups -> Bool
$c/= :: ListInstanceGroups -> ListInstanceGroups -> Bool
== :: ListInstanceGroups -> ListInstanceGroups -> Bool
$c== :: ListInstanceGroups -> ListInstanceGroups -> Bool
Prelude.Eq, ReadPrec [ListInstanceGroups]
ReadPrec ListInstanceGroups
Int -> ReadS ListInstanceGroups
ReadS [ListInstanceGroups]
(Int -> ReadS ListInstanceGroups)
-> ReadS [ListInstanceGroups]
-> ReadPrec ListInstanceGroups
-> ReadPrec [ListInstanceGroups]
-> Read ListInstanceGroups
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListInstanceGroups]
$creadListPrec :: ReadPrec [ListInstanceGroups]
readPrec :: ReadPrec ListInstanceGroups
$creadPrec :: ReadPrec ListInstanceGroups
readList :: ReadS [ListInstanceGroups]
$creadList :: ReadS [ListInstanceGroups]
readsPrec :: Int -> ReadS ListInstanceGroups
$creadsPrec :: Int -> ReadS ListInstanceGroups
Prelude.Read, Int -> ListInstanceGroups -> ShowS
[ListInstanceGroups] -> ShowS
ListInstanceGroups -> String
(Int -> ListInstanceGroups -> ShowS)
-> (ListInstanceGroups -> String)
-> ([ListInstanceGroups] -> ShowS)
-> Show ListInstanceGroups
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListInstanceGroups] -> ShowS
$cshowList :: [ListInstanceGroups] -> ShowS
show :: ListInstanceGroups -> String
$cshow :: ListInstanceGroups -> String
showsPrec :: Int -> ListInstanceGroups -> ShowS
$cshowsPrec :: Int -> ListInstanceGroups -> ShowS
Prelude.Show, (forall x. ListInstanceGroups -> Rep ListInstanceGroups x)
-> (forall x. Rep ListInstanceGroups x -> ListInstanceGroups)
-> Generic ListInstanceGroups
forall x. Rep ListInstanceGroups x -> ListInstanceGroups
forall x. ListInstanceGroups -> Rep ListInstanceGroups x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListInstanceGroups x -> ListInstanceGroups
$cfrom :: forall x. ListInstanceGroups -> Rep ListInstanceGroups x
Prelude.Generic)

-- |
-- Create a value of 'ListInstanceGroups' 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:
--
-- 'marker', 'listInstanceGroups_marker' - The pagination token that indicates the next set of results to retrieve.
--
-- 'clusterId', 'listInstanceGroups_clusterId' - The identifier of the cluster for which to list the instance groups.
newListInstanceGroups ::
  -- | 'clusterId'
  Prelude.Text ->
  ListInstanceGroups
newListInstanceGroups :: Text -> ListInstanceGroups
newListInstanceGroups Text
pClusterId_ =
  ListInstanceGroups' :: Maybe Text -> Text -> ListInstanceGroups
ListInstanceGroups'
    { $sel:marker:ListInstanceGroups' :: Maybe Text
marker = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterId:ListInstanceGroups' :: Text
clusterId = Text
pClusterId_
    }

-- | The pagination token that indicates the next set of results to retrieve.
listInstanceGroups_marker :: Lens.Lens' ListInstanceGroups (Prelude.Maybe Prelude.Text)
listInstanceGroups_marker :: (Maybe Text -> f (Maybe Text))
-> ListInstanceGroups -> f ListInstanceGroups
listInstanceGroups_marker = (ListInstanceGroups -> Maybe Text)
-> (ListInstanceGroups -> Maybe Text -> ListInstanceGroups)
-> Lens
     ListInstanceGroups ListInstanceGroups (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceGroups' {Maybe Text
marker :: Maybe Text
$sel:marker:ListInstanceGroups' :: ListInstanceGroups -> Maybe Text
marker} -> Maybe Text
marker) (\s :: ListInstanceGroups
s@ListInstanceGroups' {} Maybe Text
a -> ListInstanceGroups
s {$sel:marker:ListInstanceGroups' :: Maybe Text
marker = Maybe Text
a} :: ListInstanceGroups)

-- | The identifier of the cluster for which to list the instance groups.
listInstanceGroups_clusterId :: Lens.Lens' ListInstanceGroups Prelude.Text
listInstanceGroups_clusterId :: (Text -> f Text) -> ListInstanceGroups -> f ListInstanceGroups
listInstanceGroups_clusterId = (ListInstanceGroups -> Text)
-> (ListInstanceGroups -> Text -> ListInstanceGroups)
-> Lens ListInstanceGroups ListInstanceGroups Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceGroups' {Text
clusterId :: Text
$sel:clusterId:ListInstanceGroups' :: ListInstanceGroups -> Text
clusterId} -> Text
clusterId) (\s :: ListInstanceGroups
s@ListInstanceGroups' {} Text
a -> ListInstanceGroups
s {$sel:clusterId:ListInstanceGroups' :: Text
clusterId = Text
a} :: ListInstanceGroups)

instance Core.AWSPager ListInstanceGroups where
  page :: ListInstanceGroups
-> AWSResponse ListInstanceGroups -> Maybe ListInstanceGroups
page ListInstanceGroups
rq AWSResponse ListInstanceGroups
rs
    | Maybe Text -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListInstanceGroups
ListInstanceGroupsResponse
rs
            ListInstanceGroupsResponse
-> Getting (First Text) ListInstanceGroupsResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> ListInstanceGroupsResponse
-> Const (First Text) ListInstanceGroupsResponse
Lens' ListInstanceGroupsResponse (Maybe Text)
listInstanceGroupsResponse_marker
              ((Maybe Text -> Const (First Text) (Maybe Text))
 -> ListInstanceGroupsResponse
 -> Const (First Text) ListInstanceGroupsResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) ListInstanceGroupsResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe ListInstanceGroups
forall a. Maybe a
Prelude.Nothing
    | Maybe [InstanceGroup] -> Bool
forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListInstanceGroups
ListInstanceGroupsResponse
rs
            ListInstanceGroupsResponse
-> Getting
     (First [InstanceGroup]) ListInstanceGroupsResponse [InstanceGroup]
-> Maybe [InstanceGroup]
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe [InstanceGroup]
 -> Const (First [InstanceGroup]) (Maybe [InstanceGroup]))
-> ListInstanceGroupsResponse
-> Const (First [InstanceGroup]) ListInstanceGroupsResponse
Lens' ListInstanceGroupsResponse (Maybe [InstanceGroup])
listInstanceGroupsResponse_instanceGroups
              ((Maybe [InstanceGroup]
  -> Const (First [InstanceGroup]) (Maybe [InstanceGroup]))
 -> ListInstanceGroupsResponse
 -> Const (First [InstanceGroup]) ListInstanceGroupsResponse)
-> (([InstanceGroup]
     -> Const (First [InstanceGroup]) [InstanceGroup])
    -> Maybe [InstanceGroup]
    -> Const (First [InstanceGroup]) (Maybe [InstanceGroup]))
-> Getting
     (First [InstanceGroup]) ListInstanceGroupsResponse [InstanceGroup]
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. ([InstanceGroup] -> Const (First [InstanceGroup]) [InstanceGroup])
-> Maybe [InstanceGroup]
-> Const (First [InstanceGroup]) (Maybe [InstanceGroup])
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
      Maybe ListInstanceGroups
forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
      ListInstanceGroups -> Maybe ListInstanceGroups
forall a. a -> Maybe a
Prelude.Just (ListInstanceGroups -> Maybe ListInstanceGroups)
-> ListInstanceGroups -> Maybe ListInstanceGroups
forall a b. (a -> b) -> a -> b
Prelude.$
        ListInstanceGroups
rq
          ListInstanceGroups
-> (ListInstanceGroups -> ListInstanceGroups) -> ListInstanceGroups
forall a b. a -> (a -> b) -> b
Prelude.& (Maybe Text -> Identity (Maybe Text))
-> ListInstanceGroups -> Identity ListInstanceGroups
Lens
  ListInstanceGroups ListInstanceGroups (Maybe Text) (Maybe Text)
listInstanceGroups_marker
          ((Maybe Text -> Identity (Maybe Text))
 -> ListInstanceGroups -> Identity ListInstanceGroups)
-> Maybe Text -> ListInstanceGroups -> ListInstanceGroups
forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListInstanceGroups
ListInstanceGroupsResponse
rs
          ListInstanceGroupsResponse
-> Getting (First Text) ListInstanceGroupsResponse Text
-> Maybe Text
forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? (Maybe Text -> Const (First Text) (Maybe Text))
-> ListInstanceGroupsResponse
-> Const (First Text) ListInstanceGroupsResponse
Lens' ListInstanceGroupsResponse (Maybe Text)
listInstanceGroupsResponse_marker
            ((Maybe Text -> Const (First Text) (Maybe Text))
 -> ListInstanceGroupsResponse
 -> Const (First Text) ListInstanceGroupsResponse)
-> ((Text -> Const (First Text) Text)
    -> Maybe Text -> Const (First Text) (Maybe Text))
-> Getting (First Text) ListInstanceGroupsResponse Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (Text -> Const (First Text) Text)
-> Maybe Text -> Const (First Text) (Maybe Text)
forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest ListInstanceGroups where
  type
    AWSResponse ListInstanceGroups =
      ListInstanceGroupsResponse
  request :: ListInstanceGroups -> Request ListInstanceGroups
request = Service -> ListInstanceGroups -> Request ListInstanceGroups
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON Service
defaultService
  response :: Logger
-> Service
-> Proxy ListInstanceGroups
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListInstanceGroups)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse ListInstanceGroups))
-> Logger
-> Service
-> Proxy ListInstanceGroups
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListInstanceGroups)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe [InstanceGroup] -> Int -> ListInstanceGroupsResponse
ListInstanceGroupsResponse'
            (Maybe Text
 -> Maybe [InstanceGroup] -> Int -> ListInstanceGroupsResponse)
-> Either String (Maybe Text)
-> Either
     String (Maybe [InstanceGroup] -> Int -> ListInstanceGroupsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Marker")
            Either
  String (Maybe [InstanceGroup] -> Int -> ListInstanceGroupsResponse)
-> Either String (Maybe [InstanceGroup])
-> Either String (Int -> ListInstanceGroupsResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe (Maybe [InstanceGroup]))
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"InstanceGroups" Either String (Maybe (Maybe [InstanceGroup]))
-> Maybe [InstanceGroup] -> Either String (Maybe [InstanceGroup])
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ Maybe [InstanceGroup]
forall a. Monoid a => a
Prelude.mempty)
            Either String (Int -> ListInstanceGroupsResponse)
-> Either String Int -> Either String ListInstanceGroupsResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable ListInstanceGroups

instance Prelude.NFData ListInstanceGroups

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

instance Core.ToJSON ListInstanceGroups where
  toJSON :: ListInstanceGroups -> Value
toJSON ListInstanceGroups' {Maybe Text
Text
clusterId :: Text
marker :: Maybe Text
$sel:clusterId:ListInstanceGroups' :: ListInstanceGroups -> Text
$sel:marker:ListInstanceGroups' :: ListInstanceGroups -> Maybe Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"Marker" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
marker,
            Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"ClusterId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
clusterId)
          ]
      )

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

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

-- | This input determines which instance groups to retrieve.
--
-- /See:/ 'newListInstanceGroupsResponse' smart constructor.
data ListInstanceGroupsResponse = ListInstanceGroupsResponse'
  { -- | The pagination token that indicates the next set of results to retrieve.
    ListInstanceGroupsResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The list of instance groups for the cluster and given filters.
    ListInstanceGroupsResponse -> Maybe [InstanceGroup]
instanceGroups :: Prelude.Maybe [InstanceGroup],
    -- | The response's http status code.
    ListInstanceGroupsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListInstanceGroupsResponse -> ListInstanceGroupsResponse -> Bool
(ListInstanceGroupsResponse -> ListInstanceGroupsResponse -> Bool)
-> (ListInstanceGroupsResponse
    -> ListInstanceGroupsResponse -> Bool)
-> Eq ListInstanceGroupsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListInstanceGroupsResponse -> ListInstanceGroupsResponse -> Bool
$c/= :: ListInstanceGroupsResponse -> ListInstanceGroupsResponse -> Bool
== :: ListInstanceGroupsResponse -> ListInstanceGroupsResponse -> Bool
$c== :: ListInstanceGroupsResponse -> ListInstanceGroupsResponse -> Bool
Prelude.Eq, ReadPrec [ListInstanceGroupsResponse]
ReadPrec ListInstanceGroupsResponse
Int -> ReadS ListInstanceGroupsResponse
ReadS [ListInstanceGroupsResponse]
(Int -> ReadS ListInstanceGroupsResponse)
-> ReadS [ListInstanceGroupsResponse]
-> ReadPrec ListInstanceGroupsResponse
-> ReadPrec [ListInstanceGroupsResponse]
-> Read ListInstanceGroupsResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListInstanceGroupsResponse]
$creadListPrec :: ReadPrec [ListInstanceGroupsResponse]
readPrec :: ReadPrec ListInstanceGroupsResponse
$creadPrec :: ReadPrec ListInstanceGroupsResponse
readList :: ReadS [ListInstanceGroupsResponse]
$creadList :: ReadS [ListInstanceGroupsResponse]
readsPrec :: Int -> ReadS ListInstanceGroupsResponse
$creadsPrec :: Int -> ReadS ListInstanceGroupsResponse
Prelude.Read, Int -> ListInstanceGroupsResponse -> ShowS
[ListInstanceGroupsResponse] -> ShowS
ListInstanceGroupsResponse -> String
(Int -> ListInstanceGroupsResponse -> ShowS)
-> (ListInstanceGroupsResponse -> String)
-> ([ListInstanceGroupsResponse] -> ShowS)
-> Show ListInstanceGroupsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListInstanceGroupsResponse] -> ShowS
$cshowList :: [ListInstanceGroupsResponse] -> ShowS
show :: ListInstanceGroupsResponse -> String
$cshow :: ListInstanceGroupsResponse -> String
showsPrec :: Int -> ListInstanceGroupsResponse -> ShowS
$cshowsPrec :: Int -> ListInstanceGroupsResponse -> ShowS
Prelude.Show, (forall x.
 ListInstanceGroupsResponse -> Rep ListInstanceGroupsResponse x)
-> (forall x.
    Rep ListInstanceGroupsResponse x -> ListInstanceGroupsResponse)
-> Generic ListInstanceGroupsResponse
forall x.
Rep ListInstanceGroupsResponse x -> ListInstanceGroupsResponse
forall x.
ListInstanceGroupsResponse -> Rep ListInstanceGroupsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListInstanceGroupsResponse x -> ListInstanceGroupsResponse
$cfrom :: forall x.
ListInstanceGroupsResponse -> Rep ListInstanceGroupsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListInstanceGroupsResponse' 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:
--
-- 'marker', 'listInstanceGroupsResponse_marker' - The pagination token that indicates the next set of results to retrieve.
--
-- 'instanceGroups', 'listInstanceGroupsResponse_instanceGroups' - The list of instance groups for the cluster and given filters.
--
-- 'httpStatus', 'listInstanceGroupsResponse_httpStatus' - The response's http status code.
newListInstanceGroupsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListInstanceGroupsResponse
newListInstanceGroupsResponse :: Int -> ListInstanceGroupsResponse
newListInstanceGroupsResponse Int
pHttpStatus_ =
  ListInstanceGroupsResponse' :: Maybe Text
-> Maybe [InstanceGroup] -> Int -> ListInstanceGroupsResponse
ListInstanceGroupsResponse'
    { $sel:marker:ListInstanceGroupsResponse' :: Maybe Text
marker =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceGroups:ListInstanceGroupsResponse' :: Maybe [InstanceGroup]
instanceGroups = Maybe [InstanceGroup]
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListInstanceGroupsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The pagination token that indicates the next set of results to retrieve.
listInstanceGroupsResponse_marker :: Lens.Lens' ListInstanceGroupsResponse (Prelude.Maybe Prelude.Text)
listInstanceGroupsResponse_marker :: (Maybe Text -> f (Maybe Text))
-> ListInstanceGroupsResponse -> f ListInstanceGroupsResponse
listInstanceGroupsResponse_marker = (ListInstanceGroupsResponse -> Maybe Text)
-> (ListInstanceGroupsResponse
    -> Maybe Text -> ListInstanceGroupsResponse)
-> Lens' ListInstanceGroupsResponse (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceGroupsResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:ListInstanceGroupsResponse' :: ListInstanceGroupsResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: ListInstanceGroupsResponse
s@ListInstanceGroupsResponse' {} Maybe Text
a -> ListInstanceGroupsResponse
s {$sel:marker:ListInstanceGroupsResponse' :: Maybe Text
marker = Maybe Text
a} :: ListInstanceGroupsResponse)

-- | The list of instance groups for the cluster and given filters.
listInstanceGroupsResponse_instanceGroups :: Lens.Lens' ListInstanceGroupsResponse (Prelude.Maybe [InstanceGroup])
listInstanceGroupsResponse_instanceGroups :: (Maybe [InstanceGroup] -> f (Maybe [InstanceGroup]))
-> ListInstanceGroupsResponse -> f ListInstanceGroupsResponse
listInstanceGroupsResponse_instanceGroups = (ListInstanceGroupsResponse -> Maybe [InstanceGroup])
-> (ListInstanceGroupsResponse
    -> Maybe [InstanceGroup] -> ListInstanceGroupsResponse)
-> Lens' ListInstanceGroupsResponse (Maybe [InstanceGroup])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListInstanceGroupsResponse' {Maybe [InstanceGroup]
instanceGroups :: Maybe [InstanceGroup]
$sel:instanceGroups:ListInstanceGroupsResponse' :: ListInstanceGroupsResponse -> Maybe [InstanceGroup]
instanceGroups} -> Maybe [InstanceGroup]
instanceGroups) (\s :: ListInstanceGroupsResponse
s@ListInstanceGroupsResponse' {} Maybe [InstanceGroup]
a -> ListInstanceGroupsResponse
s {$sel:instanceGroups:ListInstanceGroupsResponse' :: Maybe [InstanceGroup]
instanceGroups = Maybe [InstanceGroup]
a} :: ListInstanceGroupsResponse) ((Maybe [InstanceGroup] -> f (Maybe [InstanceGroup]))
 -> ListInstanceGroupsResponse -> f ListInstanceGroupsResponse)
-> ((Maybe [InstanceGroup] -> f (Maybe [InstanceGroup]))
    -> Maybe [InstanceGroup] -> f (Maybe [InstanceGroup]))
-> (Maybe [InstanceGroup] -> f (Maybe [InstanceGroup]))
-> ListInstanceGroupsResponse
-> f ListInstanceGroupsResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [InstanceGroup] [InstanceGroup] [InstanceGroup] [InstanceGroup]
-> Iso
     (Maybe [InstanceGroup])
     (Maybe [InstanceGroup])
     (Maybe [InstanceGroup])
     (Maybe [InstanceGroup])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [InstanceGroup] [InstanceGroup] [InstanceGroup] [InstanceGroup]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Prelude.NFData ListInstanceGroupsResponse