packages feed

amazonka-panorama-2.0: gen/Amazonka/Panorama/DescribeNode.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.Panorama.DescribeNode
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about a node.
module Amazonka.Panorama.DescribeNode
  ( -- * Creating a Request
    DescribeNode (..),
    newDescribeNode,

    -- * Request Lenses
    describeNode_ownerAccount,
    describeNode_nodeId,

    -- * Destructuring the Response
    DescribeNodeResponse (..),
    newDescribeNodeResponse,

    -- * Response Lenses
    describeNodeResponse_assetName,
    describeNodeResponse_packageArn,
    describeNodeResponse_httpStatus,
    describeNodeResponse_category,
    describeNodeResponse_createdTime,
    describeNodeResponse_description,
    describeNodeResponse_lastUpdatedTime,
    describeNodeResponse_name,
    describeNodeResponse_nodeId,
    describeNodeResponse_nodeInterface,
    describeNodeResponse_ownerAccount,
    describeNodeResponse_packageId,
    describeNodeResponse_packageName,
    describeNodeResponse_packageVersion,
    describeNodeResponse_patchVersion,
  )
where

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

-- | /See:/ 'newDescribeNode' smart constructor.
data DescribeNode = DescribeNode'
  { -- | The account ID of the node\'s owner.
    ownerAccount :: Prelude.Maybe Prelude.Text,
    -- | The node\'s ID.
    nodeId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeNode' 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:
--
-- 'ownerAccount', 'describeNode_ownerAccount' - The account ID of the node\'s owner.
--
-- 'nodeId', 'describeNode_nodeId' - The node\'s ID.
newDescribeNode ::
  -- | 'nodeId'
  Prelude.Text ->
  DescribeNode
newDescribeNode pNodeId_ =
  DescribeNode'
    { ownerAccount = Prelude.Nothing,
      nodeId = pNodeId_
    }

-- | The account ID of the node\'s owner.
describeNode_ownerAccount :: Lens.Lens' DescribeNode (Prelude.Maybe Prelude.Text)
describeNode_ownerAccount = Lens.lens (\DescribeNode' {ownerAccount} -> ownerAccount) (\s@DescribeNode' {} a -> s {ownerAccount = a} :: DescribeNode)

-- | The node\'s ID.
describeNode_nodeId :: Lens.Lens' DescribeNode Prelude.Text
describeNode_nodeId = Lens.lens (\DescribeNode' {nodeId} -> nodeId) (\s@DescribeNode' {} a -> s {nodeId = a} :: DescribeNode)

instance Core.AWSRequest DescribeNode where
  type AWSResponse DescribeNode = DescribeNodeResponse
  request overrides =
    Request.get (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DescribeNodeResponse'
            Prelude.<$> (x Data..?> "AssetName")
            Prelude.<*> (x Data..?> "PackageArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (x Data..:> "Category")
            Prelude.<*> (x Data..:> "CreatedTime")
            Prelude.<*> (x Data..:> "Description")
            Prelude.<*> (x Data..:> "LastUpdatedTime")
            Prelude.<*> (x Data..:> "Name")
            Prelude.<*> (x Data..:> "NodeId")
            Prelude.<*> (x Data..:> "NodeInterface")
            Prelude.<*> (x Data..:> "OwnerAccount")
            Prelude.<*> (x Data..:> "PackageId")
            Prelude.<*> (x Data..:> "PackageName")
            Prelude.<*> (x Data..:> "PackageVersion")
            Prelude.<*> (x Data..:> "PatchVersion")
      )

instance Prelude.Hashable DescribeNode where
  hashWithSalt _salt DescribeNode' {..} =
    _salt
      `Prelude.hashWithSalt` ownerAccount
      `Prelude.hashWithSalt` nodeId

instance Prelude.NFData DescribeNode where
  rnf DescribeNode' {..} =
    Prelude.rnf ownerAccount
      `Prelude.seq` Prelude.rnf nodeId

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

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

instance Data.ToQuery DescribeNode where
  toQuery DescribeNode' {..} =
    Prelude.mconcat
      ["OwnerAccount" Data.=: ownerAccount]

-- | /See:/ 'newDescribeNodeResponse' smart constructor.
data DescribeNodeResponse = DescribeNodeResponse'
  { -- | The node\'s asset name.
    assetName :: Prelude.Maybe Prelude.Text,
    -- | The node\'s ARN.
    packageArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | The node\'s category.
    category :: NodeCategory,
    -- | When the node was created.
    createdTime :: Data.POSIX,
    -- | The node\'s description.
    description :: Prelude.Text,
    -- | When the node was updated.
    lastUpdatedTime :: Data.POSIX,
    -- | The node\'s name.
    name :: Prelude.Text,
    -- | The node\'s ID.
    nodeId :: Prelude.Text,
    -- | The node\'s interface.
    nodeInterface :: NodeInterface,
    -- | The account ID of the node\'s owner.
    ownerAccount :: Prelude.Text,
    -- | The node\'s package ID.
    packageId :: Prelude.Text,
    -- | The node\'s package name.
    packageName :: Prelude.Text,
    -- | The node\'s package version.
    packageVersion :: Prelude.Text,
    -- | The node\'s patch version.
    patchVersion :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DescribeNodeResponse' 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:
--
-- 'assetName', 'describeNodeResponse_assetName' - The node\'s asset name.
--
-- 'packageArn', 'describeNodeResponse_packageArn' - The node\'s ARN.
--
-- 'httpStatus', 'describeNodeResponse_httpStatus' - The response's http status code.
--
-- 'category', 'describeNodeResponse_category' - The node\'s category.
--
-- 'createdTime', 'describeNodeResponse_createdTime' - When the node was created.
--
-- 'description', 'describeNodeResponse_description' - The node\'s description.
--
-- 'lastUpdatedTime', 'describeNodeResponse_lastUpdatedTime' - When the node was updated.
--
-- 'name', 'describeNodeResponse_name' - The node\'s name.
--
-- 'nodeId', 'describeNodeResponse_nodeId' - The node\'s ID.
--
-- 'nodeInterface', 'describeNodeResponse_nodeInterface' - The node\'s interface.
--
-- 'ownerAccount', 'describeNodeResponse_ownerAccount' - The account ID of the node\'s owner.
--
-- 'packageId', 'describeNodeResponse_packageId' - The node\'s package ID.
--
-- 'packageName', 'describeNodeResponse_packageName' - The node\'s package name.
--
-- 'packageVersion', 'describeNodeResponse_packageVersion' - The node\'s package version.
--
-- 'patchVersion', 'describeNodeResponse_patchVersion' - The node\'s patch version.
newDescribeNodeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'category'
  NodeCategory ->
  -- | 'createdTime'
  Prelude.UTCTime ->
  -- | 'description'
  Prelude.Text ->
  -- | 'lastUpdatedTime'
  Prelude.UTCTime ->
  -- | 'name'
  Prelude.Text ->
  -- | 'nodeId'
  Prelude.Text ->
  -- | 'nodeInterface'
  NodeInterface ->
  -- | 'ownerAccount'
  Prelude.Text ->
  -- | 'packageId'
  Prelude.Text ->
  -- | 'packageName'
  Prelude.Text ->
  -- | 'packageVersion'
  Prelude.Text ->
  -- | 'patchVersion'
  Prelude.Text ->
  DescribeNodeResponse
newDescribeNodeResponse
  pHttpStatus_
  pCategory_
  pCreatedTime_
  pDescription_
  pLastUpdatedTime_
  pName_
  pNodeId_
  pNodeInterface_
  pOwnerAccount_
  pPackageId_
  pPackageName_
  pPackageVersion_
  pPatchVersion_ =
    DescribeNodeResponse'
      { assetName = Prelude.Nothing,
        packageArn = Prelude.Nothing,
        httpStatus = pHttpStatus_,
        category = pCategory_,
        createdTime = Data._Time Lens.# pCreatedTime_,
        description = pDescription_,
        lastUpdatedTime =
          Data._Time Lens.# pLastUpdatedTime_,
        name = pName_,
        nodeId = pNodeId_,
        nodeInterface = pNodeInterface_,
        ownerAccount = pOwnerAccount_,
        packageId = pPackageId_,
        packageName = pPackageName_,
        packageVersion = pPackageVersion_,
        patchVersion = pPatchVersion_
      }

-- | The node\'s asset name.
describeNodeResponse_assetName :: Lens.Lens' DescribeNodeResponse (Prelude.Maybe Prelude.Text)
describeNodeResponse_assetName = Lens.lens (\DescribeNodeResponse' {assetName} -> assetName) (\s@DescribeNodeResponse' {} a -> s {assetName = a} :: DescribeNodeResponse)

-- | The node\'s ARN.
describeNodeResponse_packageArn :: Lens.Lens' DescribeNodeResponse (Prelude.Maybe Prelude.Text)
describeNodeResponse_packageArn = Lens.lens (\DescribeNodeResponse' {packageArn} -> packageArn) (\s@DescribeNodeResponse' {} a -> s {packageArn = a} :: DescribeNodeResponse)

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

-- | The node\'s category.
describeNodeResponse_category :: Lens.Lens' DescribeNodeResponse NodeCategory
describeNodeResponse_category = Lens.lens (\DescribeNodeResponse' {category} -> category) (\s@DescribeNodeResponse' {} a -> s {category = a} :: DescribeNodeResponse)

-- | When the node was created.
describeNodeResponse_createdTime :: Lens.Lens' DescribeNodeResponse Prelude.UTCTime
describeNodeResponse_createdTime = Lens.lens (\DescribeNodeResponse' {createdTime} -> createdTime) (\s@DescribeNodeResponse' {} a -> s {createdTime = a} :: DescribeNodeResponse) Prelude.. Data._Time

-- | The node\'s description.
describeNodeResponse_description :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_description = Lens.lens (\DescribeNodeResponse' {description} -> description) (\s@DescribeNodeResponse' {} a -> s {description = a} :: DescribeNodeResponse)

-- | When the node was updated.
describeNodeResponse_lastUpdatedTime :: Lens.Lens' DescribeNodeResponse Prelude.UTCTime
describeNodeResponse_lastUpdatedTime = Lens.lens (\DescribeNodeResponse' {lastUpdatedTime} -> lastUpdatedTime) (\s@DescribeNodeResponse' {} a -> s {lastUpdatedTime = a} :: DescribeNodeResponse) Prelude.. Data._Time

-- | The node\'s name.
describeNodeResponse_name :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_name = Lens.lens (\DescribeNodeResponse' {name} -> name) (\s@DescribeNodeResponse' {} a -> s {name = a} :: DescribeNodeResponse)

-- | The node\'s ID.
describeNodeResponse_nodeId :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_nodeId = Lens.lens (\DescribeNodeResponse' {nodeId} -> nodeId) (\s@DescribeNodeResponse' {} a -> s {nodeId = a} :: DescribeNodeResponse)

-- | The node\'s interface.
describeNodeResponse_nodeInterface :: Lens.Lens' DescribeNodeResponse NodeInterface
describeNodeResponse_nodeInterface = Lens.lens (\DescribeNodeResponse' {nodeInterface} -> nodeInterface) (\s@DescribeNodeResponse' {} a -> s {nodeInterface = a} :: DescribeNodeResponse)

-- | The account ID of the node\'s owner.
describeNodeResponse_ownerAccount :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_ownerAccount = Lens.lens (\DescribeNodeResponse' {ownerAccount} -> ownerAccount) (\s@DescribeNodeResponse' {} a -> s {ownerAccount = a} :: DescribeNodeResponse)

-- | The node\'s package ID.
describeNodeResponse_packageId :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_packageId = Lens.lens (\DescribeNodeResponse' {packageId} -> packageId) (\s@DescribeNodeResponse' {} a -> s {packageId = a} :: DescribeNodeResponse)

-- | The node\'s package name.
describeNodeResponse_packageName :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_packageName = Lens.lens (\DescribeNodeResponse' {packageName} -> packageName) (\s@DescribeNodeResponse' {} a -> s {packageName = a} :: DescribeNodeResponse)

-- | The node\'s package version.
describeNodeResponse_packageVersion :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_packageVersion = Lens.lens (\DescribeNodeResponse' {packageVersion} -> packageVersion) (\s@DescribeNodeResponse' {} a -> s {packageVersion = a} :: DescribeNodeResponse)

-- | The node\'s patch version.
describeNodeResponse_patchVersion :: Lens.Lens' DescribeNodeResponse Prelude.Text
describeNodeResponse_patchVersion = Lens.lens (\DescribeNodeResponse' {patchVersion} -> patchVersion) (\s@DescribeNodeResponse' {} a -> s {patchVersion = a} :: DescribeNodeResponse)

instance Prelude.NFData DescribeNodeResponse where
  rnf DescribeNodeResponse' {..} =
    Prelude.rnf assetName
      `Prelude.seq` Prelude.rnf packageArn
      `Prelude.seq` Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf category
      `Prelude.seq` Prelude.rnf createdTime
      `Prelude.seq` Prelude.rnf description
      `Prelude.seq` Prelude.rnf lastUpdatedTime
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf nodeId
      `Prelude.seq` Prelude.rnf nodeInterface
      `Prelude.seq` Prelude.rnf ownerAccount
      `Prelude.seq` Prelude.rnf packageId
      `Prelude.seq` Prelude.rnf packageName
      `Prelude.seq` Prelude.rnf packageVersion
      `Prelude.seq` Prelude.rnf patchVersion