{-# 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.ElasticSearch.ListElasticsearchInstanceTypes
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- List all Elasticsearch instance types that are supported for given
-- ElasticsearchVersion
--
-- This operation returns paginated results.
module Amazonka.ElasticSearch.ListElasticsearchInstanceTypes
  ( -- * Creating a Request
    ListElasticsearchInstanceTypes (..),
    newListElasticsearchInstanceTypes,

    -- * Request Lenses
    listElasticsearchInstanceTypes_domainName,
    listElasticsearchInstanceTypes_maxResults,
    listElasticsearchInstanceTypes_nextToken,
    listElasticsearchInstanceTypes_elasticsearchVersion,

    -- * Destructuring the Response
    ListElasticsearchInstanceTypesResponse (..),
    newListElasticsearchInstanceTypesResponse,

    -- * Response Lenses
    listElasticsearchInstanceTypesResponse_elasticsearchInstanceTypes,
    listElasticsearchInstanceTypesResponse_nextToken,
    listElasticsearchInstanceTypesResponse_httpStatus,
  )
where

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

-- | Container for the parameters to the
-- @ @@ListElasticsearchInstanceTypes@@ @ operation.
--
-- /See:/ 'newListElasticsearchInstanceTypes' smart constructor.
data ListElasticsearchInstanceTypes = ListElasticsearchInstanceTypes'
  { -- | DomainName represents the name of the Domain that we are trying to
    -- modify. This should be present only if we are querying for list of
    -- available Elasticsearch instance types when modifying existing domain.
    ListElasticsearchInstanceTypes -> Maybe Text
domainName :: Prelude.Maybe Prelude.Text,
    -- | Set this value to limit the number of results returned. Value provided
    -- must be greater than 30 else it wont be honored.
    ListElasticsearchInstanceTypes -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | NextToken should be sent in case if earlier API call produced result
    -- containing NextToken. It is used for pagination.
    ListElasticsearchInstanceTypes -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Version of Elasticsearch for which list of supported elasticsearch
    -- instance types are needed.
    ListElasticsearchInstanceTypes -> Text
elasticsearchVersion :: Prelude.Text
  }
  deriving (ListElasticsearchInstanceTypes
-> ListElasticsearchInstanceTypes -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListElasticsearchInstanceTypes
-> ListElasticsearchInstanceTypes -> Bool
$c/= :: ListElasticsearchInstanceTypes
-> ListElasticsearchInstanceTypes -> Bool
== :: ListElasticsearchInstanceTypes
-> ListElasticsearchInstanceTypes -> Bool
$c== :: ListElasticsearchInstanceTypes
-> ListElasticsearchInstanceTypes -> Bool
Prelude.Eq, ReadPrec [ListElasticsearchInstanceTypes]
ReadPrec ListElasticsearchInstanceTypes
Int -> ReadS ListElasticsearchInstanceTypes
ReadS [ListElasticsearchInstanceTypes]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListElasticsearchInstanceTypes]
$creadListPrec :: ReadPrec [ListElasticsearchInstanceTypes]
readPrec :: ReadPrec ListElasticsearchInstanceTypes
$creadPrec :: ReadPrec ListElasticsearchInstanceTypes
readList :: ReadS [ListElasticsearchInstanceTypes]
$creadList :: ReadS [ListElasticsearchInstanceTypes]
readsPrec :: Int -> ReadS ListElasticsearchInstanceTypes
$creadsPrec :: Int -> ReadS ListElasticsearchInstanceTypes
Prelude.Read, Int -> ListElasticsearchInstanceTypes -> ShowS
[ListElasticsearchInstanceTypes] -> ShowS
ListElasticsearchInstanceTypes -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListElasticsearchInstanceTypes] -> ShowS
$cshowList :: [ListElasticsearchInstanceTypes] -> ShowS
show :: ListElasticsearchInstanceTypes -> String
$cshow :: ListElasticsearchInstanceTypes -> String
showsPrec :: Int -> ListElasticsearchInstanceTypes -> ShowS
$cshowsPrec :: Int -> ListElasticsearchInstanceTypes -> ShowS
Prelude.Show, forall x.
Rep ListElasticsearchInstanceTypes x
-> ListElasticsearchInstanceTypes
forall x.
ListElasticsearchInstanceTypes
-> Rep ListElasticsearchInstanceTypes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListElasticsearchInstanceTypes x
-> ListElasticsearchInstanceTypes
$cfrom :: forall x.
ListElasticsearchInstanceTypes
-> Rep ListElasticsearchInstanceTypes x
Prelude.Generic)

-- |
-- Create a value of 'ListElasticsearchInstanceTypes' 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:
--
-- 'domainName', 'listElasticsearchInstanceTypes_domainName' - DomainName represents the name of the Domain that we are trying to
-- modify. This should be present only if we are querying for list of
-- available Elasticsearch instance types when modifying existing domain.
--
-- 'maxResults', 'listElasticsearchInstanceTypes_maxResults' - Set this value to limit the number of results returned. Value provided
-- must be greater than 30 else it wont be honored.
--
-- 'nextToken', 'listElasticsearchInstanceTypes_nextToken' - NextToken should be sent in case if earlier API call produced result
-- containing NextToken. It is used for pagination.
--
-- 'elasticsearchVersion', 'listElasticsearchInstanceTypes_elasticsearchVersion' - Version of Elasticsearch for which list of supported elasticsearch
-- instance types are needed.
newListElasticsearchInstanceTypes ::
  -- | 'elasticsearchVersion'
  Prelude.Text ->
  ListElasticsearchInstanceTypes
newListElasticsearchInstanceTypes :: Text -> ListElasticsearchInstanceTypes
newListElasticsearchInstanceTypes
  Text
pElasticsearchVersion_ =
    ListElasticsearchInstanceTypes'
      { $sel:domainName:ListElasticsearchInstanceTypes' :: Maybe Text
domainName =
          forall a. Maybe a
Prelude.Nothing,
        $sel:maxResults:ListElasticsearchInstanceTypes' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListElasticsearchInstanceTypes' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:elasticsearchVersion:ListElasticsearchInstanceTypes' :: Text
elasticsearchVersion =
          Text
pElasticsearchVersion_
      }

-- | DomainName represents the name of the Domain that we are trying to
-- modify. This should be present only if we are querying for list of
-- available Elasticsearch instance types when modifying existing domain.
listElasticsearchInstanceTypes_domainName :: Lens.Lens' ListElasticsearchInstanceTypes (Prelude.Maybe Prelude.Text)
listElasticsearchInstanceTypes_domainName :: Lens' ListElasticsearchInstanceTypes (Maybe Text)
listElasticsearchInstanceTypes_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListElasticsearchInstanceTypes' {Maybe Text
domainName :: Maybe Text
$sel:domainName:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
domainName} -> Maybe Text
domainName) (\s :: ListElasticsearchInstanceTypes
s@ListElasticsearchInstanceTypes' {} Maybe Text
a -> ListElasticsearchInstanceTypes
s {$sel:domainName:ListElasticsearchInstanceTypes' :: Maybe Text
domainName = Maybe Text
a} :: ListElasticsearchInstanceTypes)

-- | Set this value to limit the number of results returned. Value provided
-- must be greater than 30 else it wont be honored.
listElasticsearchInstanceTypes_maxResults :: Lens.Lens' ListElasticsearchInstanceTypes (Prelude.Maybe Prelude.Int)
listElasticsearchInstanceTypes_maxResults :: Lens' ListElasticsearchInstanceTypes (Maybe Int)
listElasticsearchInstanceTypes_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListElasticsearchInstanceTypes' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: ListElasticsearchInstanceTypes
s@ListElasticsearchInstanceTypes' {} Maybe Int
a -> ListElasticsearchInstanceTypes
s {$sel:maxResults:ListElasticsearchInstanceTypes' :: Maybe Int
maxResults = Maybe Int
a} :: ListElasticsearchInstanceTypes)

-- | NextToken should be sent in case if earlier API call produced result
-- containing NextToken. It is used for pagination.
listElasticsearchInstanceTypes_nextToken :: Lens.Lens' ListElasticsearchInstanceTypes (Prelude.Maybe Prelude.Text)
listElasticsearchInstanceTypes_nextToken :: Lens' ListElasticsearchInstanceTypes (Maybe Text)
listElasticsearchInstanceTypes_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListElasticsearchInstanceTypes' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListElasticsearchInstanceTypes
s@ListElasticsearchInstanceTypes' {} Maybe Text
a -> ListElasticsearchInstanceTypes
s {$sel:nextToken:ListElasticsearchInstanceTypes' :: Maybe Text
nextToken = Maybe Text
a} :: ListElasticsearchInstanceTypes)

-- | Version of Elasticsearch for which list of supported elasticsearch
-- instance types are needed.
listElasticsearchInstanceTypes_elasticsearchVersion :: Lens.Lens' ListElasticsearchInstanceTypes Prelude.Text
listElasticsearchInstanceTypes_elasticsearchVersion :: Lens' ListElasticsearchInstanceTypes Text
listElasticsearchInstanceTypes_elasticsearchVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListElasticsearchInstanceTypes' {Text
elasticsearchVersion :: Text
$sel:elasticsearchVersion:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Text
elasticsearchVersion} -> Text
elasticsearchVersion) (\s :: ListElasticsearchInstanceTypes
s@ListElasticsearchInstanceTypes' {} Text
a -> ListElasticsearchInstanceTypes
s {$sel:elasticsearchVersion:ListElasticsearchInstanceTypes' :: Text
elasticsearchVersion = Text
a} :: ListElasticsearchInstanceTypes)

instance Core.AWSPager ListElasticsearchInstanceTypes where
  page :: ListElasticsearchInstanceTypes
-> AWSResponse ListElasticsearchInstanceTypes
-> Maybe ListElasticsearchInstanceTypes
page ListElasticsearchInstanceTypes
rq AWSResponse ListElasticsearchInstanceTypes
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListElasticsearchInstanceTypes
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListElasticsearchInstanceTypesResponse (Maybe Text)
listElasticsearchInstanceTypesResponse_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 ListElasticsearchInstanceTypes
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  ListElasticsearchInstanceTypesResponse
  (Maybe [ESPartitionInstanceType])
listElasticsearchInstanceTypesResponse_elasticsearchInstanceTypes
            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.$ ListElasticsearchInstanceTypes
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListElasticsearchInstanceTypes (Maybe Text)
listElasticsearchInstanceTypes_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListElasticsearchInstanceTypes
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListElasticsearchInstanceTypesResponse (Maybe Text)
listElasticsearchInstanceTypesResponse_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
    ListElasticsearchInstanceTypes
  where
  type
    AWSResponse ListElasticsearchInstanceTypes =
      ListElasticsearchInstanceTypesResponse
  request :: (Service -> Service)
-> ListElasticsearchInstanceTypes
-> Request ListElasticsearchInstanceTypes
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListElasticsearchInstanceTypes
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ListElasticsearchInstanceTypes)))
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 [ESPartitionInstanceType]
-> Maybe Text -> Int -> ListElasticsearchInstanceTypesResponse
ListElasticsearchInstanceTypesResponse'
            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
"ElasticsearchInstanceTypes"
                            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
    ListElasticsearchInstanceTypes
  where
  hashWithSalt :: Int -> ListElasticsearchInstanceTypes -> Int
hashWithSalt
    Int
_salt
    ListElasticsearchInstanceTypes' {Maybe Int
Maybe Text
Text
elasticsearchVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:elasticsearchVersion:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Text
$sel:nextToken:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
$sel:maxResults:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Int
$sel:domainName:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainName
        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` Text
elasticsearchVersion

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

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

instance Data.ToPath ListElasticsearchInstanceTypes where
  toPath :: ListElasticsearchInstanceTypes -> ByteString
toPath ListElasticsearchInstanceTypes' {Maybe Int
Maybe Text
Text
elasticsearchVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:elasticsearchVersion:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Text
$sel:nextToken:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
$sel:maxResults:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Int
$sel:domainName:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2015-01-01/es/instanceTypes/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
elasticsearchVersion
      ]

instance Data.ToQuery ListElasticsearchInstanceTypes where
  toQuery :: ListElasticsearchInstanceTypes -> QueryString
toQuery ListElasticsearchInstanceTypes' {Maybe Int
Maybe Text
Text
elasticsearchVersion :: Text
nextToken :: Maybe Text
maxResults :: Maybe Int
domainName :: Maybe Text
$sel:elasticsearchVersion:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Text
$sel:nextToken:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
$sel:maxResults:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Int
$sel:domainName:ListElasticsearchInstanceTypes' :: ListElasticsearchInstanceTypes -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"domainName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domainName,
        ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | Container for the parameters returned by
-- @ @@ListElasticsearchInstanceTypes@@ @ operation.
--
-- /See:/ 'newListElasticsearchInstanceTypesResponse' smart constructor.
data ListElasticsearchInstanceTypesResponse = ListElasticsearchInstanceTypesResponse'
  { -- | List of instance types supported by Amazon Elasticsearch service for
    -- given @ @@ElasticsearchVersion@@ @
    ListElasticsearchInstanceTypesResponse
-> Maybe [ESPartitionInstanceType]
elasticsearchInstanceTypes :: Prelude.Maybe [ESPartitionInstanceType],
    -- | In case if there are more results available NextToken would be present,
    -- make further request to the same API with received NextToken to paginate
    -- remaining results.
    ListElasticsearchInstanceTypesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListElasticsearchInstanceTypesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListElasticsearchInstanceTypesResponse
-> ListElasticsearchInstanceTypesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListElasticsearchInstanceTypesResponse
-> ListElasticsearchInstanceTypesResponse -> Bool
$c/= :: ListElasticsearchInstanceTypesResponse
-> ListElasticsearchInstanceTypesResponse -> Bool
== :: ListElasticsearchInstanceTypesResponse
-> ListElasticsearchInstanceTypesResponse -> Bool
$c== :: ListElasticsearchInstanceTypesResponse
-> ListElasticsearchInstanceTypesResponse -> Bool
Prelude.Eq, ReadPrec [ListElasticsearchInstanceTypesResponse]
ReadPrec ListElasticsearchInstanceTypesResponse
Int -> ReadS ListElasticsearchInstanceTypesResponse
ReadS [ListElasticsearchInstanceTypesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListElasticsearchInstanceTypesResponse]
$creadListPrec :: ReadPrec [ListElasticsearchInstanceTypesResponse]
readPrec :: ReadPrec ListElasticsearchInstanceTypesResponse
$creadPrec :: ReadPrec ListElasticsearchInstanceTypesResponse
readList :: ReadS [ListElasticsearchInstanceTypesResponse]
$creadList :: ReadS [ListElasticsearchInstanceTypesResponse]
readsPrec :: Int -> ReadS ListElasticsearchInstanceTypesResponse
$creadsPrec :: Int -> ReadS ListElasticsearchInstanceTypesResponse
Prelude.Read, Int -> ListElasticsearchInstanceTypesResponse -> ShowS
[ListElasticsearchInstanceTypesResponse] -> ShowS
ListElasticsearchInstanceTypesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListElasticsearchInstanceTypesResponse] -> ShowS
$cshowList :: [ListElasticsearchInstanceTypesResponse] -> ShowS
show :: ListElasticsearchInstanceTypesResponse -> String
$cshow :: ListElasticsearchInstanceTypesResponse -> String
showsPrec :: Int -> ListElasticsearchInstanceTypesResponse -> ShowS
$cshowsPrec :: Int -> ListElasticsearchInstanceTypesResponse -> ShowS
Prelude.Show, forall x.
Rep ListElasticsearchInstanceTypesResponse x
-> ListElasticsearchInstanceTypesResponse
forall x.
ListElasticsearchInstanceTypesResponse
-> Rep ListElasticsearchInstanceTypesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListElasticsearchInstanceTypesResponse x
-> ListElasticsearchInstanceTypesResponse
$cfrom :: forall x.
ListElasticsearchInstanceTypesResponse
-> Rep ListElasticsearchInstanceTypesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListElasticsearchInstanceTypesResponse' 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:
--
-- 'elasticsearchInstanceTypes', 'listElasticsearchInstanceTypesResponse_elasticsearchInstanceTypes' - List of instance types supported by Amazon Elasticsearch service for
-- given @ @@ElasticsearchVersion@@ @
--
-- 'nextToken', 'listElasticsearchInstanceTypesResponse_nextToken' - In case if there are more results available NextToken would be present,
-- make further request to the same API with received NextToken to paginate
-- remaining results.
--
-- 'httpStatus', 'listElasticsearchInstanceTypesResponse_httpStatus' - The response's http status code.
newListElasticsearchInstanceTypesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListElasticsearchInstanceTypesResponse
newListElasticsearchInstanceTypesResponse :: Int -> ListElasticsearchInstanceTypesResponse
newListElasticsearchInstanceTypesResponse
  Int
pHttpStatus_ =
    ListElasticsearchInstanceTypesResponse'
      { $sel:elasticsearchInstanceTypes:ListElasticsearchInstanceTypesResponse' :: Maybe [ESPartitionInstanceType]
elasticsearchInstanceTypes =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:ListElasticsearchInstanceTypesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListElasticsearchInstanceTypesResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | List of instance types supported by Amazon Elasticsearch service for
-- given @ @@ElasticsearchVersion@@ @
listElasticsearchInstanceTypesResponse_elasticsearchInstanceTypes :: Lens.Lens' ListElasticsearchInstanceTypesResponse (Prelude.Maybe [ESPartitionInstanceType])
listElasticsearchInstanceTypesResponse_elasticsearchInstanceTypes :: Lens'
  ListElasticsearchInstanceTypesResponse
  (Maybe [ESPartitionInstanceType])
listElasticsearchInstanceTypesResponse_elasticsearchInstanceTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListElasticsearchInstanceTypesResponse' {Maybe [ESPartitionInstanceType]
elasticsearchInstanceTypes :: Maybe [ESPartitionInstanceType]
$sel:elasticsearchInstanceTypes:ListElasticsearchInstanceTypesResponse' :: ListElasticsearchInstanceTypesResponse
-> Maybe [ESPartitionInstanceType]
elasticsearchInstanceTypes} -> Maybe [ESPartitionInstanceType]
elasticsearchInstanceTypes) (\s :: ListElasticsearchInstanceTypesResponse
s@ListElasticsearchInstanceTypesResponse' {} Maybe [ESPartitionInstanceType]
a -> ListElasticsearchInstanceTypesResponse
s {$sel:elasticsearchInstanceTypes:ListElasticsearchInstanceTypesResponse' :: Maybe [ESPartitionInstanceType]
elasticsearchInstanceTypes = Maybe [ESPartitionInstanceType]
a} :: ListElasticsearchInstanceTypesResponse) 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

-- | In case if there are more results available NextToken would be present,
-- make further request to the same API with received NextToken to paginate
-- remaining results.
listElasticsearchInstanceTypesResponse_nextToken :: Lens.Lens' ListElasticsearchInstanceTypesResponse (Prelude.Maybe Prelude.Text)
listElasticsearchInstanceTypesResponse_nextToken :: Lens' ListElasticsearchInstanceTypesResponse (Maybe Text)
listElasticsearchInstanceTypesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListElasticsearchInstanceTypesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListElasticsearchInstanceTypesResponse' :: ListElasticsearchInstanceTypesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListElasticsearchInstanceTypesResponse
s@ListElasticsearchInstanceTypesResponse' {} Maybe Text
a -> ListElasticsearchInstanceTypesResponse
s {$sel:nextToken:ListElasticsearchInstanceTypesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListElasticsearchInstanceTypesResponse)

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

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