packages feed

amazonka-managedblockchain-2.0: gen/Amazonka/ManagedBlockChain/UpdateNode.hs

{-# 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.ManagedBlockChain.UpdateNode
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a node configuration with new parameters.
--
-- Applies only to Hyperledger Fabric.
module Amazonka.ManagedBlockChain.UpdateNode
  ( -- * Creating a Request
    UpdateNode (..),
    newUpdateNode,

    -- * Request Lenses
    updateNode_logPublishingConfiguration,
    updateNode_memberId,
    updateNode_networkId,
    updateNode_nodeId,

    -- * Destructuring the Response
    UpdateNodeResponse (..),
    newUpdateNodeResponse,

    -- * Response Lenses
    updateNodeResponse_httpStatus,
  )
where

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

-- | /See:/ 'newUpdateNode' smart constructor.
data UpdateNode = UpdateNode'
  { -- | Configuration properties for publishing to Amazon CloudWatch Logs.
    logPublishingConfiguration :: Prelude.Maybe NodeLogPublishingConfiguration,
    -- | The unique identifier of the member that owns the node.
    --
    -- Applies only to Hyperledger Fabric.
    memberId :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier of the network that the node is on.
    networkId :: Prelude.Text,
    -- | The unique identifier of the node.
    nodeId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateNode' 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:
--
-- 'logPublishingConfiguration', 'updateNode_logPublishingConfiguration' - Configuration properties for publishing to Amazon CloudWatch Logs.
--
-- 'memberId', 'updateNode_memberId' - The unique identifier of the member that owns the node.
--
-- Applies only to Hyperledger Fabric.
--
-- 'networkId', 'updateNode_networkId' - The unique identifier of the network that the node is on.
--
-- 'nodeId', 'updateNode_nodeId' - The unique identifier of the node.
newUpdateNode ::
  -- | 'networkId'
  Prelude.Text ->
  -- | 'nodeId'
  Prelude.Text ->
  UpdateNode
newUpdateNode pNetworkId_ pNodeId_ =
  UpdateNode'
    { logPublishingConfiguration =
        Prelude.Nothing,
      memberId = Prelude.Nothing,
      networkId = pNetworkId_,
      nodeId = pNodeId_
    }

-- | Configuration properties for publishing to Amazon CloudWatch Logs.
updateNode_logPublishingConfiguration :: Lens.Lens' UpdateNode (Prelude.Maybe NodeLogPublishingConfiguration)
updateNode_logPublishingConfiguration = Lens.lens (\UpdateNode' {logPublishingConfiguration} -> logPublishingConfiguration) (\s@UpdateNode' {} a -> s {logPublishingConfiguration = a} :: UpdateNode)

-- | The unique identifier of the member that owns the node.
--
-- Applies only to Hyperledger Fabric.
updateNode_memberId :: Lens.Lens' UpdateNode (Prelude.Maybe Prelude.Text)
updateNode_memberId = Lens.lens (\UpdateNode' {memberId} -> memberId) (\s@UpdateNode' {} a -> s {memberId = a} :: UpdateNode)

-- | The unique identifier of the network that the node is on.
updateNode_networkId :: Lens.Lens' UpdateNode Prelude.Text
updateNode_networkId = Lens.lens (\UpdateNode' {networkId} -> networkId) (\s@UpdateNode' {} a -> s {networkId = a} :: UpdateNode)

-- | The unique identifier of the node.
updateNode_nodeId :: Lens.Lens' UpdateNode Prelude.Text
updateNode_nodeId = Lens.lens (\UpdateNode' {nodeId} -> nodeId) (\s@UpdateNode' {} a -> s {nodeId = a} :: UpdateNode)

instance Core.AWSRequest UpdateNode where
  type AWSResponse UpdateNode = UpdateNodeResponse
  request overrides =
    Request.patchJSON (overrides defaultService)
  response =
    Response.receiveEmpty
      ( \s h x ->
          UpdateNodeResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable UpdateNode where
  hashWithSalt _salt UpdateNode' {..} =
    _salt
      `Prelude.hashWithSalt` logPublishingConfiguration
      `Prelude.hashWithSalt` memberId
      `Prelude.hashWithSalt` networkId
      `Prelude.hashWithSalt` nodeId

instance Prelude.NFData UpdateNode where
  rnf UpdateNode' {..} =
    Prelude.rnf logPublishingConfiguration
      `Prelude.seq` Prelude.rnf memberId
      `Prelude.seq` Prelude.rnf networkId
      `Prelude.seq` Prelude.rnf nodeId

instance Data.ToHeaders UpdateNode where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateNode where
  toJSON UpdateNode' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("LogPublishingConfiguration" Data..=)
              Prelude.<$> logPublishingConfiguration,
            ("MemberId" Data..=) Prelude.<$> memberId
          ]
      )

instance Data.ToPath UpdateNode where
  toPath UpdateNode' {..} =
    Prelude.mconcat
      [ "/networks/",
        Data.toBS networkId,
        "/nodes/",
        Data.toBS nodeId
      ]

instance Data.ToQuery UpdateNode where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newUpdateNodeResponse' smart constructor.
data UpdateNodeResponse = UpdateNodeResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateNodeResponse' 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:
--
-- 'httpStatus', 'updateNodeResponse_httpStatus' - The response's http status code.
newUpdateNodeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateNodeResponse
newUpdateNodeResponse pHttpStatus_ =
  UpdateNodeResponse' {httpStatus = pHttpStatus_}

-- | The response's http status code.
updateNodeResponse_httpStatus :: Lens.Lens' UpdateNodeResponse Prelude.Int
updateNodeResponse_httpStatus = Lens.lens (\UpdateNodeResponse' {httpStatus} -> httpStatus) (\s@UpdateNodeResponse' {} a -> s {httpStatus = a} :: UpdateNodeResponse)

instance Prelude.NFData UpdateNodeResponse where
  rnf UpdateNodeResponse' {..} = Prelude.rnf httpStatus