packages feed

amazonka-kinesisanalyticsv2-2.0: gen/Amazonka/KinesisAnalyticsV2/Types/ApplicationConfigurationUpdate.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.KinesisAnalyticsV2.Types.ApplicationConfigurationUpdate
-- 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.KinesisAnalyticsV2.Types.ApplicationConfigurationUpdate where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.KinesisAnalyticsV2.Types.ApplicationCodeConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.ApplicationSnapshotConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.EnvironmentPropertyUpdates
import Amazonka.KinesisAnalyticsV2.Types.FlinkApplicationConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.SqlApplicationConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.VpcConfigurationUpdate
import Amazonka.KinesisAnalyticsV2.Types.ZeppelinApplicationConfigurationUpdate
import qualified Amazonka.Prelude as Prelude

-- | Describes updates to an application\'s configuration.
--
-- /See:/ 'newApplicationConfigurationUpdate' smart constructor.
data ApplicationConfigurationUpdate = ApplicationConfigurationUpdate'
  { -- | Describes updates to an application\'s code configuration.
    applicationCodeConfigurationUpdate :: Prelude.Maybe ApplicationCodeConfigurationUpdate,
    -- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
    -- Analytics application.
    applicationSnapshotConfigurationUpdate :: Prelude.Maybe ApplicationSnapshotConfigurationUpdate,
    -- | Describes updates to the environment properties for a Flink-based
    -- Kinesis Data Analytics application.
    environmentPropertyUpdates :: Prelude.Maybe EnvironmentPropertyUpdates,
    -- | Describes updates to a Flink-based Kinesis Data Analytics application\'s
    -- configuration.
    flinkApplicationConfigurationUpdate :: Prelude.Maybe FlinkApplicationConfigurationUpdate,
    -- | Describes updates to a SQL-based Kinesis Data Analytics application\'s
    -- configuration.
    sqlApplicationConfigurationUpdate :: Prelude.Maybe SqlApplicationConfigurationUpdate,
    -- | Updates to the array of descriptions of VPC configurations available to
    -- the application.
    vpcConfigurationUpdates :: Prelude.Maybe [VpcConfigurationUpdate],
    -- | Updates to the configuration of a Kinesis Data Analytics Studio
    -- notebook.
    zeppelinApplicationConfigurationUpdate :: Prelude.Maybe ZeppelinApplicationConfigurationUpdate
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ApplicationConfigurationUpdate' 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:
--
-- 'applicationCodeConfigurationUpdate', 'applicationConfigurationUpdate_applicationCodeConfigurationUpdate' - Describes updates to an application\'s code configuration.
--
-- 'applicationSnapshotConfigurationUpdate', 'applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate' - Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
--
-- 'environmentPropertyUpdates', 'applicationConfigurationUpdate_environmentPropertyUpdates' - Describes updates to the environment properties for a Flink-based
-- Kinesis Data Analytics application.
--
-- 'flinkApplicationConfigurationUpdate', 'applicationConfigurationUpdate_flinkApplicationConfigurationUpdate' - Describes updates to a Flink-based Kinesis Data Analytics application\'s
-- configuration.
--
-- 'sqlApplicationConfigurationUpdate', 'applicationConfigurationUpdate_sqlApplicationConfigurationUpdate' - Describes updates to a SQL-based Kinesis Data Analytics application\'s
-- configuration.
--
-- 'vpcConfigurationUpdates', 'applicationConfigurationUpdate_vpcConfigurationUpdates' - Updates to the array of descriptions of VPC configurations available to
-- the application.
--
-- 'zeppelinApplicationConfigurationUpdate', 'applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate' - Updates to the configuration of a Kinesis Data Analytics Studio
-- notebook.
newApplicationConfigurationUpdate ::
  ApplicationConfigurationUpdate
newApplicationConfigurationUpdate =
  ApplicationConfigurationUpdate'
    { applicationCodeConfigurationUpdate =
        Prelude.Nothing,
      applicationSnapshotConfigurationUpdate =
        Prelude.Nothing,
      environmentPropertyUpdates =
        Prelude.Nothing,
      flinkApplicationConfigurationUpdate =
        Prelude.Nothing,
      sqlApplicationConfigurationUpdate =
        Prelude.Nothing,
      vpcConfigurationUpdates = Prelude.Nothing,
      zeppelinApplicationConfigurationUpdate =
        Prelude.Nothing
    }

-- | Describes updates to an application\'s code configuration.
applicationConfigurationUpdate_applicationCodeConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe ApplicationCodeConfigurationUpdate)
applicationConfigurationUpdate_applicationCodeConfigurationUpdate = Lens.lens (\ApplicationConfigurationUpdate' {applicationCodeConfigurationUpdate} -> applicationCodeConfigurationUpdate) (\s@ApplicationConfigurationUpdate' {} a -> s {applicationCodeConfigurationUpdate = a} :: ApplicationConfigurationUpdate)

-- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe ApplicationSnapshotConfigurationUpdate)
applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate = Lens.lens (\ApplicationConfigurationUpdate' {applicationSnapshotConfigurationUpdate} -> applicationSnapshotConfigurationUpdate) (\s@ApplicationConfigurationUpdate' {} a -> s {applicationSnapshotConfigurationUpdate = a} :: ApplicationConfigurationUpdate)

-- | Describes updates to the environment properties for a Flink-based
-- Kinesis Data Analytics application.
applicationConfigurationUpdate_environmentPropertyUpdates :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe EnvironmentPropertyUpdates)
applicationConfigurationUpdate_environmentPropertyUpdates = Lens.lens (\ApplicationConfigurationUpdate' {environmentPropertyUpdates} -> environmentPropertyUpdates) (\s@ApplicationConfigurationUpdate' {} a -> s {environmentPropertyUpdates = a} :: ApplicationConfigurationUpdate)

-- | Describes updates to a Flink-based Kinesis Data Analytics application\'s
-- configuration.
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe FlinkApplicationConfigurationUpdate)
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate = Lens.lens (\ApplicationConfigurationUpdate' {flinkApplicationConfigurationUpdate} -> flinkApplicationConfigurationUpdate) (\s@ApplicationConfigurationUpdate' {} a -> s {flinkApplicationConfigurationUpdate = a} :: ApplicationConfigurationUpdate)

-- | Describes updates to a SQL-based Kinesis Data Analytics application\'s
-- configuration.
applicationConfigurationUpdate_sqlApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe SqlApplicationConfigurationUpdate)
applicationConfigurationUpdate_sqlApplicationConfigurationUpdate = Lens.lens (\ApplicationConfigurationUpdate' {sqlApplicationConfigurationUpdate} -> sqlApplicationConfigurationUpdate) (\s@ApplicationConfigurationUpdate' {} a -> s {sqlApplicationConfigurationUpdate = a} :: ApplicationConfigurationUpdate)

-- | Updates to the array of descriptions of VPC configurations available to
-- the application.
applicationConfigurationUpdate_vpcConfigurationUpdates :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe [VpcConfigurationUpdate])
applicationConfigurationUpdate_vpcConfigurationUpdates = Lens.lens (\ApplicationConfigurationUpdate' {vpcConfigurationUpdates} -> vpcConfigurationUpdates) (\s@ApplicationConfigurationUpdate' {} a -> s {vpcConfigurationUpdates = a} :: ApplicationConfigurationUpdate) Prelude.. Lens.mapping Lens.coerced

-- | Updates to the configuration of a Kinesis Data Analytics Studio
-- notebook.
applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe ZeppelinApplicationConfigurationUpdate)
applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate = Lens.lens (\ApplicationConfigurationUpdate' {zeppelinApplicationConfigurationUpdate} -> zeppelinApplicationConfigurationUpdate) (\s@ApplicationConfigurationUpdate' {} a -> s {zeppelinApplicationConfigurationUpdate = a} :: ApplicationConfigurationUpdate)

instance
  Prelude.Hashable
    ApplicationConfigurationUpdate
  where
  hashWithSalt
    _salt
    ApplicationConfigurationUpdate' {..} =
      _salt
        `Prelude.hashWithSalt` applicationCodeConfigurationUpdate
        `Prelude.hashWithSalt` applicationSnapshotConfigurationUpdate
        `Prelude.hashWithSalt` environmentPropertyUpdates
        `Prelude.hashWithSalt` flinkApplicationConfigurationUpdate
        `Prelude.hashWithSalt` sqlApplicationConfigurationUpdate
        `Prelude.hashWithSalt` vpcConfigurationUpdates
        `Prelude.hashWithSalt` zeppelinApplicationConfigurationUpdate

instance
  Prelude.NFData
    ApplicationConfigurationUpdate
  where
  rnf ApplicationConfigurationUpdate' {..} =
    Prelude.rnf applicationCodeConfigurationUpdate
      `Prelude.seq` Prelude.rnf applicationSnapshotConfigurationUpdate
      `Prelude.seq` Prelude.rnf environmentPropertyUpdates
      `Prelude.seq` Prelude.rnf flinkApplicationConfigurationUpdate
      `Prelude.seq` Prelude.rnf sqlApplicationConfigurationUpdate
      `Prelude.seq` Prelude.rnf vpcConfigurationUpdates
      `Prelude.seq` Prelude.rnf zeppelinApplicationConfigurationUpdate

instance Data.ToJSON ApplicationConfigurationUpdate where
  toJSON ApplicationConfigurationUpdate' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ApplicationCodeConfigurationUpdate" Data..=)
              Prelude.<$> applicationCodeConfigurationUpdate,
            ("ApplicationSnapshotConfigurationUpdate" Data..=)
              Prelude.<$> applicationSnapshotConfigurationUpdate,
            ("EnvironmentPropertyUpdates" Data..=)
              Prelude.<$> environmentPropertyUpdates,
            ("FlinkApplicationConfigurationUpdate" Data..=)
              Prelude.<$> flinkApplicationConfigurationUpdate,
            ("SqlApplicationConfigurationUpdate" Data..=)
              Prelude.<$> sqlApplicationConfigurationUpdate,
            ("VpcConfigurationUpdates" Data..=)
              Prelude.<$> vpcConfigurationUpdates,
            ("ZeppelinApplicationConfigurationUpdate" Data..=)
              Prelude.<$> zeppelinApplicationConfigurationUpdate
          ]
      )