amazonka-emr-containers-2.0: gen/Amazonka/EMRContainers/Types/JobTemplate.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.JobTemplate
-- 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.JobTemplate 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.JobTemplateData
import qualified Amazonka.Prelude as Prelude
-- | This entity describes a job template. Job template stores values of
-- StartJobRun API request in a template and can be used to start a job
-- run. Job template allows two use cases: avoid repeating recurring
-- StartJobRun API request values, enforcing certain values in StartJobRun
-- API request.
--
-- /See:/ 'newJobTemplate' smart constructor.
data JobTemplate = JobTemplate'
{ -- | The ARN of the job template.
arn :: Prelude.Maybe Prelude.Text,
-- | The date and time when the job template was created.
createdAt :: Prelude.Maybe Data.ISO8601,
-- | The user who created the job template.
createdBy :: Prelude.Maybe Prelude.Text,
-- | The error message in case the decryption of job template fails.
decryptionError :: Prelude.Maybe Prelude.Text,
-- | The ID of the job template.
id :: Prelude.Maybe Prelude.Text,
-- | The KMS key ARN used to encrypt the job template.
kmsKeyArn :: Prelude.Maybe Prelude.Text,
-- | The name of the job template.
name :: Prelude.Maybe Prelude.Text,
-- | The tags assigned to the job template.
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
-- | The job template data which holds values of StartJobRun API request.
jobTemplateData :: JobTemplateData
}
deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'JobTemplate' 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:
--
-- 'arn', 'jobTemplate_arn' - The ARN of the job template.
--
-- 'createdAt', 'jobTemplate_createdAt' - The date and time when the job template was created.
--
-- 'createdBy', 'jobTemplate_createdBy' - The user who created the job template.
--
-- 'decryptionError', 'jobTemplate_decryptionError' - The error message in case the decryption of job template fails.
--
-- 'id', 'jobTemplate_id' - The ID of the job template.
--
-- 'kmsKeyArn', 'jobTemplate_kmsKeyArn' - The KMS key ARN used to encrypt the job template.
--
-- 'name', 'jobTemplate_name' - The name of the job template.
--
-- 'tags', 'jobTemplate_tags' - The tags assigned to the job template.
--
-- 'jobTemplateData', 'jobTemplate_jobTemplateData' - The job template data which holds values of StartJobRun API request.
newJobTemplate ::
-- | 'jobTemplateData'
JobTemplateData ->
JobTemplate
newJobTemplate pJobTemplateData_ =
JobTemplate'
{ arn = Prelude.Nothing,
createdAt = Prelude.Nothing,
createdBy = Prelude.Nothing,
decryptionError = Prelude.Nothing,
id = Prelude.Nothing,
kmsKeyArn = Prelude.Nothing,
name = Prelude.Nothing,
tags = Prelude.Nothing,
jobTemplateData = pJobTemplateData_
}
-- | The ARN of the job template.
jobTemplate_arn :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
jobTemplate_arn = Lens.lens (\JobTemplate' {arn} -> arn) (\s@JobTemplate' {} a -> s {arn = a} :: JobTemplate)
-- | The date and time when the job template was created.
jobTemplate_createdAt :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.UTCTime)
jobTemplate_createdAt = Lens.lens (\JobTemplate' {createdAt} -> createdAt) (\s@JobTemplate' {} a -> s {createdAt = a} :: JobTemplate) Prelude.. Lens.mapping Data._Time
-- | The user who created the job template.
jobTemplate_createdBy :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
jobTemplate_createdBy = Lens.lens (\JobTemplate' {createdBy} -> createdBy) (\s@JobTemplate' {} a -> s {createdBy = a} :: JobTemplate)
-- | The error message in case the decryption of job template fails.
jobTemplate_decryptionError :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
jobTemplate_decryptionError = Lens.lens (\JobTemplate' {decryptionError} -> decryptionError) (\s@JobTemplate' {} a -> s {decryptionError = a} :: JobTemplate)
-- | The ID of the job template.
jobTemplate_id :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
jobTemplate_id = Lens.lens (\JobTemplate' {id} -> id) (\s@JobTemplate' {} a -> s {id = a} :: JobTemplate)
-- | The KMS key ARN used to encrypt the job template.
jobTemplate_kmsKeyArn :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
jobTemplate_kmsKeyArn = Lens.lens (\JobTemplate' {kmsKeyArn} -> kmsKeyArn) (\s@JobTemplate' {} a -> s {kmsKeyArn = a} :: JobTemplate)
-- | The name of the job template.
jobTemplate_name :: Lens.Lens' JobTemplate (Prelude.Maybe Prelude.Text)
jobTemplate_name = Lens.lens (\JobTemplate' {name} -> name) (\s@JobTemplate' {} a -> s {name = a} :: JobTemplate)
-- | The tags assigned to the job template.
jobTemplate_tags :: Lens.Lens' JobTemplate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
jobTemplate_tags = Lens.lens (\JobTemplate' {tags} -> tags) (\s@JobTemplate' {} a -> s {tags = a} :: JobTemplate) Prelude.. Lens.mapping Lens.coerced
-- | The job template data which holds values of StartJobRun API request.
jobTemplate_jobTemplateData :: Lens.Lens' JobTemplate JobTemplateData
jobTemplate_jobTemplateData = Lens.lens (\JobTemplate' {jobTemplateData} -> jobTemplateData) (\s@JobTemplate' {} a -> s {jobTemplateData = a} :: JobTemplate)
instance Data.FromJSON JobTemplate where
parseJSON =
Data.withObject
"JobTemplate"
( \x ->
JobTemplate'
Prelude.<$> (x Data..:? "arn")
Prelude.<*> (x Data..:? "createdAt")
Prelude.<*> (x Data..:? "createdBy")
Prelude.<*> (x Data..:? "decryptionError")
Prelude.<*> (x Data..:? "id")
Prelude.<*> (x Data..:? "kmsKeyArn")
Prelude.<*> (x Data..:? "name")
Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)
Prelude.<*> (x Data..: "jobTemplateData")
)
instance Prelude.Hashable JobTemplate where
hashWithSalt _salt JobTemplate' {..} =
_salt
`Prelude.hashWithSalt` arn
`Prelude.hashWithSalt` createdAt
`Prelude.hashWithSalt` createdBy
`Prelude.hashWithSalt` decryptionError
`Prelude.hashWithSalt` id
`Prelude.hashWithSalt` kmsKeyArn
`Prelude.hashWithSalt` name
`Prelude.hashWithSalt` tags
`Prelude.hashWithSalt` jobTemplateData
instance Prelude.NFData JobTemplate where
rnf JobTemplate' {..} =
Prelude.rnf arn
`Prelude.seq` Prelude.rnf createdAt
`Prelude.seq` Prelude.rnf createdBy
`Prelude.seq` Prelude.rnf decryptionError
`Prelude.seq` Prelude.rnf id
`Prelude.seq` Prelude.rnf kmsKeyArn
`Prelude.seq` Prelude.rnf name
`Prelude.seq` Prelude.rnf tags
`Prelude.seq` Prelude.rnf jobTemplateData