{-# 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.ModifyInstanceCreditSpecification
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies the credit option for CPU usage on a running or stopped
-- burstable performance instance. The credit options are @standard@ and
-- @unlimited@.
--
-- 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/.
module Amazonka.EC2.ModifyInstanceCreditSpecification
  ( -- * Creating a Request
    ModifyInstanceCreditSpecification (..),
    newModifyInstanceCreditSpecification,

    -- * Request Lenses
    modifyInstanceCreditSpecification_clientToken,
    modifyInstanceCreditSpecification_dryRun,
    modifyInstanceCreditSpecification_instanceCreditSpecifications,

    -- * Destructuring the Response
    ModifyInstanceCreditSpecificationResponse (..),
    newModifyInstanceCreditSpecificationResponse,

    -- * Response Lenses
    modifyInstanceCreditSpecificationResponse_successfulInstanceCreditSpecifications,
    modifyInstanceCreditSpecificationResponse_unsuccessfulInstanceCreditSpecifications,
    modifyInstanceCreditSpecificationResponse_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:/ 'newModifyInstanceCreditSpecification' smart constructor.
data ModifyInstanceCreditSpecification = ModifyInstanceCreditSpecification'
  { -- | A unique, case-sensitive token that you provide to ensure idempotency of
    -- your modification request. For more information, see
    -- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
    ModifyInstanceCreditSpecification -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | 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@.
    ModifyInstanceCreditSpecification -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | Information about the credit option for CPU usage.
    ModifyInstanceCreditSpecification
-> [InstanceCreditSpecificationRequest]
instanceCreditSpecifications :: [InstanceCreditSpecificationRequest]
  }
  deriving (ModifyInstanceCreditSpecification
-> ModifyInstanceCreditSpecification -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyInstanceCreditSpecification
-> ModifyInstanceCreditSpecification -> Bool
$c/= :: ModifyInstanceCreditSpecification
-> ModifyInstanceCreditSpecification -> Bool
== :: ModifyInstanceCreditSpecification
-> ModifyInstanceCreditSpecification -> Bool
$c== :: ModifyInstanceCreditSpecification
-> ModifyInstanceCreditSpecification -> Bool
Prelude.Eq, ReadPrec [ModifyInstanceCreditSpecification]
ReadPrec ModifyInstanceCreditSpecification
Int -> ReadS ModifyInstanceCreditSpecification
ReadS [ModifyInstanceCreditSpecification]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyInstanceCreditSpecification]
$creadListPrec :: ReadPrec [ModifyInstanceCreditSpecification]
readPrec :: ReadPrec ModifyInstanceCreditSpecification
$creadPrec :: ReadPrec ModifyInstanceCreditSpecification
readList :: ReadS [ModifyInstanceCreditSpecification]
$creadList :: ReadS [ModifyInstanceCreditSpecification]
readsPrec :: Int -> ReadS ModifyInstanceCreditSpecification
$creadsPrec :: Int -> ReadS ModifyInstanceCreditSpecification
Prelude.Read, Int -> ModifyInstanceCreditSpecification -> ShowS
[ModifyInstanceCreditSpecification] -> ShowS
ModifyInstanceCreditSpecification -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyInstanceCreditSpecification] -> ShowS
$cshowList :: [ModifyInstanceCreditSpecification] -> ShowS
show :: ModifyInstanceCreditSpecification -> String
$cshow :: ModifyInstanceCreditSpecification -> String
showsPrec :: Int -> ModifyInstanceCreditSpecification -> ShowS
$cshowsPrec :: Int -> ModifyInstanceCreditSpecification -> ShowS
Prelude.Show, forall x.
Rep ModifyInstanceCreditSpecification x
-> ModifyInstanceCreditSpecification
forall x.
ModifyInstanceCreditSpecification
-> Rep ModifyInstanceCreditSpecification x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyInstanceCreditSpecification x
-> ModifyInstanceCreditSpecification
$cfrom :: forall x.
ModifyInstanceCreditSpecification
-> Rep ModifyInstanceCreditSpecification x
Prelude.Generic)

-- |
-- Create a value of 'ModifyInstanceCreditSpecification' 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:
--
-- 'clientToken', 'modifyInstanceCreditSpecification_clientToken' - A unique, case-sensitive token that you provide to ensure idempotency of
-- your modification request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
--
-- 'dryRun', 'modifyInstanceCreditSpecification_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@.
--
-- 'instanceCreditSpecifications', 'modifyInstanceCreditSpecification_instanceCreditSpecifications' - Information about the credit option for CPU usage.
newModifyInstanceCreditSpecification ::
  ModifyInstanceCreditSpecification
newModifyInstanceCreditSpecification :: ModifyInstanceCreditSpecification
newModifyInstanceCreditSpecification =
  ModifyInstanceCreditSpecification'
    { $sel:clientToken:ModifyInstanceCreditSpecification' :: Maybe Text
clientToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:ModifyInstanceCreditSpecification' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceCreditSpecifications:ModifyInstanceCreditSpecification' :: [InstanceCreditSpecificationRequest]
instanceCreditSpecifications =
        forall a. Monoid a => a
Prelude.mempty
    }

-- | A unique, case-sensitive token that you provide to ensure idempotency of
-- your modification request. For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html Ensuring Idempotency>.
modifyInstanceCreditSpecification_clientToken :: Lens.Lens' ModifyInstanceCreditSpecification (Prelude.Maybe Prelude.Text)
modifyInstanceCreditSpecification_clientToken :: Lens' ModifyInstanceCreditSpecification (Maybe Text)
modifyInstanceCreditSpecification_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyInstanceCreditSpecification' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: ModifyInstanceCreditSpecification
s@ModifyInstanceCreditSpecification' {} Maybe Text
a -> ModifyInstanceCreditSpecification
s {$sel:clientToken:ModifyInstanceCreditSpecification' :: Maybe Text
clientToken = Maybe Text
a} :: ModifyInstanceCreditSpecification)

-- | 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@.
modifyInstanceCreditSpecification_dryRun :: Lens.Lens' ModifyInstanceCreditSpecification (Prelude.Maybe Prelude.Bool)
modifyInstanceCreditSpecification_dryRun :: Lens' ModifyInstanceCreditSpecification (Maybe Bool)
modifyInstanceCreditSpecification_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyInstanceCreditSpecification' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: ModifyInstanceCreditSpecification
s@ModifyInstanceCreditSpecification' {} Maybe Bool
a -> ModifyInstanceCreditSpecification
s {$sel:dryRun:ModifyInstanceCreditSpecification' :: Maybe Bool
dryRun = Maybe Bool
a} :: ModifyInstanceCreditSpecification)

-- | Information about the credit option for CPU usage.
modifyInstanceCreditSpecification_instanceCreditSpecifications :: Lens.Lens' ModifyInstanceCreditSpecification [InstanceCreditSpecificationRequest]
modifyInstanceCreditSpecification_instanceCreditSpecifications :: Lens'
  ModifyInstanceCreditSpecification
  [InstanceCreditSpecificationRequest]
modifyInstanceCreditSpecification_instanceCreditSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyInstanceCreditSpecification' {[InstanceCreditSpecificationRequest]
instanceCreditSpecifications :: [InstanceCreditSpecificationRequest]
$sel:instanceCreditSpecifications:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification
-> [InstanceCreditSpecificationRequest]
instanceCreditSpecifications} -> [InstanceCreditSpecificationRequest]
instanceCreditSpecifications) (\s :: ModifyInstanceCreditSpecification
s@ModifyInstanceCreditSpecification' {} [InstanceCreditSpecificationRequest]
a -> ModifyInstanceCreditSpecification
s {$sel:instanceCreditSpecifications:ModifyInstanceCreditSpecification' :: [InstanceCreditSpecificationRequest]
instanceCreditSpecifications = [InstanceCreditSpecificationRequest]
a} :: ModifyInstanceCreditSpecification) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSRequest
    ModifyInstanceCreditSpecification
  where
  type
    AWSResponse ModifyInstanceCreditSpecification =
      ModifyInstanceCreditSpecificationResponse
  request :: (Service -> Service)
-> ModifyInstanceCreditSpecification
-> Request ModifyInstanceCreditSpecification
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 ModifyInstanceCreditSpecification
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ModifyInstanceCreditSpecification)))
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 [SuccessfulInstanceCreditSpecificationItem]
-> Maybe [UnsuccessfulInstanceCreditSpecificationItem]
-> Int
-> ModifyInstanceCreditSpecificationResponse
ModifyInstanceCreditSpecificationResponse'
            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
"successfulInstanceCreditSpecificationSet"
                            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
"unsuccessfulInstanceCreditSpecificationSet"
                            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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    ModifyInstanceCreditSpecification
  where
  hashWithSalt :: Int -> ModifyInstanceCreditSpecification -> Int
hashWithSalt
    Int
_salt
    ModifyInstanceCreditSpecification' {[InstanceCreditSpecificationRequest]
Maybe Bool
Maybe Text
instanceCreditSpecifications :: [InstanceCreditSpecificationRequest]
dryRun :: Maybe Bool
clientToken :: Maybe Text
$sel:instanceCreditSpecifications:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification
-> [InstanceCreditSpecificationRequest]
$sel:dryRun:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Bool
$sel:clientToken:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [InstanceCreditSpecificationRequest]
instanceCreditSpecifications

instance
  Prelude.NFData
    ModifyInstanceCreditSpecification
  where
  rnf :: ModifyInstanceCreditSpecification -> ()
rnf ModifyInstanceCreditSpecification' {[InstanceCreditSpecificationRequest]
Maybe Bool
Maybe Text
instanceCreditSpecifications :: [InstanceCreditSpecificationRequest]
dryRun :: Maybe Bool
clientToken :: Maybe Text
$sel:instanceCreditSpecifications:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification
-> [InstanceCreditSpecificationRequest]
$sel:dryRun:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Bool
$sel:clientToken:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 [InstanceCreditSpecificationRequest]
instanceCreditSpecifications

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

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

instance
  Data.ToQuery
    ModifyInstanceCreditSpecification
  where
  toQuery :: ModifyInstanceCreditSpecification -> QueryString
toQuery ModifyInstanceCreditSpecification' {[InstanceCreditSpecificationRequest]
Maybe Bool
Maybe Text
instanceCreditSpecifications :: [InstanceCreditSpecificationRequest]
dryRun :: Maybe Bool
clientToken :: Maybe Text
$sel:instanceCreditSpecifications:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification
-> [InstanceCreditSpecificationRequest]
$sel:dryRun:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Bool
$sel:clientToken:ModifyInstanceCreditSpecification' :: ModifyInstanceCreditSpecification -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"ModifyInstanceCreditSpecification" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"ClientToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
clientToken,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList
          ByteString
"InstanceCreditSpecification"
          [InstanceCreditSpecificationRequest]
instanceCreditSpecifications
      ]

-- | /See:/ 'newModifyInstanceCreditSpecificationResponse' smart constructor.
data ModifyInstanceCreditSpecificationResponse = ModifyInstanceCreditSpecificationResponse'
  { -- | Information about the instances whose credit option for CPU usage was
    -- successfully modified.
    ModifyInstanceCreditSpecificationResponse
-> Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications :: Prelude.Maybe [SuccessfulInstanceCreditSpecificationItem],
    -- | Information about the instances whose credit option for CPU usage was
    -- not modified.
    ModifyInstanceCreditSpecificationResponse
-> Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications :: Prelude.Maybe [UnsuccessfulInstanceCreditSpecificationItem],
    -- | The response's http status code.
    ModifyInstanceCreditSpecificationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyInstanceCreditSpecificationResponse
-> ModifyInstanceCreditSpecificationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyInstanceCreditSpecificationResponse
-> ModifyInstanceCreditSpecificationResponse -> Bool
$c/= :: ModifyInstanceCreditSpecificationResponse
-> ModifyInstanceCreditSpecificationResponse -> Bool
== :: ModifyInstanceCreditSpecificationResponse
-> ModifyInstanceCreditSpecificationResponse -> Bool
$c== :: ModifyInstanceCreditSpecificationResponse
-> ModifyInstanceCreditSpecificationResponse -> Bool
Prelude.Eq, ReadPrec [ModifyInstanceCreditSpecificationResponse]
ReadPrec ModifyInstanceCreditSpecificationResponse
Int -> ReadS ModifyInstanceCreditSpecificationResponse
ReadS [ModifyInstanceCreditSpecificationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyInstanceCreditSpecificationResponse]
$creadListPrec :: ReadPrec [ModifyInstanceCreditSpecificationResponse]
readPrec :: ReadPrec ModifyInstanceCreditSpecificationResponse
$creadPrec :: ReadPrec ModifyInstanceCreditSpecificationResponse
readList :: ReadS [ModifyInstanceCreditSpecificationResponse]
$creadList :: ReadS [ModifyInstanceCreditSpecificationResponse]
readsPrec :: Int -> ReadS ModifyInstanceCreditSpecificationResponse
$creadsPrec :: Int -> ReadS ModifyInstanceCreditSpecificationResponse
Prelude.Read, Int -> ModifyInstanceCreditSpecificationResponse -> ShowS
[ModifyInstanceCreditSpecificationResponse] -> ShowS
ModifyInstanceCreditSpecificationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyInstanceCreditSpecificationResponse] -> ShowS
$cshowList :: [ModifyInstanceCreditSpecificationResponse] -> ShowS
show :: ModifyInstanceCreditSpecificationResponse -> String
$cshow :: ModifyInstanceCreditSpecificationResponse -> String
showsPrec :: Int -> ModifyInstanceCreditSpecificationResponse -> ShowS
$cshowsPrec :: Int -> ModifyInstanceCreditSpecificationResponse -> ShowS
Prelude.Show, forall x.
Rep ModifyInstanceCreditSpecificationResponse x
-> ModifyInstanceCreditSpecificationResponse
forall x.
ModifyInstanceCreditSpecificationResponse
-> Rep ModifyInstanceCreditSpecificationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyInstanceCreditSpecificationResponse x
-> ModifyInstanceCreditSpecificationResponse
$cfrom :: forall x.
ModifyInstanceCreditSpecificationResponse
-> Rep ModifyInstanceCreditSpecificationResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyInstanceCreditSpecificationResponse' 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:
--
-- 'successfulInstanceCreditSpecifications', 'modifyInstanceCreditSpecificationResponse_successfulInstanceCreditSpecifications' - Information about the instances whose credit option for CPU usage was
-- successfully modified.
--
-- 'unsuccessfulInstanceCreditSpecifications', 'modifyInstanceCreditSpecificationResponse_unsuccessfulInstanceCreditSpecifications' - Information about the instances whose credit option for CPU usage was
-- not modified.
--
-- 'httpStatus', 'modifyInstanceCreditSpecificationResponse_httpStatus' - The response's http status code.
newModifyInstanceCreditSpecificationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyInstanceCreditSpecificationResponse
newModifyInstanceCreditSpecificationResponse :: Int -> ModifyInstanceCreditSpecificationResponse
newModifyInstanceCreditSpecificationResponse
  Int
pHttpStatus_ =
    ModifyInstanceCreditSpecificationResponse'
      { $sel:successfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications =
          forall a. Maybe a
Prelude.Nothing,
        $sel:unsuccessfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ModifyInstanceCreditSpecificationResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Information about the instances whose credit option for CPU usage was
-- successfully modified.
modifyInstanceCreditSpecificationResponse_successfulInstanceCreditSpecifications :: Lens.Lens' ModifyInstanceCreditSpecificationResponse (Prelude.Maybe [SuccessfulInstanceCreditSpecificationItem])
modifyInstanceCreditSpecificationResponse_successfulInstanceCreditSpecifications :: Lens'
  ModifyInstanceCreditSpecificationResponse
  (Maybe [SuccessfulInstanceCreditSpecificationItem])
modifyInstanceCreditSpecificationResponse_successfulInstanceCreditSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyInstanceCreditSpecificationResponse' {Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications :: Maybe [SuccessfulInstanceCreditSpecificationItem]
$sel:successfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: ModifyInstanceCreditSpecificationResponse
-> Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications} -> Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications) (\s :: ModifyInstanceCreditSpecificationResponse
s@ModifyInstanceCreditSpecificationResponse' {} Maybe [SuccessfulInstanceCreditSpecificationItem]
a -> ModifyInstanceCreditSpecificationResponse
s {$sel:successfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications = Maybe [SuccessfulInstanceCreditSpecificationItem]
a} :: ModifyInstanceCreditSpecificationResponse) 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

-- | Information about the instances whose credit option for CPU usage was
-- not modified.
modifyInstanceCreditSpecificationResponse_unsuccessfulInstanceCreditSpecifications :: Lens.Lens' ModifyInstanceCreditSpecificationResponse (Prelude.Maybe [UnsuccessfulInstanceCreditSpecificationItem])
modifyInstanceCreditSpecificationResponse_unsuccessfulInstanceCreditSpecifications :: Lens'
  ModifyInstanceCreditSpecificationResponse
  (Maybe [UnsuccessfulInstanceCreditSpecificationItem])
modifyInstanceCreditSpecificationResponse_unsuccessfulInstanceCreditSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyInstanceCreditSpecificationResponse' {Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications :: Maybe [UnsuccessfulInstanceCreditSpecificationItem]
$sel:unsuccessfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: ModifyInstanceCreditSpecificationResponse
-> Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications} -> Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications) (\s :: ModifyInstanceCreditSpecificationResponse
s@ModifyInstanceCreditSpecificationResponse' {} Maybe [UnsuccessfulInstanceCreditSpecificationItem]
a -> ModifyInstanceCreditSpecificationResponse
s {$sel:unsuccessfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications = Maybe [UnsuccessfulInstanceCreditSpecificationItem]
a} :: ModifyInstanceCreditSpecificationResponse) 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.
modifyInstanceCreditSpecificationResponse_httpStatus :: Lens.Lens' ModifyInstanceCreditSpecificationResponse Prelude.Int
modifyInstanceCreditSpecificationResponse_httpStatus :: Lens' ModifyInstanceCreditSpecificationResponse Int
modifyInstanceCreditSpecificationResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyInstanceCreditSpecificationResponse' {Int
httpStatus :: Int
$sel:httpStatus:ModifyInstanceCreditSpecificationResponse' :: ModifyInstanceCreditSpecificationResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ModifyInstanceCreditSpecificationResponse
s@ModifyInstanceCreditSpecificationResponse' {} Int
a -> ModifyInstanceCreditSpecificationResponse
s {$sel:httpStatus:ModifyInstanceCreditSpecificationResponse' :: Int
httpStatus = Int
a} :: ModifyInstanceCreditSpecificationResponse)

instance
  Prelude.NFData
    ModifyInstanceCreditSpecificationResponse
  where
  rnf :: ModifyInstanceCreditSpecificationResponse -> ()
rnf ModifyInstanceCreditSpecificationResponse' {Int
Maybe [SuccessfulInstanceCreditSpecificationItem]
Maybe [UnsuccessfulInstanceCreditSpecificationItem]
httpStatus :: Int
unsuccessfulInstanceCreditSpecifications :: Maybe [UnsuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications :: Maybe [SuccessfulInstanceCreditSpecificationItem]
$sel:httpStatus:ModifyInstanceCreditSpecificationResponse' :: ModifyInstanceCreditSpecificationResponse -> Int
$sel:unsuccessfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: ModifyInstanceCreditSpecificationResponse
-> Maybe [UnsuccessfulInstanceCreditSpecificationItem]
$sel:successfulInstanceCreditSpecifications:ModifyInstanceCreditSpecificationResponse' :: ModifyInstanceCreditSpecificationResponse
-> Maybe [SuccessfulInstanceCreditSpecificationItem]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [SuccessfulInstanceCreditSpecificationItem]
successfulInstanceCreditSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [UnsuccessfulInstanceCreditSpecificationItem]
unsuccessfulInstanceCreditSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus