{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the instance count, storage, and master node limits for a
-- given OpenSearch or Elasticsearch version and instance type.
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.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
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. Only specify if you need the limits for an
    -- existing domain.
    DescribeInstanceTypeLimits -> Maybe Text
domainName :: Prelude.Maybe Prelude.Text,
    -- | The OpenSearch Service instance type for which you need limit
    -- information.
    DescribeInstanceTypeLimits -> OpenSearchPartitionInstanceType
instanceType :: OpenSearchPartitionInstanceType,
    -- | Version of OpenSearch or Elasticsearch, in the format Elasticsearch_X.Y
    -- or OpenSearch_X.Y. Defaults to the latest version of OpenSearch.
    DescribeInstanceTypeLimits -> Text
engineVersion :: Prelude.Text
  }
  deriving (DescribeInstanceTypeLimits -> DescribeInstanceTypeLimits -> Bool
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]
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
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.
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. Only specify if you need the limits for an
-- existing domain.
--
-- 'instanceType', 'describeInstanceTypeLimits_instanceType' - The OpenSearch Service instance type for which you need limit
-- information.
--
-- 'engineVersion', 'describeInstanceTypeLimits_engineVersion' - Version of OpenSearch or Elasticsearch, in the format Elasticsearch_X.Y
-- or OpenSearch_X.Y. Defaults to the latest version of OpenSearch.
newDescribeInstanceTypeLimits ::
  -- | 'instanceType'
  OpenSearchPartitionInstanceType ->
  -- | 'engineVersion'
  Prelude.Text ->
  DescribeInstanceTypeLimits
newDescribeInstanceTypeLimits :: OpenSearchPartitionInstanceType
-> Text -> DescribeInstanceTypeLimits
newDescribeInstanceTypeLimits
  OpenSearchPartitionInstanceType
pInstanceType_
  Text
pEngineVersion_ =
    DescribeInstanceTypeLimits'
      { $sel:domainName:DescribeInstanceTypeLimits' :: Maybe Text
domainName =
          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. Only specify if you need the limits for an
-- existing domain.
describeInstanceTypeLimits_domainName :: Lens.Lens' DescribeInstanceTypeLimits (Prelude.Maybe Prelude.Text)
describeInstanceTypeLimits_domainName :: Lens' DescribeInstanceTypeLimits (Maybe Text)
describeInstanceTypeLimits_domainName = 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 OpenSearch Service instance type for which you need limit
-- information.
describeInstanceTypeLimits_instanceType :: Lens.Lens' DescribeInstanceTypeLimits OpenSearchPartitionInstanceType
describeInstanceTypeLimits_instanceType :: Lens' DescribeInstanceTypeLimits OpenSearchPartitionInstanceType
describeInstanceTypeLimits_instanceType = 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 or Elasticsearch, in the format Elasticsearch_X.Y
-- or OpenSearch_X.Y. Defaults to the latest version of OpenSearch.
describeInstanceTypeLimits_engineVersion :: Lens.Lens' DescribeInstanceTypeLimits Prelude.Text
describeInstanceTypeLimits_engineVersion :: Lens' DescribeInstanceTypeLimits Text
describeInstanceTypeLimits_engineVersion = 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 :: (Service -> Service)
-> DescribeInstanceTypeLimits -> Request DescribeInstanceTypeLimits
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 DescribeInstanceTypeLimits
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeInstanceTypeLimits)))
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 (HashMap Text Limits)
-> Int -> DescribeInstanceTypeLimitsResponse
DescribeInstanceTypeLimitsResponse'
            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
"LimitsByRole" 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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeInstanceTypeLimits where
  hashWithSalt :: Int -> DescribeInstanceTypeLimits -> Int
hashWithSalt Int
_salt 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
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` OpenSearchPartitionInstanceType
instanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
engineVersion

instance Prelude.NFData DescribeInstanceTypeLimits where
  rnf :: DescribeInstanceTypeLimits -> ()
rnf 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
..} =
    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 OpenSearchPartitionInstanceType
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
engineVersion

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

instance Data.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
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2021-01-01/opensearch/instanceTypeLimits/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
engineVersion,
        ByteString
"/",
        forall a. ToByteString a => a -> ByteString
Data.toBS OpenSearchPartitionInstanceType
instanceType
      ]

instance Data.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
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"domainName" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domainName]

-- | Container for the parameters received from the
-- @DescribeInstanceTypeLimits@ operation.
--
-- /See:/ 'newDescribeInstanceTypeLimitsResponse' smart constructor.
data DescribeInstanceTypeLimitsResponse = DescribeInstanceTypeLimitsResponse'
  { -- | Map that contains all applicable instance type limits.@data@ refers to
    -- data nodes.@master@ refers to dedicated master nodes.
    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
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]
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
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.
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' - Map that contains all applicable instance type limits.@data@ refers to
-- data nodes.@master@ refers to dedicated master nodes.
--
-- 'httpStatus', 'describeInstanceTypeLimitsResponse_httpStatus' - The response's http status code.
newDescribeInstanceTypeLimitsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeInstanceTypeLimitsResponse
newDescribeInstanceTypeLimitsResponse :: Int -> DescribeInstanceTypeLimitsResponse
newDescribeInstanceTypeLimitsResponse Int
pHttpStatus_ =
  DescribeInstanceTypeLimitsResponse'
    { $sel:limitsByRole:DescribeInstanceTypeLimitsResponse' :: Maybe (HashMap Text Limits)
limitsByRole =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeInstanceTypeLimitsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Map that contains all applicable instance type limits.@data@ refers to
-- data nodes.@master@ refers to dedicated master nodes.
describeInstanceTypeLimitsResponse_limitsByRole :: Lens.Lens' DescribeInstanceTypeLimitsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Limits))
describeInstanceTypeLimitsResponse_limitsByRole :: Lens'
  DescribeInstanceTypeLimitsResponse (Maybe (HashMap Text Limits))
describeInstanceTypeLimitsResponse_limitsByRole = 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) 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

-- | The response's http status code.
describeInstanceTypeLimitsResponse_httpStatus :: Lens.Lens' DescribeInstanceTypeLimitsResponse Prelude.Int
describeInstanceTypeLimitsResponse_httpStatus :: Lens' DescribeInstanceTypeLimitsResponse Int
describeInstanceTypeLimitsResponse_httpStatus = 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
  where
  rnf :: DescribeInstanceTypeLimitsResponse -> ()
rnf DescribeInstanceTypeLimitsResponse' {Int
Maybe (HashMap Text Limits)
httpStatus :: Int
limitsByRole :: Maybe (HashMap Text Limits)
$sel:httpStatus:DescribeInstanceTypeLimitsResponse' :: DescribeInstanceTypeLimitsResponse -> Int
$sel:limitsByRole:DescribeInstanceTypeLimitsResponse' :: DescribeInstanceTypeLimitsResponse -> Maybe (HashMap Text Limits)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Limits)
limitsByRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus