{-# 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.ModifyFpgaImageAttribute
-- 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 specified attribute of the specified Amazon FPGA Image
-- (AFI).
module Amazonka.EC2.ModifyFpgaImageAttribute
  ( -- * Creating a Request
    ModifyFpgaImageAttribute (..),
    newModifyFpgaImageAttribute,

    -- * Request Lenses
    modifyFpgaImageAttribute_attribute,
    modifyFpgaImageAttribute_description,
    modifyFpgaImageAttribute_dryRun,
    modifyFpgaImageAttribute_loadPermission,
    modifyFpgaImageAttribute_name,
    modifyFpgaImageAttribute_operationType,
    modifyFpgaImageAttribute_productCodes,
    modifyFpgaImageAttribute_userGroups,
    modifyFpgaImageAttribute_userIds,
    modifyFpgaImageAttribute_fpgaImageId,

    -- * Destructuring the Response
    ModifyFpgaImageAttributeResponse (..),
    newModifyFpgaImageAttributeResponse,

    -- * Response Lenses
    modifyFpgaImageAttributeResponse_fpgaImageAttribute,
    modifyFpgaImageAttributeResponse_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:/ 'newModifyFpgaImageAttribute' smart constructor.
data ModifyFpgaImageAttribute = ModifyFpgaImageAttribute'
  { -- | The name of the attribute.
    ModifyFpgaImageAttribute -> Maybe FpgaImageAttributeName
attribute :: Prelude.Maybe FpgaImageAttributeName,
    -- | A description for the AFI.
    ModifyFpgaImageAttribute -> Maybe Text
description :: 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@.
    ModifyFpgaImageAttribute -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The load permission for the AFI.
    ModifyFpgaImageAttribute -> Maybe LoadPermissionModifications
loadPermission :: Prelude.Maybe LoadPermissionModifications,
    -- | A name for the AFI.
    ModifyFpgaImageAttribute -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The operation type.
    ModifyFpgaImageAttribute -> Maybe OperationType
operationType :: Prelude.Maybe OperationType,
    -- | The product codes. After you add a product code to an AFI, it can\'t be
    -- removed. This parameter is valid only when modifying the @productCodes@
    -- attribute.
    ModifyFpgaImageAttribute -> Maybe [Text]
productCodes :: Prelude.Maybe [Prelude.Text],
    -- | The user groups. This parameter is valid only when modifying the
    -- @loadPermission@ attribute.
    ModifyFpgaImageAttribute -> Maybe [Text]
userGroups :: Prelude.Maybe [Prelude.Text],
    -- | The Amazon Web Services account IDs. This parameter is valid only when
    -- modifying the @loadPermission@ attribute.
    ModifyFpgaImageAttribute -> Maybe [Text]
userIds :: Prelude.Maybe [Prelude.Text],
    -- | The ID of the AFI.
    ModifyFpgaImageAttribute -> Text
fpgaImageId :: Prelude.Text
  }
  deriving (ModifyFpgaImageAttribute -> ModifyFpgaImageAttribute -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyFpgaImageAttribute -> ModifyFpgaImageAttribute -> Bool
$c/= :: ModifyFpgaImageAttribute -> ModifyFpgaImageAttribute -> Bool
== :: ModifyFpgaImageAttribute -> ModifyFpgaImageAttribute -> Bool
$c== :: ModifyFpgaImageAttribute -> ModifyFpgaImageAttribute -> Bool
Prelude.Eq, ReadPrec [ModifyFpgaImageAttribute]
ReadPrec ModifyFpgaImageAttribute
Int -> ReadS ModifyFpgaImageAttribute
ReadS [ModifyFpgaImageAttribute]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyFpgaImageAttribute]
$creadListPrec :: ReadPrec [ModifyFpgaImageAttribute]
readPrec :: ReadPrec ModifyFpgaImageAttribute
$creadPrec :: ReadPrec ModifyFpgaImageAttribute
readList :: ReadS [ModifyFpgaImageAttribute]
$creadList :: ReadS [ModifyFpgaImageAttribute]
readsPrec :: Int -> ReadS ModifyFpgaImageAttribute
$creadsPrec :: Int -> ReadS ModifyFpgaImageAttribute
Prelude.Read, Int -> ModifyFpgaImageAttribute -> ShowS
[ModifyFpgaImageAttribute] -> ShowS
ModifyFpgaImageAttribute -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyFpgaImageAttribute] -> ShowS
$cshowList :: [ModifyFpgaImageAttribute] -> ShowS
show :: ModifyFpgaImageAttribute -> String
$cshow :: ModifyFpgaImageAttribute -> String
showsPrec :: Int -> ModifyFpgaImageAttribute -> ShowS
$cshowsPrec :: Int -> ModifyFpgaImageAttribute -> ShowS
Prelude.Show, forall x.
Rep ModifyFpgaImageAttribute x -> ModifyFpgaImageAttribute
forall x.
ModifyFpgaImageAttribute -> Rep ModifyFpgaImageAttribute x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyFpgaImageAttribute x -> ModifyFpgaImageAttribute
$cfrom :: forall x.
ModifyFpgaImageAttribute -> Rep ModifyFpgaImageAttribute x
Prelude.Generic)

-- |
-- Create a value of 'ModifyFpgaImageAttribute' 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:
--
-- 'attribute', 'modifyFpgaImageAttribute_attribute' - The name of the attribute.
--
-- 'description', 'modifyFpgaImageAttribute_description' - A description for the AFI.
--
-- 'dryRun', 'modifyFpgaImageAttribute_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@.
--
-- 'loadPermission', 'modifyFpgaImageAttribute_loadPermission' - The load permission for the AFI.
--
-- 'name', 'modifyFpgaImageAttribute_name' - A name for the AFI.
--
-- 'operationType', 'modifyFpgaImageAttribute_operationType' - The operation type.
--
-- 'productCodes', 'modifyFpgaImageAttribute_productCodes' - The product codes. After you add a product code to an AFI, it can\'t be
-- removed. This parameter is valid only when modifying the @productCodes@
-- attribute.
--
-- 'userGroups', 'modifyFpgaImageAttribute_userGroups' - The user groups. This parameter is valid only when modifying the
-- @loadPermission@ attribute.
--
-- 'userIds', 'modifyFpgaImageAttribute_userIds' - The Amazon Web Services account IDs. This parameter is valid only when
-- modifying the @loadPermission@ attribute.
--
-- 'fpgaImageId', 'modifyFpgaImageAttribute_fpgaImageId' - The ID of the AFI.
newModifyFpgaImageAttribute ::
  -- | 'fpgaImageId'
  Prelude.Text ->
  ModifyFpgaImageAttribute
newModifyFpgaImageAttribute :: Text -> ModifyFpgaImageAttribute
newModifyFpgaImageAttribute Text
pFpgaImageId_ =
  ModifyFpgaImageAttribute'
    { $sel:attribute:ModifyFpgaImageAttribute' :: Maybe FpgaImageAttributeName
attribute =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:ModifyFpgaImageAttribute' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:ModifyFpgaImageAttribute' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:loadPermission:ModifyFpgaImageAttribute' :: Maybe LoadPermissionModifications
loadPermission = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ModifyFpgaImageAttribute' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:operationType:ModifyFpgaImageAttribute' :: Maybe OperationType
operationType = forall a. Maybe a
Prelude.Nothing,
      $sel:productCodes:ModifyFpgaImageAttribute' :: Maybe [Text]
productCodes = forall a. Maybe a
Prelude.Nothing,
      $sel:userGroups:ModifyFpgaImageAttribute' :: Maybe [Text]
userGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:userIds:ModifyFpgaImageAttribute' :: Maybe [Text]
userIds = forall a. Maybe a
Prelude.Nothing,
      $sel:fpgaImageId:ModifyFpgaImageAttribute' :: Text
fpgaImageId = Text
pFpgaImageId_
    }

-- | The name of the attribute.
modifyFpgaImageAttribute_attribute :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe FpgaImageAttributeName)
modifyFpgaImageAttribute_attribute :: Lens' ModifyFpgaImageAttribute (Maybe FpgaImageAttributeName)
modifyFpgaImageAttribute_attribute = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe FpgaImageAttributeName
attribute :: Maybe FpgaImageAttributeName
$sel:attribute:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe FpgaImageAttributeName
attribute} -> Maybe FpgaImageAttributeName
attribute) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe FpgaImageAttributeName
a -> ModifyFpgaImageAttribute
s {$sel:attribute:ModifyFpgaImageAttribute' :: Maybe FpgaImageAttributeName
attribute = Maybe FpgaImageAttributeName
a} :: ModifyFpgaImageAttribute)

-- | A description for the AFI.
modifyFpgaImageAttribute_description :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe Prelude.Text)
modifyFpgaImageAttribute_description :: Lens' ModifyFpgaImageAttribute (Maybe Text)
modifyFpgaImageAttribute_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe Text
description :: Maybe Text
$sel:description:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
description} -> Maybe Text
description) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe Text
a -> ModifyFpgaImageAttribute
s {$sel:description:ModifyFpgaImageAttribute' :: Maybe Text
description = Maybe Text
a} :: ModifyFpgaImageAttribute)

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

-- | The load permission for the AFI.
modifyFpgaImageAttribute_loadPermission :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe LoadPermissionModifications)
modifyFpgaImageAttribute_loadPermission :: Lens' ModifyFpgaImageAttribute (Maybe LoadPermissionModifications)
modifyFpgaImageAttribute_loadPermission = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe LoadPermissionModifications
loadPermission :: Maybe LoadPermissionModifications
$sel:loadPermission:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe LoadPermissionModifications
loadPermission} -> Maybe LoadPermissionModifications
loadPermission) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe LoadPermissionModifications
a -> ModifyFpgaImageAttribute
s {$sel:loadPermission:ModifyFpgaImageAttribute' :: Maybe LoadPermissionModifications
loadPermission = Maybe LoadPermissionModifications
a} :: ModifyFpgaImageAttribute)

-- | A name for the AFI.
modifyFpgaImageAttribute_name :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe Prelude.Text)
modifyFpgaImageAttribute_name :: Lens' ModifyFpgaImageAttribute (Maybe Text)
modifyFpgaImageAttribute_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe Text
name :: Maybe Text
$sel:name:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
name} -> Maybe Text
name) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe Text
a -> ModifyFpgaImageAttribute
s {$sel:name:ModifyFpgaImageAttribute' :: Maybe Text
name = Maybe Text
a} :: ModifyFpgaImageAttribute)

-- | The operation type.
modifyFpgaImageAttribute_operationType :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe OperationType)
modifyFpgaImageAttribute_operationType :: Lens' ModifyFpgaImageAttribute (Maybe OperationType)
modifyFpgaImageAttribute_operationType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe OperationType
operationType :: Maybe OperationType
$sel:operationType:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe OperationType
operationType} -> Maybe OperationType
operationType) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe OperationType
a -> ModifyFpgaImageAttribute
s {$sel:operationType:ModifyFpgaImageAttribute' :: Maybe OperationType
operationType = Maybe OperationType
a} :: ModifyFpgaImageAttribute)

-- | The product codes. After you add a product code to an AFI, it can\'t be
-- removed. This parameter is valid only when modifying the @productCodes@
-- attribute.
modifyFpgaImageAttribute_productCodes :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe [Prelude.Text])
modifyFpgaImageAttribute_productCodes :: Lens' ModifyFpgaImageAttribute (Maybe [Text])
modifyFpgaImageAttribute_productCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe [Text]
productCodes :: Maybe [Text]
$sel:productCodes:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
productCodes} -> Maybe [Text]
productCodes) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe [Text]
a -> ModifyFpgaImageAttribute
s {$sel:productCodes:ModifyFpgaImageAttribute' :: Maybe [Text]
productCodes = Maybe [Text]
a} :: ModifyFpgaImageAttribute) 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 user groups. This parameter is valid only when modifying the
-- @loadPermission@ attribute.
modifyFpgaImageAttribute_userGroups :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe [Prelude.Text])
modifyFpgaImageAttribute_userGroups :: Lens' ModifyFpgaImageAttribute (Maybe [Text])
modifyFpgaImageAttribute_userGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe [Text]
userGroups :: Maybe [Text]
$sel:userGroups:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
userGroups} -> Maybe [Text]
userGroups) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe [Text]
a -> ModifyFpgaImageAttribute
s {$sel:userGroups:ModifyFpgaImageAttribute' :: Maybe [Text]
userGroups = Maybe [Text]
a} :: ModifyFpgaImageAttribute) 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 Amazon Web Services account IDs. This parameter is valid only when
-- modifying the @loadPermission@ attribute.
modifyFpgaImageAttribute_userIds :: Lens.Lens' ModifyFpgaImageAttribute (Prelude.Maybe [Prelude.Text])
modifyFpgaImageAttribute_userIds :: Lens' ModifyFpgaImageAttribute (Maybe [Text])
modifyFpgaImageAttribute_userIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Maybe [Text]
userIds :: Maybe [Text]
$sel:userIds:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
userIds} -> Maybe [Text]
userIds) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Maybe [Text]
a -> ModifyFpgaImageAttribute
s {$sel:userIds:ModifyFpgaImageAttribute' :: Maybe [Text]
userIds = Maybe [Text]
a} :: ModifyFpgaImageAttribute) 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 ID of the AFI.
modifyFpgaImageAttribute_fpgaImageId :: Lens.Lens' ModifyFpgaImageAttribute Prelude.Text
modifyFpgaImageAttribute_fpgaImageId :: Lens' ModifyFpgaImageAttribute Text
modifyFpgaImageAttribute_fpgaImageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttribute' {Text
fpgaImageId :: Text
$sel:fpgaImageId:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Text
fpgaImageId} -> Text
fpgaImageId) (\s :: ModifyFpgaImageAttribute
s@ModifyFpgaImageAttribute' {} Text
a -> ModifyFpgaImageAttribute
s {$sel:fpgaImageId:ModifyFpgaImageAttribute' :: Text
fpgaImageId = Text
a} :: ModifyFpgaImageAttribute)

instance Core.AWSRequest ModifyFpgaImageAttribute where
  type
    AWSResponse ModifyFpgaImageAttribute =
      ModifyFpgaImageAttributeResponse
  request :: (Service -> Service)
-> ModifyFpgaImageAttribute -> Request ModifyFpgaImageAttribute
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 ModifyFpgaImageAttribute
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ModifyFpgaImageAttribute)))
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 FpgaImageAttribute -> Int -> ModifyFpgaImageAttributeResponse
ModifyFpgaImageAttributeResponse'
            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
"fpgaImageAttribute")
            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 ModifyFpgaImageAttribute where
  hashWithSalt :: Int -> ModifyFpgaImageAttribute -> Int
hashWithSalt Int
_salt ModifyFpgaImageAttribute' {Maybe Bool
Maybe [Text]
Maybe Text
Maybe FpgaImageAttributeName
Maybe OperationType
Maybe LoadPermissionModifications
Text
fpgaImageId :: Text
userIds :: Maybe [Text]
userGroups :: Maybe [Text]
productCodes :: Maybe [Text]
operationType :: Maybe OperationType
name :: Maybe Text
loadPermission :: Maybe LoadPermissionModifications
dryRun :: Maybe Bool
description :: Maybe Text
attribute :: Maybe FpgaImageAttributeName
$sel:fpgaImageId:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Text
$sel:userIds:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:userGroups:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:productCodes:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:operationType:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe OperationType
$sel:name:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
$sel:loadPermission:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe LoadPermissionModifications
$sel:dryRun:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Bool
$sel:description:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
$sel:attribute:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe FpgaImageAttributeName
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FpgaImageAttributeName
attribute
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LoadPermissionModifications
loadPermission
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OperationType
operationType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
productCodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
userGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
userIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fpgaImageId

instance Prelude.NFData ModifyFpgaImageAttribute where
  rnf :: ModifyFpgaImageAttribute -> ()
rnf ModifyFpgaImageAttribute' {Maybe Bool
Maybe [Text]
Maybe Text
Maybe FpgaImageAttributeName
Maybe OperationType
Maybe LoadPermissionModifications
Text
fpgaImageId :: Text
userIds :: Maybe [Text]
userGroups :: Maybe [Text]
productCodes :: Maybe [Text]
operationType :: Maybe OperationType
name :: Maybe Text
loadPermission :: Maybe LoadPermissionModifications
dryRun :: Maybe Bool
description :: Maybe Text
attribute :: Maybe FpgaImageAttributeName
$sel:fpgaImageId:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Text
$sel:userIds:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:userGroups:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:productCodes:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:operationType:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe OperationType
$sel:name:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
$sel:loadPermission:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe LoadPermissionModifications
$sel:dryRun:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Bool
$sel:description:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
$sel:attribute:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe FpgaImageAttributeName
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FpgaImageAttributeName
attribute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      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 Maybe LoadPermissionModifications
loadPermission
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OperationType
operationType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
productCodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
userGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
userIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fpgaImageId

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

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

instance Data.ToQuery ModifyFpgaImageAttribute where
  toQuery :: ModifyFpgaImageAttribute -> QueryString
toQuery ModifyFpgaImageAttribute' {Maybe Bool
Maybe [Text]
Maybe Text
Maybe FpgaImageAttributeName
Maybe OperationType
Maybe LoadPermissionModifications
Text
fpgaImageId :: Text
userIds :: Maybe [Text]
userGroups :: Maybe [Text]
productCodes :: Maybe [Text]
operationType :: Maybe OperationType
name :: Maybe Text
loadPermission :: Maybe LoadPermissionModifications
dryRun :: Maybe Bool
description :: Maybe Text
attribute :: Maybe FpgaImageAttributeName
$sel:fpgaImageId:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Text
$sel:userIds:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:userGroups:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:productCodes:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe [Text]
$sel:operationType:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe OperationType
$sel:name:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
$sel:loadPermission:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe LoadPermissionModifications
$sel:dryRun:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Bool
$sel:description:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe Text
$sel:attribute:ModifyFpgaImageAttribute' :: ModifyFpgaImageAttribute -> Maybe FpgaImageAttributeName
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ModifyFpgaImageAttribute" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"Attribute" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe FpgaImageAttributeName
attribute,
        ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"LoadPermission" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe LoadPermissionModifications
loadPermission,
        ByteString
"Name" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
name,
        ByteString
"OperationType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe OperationType
operationType,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ProductCode"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
productCodes
          ),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"UserGroup"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
userGroups
          ),
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          (forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"UserId" forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
userIds),
        ByteString
"FpgaImageId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
fpgaImageId
      ]

-- | /See:/ 'newModifyFpgaImageAttributeResponse' smart constructor.
data ModifyFpgaImageAttributeResponse = ModifyFpgaImageAttributeResponse'
  { -- | Information about the attribute.
    ModifyFpgaImageAttributeResponse -> Maybe FpgaImageAttribute
fpgaImageAttribute :: Prelude.Maybe FpgaImageAttribute,
    -- | The response's http status code.
    ModifyFpgaImageAttributeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifyFpgaImageAttributeResponse
-> ModifyFpgaImageAttributeResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifyFpgaImageAttributeResponse
-> ModifyFpgaImageAttributeResponse -> Bool
$c/= :: ModifyFpgaImageAttributeResponse
-> ModifyFpgaImageAttributeResponse -> Bool
== :: ModifyFpgaImageAttributeResponse
-> ModifyFpgaImageAttributeResponse -> Bool
$c== :: ModifyFpgaImageAttributeResponse
-> ModifyFpgaImageAttributeResponse -> Bool
Prelude.Eq, ReadPrec [ModifyFpgaImageAttributeResponse]
ReadPrec ModifyFpgaImageAttributeResponse
Int -> ReadS ModifyFpgaImageAttributeResponse
ReadS [ModifyFpgaImageAttributeResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifyFpgaImageAttributeResponse]
$creadListPrec :: ReadPrec [ModifyFpgaImageAttributeResponse]
readPrec :: ReadPrec ModifyFpgaImageAttributeResponse
$creadPrec :: ReadPrec ModifyFpgaImageAttributeResponse
readList :: ReadS [ModifyFpgaImageAttributeResponse]
$creadList :: ReadS [ModifyFpgaImageAttributeResponse]
readsPrec :: Int -> ReadS ModifyFpgaImageAttributeResponse
$creadsPrec :: Int -> ReadS ModifyFpgaImageAttributeResponse
Prelude.Read, Int -> ModifyFpgaImageAttributeResponse -> ShowS
[ModifyFpgaImageAttributeResponse] -> ShowS
ModifyFpgaImageAttributeResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifyFpgaImageAttributeResponse] -> ShowS
$cshowList :: [ModifyFpgaImageAttributeResponse] -> ShowS
show :: ModifyFpgaImageAttributeResponse -> String
$cshow :: ModifyFpgaImageAttributeResponse -> String
showsPrec :: Int -> ModifyFpgaImageAttributeResponse -> ShowS
$cshowsPrec :: Int -> ModifyFpgaImageAttributeResponse -> ShowS
Prelude.Show, forall x.
Rep ModifyFpgaImageAttributeResponse x
-> ModifyFpgaImageAttributeResponse
forall x.
ModifyFpgaImageAttributeResponse
-> Rep ModifyFpgaImageAttributeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifyFpgaImageAttributeResponse x
-> ModifyFpgaImageAttributeResponse
$cfrom :: forall x.
ModifyFpgaImageAttributeResponse
-> Rep ModifyFpgaImageAttributeResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifyFpgaImageAttributeResponse' 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:
--
-- 'fpgaImageAttribute', 'modifyFpgaImageAttributeResponse_fpgaImageAttribute' - Information about the attribute.
--
-- 'httpStatus', 'modifyFpgaImageAttributeResponse_httpStatus' - The response's http status code.
newModifyFpgaImageAttributeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifyFpgaImageAttributeResponse
newModifyFpgaImageAttributeResponse :: Int -> ModifyFpgaImageAttributeResponse
newModifyFpgaImageAttributeResponse Int
pHttpStatus_ =
  ModifyFpgaImageAttributeResponse'
    { $sel:fpgaImageAttribute:ModifyFpgaImageAttributeResponse' :: Maybe FpgaImageAttribute
fpgaImageAttribute =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ModifyFpgaImageAttributeResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the attribute.
modifyFpgaImageAttributeResponse_fpgaImageAttribute :: Lens.Lens' ModifyFpgaImageAttributeResponse (Prelude.Maybe FpgaImageAttribute)
modifyFpgaImageAttributeResponse_fpgaImageAttribute :: Lens' ModifyFpgaImageAttributeResponse (Maybe FpgaImageAttribute)
modifyFpgaImageAttributeResponse_fpgaImageAttribute = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifyFpgaImageAttributeResponse' {Maybe FpgaImageAttribute
fpgaImageAttribute :: Maybe FpgaImageAttribute
$sel:fpgaImageAttribute:ModifyFpgaImageAttributeResponse' :: ModifyFpgaImageAttributeResponse -> Maybe FpgaImageAttribute
fpgaImageAttribute} -> Maybe FpgaImageAttribute
fpgaImageAttribute) (\s :: ModifyFpgaImageAttributeResponse
s@ModifyFpgaImageAttributeResponse' {} Maybe FpgaImageAttribute
a -> ModifyFpgaImageAttributeResponse
s {$sel:fpgaImageAttribute:ModifyFpgaImageAttributeResponse' :: Maybe FpgaImageAttribute
fpgaImageAttribute = Maybe FpgaImageAttribute
a} :: ModifyFpgaImageAttributeResponse)

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

instance
  Prelude.NFData
    ModifyFpgaImageAttributeResponse
  where
  rnf :: ModifyFpgaImageAttributeResponse -> ()
rnf ModifyFpgaImageAttributeResponse' {Int
Maybe FpgaImageAttribute
httpStatus :: Int
fpgaImageAttribute :: Maybe FpgaImageAttribute
$sel:httpStatus:ModifyFpgaImageAttributeResponse' :: ModifyFpgaImageAttributeResponse -> Int
$sel:fpgaImageAttribute:ModifyFpgaImageAttributeResponse' :: ModifyFpgaImageAttributeResponse -> Maybe FpgaImageAttribute
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FpgaImageAttribute
fpgaImageAttribute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus