packages feed

amazonka-emr-containers-2.0: gen/Amazonka/EMRContainers/Types/JobTemplateData.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.EMRContainers.Types.JobTemplateData
-- 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.EMRContainers.Types.JobTemplateData where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EMRContainers.Types.JobDriver
import Amazonka.EMRContainers.Types.ParametricConfigurationOverrides
import Amazonka.EMRContainers.Types.TemplateParameterConfiguration
import qualified Amazonka.Prelude as Prelude

-- | The values of StartJobRun API requests used in job runs started using
-- the job template.
--
-- /See:/ 'newJobTemplateData' smart constructor.
data JobTemplateData = JobTemplateData'
  { -- | The configuration settings that are used to override defaults
    -- configuration.
    configurationOverrides :: Prelude.Maybe ParametricConfigurationOverrides,
    -- | The tags assigned to jobs started using the job template.
    jobTags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The configuration of parameters existing in the job template.
    parameterConfiguration :: Prelude.Maybe (Prelude.HashMap Prelude.Text TemplateParameterConfiguration),
    -- | The execution role ARN of the job run.
    executionRoleArn :: Prelude.Text,
    -- | The release version of Amazon EMR.
    releaseLabel :: Prelude.Text,
    jobDriver :: JobDriver
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'JobTemplateData' 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:
--
-- 'configurationOverrides', 'jobTemplateData_configurationOverrides' - The configuration settings that are used to override defaults
-- configuration.
--
-- 'jobTags', 'jobTemplateData_jobTags' - The tags assigned to jobs started using the job template.
--
-- 'parameterConfiguration', 'jobTemplateData_parameterConfiguration' - The configuration of parameters existing in the job template.
--
-- 'executionRoleArn', 'jobTemplateData_executionRoleArn' - The execution role ARN of the job run.
--
-- 'releaseLabel', 'jobTemplateData_releaseLabel' - The release version of Amazon EMR.
--
-- 'jobDriver', 'jobTemplateData_jobDriver' - Undocumented member.
newJobTemplateData ::
  -- | 'executionRoleArn'
  Prelude.Text ->
  -- | 'releaseLabel'
  Prelude.Text ->
  -- | 'jobDriver'
  JobDriver ->
  JobTemplateData
newJobTemplateData
  pExecutionRoleArn_
  pReleaseLabel_
  pJobDriver_ =
    JobTemplateData'
      { configurationOverrides =
          Prelude.Nothing,
        jobTags = Prelude.Nothing,
        parameterConfiguration = Prelude.Nothing,
        executionRoleArn = pExecutionRoleArn_,
        releaseLabel = pReleaseLabel_,
        jobDriver = pJobDriver_
      }

-- | The configuration settings that are used to override defaults
-- configuration.
jobTemplateData_configurationOverrides :: Lens.Lens' JobTemplateData (Prelude.Maybe ParametricConfigurationOverrides)
jobTemplateData_configurationOverrides = Lens.lens (\JobTemplateData' {configurationOverrides} -> configurationOverrides) (\s@JobTemplateData' {} a -> s {configurationOverrides = a} :: JobTemplateData)

-- | The tags assigned to jobs started using the job template.
jobTemplateData_jobTags :: Lens.Lens' JobTemplateData (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
jobTemplateData_jobTags = Lens.lens (\JobTemplateData' {jobTags} -> jobTags) (\s@JobTemplateData' {} a -> s {jobTags = a} :: JobTemplateData) Prelude.. Lens.mapping Lens.coerced

-- | The configuration of parameters existing in the job template.
jobTemplateData_parameterConfiguration :: Lens.Lens' JobTemplateData (Prelude.Maybe (Prelude.HashMap Prelude.Text TemplateParameterConfiguration))
jobTemplateData_parameterConfiguration = Lens.lens (\JobTemplateData' {parameterConfiguration} -> parameterConfiguration) (\s@JobTemplateData' {} a -> s {parameterConfiguration = a} :: JobTemplateData) Prelude.. Lens.mapping Lens.coerced

-- | The execution role ARN of the job run.
jobTemplateData_executionRoleArn :: Lens.Lens' JobTemplateData Prelude.Text
jobTemplateData_executionRoleArn = Lens.lens (\JobTemplateData' {executionRoleArn} -> executionRoleArn) (\s@JobTemplateData' {} a -> s {executionRoleArn = a} :: JobTemplateData)

-- | The release version of Amazon EMR.
jobTemplateData_releaseLabel :: Lens.Lens' JobTemplateData Prelude.Text
jobTemplateData_releaseLabel = Lens.lens (\JobTemplateData' {releaseLabel} -> releaseLabel) (\s@JobTemplateData' {} a -> s {releaseLabel = a} :: JobTemplateData)

-- | Undocumented member.
jobTemplateData_jobDriver :: Lens.Lens' JobTemplateData JobDriver
jobTemplateData_jobDriver = Lens.lens (\JobTemplateData' {jobDriver} -> jobDriver) (\s@JobTemplateData' {} a -> s {jobDriver = a} :: JobTemplateData)

instance Data.FromJSON JobTemplateData where
  parseJSON =
    Data.withObject
      "JobTemplateData"
      ( \x ->
          JobTemplateData'
            Prelude.<$> (x Data..:? "configurationOverrides")
            Prelude.<*> (x Data..:? "jobTags" Data..!= Prelude.mempty)
            Prelude.<*> ( x
                            Data..:? "parameterConfiguration"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..: "executionRoleArn")
            Prelude.<*> (x Data..: "releaseLabel")
            Prelude.<*> (x Data..: "jobDriver")
      )

instance Prelude.Hashable JobTemplateData where
  hashWithSalt _salt JobTemplateData' {..} =
    _salt
      `Prelude.hashWithSalt` configurationOverrides
      `Prelude.hashWithSalt` jobTags
      `Prelude.hashWithSalt` parameterConfiguration
      `Prelude.hashWithSalt` executionRoleArn
      `Prelude.hashWithSalt` releaseLabel
      `Prelude.hashWithSalt` jobDriver

instance Prelude.NFData JobTemplateData where
  rnf JobTemplateData' {..} =
    Prelude.rnf configurationOverrides
      `Prelude.seq` Prelude.rnf jobTags
      `Prelude.seq` Prelude.rnf parameterConfiguration
      `Prelude.seq` Prelude.rnf executionRoleArn
      `Prelude.seq` Prelude.rnf releaseLabel
      `Prelude.seq` Prelude.rnf jobDriver

instance Data.ToJSON JobTemplateData where
  toJSON JobTemplateData' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("configurationOverrides" Data..=)
              Prelude.<$> configurationOverrides,
            ("jobTags" Data..=) Prelude.<$> jobTags,
            ("parameterConfiguration" Data..=)
              Prelude.<$> parameterConfiguration,
            Prelude.Just
              ("executionRoleArn" Data..= executionRoleArn),
            Prelude.Just ("releaseLabel" Data..= releaseLabel),
            Prelude.Just ("jobDriver" Data..= jobDriver)
          ]
      )