packages feed

amazonka-redshift-2.0: gen/Amazonka/Redshift/Types/ReservedNodeConfigurationOption.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Redshift.Types.ReservedNodeConfigurationOption
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Redshift.Types.ReservedNodeConfigurationOption where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.Redshift.Internal
import Amazonka.Redshift.Types.ReservedNode
import Amazonka.Redshift.Types.ReservedNodeOffering

-- | Details for a reserved-node exchange. Examples include the node type for
-- a reserved node, the price for a node, the node\'s state, and other
-- details.
--
-- /See:/ 'newReservedNodeConfigurationOption' smart constructor.
data ReservedNodeConfigurationOption = ReservedNodeConfigurationOption'
  { sourceReservedNode :: Prelude.Maybe ReservedNode,
    -- | The target reserved-node count.
    targetReservedNodeCount :: Prelude.Maybe Prelude.Int,
    targetReservedNodeOffering :: Prelude.Maybe ReservedNodeOffering
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ReservedNodeConfigurationOption' 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:
--
-- 'sourceReservedNode', 'reservedNodeConfigurationOption_sourceReservedNode' - Undocumented member.
--
-- 'targetReservedNodeCount', 'reservedNodeConfigurationOption_targetReservedNodeCount' - The target reserved-node count.
--
-- 'targetReservedNodeOffering', 'reservedNodeConfigurationOption_targetReservedNodeOffering' - Undocumented member.
newReservedNodeConfigurationOption ::
  ReservedNodeConfigurationOption
newReservedNodeConfigurationOption =
  ReservedNodeConfigurationOption'
    { sourceReservedNode =
        Prelude.Nothing,
      targetReservedNodeCount = Prelude.Nothing,
      targetReservedNodeOffering =
        Prelude.Nothing
    }

-- | Undocumented member.
reservedNodeConfigurationOption_sourceReservedNode :: Lens.Lens' ReservedNodeConfigurationOption (Prelude.Maybe ReservedNode)
reservedNodeConfigurationOption_sourceReservedNode = Lens.lens (\ReservedNodeConfigurationOption' {sourceReservedNode} -> sourceReservedNode) (\s@ReservedNodeConfigurationOption' {} a -> s {sourceReservedNode = a} :: ReservedNodeConfigurationOption)

-- | The target reserved-node count.
reservedNodeConfigurationOption_targetReservedNodeCount :: Lens.Lens' ReservedNodeConfigurationOption (Prelude.Maybe Prelude.Int)
reservedNodeConfigurationOption_targetReservedNodeCount = Lens.lens (\ReservedNodeConfigurationOption' {targetReservedNodeCount} -> targetReservedNodeCount) (\s@ReservedNodeConfigurationOption' {} a -> s {targetReservedNodeCount = a} :: ReservedNodeConfigurationOption)

-- | Undocumented member.
reservedNodeConfigurationOption_targetReservedNodeOffering :: Lens.Lens' ReservedNodeConfigurationOption (Prelude.Maybe ReservedNodeOffering)
reservedNodeConfigurationOption_targetReservedNodeOffering = Lens.lens (\ReservedNodeConfigurationOption' {targetReservedNodeOffering} -> targetReservedNodeOffering) (\s@ReservedNodeConfigurationOption' {} a -> s {targetReservedNodeOffering = a} :: ReservedNodeConfigurationOption)

instance Data.FromXML ReservedNodeConfigurationOption where
  parseXML x =
    ReservedNodeConfigurationOption'
      Prelude.<$> (x Data..@? "SourceReservedNode")
      Prelude.<*> (x Data..@? "TargetReservedNodeCount")
      Prelude.<*> (x Data..@? "TargetReservedNodeOffering")

instance
  Prelude.Hashable
    ReservedNodeConfigurationOption
  where
  hashWithSalt
    _salt
    ReservedNodeConfigurationOption' {..} =
      _salt
        `Prelude.hashWithSalt` sourceReservedNode
        `Prelude.hashWithSalt` targetReservedNodeCount
        `Prelude.hashWithSalt` targetReservedNodeOffering

instance
  Prelude.NFData
    ReservedNodeConfigurationOption
  where
  rnf ReservedNodeConfigurationOption' {..} =
    Prelude.rnf sourceReservedNode
      `Prelude.seq` Prelude.rnf targetReservedNodeCount
      `Prelude.seq` Prelude.rnf targetReservedNodeOffering