{-# 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.EMR.Types.ScalingAction -- 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.EMR.Types.ScalingAction where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.EMR.Types.MarketType import Amazonka.EMR.Types.SimpleScalingPolicyConfiguration import qualified Amazonka.Prelude as Prelude -- | The type of adjustment the automatic scaling activity makes when -- triggered, and the periodicity of the adjustment. -- -- /See:/ 'newScalingAction' smart constructor. data ScalingAction = ScalingAction' { -- | Not available for instance groups. Instance groups use the market type -- specified for the group. market :: Prelude.Maybe MarketType, -- | The type of adjustment the automatic scaling activity makes when -- triggered, and the periodicity of the adjustment. simpleScalingPolicyConfiguration :: SimpleScalingPolicyConfiguration } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ScalingAction' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'market', 'scalingAction_market' - Not available for instance groups. Instance groups use the market type -- specified for the group. -- -- 'simpleScalingPolicyConfiguration', 'scalingAction_simpleScalingPolicyConfiguration' - The type of adjustment the automatic scaling activity makes when -- triggered, and the periodicity of the adjustment. newScalingAction :: -- | 'simpleScalingPolicyConfiguration' SimpleScalingPolicyConfiguration -> ScalingAction newScalingAction pSimpleScalingPolicyConfiguration_ = ScalingAction' { market = Prelude.Nothing, simpleScalingPolicyConfiguration = pSimpleScalingPolicyConfiguration_ } -- | Not available for instance groups. Instance groups use the market type -- specified for the group. scalingAction_market :: Lens.Lens' ScalingAction (Prelude.Maybe MarketType) scalingAction_market = Lens.lens (\ScalingAction' {market} -> market) (\s@ScalingAction' {} a -> s {market = a} :: ScalingAction) -- | The type of adjustment the automatic scaling activity makes when -- triggered, and the periodicity of the adjustment. scalingAction_simpleScalingPolicyConfiguration :: Lens.Lens' ScalingAction SimpleScalingPolicyConfiguration scalingAction_simpleScalingPolicyConfiguration = Lens.lens (\ScalingAction' {simpleScalingPolicyConfiguration} -> simpleScalingPolicyConfiguration) (\s@ScalingAction' {} a -> s {simpleScalingPolicyConfiguration = a} :: ScalingAction) instance Data.FromJSON ScalingAction where parseJSON = Data.withObject "ScalingAction" ( \x -> ScalingAction' Prelude.<$> (x Data..:? "Market") Prelude.<*> (x Data..: "SimpleScalingPolicyConfiguration") ) instance Prelude.Hashable ScalingAction where hashWithSalt _salt ScalingAction' {..} = _salt `Prelude.hashWithSalt` market `Prelude.hashWithSalt` simpleScalingPolicyConfiguration instance Prelude.NFData ScalingAction where rnf ScalingAction' {..} = Prelude.rnf market `Prelude.seq` Prelude.rnf simpleScalingPolicyConfiguration instance Data.ToJSON ScalingAction where toJSON ScalingAction' {..} = Data.object ( Prelude.catMaybes [ ("Market" Data..=) Prelude.<$> market, Prelude.Just ( "SimpleScalingPolicyConfiguration" Data..= simpleScalingPolicyConfiguration ) ] )