{-# 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.EC2.DescribeInstanceCreditSpecifications
-- 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 credit option for CPU usage of the specified burstable
-- performance instances. The credit options are @standard@ and
-- @unlimited@.
--
-- If you do not specify an instance ID, Amazon EC2 returns burstable
-- performance instances with the @unlimited@ credit option, as well as
-- instances that were previously configured as T2, T3, and T3a with the
-- @unlimited@ credit option. For example, if you resize a T2 instance,
-- while it is configured as @unlimited@, to an M4 instance, Amazon EC2
-- returns the M4 instance.
--
-- If you specify one or more instance IDs, Amazon EC2 returns the credit
-- option (@standard@ or @unlimited@) of those instances. If you specify an
-- instance ID that is not valid, such as an instance that is not a
-- burstable performance instance, an error is returned.
--
-- Recently terminated instances might appear in the returned results. This
-- interval is usually less than one hour.
--
-- If an Availability Zone is experiencing a service disruption and you
-- specify instance IDs in the affected zone, or do not specify any
-- instance IDs at all, the call fails. If you specify only instance IDs in
-- an unaffected zone, the call works normally.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html Burstable performance instances>
-- in the /Amazon EC2 User Guide/.
--
-- This operation returns paginated results.
module Amazonka.EC2.DescribeInstanceCreditSpecifications
  ( -- * Creating a Request
    DescribeInstanceCreditSpecifications (..),
    newDescribeInstanceCreditSpecifications,

    -- * Request Lenses
    describeInstanceCreditSpecifications_dryRun,
    describeInstanceCreditSpecifications_filters,
    describeInstanceCreditSpecifications_instanceIds,
    describeInstanceCreditSpecifications_maxResults,
    describeInstanceCreditSpecifications_nextToken,

    -- * Destructuring the Response
    DescribeInstanceCreditSpecificationsResponse (..),
    newDescribeInstanceCreditSpecificationsResponse,

    -- * Response Lenses
    describeInstanceCreditSpecificationsResponse_instanceCreditSpecifications,
    describeInstanceCreditSpecificationsResponse_nextToken,
    describeInstanceCreditSpecificationsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeInstanceCreditSpecifications' smart constructor.
data DescribeInstanceCreditSpecifications = DescribeInstanceCreditSpecifications'
  { -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    DescribeInstanceCreditSpecifications -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The filters.
    --
    -- -   @instance-id@ - The ID of the instance.
    DescribeInstanceCreditSpecifications -> Maybe [Filter]
filters :: Prelude.Maybe [Filter],
    -- | The instance IDs.
    --
    -- Default: Describes all your instances.
    --
    -- Constraints: Maximum 1000 explicitly specified instance IDs.
    DescribeInstanceCreditSpecifications -> Maybe [Text]
instanceIds :: Prelude.Maybe [Prelude.Text],
    -- | The maximum number of results to return in a single call. To retrieve
    -- the remaining results, make another call with the returned @NextToken@
    -- value. This value can be between 5 and 1000. You cannot specify this
    -- parameter and the instance IDs parameter in the same call.
    DescribeInstanceCreditSpecifications -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to retrieve the next page of results.
    DescribeInstanceCreditSpecifications -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeInstanceCreditSpecifications
-> DescribeInstanceCreditSpecifications -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeInstanceCreditSpecifications
-> DescribeInstanceCreditSpecifications -> Bool
$c/= :: DescribeInstanceCreditSpecifications
-> DescribeInstanceCreditSpecifications -> Bool
== :: DescribeInstanceCreditSpecifications
-> DescribeInstanceCreditSpecifications -> Bool
$c== :: DescribeInstanceCreditSpecifications
-> DescribeInstanceCreditSpecifications -> Bool
Prelude.Eq, ReadPrec [DescribeInstanceCreditSpecifications]
ReadPrec DescribeInstanceCreditSpecifications
Int -> ReadS DescribeInstanceCreditSpecifications
ReadS [DescribeInstanceCreditSpecifications]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeInstanceCreditSpecifications]
$creadListPrec :: ReadPrec [DescribeInstanceCreditSpecifications]
readPrec :: ReadPrec DescribeInstanceCreditSpecifications
$creadPrec :: ReadPrec DescribeInstanceCreditSpecifications
readList :: ReadS [DescribeInstanceCreditSpecifications]
$creadList :: ReadS [DescribeInstanceCreditSpecifications]
readsPrec :: Int -> ReadS DescribeInstanceCreditSpecifications
$creadsPrec :: Int -> ReadS DescribeInstanceCreditSpecifications
Prelude.Read, Int -> DescribeInstanceCreditSpecifications -> ShowS
[DescribeInstanceCreditSpecifications] -> ShowS
DescribeInstanceCreditSpecifications -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeInstanceCreditSpecifications] -> ShowS
$cshowList :: [DescribeInstanceCreditSpecifications] -> ShowS
show :: DescribeInstanceCreditSpecifications -> String
$cshow :: DescribeInstanceCreditSpecifications -> String
showsPrec :: Int -> DescribeInstanceCreditSpecifications -> ShowS
$cshowsPrec :: Int -> DescribeInstanceCreditSpecifications -> ShowS
Prelude.Show, forall x.
Rep DescribeInstanceCreditSpecifications x
-> DescribeInstanceCreditSpecifications
forall x.
DescribeInstanceCreditSpecifications
-> Rep DescribeInstanceCreditSpecifications x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeInstanceCreditSpecifications x
-> DescribeInstanceCreditSpecifications
$cfrom :: forall x.
DescribeInstanceCreditSpecifications
-> Rep DescribeInstanceCreditSpecifications x
Prelude.Generic)

-- |
-- Create a value of 'DescribeInstanceCreditSpecifications' 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:
--
-- 'dryRun', 'describeInstanceCreditSpecifications_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'filters', 'describeInstanceCreditSpecifications_filters' - The filters.
--
-- -   @instance-id@ - The ID of the instance.
--
-- 'instanceIds', 'describeInstanceCreditSpecifications_instanceIds' - The instance IDs.
--
-- Default: Describes all your instances.
--
-- Constraints: Maximum 1000 explicitly specified instance IDs.
--
-- 'maxResults', 'describeInstanceCreditSpecifications_maxResults' - The maximum number of results to return in a single call. To retrieve
-- the remaining results, make another call with the returned @NextToken@
-- value. This value can be between 5 and 1000. You cannot specify this
-- parameter and the instance IDs parameter in the same call.
--
-- 'nextToken', 'describeInstanceCreditSpecifications_nextToken' - The token to retrieve the next page of results.
newDescribeInstanceCreditSpecifications ::
  DescribeInstanceCreditSpecifications
newDescribeInstanceCreditSpecifications :: DescribeInstanceCreditSpecifications
newDescribeInstanceCreditSpecifications =
  DescribeInstanceCreditSpecifications'
    { $sel:dryRun:DescribeInstanceCreditSpecifications' :: Maybe Bool
dryRun =
        forall a. Maybe a
Prelude.Nothing,
      $sel:filters:DescribeInstanceCreditSpecifications' :: Maybe [Filter]
filters = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceIds:DescribeInstanceCreditSpecifications' :: Maybe [Text]
instanceIds = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeInstanceCreditSpecifications' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeInstanceCreditSpecifications' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
describeInstanceCreditSpecifications_dryRun :: Lens.Lens' DescribeInstanceCreditSpecifications (Prelude.Maybe Prelude.Bool)
describeInstanceCreditSpecifications_dryRun :: Lens' DescribeInstanceCreditSpecifications (Maybe Bool)
describeInstanceCreditSpecifications_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecifications' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: DescribeInstanceCreditSpecifications
s@DescribeInstanceCreditSpecifications' {} Maybe Bool
a -> DescribeInstanceCreditSpecifications
s {$sel:dryRun:DescribeInstanceCreditSpecifications' :: Maybe Bool
dryRun = Maybe Bool
a} :: DescribeInstanceCreditSpecifications)

-- | The filters.
--
-- -   @instance-id@ - The ID of the instance.
describeInstanceCreditSpecifications_filters :: Lens.Lens' DescribeInstanceCreditSpecifications (Prelude.Maybe [Filter])
describeInstanceCreditSpecifications_filters :: Lens' DescribeInstanceCreditSpecifications (Maybe [Filter])
describeInstanceCreditSpecifications_filters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecifications' {Maybe [Filter]
filters :: Maybe [Filter]
$sel:filters:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Filter]
filters} -> Maybe [Filter]
filters) (\s :: DescribeInstanceCreditSpecifications
s@DescribeInstanceCreditSpecifications' {} Maybe [Filter]
a -> DescribeInstanceCreditSpecifications
s {$sel:filters:DescribeInstanceCreditSpecifications' :: Maybe [Filter]
filters = Maybe [Filter]
a} :: DescribeInstanceCreditSpecifications) 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 instance IDs.
--
-- Default: Describes all your instances.
--
-- Constraints: Maximum 1000 explicitly specified instance IDs.
describeInstanceCreditSpecifications_instanceIds :: Lens.Lens' DescribeInstanceCreditSpecifications (Prelude.Maybe [Prelude.Text])
describeInstanceCreditSpecifications_instanceIds :: Lens' DescribeInstanceCreditSpecifications (Maybe [Text])
describeInstanceCreditSpecifications_instanceIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecifications' {Maybe [Text]
instanceIds :: Maybe [Text]
$sel:instanceIds:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Text]
instanceIds} -> Maybe [Text]
instanceIds) (\s :: DescribeInstanceCreditSpecifications
s@DescribeInstanceCreditSpecifications' {} Maybe [Text]
a -> DescribeInstanceCreditSpecifications
s {$sel:instanceIds:DescribeInstanceCreditSpecifications' :: Maybe [Text]
instanceIds = Maybe [Text]
a} :: DescribeInstanceCreditSpecifications) 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 maximum number of results to return in a single call. To retrieve
-- the remaining results, make another call with the returned @NextToken@
-- value. This value can be between 5 and 1000. You cannot specify this
-- parameter and the instance IDs parameter in the same call.
describeInstanceCreditSpecifications_maxResults :: Lens.Lens' DescribeInstanceCreditSpecifications (Prelude.Maybe Prelude.Natural)
describeInstanceCreditSpecifications_maxResults :: Lens' DescribeInstanceCreditSpecifications (Maybe Natural)
describeInstanceCreditSpecifications_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecifications' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeInstanceCreditSpecifications
s@DescribeInstanceCreditSpecifications' {} Maybe Natural
a -> DescribeInstanceCreditSpecifications
s {$sel:maxResults:DescribeInstanceCreditSpecifications' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeInstanceCreditSpecifications)

-- | The token to retrieve the next page of results.
describeInstanceCreditSpecifications_nextToken :: Lens.Lens' DescribeInstanceCreditSpecifications (Prelude.Maybe Prelude.Text)
describeInstanceCreditSpecifications_nextToken :: Lens' DescribeInstanceCreditSpecifications (Maybe Text)
describeInstanceCreditSpecifications_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecifications' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeInstanceCreditSpecifications
s@DescribeInstanceCreditSpecifications' {} Maybe Text
a -> DescribeInstanceCreditSpecifications
s {$sel:nextToken:DescribeInstanceCreditSpecifications' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeInstanceCreditSpecifications)

instance
  Core.AWSPager
    DescribeInstanceCreditSpecifications
  where
  page :: DescribeInstanceCreditSpecifications
-> AWSResponse DescribeInstanceCreditSpecifications
-> Maybe DescribeInstanceCreditSpecifications
page DescribeInstanceCreditSpecifications
rq AWSResponse DescribeInstanceCreditSpecifications
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeInstanceCreditSpecifications
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeInstanceCreditSpecificationsResponse (Maybe Text)
describeInstanceCreditSpecificationsResponse_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 DescribeInstanceCreditSpecifications
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  DescribeInstanceCreditSpecificationsResponse
  (Maybe [InstanceCreditSpecification])
describeInstanceCreditSpecificationsResponse_instanceCreditSpecifications
            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.$ DescribeInstanceCreditSpecifications
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeInstanceCreditSpecifications (Maybe Text)
describeInstanceCreditSpecifications_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeInstanceCreditSpecifications
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeInstanceCreditSpecificationsResponse (Maybe Text)
describeInstanceCreditSpecificationsResponse_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
    DescribeInstanceCreditSpecifications
  where
  type
    AWSResponse DescribeInstanceCreditSpecifications =
      DescribeInstanceCreditSpecificationsResponse
  request :: (Service -> Service)
-> DescribeInstanceCreditSpecifications
-> Request DescribeInstanceCreditSpecifications
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeInstanceCreditSpecifications
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DescribeInstanceCreditSpecifications)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [InstanceCreditSpecification]
-> Maybe Text
-> Int
-> DescribeInstanceCreditSpecificationsResponse
DescribeInstanceCreditSpecificationsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"instanceCreditSpecificationSet"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"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
    DescribeInstanceCreditSpecifications
  where
  hashWithSalt :: Int -> DescribeInstanceCreditSpecifications -> Int
hashWithSalt
    Int
_salt
    DescribeInstanceCreditSpecifications' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [Filter]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
instanceIds :: Maybe [Text]
filters :: Maybe [Filter]
dryRun :: Maybe Bool
$sel:nextToken:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Text
$sel:maxResults:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Natural
$sel:instanceIds:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Text]
$sel:filters:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Filter]
$sel:dryRun:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Bool
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Filter]
filters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
instanceIds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance
  Prelude.NFData
    DescribeInstanceCreditSpecifications
  where
  rnf :: DescribeInstanceCreditSpecifications -> ()
rnf DescribeInstanceCreditSpecifications' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [Filter]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
instanceIds :: Maybe [Text]
filters :: Maybe [Filter]
dryRun :: Maybe Bool
$sel:nextToken:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Text
$sel:maxResults:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Natural
$sel:instanceIds:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Text]
$sel:filters:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Filter]
$sel:dryRun:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Filter]
filters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
instanceIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

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

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

instance
  Data.ToQuery
    DescribeInstanceCreditSpecifications
  where
  toQuery :: DescribeInstanceCreditSpecifications -> QueryString
toQuery DescribeInstanceCreditSpecifications' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [Filter]
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
instanceIds :: Maybe [Text]
filters :: Maybe [Filter]
dryRun :: Maybe Bool
$sel:nextToken:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Text
$sel:maxResults:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Natural
$sel:instanceIds:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Text]
$sel:filters:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe [Filter]
$sel:dryRun:DescribeInstanceCreditSpecifications' :: DescribeInstanceCreditSpecifications -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeInstanceCreditSpecifications" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"Filter" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Filter]
filters),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"InstanceId"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
instanceIds
          ),
        ByteString
"MaxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken
      ]

-- | /See:/ 'newDescribeInstanceCreditSpecificationsResponse' smart constructor.
data DescribeInstanceCreditSpecificationsResponse = DescribeInstanceCreditSpecificationsResponse'
  { -- | Information about the credit option for CPU usage of an instance.
    DescribeInstanceCreditSpecificationsResponse
-> Maybe [InstanceCreditSpecification]
instanceCreditSpecifications :: Prelude.Maybe [InstanceCreditSpecification],
    -- | The token to use to retrieve the next page of results. This value is
    -- @null@ when there are no more results to return.
    DescribeInstanceCreditSpecificationsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeInstanceCreditSpecificationsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeInstanceCreditSpecificationsResponse
-> DescribeInstanceCreditSpecificationsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeInstanceCreditSpecificationsResponse
-> DescribeInstanceCreditSpecificationsResponse -> Bool
$c/= :: DescribeInstanceCreditSpecificationsResponse
-> DescribeInstanceCreditSpecificationsResponse -> Bool
== :: DescribeInstanceCreditSpecificationsResponse
-> DescribeInstanceCreditSpecificationsResponse -> Bool
$c== :: DescribeInstanceCreditSpecificationsResponse
-> DescribeInstanceCreditSpecificationsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeInstanceCreditSpecificationsResponse]
ReadPrec DescribeInstanceCreditSpecificationsResponse
Int -> ReadS DescribeInstanceCreditSpecificationsResponse
ReadS [DescribeInstanceCreditSpecificationsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeInstanceCreditSpecificationsResponse]
$creadListPrec :: ReadPrec [DescribeInstanceCreditSpecificationsResponse]
readPrec :: ReadPrec DescribeInstanceCreditSpecificationsResponse
$creadPrec :: ReadPrec DescribeInstanceCreditSpecificationsResponse
readList :: ReadS [DescribeInstanceCreditSpecificationsResponse]
$creadList :: ReadS [DescribeInstanceCreditSpecificationsResponse]
readsPrec :: Int -> ReadS DescribeInstanceCreditSpecificationsResponse
$creadsPrec :: Int -> ReadS DescribeInstanceCreditSpecificationsResponse
Prelude.Read, Int -> DescribeInstanceCreditSpecificationsResponse -> ShowS
[DescribeInstanceCreditSpecificationsResponse] -> ShowS
DescribeInstanceCreditSpecificationsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeInstanceCreditSpecificationsResponse] -> ShowS
$cshowList :: [DescribeInstanceCreditSpecificationsResponse] -> ShowS
show :: DescribeInstanceCreditSpecificationsResponse -> String
$cshow :: DescribeInstanceCreditSpecificationsResponse -> String
showsPrec :: Int -> DescribeInstanceCreditSpecificationsResponse -> ShowS
$cshowsPrec :: Int -> DescribeInstanceCreditSpecificationsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeInstanceCreditSpecificationsResponse x
-> DescribeInstanceCreditSpecificationsResponse
forall x.
DescribeInstanceCreditSpecificationsResponse
-> Rep DescribeInstanceCreditSpecificationsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeInstanceCreditSpecificationsResponse x
-> DescribeInstanceCreditSpecificationsResponse
$cfrom :: forall x.
DescribeInstanceCreditSpecificationsResponse
-> Rep DescribeInstanceCreditSpecificationsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeInstanceCreditSpecificationsResponse' 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:
--
-- 'instanceCreditSpecifications', 'describeInstanceCreditSpecificationsResponse_instanceCreditSpecifications' - Information about the credit option for CPU usage of an instance.
--
-- 'nextToken', 'describeInstanceCreditSpecificationsResponse_nextToken' - The token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
--
-- 'httpStatus', 'describeInstanceCreditSpecificationsResponse_httpStatus' - The response's http status code.
newDescribeInstanceCreditSpecificationsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeInstanceCreditSpecificationsResponse
newDescribeInstanceCreditSpecificationsResponse :: Int -> DescribeInstanceCreditSpecificationsResponse
newDescribeInstanceCreditSpecificationsResponse
  Int
pHttpStatus_ =
    DescribeInstanceCreditSpecificationsResponse'
      { $sel:instanceCreditSpecifications:DescribeInstanceCreditSpecificationsResponse' :: Maybe [InstanceCreditSpecification]
instanceCreditSpecifications =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:DescribeInstanceCreditSpecificationsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeInstanceCreditSpecificationsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Information about the credit option for CPU usage of an instance.
describeInstanceCreditSpecificationsResponse_instanceCreditSpecifications :: Lens.Lens' DescribeInstanceCreditSpecificationsResponse (Prelude.Maybe [InstanceCreditSpecification])
describeInstanceCreditSpecificationsResponse_instanceCreditSpecifications :: Lens'
  DescribeInstanceCreditSpecificationsResponse
  (Maybe [InstanceCreditSpecification])
describeInstanceCreditSpecificationsResponse_instanceCreditSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecificationsResponse' {Maybe [InstanceCreditSpecification]
instanceCreditSpecifications :: Maybe [InstanceCreditSpecification]
$sel:instanceCreditSpecifications:DescribeInstanceCreditSpecificationsResponse' :: DescribeInstanceCreditSpecificationsResponse
-> Maybe [InstanceCreditSpecification]
instanceCreditSpecifications} -> Maybe [InstanceCreditSpecification]
instanceCreditSpecifications) (\s :: DescribeInstanceCreditSpecificationsResponse
s@DescribeInstanceCreditSpecificationsResponse' {} Maybe [InstanceCreditSpecification]
a -> DescribeInstanceCreditSpecificationsResponse
s {$sel:instanceCreditSpecifications:DescribeInstanceCreditSpecificationsResponse' :: Maybe [InstanceCreditSpecification]
instanceCreditSpecifications = Maybe [InstanceCreditSpecification]
a} :: DescribeInstanceCreditSpecificationsResponse) 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 token to use to retrieve the next page of results. This value is
-- @null@ when there are no more results to return.
describeInstanceCreditSpecificationsResponse_nextToken :: Lens.Lens' DescribeInstanceCreditSpecificationsResponse (Prelude.Maybe Prelude.Text)
describeInstanceCreditSpecificationsResponse_nextToken :: Lens' DescribeInstanceCreditSpecificationsResponse (Maybe Text)
describeInstanceCreditSpecificationsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeInstanceCreditSpecificationsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeInstanceCreditSpecificationsResponse' :: DescribeInstanceCreditSpecificationsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeInstanceCreditSpecificationsResponse
s@DescribeInstanceCreditSpecificationsResponse' {} Maybe Text
a -> DescribeInstanceCreditSpecificationsResponse
s {$sel:nextToken:DescribeInstanceCreditSpecificationsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeInstanceCreditSpecificationsResponse)

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

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