module Stratosphere.EMRServerless.Application ( module Exports, Application(..), mkApplication ) where import qualified Data.Aeson as JSON import qualified Stratosphere.Prelude as Prelude import Stratosphere.Property import {-# SOURCE #-} Stratosphere.EMRServerless.Application.AutoStartConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.AutoStopConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.ConfigurationObjectProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.IdentityCenterConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.ImageConfigurationInputProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.InitialCapacityConfigKeyValuePairProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.InteractiveConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.MaximumAllowedResourcesProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.MonitoringConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.NetworkConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.SchedulerConfigurationProperty as Exports import {-# SOURCE #-} Stratosphere.EMRServerless.Application.WorkerTypeSpecificationInputProperty as Exports import Stratosphere.ResourceProperties import Stratosphere.Tag import Stratosphere.Value data Application = -- | See: Application {haddock_workaround_ :: (), -- | See: architecture :: (Prelude.Maybe (Value Prelude.Text)), -- | See: autoStartConfiguration :: (Prelude.Maybe AutoStartConfigurationProperty), -- | See: autoStopConfiguration :: (Prelude.Maybe AutoStopConfigurationProperty), -- | See: identityCenterConfiguration :: (Prelude.Maybe IdentityCenterConfigurationProperty), -- | See: imageConfiguration :: (Prelude.Maybe ImageConfigurationInputProperty), -- | See: initialCapacity :: (Prelude.Maybe [InitialCapacityConfigKeyValuePairProperty]), -- | See: interactiveConfiguration :: (Prelude.Maybe InteractiveConfigurationProperty), -- | See: maximumCapacity :: (Prelude.Maybe MaximumAllowedResourcesProperty), -- | See: monitoringConfiguration :: (Prelude.Maybe MonitoringConfigurationProperty), -- | See: name :: (Prelude.Maybe (Value Prelude.Text)), -- | See: networkConfiguration :: (Prelude.Maybe NetworkConfigurationProperty), -- | See: releaseLabel :: (Value Prelude.Text), -- | See: runtimeConfiguration :: (Prelude.Maybe [ConfigurationObjectProperty]), -- | See: schedulerConfiguration :: (Prelude.Maybe SchedulerConfigurationProperty), -- | See: tags :: (Prelude.Maybe [Tag]), -- | See: type' :: (Value Prelude.Text), -- | See: workerTypeSpecifications :: (Prelude.Maybe (Prelude.Map Prelude.Text WorkerTypeSpecificationInputProperty))} deriving stock (Prelude.Eq, Prelude.Show) mkApplication :: Value Prelude.Text -> Value Prelude.Text -> Application mkApplication releaseLabel type' = Application {haddock_workaround_ = (), releaseLabel = releaseLabel, type' = type', architecture = Prelude.Nothing, autoStartConfiguration = Prelude.Nothing, autoStopConfiguration = Prelude.Nothing, identityCenterConfiguration = Prelude.Nothing, imageConfiguration = Prelude.Nothing, initialCapacity = Prelude.Nothing, interactiveConfiguration = Prelude.Nothing, maximumCapacity = Prelude.Nothing, monitoringConfiguration = Prelude.Nothing, name = Prelude.Nothing, networkConfiguration = Prelude.Nothing, runtimeConfiguration = Prelude.Nothing, schedulerConfiguration = Prelude.Nothing, tags = Prelude.Nothing, workerTypeSpecifications = Prelude.Nothing} instance ToResourceProperties Application where toResourceProperties Application {..} = ResourceProperties {awsType = "AWS::EMRServerless::Application", supportsTags = Prelude.True, properties = Prelude.fromList ((Prelude.<>) ["ReleaseLabel" JSON..= releaseLabel, "Type" JSON..= type'] (Prelude.catMaybes [(JSON..=) "Architecture" Prelude.<$> architecture, (JSON..=) "AutoStartConfiguration" Prelude.<$> autoStartConfiguration, (JSON..=) "AutoStopConfiguration" Prelude.<$> autoStopConfiguration, (JSON..=) "IdentityCenterConfiguration" Prelude.<$> identityCenterConfiguration, (JSON..=) "ImageConfiguration" Prelude.<$> imageConfiguration, (JSON..=) "InitialCapacity" Prelude.<$> initialCapacity, (JSON..=) "InteractiveConfiguration" Prelude.<$> interactiveConfiguration, (JSON..=) "MaximumCapacity" Prelude.<$> maximumCapacity, (JSON..=) "MonitoringConfiguration" Prelude.<$> monitoringConfiguration, (JSON..=) "Name" Prelude.<$> name, (JSON..=) "NetworkConfiguration" Prelude.<$> networkConfiguration, (JSON..=) "RuntimeConfiguration" Prelude.<$> runtimeConfiguration, (JSON..=) "SchedulerConfiguration" Prelude.<$> schedulerConfiguration, (JSON..=) "Tags" Prelude.<$> tags, (JSON..=) "WorkerTypeSpecifications" Prelude.<$> workerTypeSpecifications]))} instance JSON.ToJSON Application where toJSON Application {..} = JSON.object (Prelude.fromList ((Prelude.<>) ["ReleaseLabel" JSON..= releaseLabel, "Type" JSON..= type'] (Prelude.catMaybes [(JSON..=) "Architecture" Prelude.<$> architecture, (JSON..=) "AutoStartConfiguration" Prelude.<$> autoStartConfiguration, (JSON..=) "AutoStopConfiguration" Prelude.<$> autoStopConfiguration, (JSON..=) "IdentityCenterConfiguration" Prelude.<$> identityCenterConfiguration, (JSON..=) "ImageConfiguration" Prelude.<$> imageConfiguration, (JSON..=) "InitialCapacity" Prelude.<$> initialCapacity, (JSON..=) "InteractiveConfiguration" Prelude.<$> interactiveConfiguration, (JSON..=) "MaximumCapacity" Prelude.<$> maximumCapacity, (JSON..=) "MonitoringConfiguration" Prelude.<$> monitoringConfiguration, (JSON..=) "Name" Prelude.<$> name, (JSON..=) "NetworkConfiguration" Prelude.<$> networkConfiguration, (JSON..=) "RuntimeConfiguration" Prelude.<$> runtimeConfiguration, (JSON..=) "SchedulerConfiguration" Prelude.<$> schedulerConfiguration, (JSON..=) "Tags" Prelude.<$> tags, (JSON..=) "WorkerTypeSpecifications" Prelude.<$> workerTypeSpecifications]))) instance Property "Architecture" Application where type PropertyType "Architecture" Application = Value Prelude.Text set newValue Application {..} = Application {architecture = Prelude.pure newValue, ..} instance Property "AutoStartConfiguration" Application where type PropertyType "AutoStartConfiguration" Application = AutoStartConfigurationProperty set newValue Application {..} = Application {autoStartConfiguration = Prelude.pure newValue, ..} instance Property "AutoStopConfiguration" Application where type PropertyType "AutoStopConfiguration" Application = AutoStopConfigurationProperty set newValue Application {..} = Application {autoStopConfiguration = Prelude.pure newValue, ..} instance Property "IdentityCenterConfiguration" Application where type PropertyType "IdentityCenterConfiguration" Application = IdentityCenterConfigurationProperty set newValue Application {..} = Application {identityCenterConfiguration = Prelude.pure newValue, ..} instance Property "ImageConfiguration" Application where type PropertyType "ImageConfiguration" Application = ImageConfigurationInputProperty set newValue Application {..} = Application {imageConfiguration = Prelude.pure newValue, ..} instance Property "InitialCapacity" Application where type PropertyType "InitialCapacity" Application = [InitialCapacityConfigKeyValuePairProperty] set newValue Application {..} = Application {initialCapacity = Prelude.pure newValue, ..} instance Property "InteractiveConfiguration" Application where type PropertyType "InteractiveConfiguration" Application = InteractiveConfigurationProperty set newValue Application {..} = Application {interactiveConfiguration = Prelude.pure newValue, ..} instance Property "MaximumCapacity" Application where type PropertyType "MaximumCapacity" Application = MaximumAllowedResourcesProperty set newValue Application {..} = Application {maximumCapacity = Prelude.pure newValue, ..} instance Property "MonitoringConfiguration" Application where type PropertyType "MonitoringConfiguration" Application = MonitoringConfigurationProperty set newValue Application {..} = Application {monitoringConfiguration = Prelude.pure newValue, ..} instance Property "Name" Application where type PropertyType "Name" Application = Value Prelude.Text set newValue Application {..} = Application {name = Prelude.pure newValue, ..} instance Property "NetworkConfiguration" Application where type PropertyType "NetworkConfiguration" Application = NetworkConfigurationProperty set newValue Application {..} = Application {networkConfiguration = Prelude.pure newValue, ..} instance Property "ReleaseLabel" Application where type PropertyType "ReleaseLabel" Application = Value Prelude.Text set newValue Application {..} = Application {releaseLabel = newValue, ..} instance Property "RuntimeConfiguration" Application where type PropertyType "RuntimeConfiguration" Application = [ConfigurationObjectProperty] set newValue Application {..} = Application {runtimeConfiguration = Prelude.pure newValue, ..} instance Property "SchedulerConfiguration" Application where type PropertyType "SchedulerConfiguration" Application = SchedulerConfigurationProperty set newValue Application {..} = Application {schedulerConfiguration = Prelude.pure newValue, ..} instance Property "Tags" Application where type PropertyType "Tags" Application = [Tag] set newValue Application {..} = Application {tags = Prelude.pure newValue, ..} instance Property "Type" Application where type PropertyType "Type" Application = Value Prelude.Text set newValue Application {..} = Application {type' = newValue, ..} instance Property "WorkerTypeSpecifications" Application where type PropertyType "WorkerTypeSpecifications" Application = Prelude.Map Prelude.Text WorkerTypeSpecificationInputProperty set newValue Application {..} = Application {workerTypeSpecifications = Prelude.pure newValue, ..}