packages feed

amazonka-kinesisanalyticsv2-2.0: gen/Amazonka/KinesisAnalyticsV2/Types/ApplicationConfigurationDescription.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.ApplicationConfigurationDescription
-- 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.ApplicationConfigurationDescription 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.ApplicationCodeConfigurationDescription
import Amazonka.KinesisAnalyticsV2.Types.ApplicationSnapshotConfigurationDescription
import Amazonka.KinesisAnalyticsV2.Types.EnvironmentPropertyDescriptions
import Amazonka.KinesisAnalyticsV2.Types.FlinkApplicationConfigurationDescription
import Amazonka.KinesisAnalyticsV2.Types.RunConfigurationDescription
import Amazonka.KinesisAnalyticsV2.Types.SqlApplicationConfigurationDescription
import Amazonka.KinesisAnalyticsV2.Types.VpcConfigurationDescription
import Amazonka.KinesisAnalyticsV2.Types.ZeppelinApplicationConfigurationDescription
import qualified Amazonka.Prelude as Prelude

-- | Describes details about the application code and starting parameters for
-- a Kinesis Data Analytics application.
--
-- /See:/ 'newApplicationConfigurationDescription' smart constructor.
data ApplicationConfigurationDescription = ApplicationConfigurationDescription'
  { -- | The details about the application code for a Flink-based Kinesis Data
    -- Analytics application.
    applicationCodeConfigurationDescription :: Prelude.Maybe ApplicationCodeConfigurationDescription,
    -- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
    -- Analytics application.
    applicationSnapshotConfigurationDescription :: Prelude.Maybe ApplicationSnapshotConfigurationDescription,
    -- | Describes execution properties for a Flink-based Kinesis Data Analytics
    -- application.
    environmentPropertyDescriptions :: Prelude.Maybe EnvironmentPropertyDescriptions,
    -- | The details about a Flink-based Kinesis Data Analytics application.
    flinkApplicationConfigurationDescription :: Prelude.Maybe FlinkApplicationConfigurationDescription,
    -- | The details about the starting properties for a Kinesis Data Analytics
    -- application.
    runConfigurationDescription :: Prelude.Maybe RunConfigurationDescription,
    -- | The details about inputs, outputs, and reference data sources for a
    -- SQL-based Kinesis Data Analytics application.
    sqlApplicationConfigurationDescription :: Prelude.Maybe SqlApplicationConfigurationDescription,
    -- | The array of descriptions of VPC configurations available to the
    -- application.
    vpcConfigurationDescriptions :: Prelude.Maybe [VpcConfigurationDescription],
    -- | The configuration parameters for a Kinesis Data Analytics Studio
    -- notebook.
    zeppelinApplicationConfigurationDescription :: Prelude.Maybe ZeppelinApplicationConfigurationDescription
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ApplicationConfigurationDescription' 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:
--
-- 'applicationCodeConfigurationDescription', 'applicationConfigurationDescription_applicationCodeConfigurationDescription' - The details about the application code for a Flink-based Kinesis Data
-- Analytics application.
--
-- 'applicationSnapshotConfigurationDescription', 'applicationConfigurationDescription_applicationSnapshotConfigurationDescription' - Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
--
-- 'environmentPropertyDescriptions', 'applicationConfigurationDescription_environmentPropertyDescriptions' - Describes execution properties for a Flink-based Kinesis Data Analytics
-- application.
--
-- 'flinkApplicationConfigurationDescription', 'applicationConfigurationDescription_flinkApplicationConfigurationDescription' - The details about a Flink-based Kinesis Data Analytics application.
--
-- 'runConfigurationDescription', 'applicationConfigurationDescription_runConfigurationDescription' - The details about the starting properties for a Kinesis Data Analytics
-- application.
--
-- 'sqlApplicationConfigurationDescription', 'applicationConfigurationDescription_sqlApplicationConfigurationDescription' - The details about inputs, outputs, and reference data sources for a
-- SQL-based Kinesis Data Analytics application.
--
-- 'vpcConfigurationDescriptions', 'applicationConfigurationDescription_vpcConfigurationDescriptions' - The array of descriptions of VPC configurations available to the
-- application.
--
-- 'zeppelinApplicationConfigurationDescription', 'applicationConfigurationDescription_zeppelinApplicationConfigurationDescription' - The configuration parameters for a Kinesis Data Analytics Studio
-- notebook.
newApplicationConfigurationDescription ::
  ApplicationConfigurationDescription
newApplicationConfigurationDescription =
  ApplicationConfigurationDescription'
    { applicationCodeConfigurationDescription =
        Prelude.Nothing,
      applicationSnapshotConfigurationDescription =
        Prelude.Nothing,
      environmentPropertyDescriptions =
        Prelude.Nothing,
      flinkApplicationConfigurationDescription =
        Prelude.Nothing,
      runConfigurationDescription =
        Prelude.Nothing,
      sqlApplicationConfigurationDescription =
        Prelude.Nothing,
      vpcConfigurationDescriptions =
        Prelude.Nothing,
      zeppelinApplicationConfigurationDescription =
        Prelude.Nothing
    }

-- | The details about the application code for a Flink-based Kinesis Data
-- Analytics application.
applicationConfigurationDescription_applicationCodeConfigurationDescription :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe ApplicationCodeConfigurationDescription)
applicationConfigurationDescription_applicationCodeConfigurationDescription = Lens.lens (\ApplicationConfigurationDescription' {applicationCodeConfigurationDescription} -> applicationCodeConfigurationDescription) (\s@ApplicationConfigurationDescription' {} a -> s {applicationCodeConfigurationDescription = a} :: ApplicationConfigurationDescription)

-- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
applicationConfigurationDescription_applicationSnapshotConfigurationDescription :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe ApplicationSnapshotConfigurationDescription)
applicationConfigurationDescription_applicationSnapshotConfigurationDescription = Lens.lens (\ApplicationConfigurationDescription' {applicationSnapshotConfigurationDescription} -> applicationSnapshotConfigurationDescription) (\s@ApplicationConfigurationDescription' {} a -> s {applicationSnapshotConfigurationDescription = a} :: ApplicationConfigurationDescription)

-- | Describes execution properties for a Flink-based Kinesis Data Analytics
-- application.
applicationConfigurationDescription_environmentPropertyDescriptions :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe EnvironmentPropertyDescriptions)
applicationConfigurationDescription_environmentPropertyDescriptions = Lens.lens (\ApplicationConfigurationDescription' {environmentPropertyDescriptions} -> environmentPropertyDescriptions) (\s@ApplicationConfigurationDescription' {} a -> s {environmentPropertyDescriptions = a} :: ApplicationConfigurationDescription)

-- | The details about a Flink-based Kinesis Data Analytics application.
applicationConfigurationDescription_flinkApplicationConfigurationDescription :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe FlinkApplicationConfigurationDescription)
applicationConfigurationDescription_flinkApplicationConfigurationDescription = Lens.lens (\ApplicationConfigurationDescription' {flinkApplicationConfigurationDescription} -> flinkApplicationConfigurationDescription) (\s@ApplicationConfigurationDescription' {} a -> s {flinkApplicationConfigurationDescription = a} :: ApplicationConfigurationDescription)

-- | The details about the starting properties for a Kinesis Data Analytics
-- application.
applicationConfigurationDescription_runConfigurationDescription :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe RunConfigurationDescription)
applicationConfigurationDescription_runConfigurationDescription = Lens.lens (\ApplicationConfigurationDescription' {runConfigurationDescription} -> runConfigurationDescription) (\s@ApplicationConfigurationDescription' {} a -> s {runConfigurationDescription = a} :: ApplicationConfigurationDescription)

-- | The details about inputs, outputs, and reference data sources for a
-- SQL-based Kinesis Data Analytics application.
applicationConfigurationDescription_sqlApplicationConfigurationDescription :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe SqlApplicationConfigurationDescription)
applicationConfigurationDescription_sqlApplicationConfigurationDescription = Lens.lens (\ApplicationConfigurationDescription' {sqlApplicationConfigurationDescription} -> sqlApplicationConfigurationDescription) (\s@ApplicationConfigurationDescription' {} a -> s {sqlApplicationConfigurationDescription = a} :: ApplicationConfigurationDescription)

-- | The array of descriptions of VPC configurations available to the
-- application.
applicationConfigurationDescription_vpcConfigurationDescriptions :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe [VpcConfigurationDescription])
applicationConfigurationDescription_vpcConfigurationDescriptions = Lens.lens (\ApplicationConfigurationDescription' {vpcConfigurationDescriptions} -> vpcConfigurationDescriptions) (\s@ApplicationConfigurationDescription' {} a -> s {vpcConfigurationDescriptions = a} :: ApplicationConfigurationDescription) Prelude.. Lens.mapping Lens.coerced

-- | The configuration parameters for a Kinesis Data Analytics Studio
-- notebook.
applicationConfigurationDescription_zeppelinApplicationConfigurationDescription :: Lens.Lens' ApplicationConfigurationDescription (Prelude.Maybe ZeppelinApplicationConfigurationDescription)
applicationConfigurationDescription_zeppelinApplicationConfigurationDescription = Lens.lens (\ApplicationConfigurationDescription' {zeppelinApplicationConfigurationDescription} -> zeppelinApplicationConfigurationDescription) (\s@ApplicationConfigurationDescription' {} a -> s {zeppelinApplicationConfigurationDescription = a} :: ApplicationConfigurationDescription)

instance
  Data.FromJSON
    ApplicationConfigurationDescription
  where
  parseJSON =
    Data.withObject
      "ApplicationConfigurationDescription"
      ( \x ->
          ApplicationConfigurationDescription'
            Prelude.<$> ( x
                            Data..:? "ApplicationCodeConfigurationDescription"
                        )
            Prelude.<*> ( x
                            Data..:? "ApplicationSnapshotConfigurationDescription"
                        )
            Prelude.<*> (x Data..:? "EnvironmentPropertyDescriptions")
            Prelude.<*> ( x
                            Data..:? "FlinkApplicationConfigurationDescription"
                        )
            Prelude.<*> (x Data..:? "RunConfigurationDescription")
            Prelude.<*> (x Data..:? "SqlApplicationConfigurationDescription")
            Prelude.<*> ( x
                            Data..:? "VpcConfigurationDescriptions"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> ( x
                            Data..:? "ZeppelinApplicationConfigurationDescription"
                        )
      )

instance
  Prelude.Hashable
    ApplicationConfigurationDescription
  where
  hashWithSalt
    _salt
    ApplicationConfigurationDescription' {..} =
      _salt
        `Prelude.hashWithSalt` applicationCodeConfigurationDescription
        `Prelude.hashWithSalt` applicationSnapshotConfigurationDescription
        `Prelude.hashWithSalt` environmentPropertyDescriptions
        `Prelude.hashWithSalt` flinkApplicationConfigurationDescription
        `Prelude.hashWithSalt` runConfigurationDescription
        `Prelude.hashWithSalt` sqlApplicationConfigurationDescription
        `Prelude.hashWithSalt` vpcConfigurationDescriptions
        `Prelude.hashWithSalt` zeppelinApplicationConfigurationDescription

instance
  Prelude.NFData
    ApplicationConfigurationDescription
  where
  rnf ApplicationConfigurationDescription' {..} =
    Prelude.rnf applicationCodeConfigurationDescription
      `Prelude.seq` Prelude.rnf
        applicationSnapshotConfigurationDescription
      `Prelude.seq` Prelude.rnf environmentPropertyDescriptions
      `Prelude.seq` Prelude.rnf flinkApplicationConfigurationDescription
      `Prelude.seq` Prelude.rnf runConfigurationDescription
      `Prelude.seq` Prelude.rnf sqlApplicationConfigurationDescription
      `Prelude.seq` Prelude.rnf vpcConfigurationDescriptions
      `Prelude.seq` Prelude.rnf
        zeppelinApplicationConfigurationDescription