{-# 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.OpenSearch.DescribeInstanceTypeLimits
-- 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)
--
-- Describe the limits for a given instance type and OpenSearch or
-- Elasticsearch version. When modifying an existing domain, specify the
-- @ DomainName @ to see which limits you can modify.
module Amazonka.OpenSearch.DescribeInstanceTypeLimits
  ( -- * Creating a Request
    DescribeInstanceTypeLimits (..),
    newDescribeInstanceTypeLimits,

    -- * Request Lenses
    describeInstanceTypeLimits_domainName,
    describeInstanceTypeLimits_instanceType,
    describeInstanceTypeLimits_engineVersion,

    -- * Destructuring the Response
    DescribeInstanceTypeLimitsResponse (..),
    newDescribeInstanceTypeLimitsResponse,

    -- * Response Lenses
    describeInstanceTypeLimitsResponse_limitsByRole,
    describeInstanceTypeLimitsResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.OpenSearch.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 @ DescribeInstanceTypeLimits @
-- operation.
--
-- /See:/ 'newDescribeInstanceTypeLimits' smart constructor.
data DescribeInstanceTypeLimits = DescribeInstanceTypeLimits'
  { -- | The name of the domain you want to modify. Only include this value if
    -- you\'re querying OpenSearch @ Limits @ for an existing domain.
    DescribeInstanceTypeLimits -> Maybe Text
domainName :: Prelude.Maybe Prelude.Text,
    -- | The instance type for an OpenSearch cluster for which OpenSearch
    -- @ Limits @ are needed.
    DescribeInstanceTypeLimits -> OpenSearchPartitionInstanceType
instanceType :: OpenSearchPartitionInstanceType,
    -- | Version of OpenSearch for which @ Limits @ are needed.
    DescribeInstanceTypeLimits -> Text
engineVersion :: Prelude.Text
  }
  deriving (DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool
(DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool)
-> (DescribeInstanceTypeLimits
    -> DescribeInstanceTypeLimits -> Bool)
-> Eq DescribeInstanceTypeLimits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool
$c/= :: DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool
== :: DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool
$c== :: DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool
Prelude.Eq, ReadPrec [DescribeInstanceTypeLimits]
ReadPrec DescribeInstanceTypeLimits
Int -> ReadS DescribeInstanceTypeLimits
ReadS [DescribeInstanceTypeLimits]
(Int -> ReadS DescribeInstanceTypeLimits)
-> ReadS [DescribeInstanceTypeLimits]
-> ReadPrec DescribeInstanceTypeLimits
-> ReadPrec [DescribeInstanceTypeLimits]
-> Read DescribeInstanceTypeLimits
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeInstanceTypeLimits]
$creadListPrec :: ReadPrec [DescribeInstanceTypeLimits]
readPrec :: ReadPrec DescribeInstanceTypeLimits
$creadPrec :: ReadPrec DescribeInstanceTypeLimits
readList :: ReadS [DescribeInstanceTypeLimits]
$creadList :: ReadS [DescribeInstanceTypeLimits]
readsPrec :: Int -> ReadS DescribeInstanceTypeLimits
$creadsPrec :: Int -> ReadS DescribeInstanceTypeLimits
Prelude.Read, Int -> DescribeInstanceTypeLimits -> ShowS
[DescribeInstanceTypeLimits] -> ShowS
DescribeInstanceTypeLimits -> String
(Int -> DescribeInstanceTypeLimits -> ShowS)
-> (DescribeInstanceTypeLimits -> String)
-> ([DescribeInstanceTypeLimits] -> ShowS)
-> Show DescribeInstanceTypeLimits
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeInstanceTypeLimits] -> ShowS
$cshowList :: [DescribeInstanceTypeLimits] -> ShowS
show :: DescribeInstanceTypeLimits -> String
$cshow :: DescribeInstanceTypeLimits -> String
showsPrec :: Int -> DescribeInstanceTypeLimits -> ShowS
$cshowsPrec :: Int -> DescribeInstanceTypeLimits -> ShowS
Prelude.Show, (forall x.
 DescribeInstanceTypeLimits -> Rep DescribeInstanceTypeLimits x)
-> (forall x.
    Rep DescribeInstanceTypeLimits x -> DescribeInstanceTypeLimits)
-> Generic DescribeInstanceTypeLimits
forall x.
Rep DescribeInstanceTypeLimits x -> DescribeInstanceTypeLimits
forall x.
DescribeInstanceTypeLimits -> Rep DescribeInstanceTypeLimits x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeInstanceTypeLimits x -> DescribeInstanceTypeLimits
$cfrom :: forall x.
DescribeInstanceTypeLimits -> Rep DescribeInstanceTypeLimits x
Prelude.Generic)

-- |
-- Create a value of 'DescribeInstanceTypeLimits' 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', 'describeInstanceTypeLimits_domainName' - The name of the domain you want to modify. Only include this value if
-- you\'re querying OpenSearch @ Limits @ for an existing domain.
--
-- 'instanceType', 'describeInstanceTypeLimits_instanceType' - The instance type for an OpenSearch cluster for which OpenSearch
-- @ Limits @ are needed.
--
-- 'engineVersion', 'describeInstanceTypeLimits_engineVersion' - Version of OpenSearch for which @ Limits @ are needed.
newDescribeInstanceTypeLimits ::
  -- | 'instanceType'
  OpenSearchPartitionInstanceType ->
  -- | 'engineVersion'
  Prelude.Text ->
  DescribeInstanceTypeLimits
newDescribeInstanceTypeLimits :: OpenSearchPartitionInstanceType
-> Text -> DescribeInstanceTypeLimits
newDescribeInstanceTypeLimits
  OpenSearchPartitionInstanceType
pInstanceType_
  Text
pEngineVersion_ =
    DescribeInstanceTypeLimits' :: Maybe Text
-> OpenSearchPartitionInstanceType
-> Text
-> DescribeInstanceTypeLimits
DescribeInstanceTypeLimits'
      { $sel:domainName:DescribeInstanceTypeLimits' :: Maybe Text
domainName =
          Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:instanceType:DescribeInstanceTypeLimits' :: OpenSearchPartitionInstanceType
instanceType = OpenSearchPartitionInstanceType
pInstanceType_,
        $sel:engineVersion:DescribeInstanceTypeLimits' :: Text
engineVersion = Text
pEngineVersion_
      }

-- | The name of the domain you want to modify. Only include this value if
-- you\'re querying OpenSearch @ Limits @ for an existing domain.
describeInstanceTypeLimits_domainName :: Lens.Lens' DescribeInstanceTypeLimits (Prelude.Maybe Prelude.Text)
describeInstanceTypeLimits_domainName :: (Maybe Text -> f (Maybe Text))
-> DescribeInstanceTypeLimits -> f DescribeInstanceTypeLimits
describeInstanceTypeLimits_domainName = (DescribeInstanceTypeLimits -> Maybe Text)
-> (DescribeInstanceTypeLimits
    -> Maybe Text -> DescribeInstanceTypeLimits)
-> Lens
     DescribeInstanceTypeLimits
     DescribeInstanceTypeLimits
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceTypeLimits' {Maybe Text
domainName :: Maybe Text
$sel:domainName:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> Maybe Text
domainName} -> Maybe Text
domainName) (\s :: DescribeInstanceTypeLimits
s@DescribeInstanceTypeLimits' {} Maybe Text
a -> DescribeInstanceTypeLimits
s {$sel:domainName:DescribeInstanceTypeLimits' :: Maybe Text
domainName = Maybe Text
a} :: DescribeInstanceTypeLimits)

-- | The instance type for an OpenSearch cluster for which OpenSearch
-- @ Limits @ are needed.
describeInstanceTypeLimits_instanceType :: Lens.Lens' DescribeInstanceTypeLimits OpenSearchPartitionInstanceType
describeInstanceTypeLimits_instanceType :: (OpenSearchPartitionInstanceType
 -> f OpenSearchPartitionInstanceType)
-> DescribeInstanceTypeLimits -> f DescribeInstanceTypeLimits
describeInstanceTypeLimits_instanceType = (DescribeInstanceTypeLimits -> OpenSearchPartitionInstanceType)
-> (DescribeInstanceTypeLimits
    -> OpenSearchPartitionInstanceType -> DescribeInstanceTypeLimits)
-> Lens
     DescribeInstanceTypeLimits
     DescribeInstanceTypeLimits
     OpenSearchPartitionInstanceType
     OpenSearchPartitionInstanceType
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceTypeLimits' {OpenSearchPartitionInstanceType
instanceType :: OpenSearchPartitionInstanceType
$sel:instanceType:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> OpenSearchPartitionInstanceType
instanceType} -> OpenSearchPartitionInstanceType
instanceType) (\s :: DescribeInstanceTypeLimits
s@DescribeInstanceTypeLimits' {} OpenSearchPartitionInstanceType
a -> DescribeInstanceTypeLimits
s {$sel:instanceType:DescribeInstanceTypeLimits' :: OpenSearchPartitionInstanceType
instanceType = OpenSearchPartitionInstanceType
a} :: DescribeInstanceTypeLimits)

-- | Version of OpenSearch for which @ Limits @ are needed.
describeInstanceTypeLimits_engineVersion :: Lens.Lens' DescribeInstanceTypeLimits Prelude.Text
describeInstanceTypeLimits_engineVersion :: (Text -> f Text)
-> DescribeInstanceTypeLimits -> f DescribeInstanceTypeLimits
describeInstanceTypeLimits_engineVersion = (DescribeInstanceTypeLimits -> Text)
-> (DescribeInstanceTypeLimits
    -> Text -> DescribeInstanceTypeLimits)
-> Lens
     DescribeInstanceTypeLimits DescribeInstanceTypeLimits Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceTypeLimits' {Text
engineVersion :: Text
$sel:engineVersion:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> Text
engineVersion} -> Text
engineVersion) (\s :: DescribeInstanceTypeLimits
s@DescribeInstanceTypeLimits' {} Text
a -> DescribeInstanceTypeLimits
s {$sel:engineVersion:DescribeInstanceTypeLimits' :: Text
engineVersion = Text
a} :: DescribeInstanceTypeLimits)

instance Core.AWSRequest DescribeInstanceTypeLimits where
  type
    AWSResponse DescribeInstanceTypeLimits =
      DescribeInstanceTypeLimitsResponse
  request :: DescribeInstanceTypeLimits -> Request DescribeInstanceTypeLimits
request = Service
-> DescribeInstanceTypeLimits -> Request DescribeInstanceTypeLimits
forall a. ToRequest a => Service -> a -> Request a
Request.get Service
defaultService
  response :: Logger
-> Service
-> Proxy DescribeInstanceTypeLimits
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeInstanceTypeLimits)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse DescribeInstanceTypeLimits))
-> Logger
-> Service
-> Proxy DescribeInstanceTypeLimits
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeInstanceTypeLimits)))
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 (HashMap Text Limits)
-> Int -> DescribeInstanceTypeLimitsResponse
DescribeInstanceTypeLimitsResponse'
            (Maybe (HashMap Text Limits)
 -> Int -> DescribeInstanceTypeLimitsResponse)
-> Either String (Maybe (HashMap Text Limits))
-> Either String (Int -> DescribeInstanceTypeLimitsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object
-> Text -> Either String (Maybe (Maybe (HashMap Text Limits)))
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"LimitsByRole" Either String (Maybe (Maybe (HashMap Text Limits)))
-> Maybe (HashMap Text Limits)
-> Either String (Maybe (HashMap Text Limits))
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ Maybe (HashMap Text Limits)
forall a. Monoid a => a
Prelude.mempty)
            Either String (Int -> DescribeInstanceTypeLimitsResponse)
-> Either String Int
-> Either String DescribeInstanceTypeLimitsResponse
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 DescribeInstanceTypeLimits

instance Prelude.NFData DescribeInstanceTypeLimits

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

instance Core.ToPath DescribeInstanceTypeLimits where
  toPath :: DescribeInstanceTypeLimits -> ByteString
toPath DescribeInstanceTypeLimits' {Maybe Text
Text
OpenSearchPartitionInstanceType
engineVersion :: Text
instanceType :: OpenSearchPartitionInstanceType
domainName :: Maybe Text
$sel:engineVersion:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> Text
$sel:instanceType:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> OpenSearchPartitionInstanceType
$sel:domainName:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> Maybe Text
..} =
    [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2021-01-01/opensearch/instanceTypeLimits/",
        Text -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS Text
engineVersion,
        ByteString
"/",
        OpenSearchPartitionInstanceType -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS OpenSearchPartitionInstanceType
instanceType
      ]

instance Core.ToQuery DescribeInstanceTypeLimits where
  toQuery :: DescribeInstanceTypeLimits -> QueryString
toQuery DescribeInstanceTypeLimits' {Maybe Text
Text
OpenSearchPartitionInstanceType
engineVersion :: Text
instanceType :: OpenSearchPartitionInstanceType
domainName :: Maybe Text
$sel:engineVersion:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> Text
$sel:instanceType:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> OpenSearchPartitionInstanceType
$sel:domainName:DescribeInstanceTypeLimits' :: DescribeInstanceTypeLimits -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"domainName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
domainName]

-- | Container for the parameters received from the
-- @ DescribeInstanceTypeLimits @ operation.
--
-- /See:/ 'newDescribeInstanceTypeLimitsResponse' smart constructor.
data DescribeInstanceTypeLimitsResponse = DescribeInstanceTypeLimitsResponse'
  { DescribeInstanceTypeLimitsResponse -> Maybe (HashMap Text Limits)
limitsByRole :: Prelude.Maybe (Prelude.HashMap Prelude.Text Limits),
    -- | The response's http status code.
    DescribeInstanceTypeLimitsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeInstanceTypeLimitsResponse
-> DescribeInstanceTypeLimitsResponse -> Bool
(DescribeInstanceTypeLimitsResponse
 -> DescribeInstanceTypeLimitsResponse -> Bool)
-> (DescribeInstanceTypeLimitsResponse
    -> DescribeInstanceTypeLimitsResponse -> Bool)
-> Eq DescribeInstanceTypeLimitsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeInstanceTypeLimitsResponse
-> DescribeInstanceTypeLimitsResponse -> Bool
$c/= :: DescribeInstanceTypeLimitsResponse
-> DescribeInstanceTypeLimitsResponse -> Bool
== :: DescribeInstanceTypeLimitsResponse
-> DescribeInstanceTypeLimitsResponse -> Bool
$c== :: DescribeInstanceTypeLimitsResponse
-> DescribeInstanceTypeLimitsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeInstanceTypeLimitsResponse]
ReadPrec DescribeInstanceTypeLimitsResponse
Int -> ReadS DescribeInstanceTypeLimitsResponse
ReadS [DescribeInstanceTypeLimitsResponse]
(Int -> ReadS DescribeInstanceTypeLimitsResponse)
-> ReadS [DescribeInstanceTypeLimitsResponse]
-> ReadPrec DescribeInstanceTypeLimitsResponse
-> ReadPrec [DescribeInstanceTypeLimitsResponse]
-> Read DescribeInstanceTypeLimitsResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeInstanceTypeLimitsResponse]
$creadListPrec :: ReadPrec [DescribeInstanceTypeLimitsResponse]
readPrec :: ReadPrec DescribeInstanceTypeLimitsResponse
$creadPrec :: ReadPrec DescribeInstanceTypeLimitsResponse
readList :: ReadS [DescribeInstanceTypeLimitsResponse]
$creadList :: ReadS [DescribeInstanceTypeLimitsResponse]
readsPrec :: Int -> ReadS DescribeInstanceTypeLimitsResponse
$creadsPrec :: Int -> ReadS DescribeInstanceTypeLimitsResponse
Prelude.Read, Int -> DescribeInstanceTypeLimitsResponse -> ShowS
[DescribeInstanceTypeLimitsResponse] -> ShowS
DescribeInstanceTypeLimitsResponse -> String
(Int -> DescribeInstanceTypeLimitsResponse -> ShowS)
-> (DescribeInstanceTypeLimitsResponse -> String)
-> ([DescribeInstanceTypeLimitsResponse] -> ShowS)
-> Show DescribeInstanceTypeLimitsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeInstanceTypeLimitsResponse] -> ShowS
$cshowList :: [DescribeInstanceTypeLimitsResponse] -> ShowS
show :: DescribeInstanceTypeLimitsResponse -> String
$cshow :: DescribeInstanceTypeLimitsResponse -> String
showsPrec :: Int -> DescribeInstanceTypeLimitsResponse -> ShowS
$cshowsPrec :: Int -> DescribeInstanceTypeLimitsResponse -> ShowS
Prelude.Show, (forall x.
 DescribeInstanceTypeLimitsResponse
 -> Rep DescribeInstanceTypeLimitsResponse x)
-> (forall x.
    Rep DescribeInstanceTypeLimitsResponse x
    -> DescribeInstanceTypeLimitsResponse)
-> Generic DescribeInstanceTypeLimitsResponse
forall x.
Rep DescribeInstanceTypeLimitsResponse x
-> DescribeInstanceTypeLimitsResponse
forall x.
DescribeInstanceTypeLimitsResponse
-> Rep DescribeInstanceTypeLimitsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeInstanceTypeLimitsResponse x
-> DescribeInstanceTypeLimitsResponse
$cfrom :: forall x.
DescribeInstanceTypeLimitsResponse
-> Rep DescribeInstanceTypeLimitsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeInstanceTypeLimitsResponse' 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:
--
-- 'limitsByRole', 'describeInstanceTypeLimitsResponse_limitsByRole' - Undocumented member.
--
-- 'httpStatus', 'describeInstanceTypeLimitsResponse_httpStatus' - The response's http status code.
newDescribeInstanceTypeLimitsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeInstanceTypeLimitsResponse
newDescribeInstanceTypeLimitsResponse :: Int -> DescribeInstanceTypeLimitsResponse
newDescribeInstanceTypeLimitsResponse Int
pHttpStatus_ =
  DescribeInstanceTypeLimitsResponse' :: Maybe (HashMap Text Limits)
-> Int -> DescribeInstanceTypeLimitsResponse
DescribeInstanceTypeLimitsResponse'
    { $sel:limitsByRole:DescribeInstanceTypeLimitsResponse' :: Maybe (HashMap Text Limits)
limitsByRole =
        Maybe (HashMap Text Limits)
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeInstanceTypeLimitsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
describeInstanceTypeLimitsResponse_limitsByRole :: Lens.Lens' DescribeInstanceTypeLimitsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Limits))
describeInstanceTypeLimitsResponse_limitsByRole :: (Maybe (HashMap Text Limits) -> f (Maybe (HashMap Text Limits)))
-> DescribeInstanceTypeLimitsResponse
-> f DescribeInstanceTypeLimitsResponse
describeInstanceTypeLimitsResponse_limitsByRole = (DescribeInstanceTypeLimitsResponse -> Maybe (HashMap Text Limits))
-> (DescribeInstanceTypeLimitsResponse
    -> Maybe (HashMap Text Limits)
    -> DescribeInstanceTypeLimitsResponse)
-> Lens
     DescribeInstanceTypeLimitsResponse
     DescribeInstanceTypeLimitsResponse
     (Maybe (HashMap Text Limits))
     (Maybe (HashMap Text Limits))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceTypeLimitsResponse' {Maybe (HashMap Text Limits)
limitsByRole :: Maybe (HashMap Text Limits)
$sel:limitsByRole:DescribeInstanceTypeLimitsResponse' :: DescribeInstanceTypeLimitsResponse -> Maybe (HashMap Text Limits)
limitsByRole} -> Maybe (HashMap Text Limits)
limitsByRole) (\s :: DescribeInstanceTypeLimitsResponse
s@DescribeInstanceTypeLimitsResponse' {} Maybe (HashMap Text Limits)
a -> DescribeInstanceTypeLimitsResponse
s {$sel:limitsByRole:DescribeInstanceTypeLimitsResponse' :: Maybe (HashMap Text Limits)
limitsByRole = Maybe (HashMap Text Limits)
a} :: DescribeInstanceTypeLimitsResponse) ((Maybe (HashMap Text Limits) -> f (Maybe (HashMap Text Limits)))
 -> DescribeInstanceTypeLimitsResponse
 -> f DescribeInstanceTypeLimitsResponse)
-> ((Maybe (HashMap Text Limits)
     -> f (Maybe (HashMap Text Limits)))
    -> Maybe (HashMap Text Limits) -> f (Maybe (HashMap Text Limits)))
-> (Maybe (HashMap Text Limits) -> f (Maybe (HashMap Text Limits)))
-> DescribeInstanceTypeLimitsResponse
-> f DescribeInstanceTypeLimitsResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Limits)
  (HashMap Text Limits)
  (HashMap Text Limits)
  (HashMap Text Limits)
-> Iso
     (Maybe (HashMap Text Limits))
     (Maybe (HashMap Text Limits))
     (Maybe (HashMap Text Limits))
     (Maybe (HashMap Text Limits))
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
  (HashMap Text Limits)
  (HashMap Text Limits)
  (HashMap Text Limits)
  (HashMap Text Limits)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance
  Prelude.NFData
    DescribeInstanceTypeLimitsResponse