{-# 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-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.KinesisAnalyticsV2.Types.ApplicationConfigurationUpdate where

import qualified Amazonka.Core as Core
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.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Describes updates to an application\'s configuration.
--
-- /See:/ 'newApplicationConfigurationUpdate' smart constructor.
data ApplicationConfigurationUpdate = ApplicationConfigurationUpdate'
  { -- | Describes whether snapshots are enabled for a Flink-based Kinesis Data
    -- Analytics application.
    ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate :: Prelude.Maybe ApplicationSnapshotConfigurationUpdate,
    -- | Updates to the configuration of a Kinesis Data Analytics Studio
    -- notebook.
    ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Prelude.Maybe ZeppelinApplicationConfigurationUpdate,
    -- | Describes updates to a Flink-based Kinesis Data Analytics application\'s
    -- configuration.
    ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Prelude.Maybe FlinkApplicationConfigurationUpdate,
    -- | Describes updates to a SQL-based Kinesis Data Analytics application\'s
    -- configuration.
    ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate :: Prelude.Maybe SqlApplicationConfigurationUpdate,
    -- | Updates to the array of descriptions of VPC configurations available to
    -- the application.
    ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates :: Prelude.Maybe [VpcConfigurationUpdate],
    -- | Describes updates to the environment properties for a Flink-based
    -- Kinesis Data Analytics application.
    ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates :: Prelude.Maybe EnvironmentPropertyUpdates,
    -- | Describes updates to an application\'s code configuration.
    ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate :: Prelude.Maybe ApplicationCodeConfigurationUpdate
  }
  deriving (ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
(ApplicationConfigurationUpdate
 -> ApplicationConfigurationUpdate -> Bool)
-> (ApplicationConfigurationUpdate
    -> ApplicationConfigurationUpdate -> Bool)
-> Eq ApplicationConfigurationUpdate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
$c/= :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
== :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
$c== :: ApplicationConfigurationUpdate
-> ApplicationConfigurationUpdate -> Bool
Prelude.Eq, ReadPrec [ApplicationConfigurationUpdate]
ReadPrec ApplicationConfigurationUpdate
Int -> ReadS ApplicationConfigurationUpdate
ReadS [ApplicationConfigurationUpdate]
(Int -> ReadS ApplicationConfigurationUpdate)
-> ReadS [ApplicationConfigurationUpdate]
-> ReadPrec ApplicationConfigurationUpdate
-> ReadPrec [ApplicationConfigurationUpdate]
-> Read ApplicationConfigurationUpdate
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ApplicationConfigurationUpdate]
$creadListPrec :: ReadPrec [ApplicationConfigurationUpdate]
readPrec :: ReadPrec ApplicationConfigurationUpdate
$creadPrec :: ReadPrec ApplicationConfigurationUpdate
readList :: ReadS [ApplicationConfigurationUpdate]
$creadList :: ReadS [ApplicationConfigurationUpdate]
readsPrec :: Int -> ReadS ApplicationConfigurationUpdate
$creadsPrec :: Int -> ReadS ApplicationConfigurationUpdate
Prelude.Read, Int -> ApplicationConfigurationUpdate -> ShowS
[ApplicationConfigurationUpdate] -> ShowS
ApplicationConfigurationUpdate -> String
(Int -> ApplicationConfigurationUpdate -> ShowS)
-> (ApplicationConfigurationUpdate -> String)
-> ([ApplicationConfigurationUpdate] -> ShowS)
-> Show ApplicationConfigurationUpdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ApplicationConfigurationUpdate] -> ShowS
$cshowList :: [ApplicationConfigurationUpdate] -> ShowS
show :: ApplicationConfigurationUpdate -> String
$cshow :: ApplicationConfigurationUpdate -> String
showsPrec :: Int -> ApplicationConfigurationUpdate -> ShowS
$cshowsPrec :: Int -> ApplicationConfigurationUpdate -> ShowS
Prelude.Show, (forall x.
 ApplicationConfigurationUpdate
 -> Rep ApplicationConfigurationUpdate x)
-> (forall x.
    Rep ApplicationConfigurationUpdate x
    -> ApplicationConfigurationUpdate)
-> Generic ApplicationConfigurationUpdate
forall x.
Rep ApplicationConfigurationUpdate x
-> ApplicationConfigurationUpdate
forall x.
ApplicationConfigurationUpdate
-> Rep ApplicationConfigurationUpdate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ApplicationConfigurationUpdate x
-> ApplicationConfigurationUpdate
$cfrom :: forall x.
ApplicationConfigurationUpdate
-> Rep ApplicationConfigurationUpdate x
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:
--
-- 'applicationSnapshotConfigurationUpdate', 'applicationConfigurationUpdate_applicationSnapshotConfigurationUpdate' - Describes whether snapshots are enabled for a Flink-based Kinesis Data
-- Analytics application.
--
-- 'zeppelinApplicationConfigurationUpdate', 'applicationConfigurationUpdate_zeppelinApplicationConfigurationUpdate' - Updates to the configuration of a Kinesis Data Analytics Studio
-- notebook.
--
-- '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.
--
-- 'environmentPropertyUpdates', 'applicationConfigurationUpdate_environmentPropertyUpdates' - Describes updates to the environment properties for a Flink-based
-- Kinesis Data Analytics application.
--
-- 'applicationCodeConfigurationUpdate', 'applicationConfigurationUpdate_applicationCodeConfigurationUpdate' - Describes updates to an application\'s code configuration.
newApplicationConfigurationUpdate ::
  ApplicationConfigurationUpdate
newApplicationConfigurationUpdate :: ApplicationConfigurationUpdate
newApplicationConfigurationUpdate =
  ApplicationConfigurationUpdate' :: Maybe ApplicationSnapshotConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
-> Maybe [VpcConfigurationUpdate]
-> Maybe EnvironmentPropertyUpdates
-> Maybe ApplicationCodeConfigurationUpdate
-> ApplicationConfigurationUpdate
ApplicationConfigurationUpdate'
    { $sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate =
        Maybe ApplicationSnapshotConfigurationUpdate
forall a. Maybe a
Prelude.Nothing,
      $sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate =
        Maybe ZeppelinApplicationConfigurationUpdate
forall a. Maybe a
Prelude.Nothing,
      $sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate =
        Maybe FlinkApplicationConfigurationUpdate
forall a. Maybe a
Prelude.Nothing,
      $sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate =
        Maybe SqlApplicationConfigurationUpdate
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates = Maybe [VpcConfigurationUpdate]
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates =
        Maybe EnvironmentPropertyUpdates
forall a. Maybe a
Prelude.Nothing,
      $sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate =
        Maybe ApplicationCodeConfigurationUpdate
forall a. Maybe a
Prelude.Nothing
    }

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

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

-- | Describes updates to a Flink-based Kinesis Data Analytics application\'s
-- configuration.
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate :: Lens.Lens' ApplicationConfigurationUpdate (Prelude.Maybe FlinkApplicationConfigurationUpdate)
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate :: (Maybe FlinkApplicationConfigurationUpdate
 -> f (Maybe FlinkApplicationConfigurationUpdate))
-> ApplicationConfigurationUpdate
-> f ApplicationConfigurationUpdate
applicationConfigurationUpdate_flinkApplicationConfigurationUpdate = (ApplicationConfigurationUpdate
 -> Maybe FlinkApplicationConfigurationUpdate)
-> (ApplicationConfigurationUpdate
    -> Maybe FlinkApplicationConfigurationUpdate
    -> ApplicationConfigurationUpdate)
-> Lens
     ApplicationConfigurationUpdate
     ApplicationConfigurationUpdate
     (Maybe FlinkApplicationConfigurationUpdate)
     (Maybe FlinkApplicationConfigurationUpdate)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Maybe FlinkApplicationConfigurationUpdate
$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate} -> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe FlinkApplicationConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate = Maybe 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 :: (Maybe SqlApplicationConfigurationUpdate
 -> f (Maybe SqlApplicationConfigurationUpdate))
-> ApplicationConfigurationUpdate
-> f ApplicationConfigurationUpdate
applicationConfigurationUpdate_sqlApplicationConfigurationUpdate = (ApplicationConfigurationUpdate
 -> Maybe SqlApplicationConfigurationUpdate)
-> (ApplicationConfigurationUpdate
    -> Maybe SqlApplicationConfigurationUpdate
    -> ApplicationConfigurationUpdate)
-> Lens
     ApplicationConfigurationUpdate
     ApplicationConfigurationUpdate
     (Maybe SqlApplicationConfigurationUpdate)
     (Maybe SqlApplicationConfigurationUpdate)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate :: Maybe SqlApplicationConfigurationUpdate
$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate} -> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe SqlApplicationConfigurationUpdate
a -> ApplicationConfigurationUpdate
s {$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate = Maybe 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 :: (Maybe [VpcConfigurationUpdate]
 -> f (Maybe [VpcConfigurationUpdate]))
-> ApplicationConfigurationUpdate
-> f ApplicationConfigurationUpdate
applicationConfigurationUpdate_vpcConfigurationUpdates = (ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate])
-> (ApplicationConfigurationUpdate
    -> Maybe [VpcConfigurationUpdate]
    -> ApplicationConfigurationUpdate)
-> Lens
     ApplicationConfigurationUpdate
     ApplicationConfigurationUpdate
     (Maybe [VpcConfigurationUpdate])
     (Maybe [VpcConfigurationUpdate])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationConfigurationUpdate' {Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates :: Maybe [VpcConfigurationUpdate]
$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates} -> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates) (\s :: ApplicationConfigurationUpdate
s@ApplicationConfigurationUpdate' {} Maybe [VpcConfigurationUpdate]
a -> ApplicationConfigurationUpdate
s {$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates = Maybe [VpcConfigurationUpdate]
a} :: ApplicationConfigurationUpdate) ((Maybe [VpcConfigurationUpdate]
  -> f (Maybe [VpcConfigurationUpdate]))
 -> ApplicationConfigurationUpdate
 -> f ApplicationConfigurationUpdate)
-> ((Maybe [VpcConfigurationUpdate]
     -> f (Maybe [VpcConfigurationUpdate]))
    -> Maybe [VpcConfigurationUpdate]
    -> f (Maybe [VpcConfigurationUpdate]))
-> (Maybe [VpcConfigurationUpdate]
    -> f (Maybe [VpcConfigurationUpdate]))
-> ApplicationConfigurationUpdate
-> f ApplicationConfigurationUpdate
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [VpcConfigurationUpdate]
  [VpcConfigurationUpdate]
  [VpcConfigurationUpdate]
  [VpcConfigurationUpdate]
-> Iso
     (Maybe [VpcConfigurationUpdate])
     (Maybe [VpcConfigurationUpdate])
     (Maybe [VpcConfigurationUpdate])
     (Maybe [VpcConfigurationUpdate])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [VpcConfigurationUpdate]
  [VpcConfigurationUpdate]
  [VpcConfigurationUpdate]
  [VpcConfigurationUpdate]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

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

instance
  Prelude.Hashable
    ApplicationConfigurationUpdate

instance
  Prelude.NFData
    ApplicationConfigurationUpdate

instance Core.ToJSON ApplicationConfigurationUpdate where
  toJSON :: ApplicationConfigurationUpdate -> Value
toJSON ApplicationConfigurationUpdate' {Maybe [VpcConfigurationUpdate]
Maybe ApplicationSnapshotConfigurationUpdate
Maybe FlinkApplicationConfigurationUpdate
Maybe EnvironmentPropertyUpdates
Maybe ApplicationCodeConfigurationUpdate
Maybe SqlApplicationConfigurationUpdate
Maybe ZeppelinApplicationConfigurationUpdate
applicationCodeConfigurationUpdate :: Maybe ApplicationCodeConfigurationUpdate
environmentPropertyUpdates :: Maybe EnvironmentPropertyUpdates
vpcConfigurationUpdates :: Maybe [VpcConfigurationUpdate]
sqlApplicationConfigurationUpdate :: Maybe SqlApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate :: Maybe FlinkApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate :: Maybe ZeppelinApplicationConfigurationUpdate
applicationSnapshotConfigurationUpdate :: Maybe ApplicationSnapshotConfigurationUpdate
$sel:applicationCodeConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationCodeConfigurationUpdate
$sel:environmentPropertyUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe EnvironmentPropertyUpdates
$sel:vpcConfigurationUpdates:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate -> Maybe [VpcConfigurationUpdate]
$sel:sqlApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe SqlApplicationConfigurationUpdate
$sel:flinkApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe FlinkApplicationConfigurationUpdate
$sel:zeppelinApplicationConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ZeppelinApplicationConfigurationUpdate
$sel:applicationSnapshotConfigurationUpdate:ApplicationConfigurationUpdate' :: ApplicationConfigurationUpdate
-> Maybe ApplicationSnapshotConfigurationUpdate
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"ApplicationSnapshotConfigurationUpdate" Text -> ApplicationSnapshotConfigurationUpdate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ApplicationSnapshotConfigurationUpdate -> Pair)
-> Maybe ApplicationSnapshotConfigurationUpdate -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ApplicationSnapshotConfigurationUpdate
applicationSnapshotConfigurationUpdate,
            (Text
"ZeppelinApplicationConfigurationUpdate" Text -> ZeppelinApplicationConfigurationUpdate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ZeppelinApplicationConfigurationUpdate -> Pair)
-> Maybe ZeppelinApplicationConfigurationUpdate -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ZeppelinApplicationConfigurationUpdate
zeppelinApplicationConfigurationUpdate,
            (Text
"FlinkApplicationConfigurationUpdate" Text -> FlinkApplicationConfigurationUpdate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (FlinkApplicationConfigurationUpdate -> Pair)
-> Maybe FlinkApplicationConfigurationUpdate -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FlinkApplicationConfigurationUpdate
flinkApplicationConfigurationUpdate,
            (Text
"SqlApplicationConfigurationUpdate" Text -> SqlApplicationConfigurationUpdate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (SqlApplicationConfigurationUpdate -> Pair)
-> Maybe SqlApplicationConfigurationUpdate -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SqlApplicationConfigurationUpdate
sqlApplicationConfigurationUpdate,
            (Text
"VpcConfigurationUpdates" Text -> [VpcConfigurationUpdate] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              ([VpcConfigurationUpdate] -> Pair)
-> Maybe [VpcConfigurationUpdate] -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [VpcConfigurationUpdate]
vpcConfigurationUpdates,
            (Text
"EnvironmentPropertyUpdates" Text -> EnvironmentPropertyUpdates -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (EnvironmentPropertyUpdates -> Pair)
-> Maybe EnvironmentPropertyUpdates -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EnvironmentPropertyUpdates
environmentPropertyUpdates,
            (Text
"ApplicationCodeConfigurationUpdate" Text -> ApplicationCodeConfigurationUpdate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ApplicationCodeConfigurationUpdate -> Pair)
-> Maybe ApplicationCodeConfigurationUpdate -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ApplicationCodeConfigurationUpdate
applicationCodeConfigurationUpdate
          ]
      )