packages feed

amazonka-appconfig-2.0: gen/Amazonka/AppConfig/Types/ExtensionAssociation.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.AppConfig.Types.ExtensionAssociation
-- 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.AppConfig.Types.ExtensionAssociation where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | /See:/ 'newExtensionAssociation' smart constructor.
data ExtensionAssociation = ExtensionAssociation'
  { -- | The system-generated Amazon Resource Name (ARN) for the extension.
    arn :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the extension defined in the association.
    extensionArn :: Prelude.Maybe Prelude.Text,
    -- | The version number for the extension defined in the association.
    extensionVersionNumber :: Prelude.Maybe Prelude.Int,
    -- | The system-generated ID for the association.
    id :: Prelude.Maybe Prelude.Text,
    -- | The parameter names and values defined in the association.
    parameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The ARNs of applications, configuration profiles, or environments
    -- defined in the association.
    resourceArn :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ExtensionAssociation' 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', 'extensionAssociation_arn' - The system-generated Amazon Resource Name (ARN) for the extension.
--
-- 'extensionArn', 'extensionAssociation_extensionArn' - The ARN of the extension defined in the association.
--
-- 'extensionVersionNumber', 'extensionAssociation_extensionVersionNumber' - The version number for the extension defined in the association.
--
-- 'id', 'extensionAssociation_id' - The system-generated ID for the association.
--
-- 'parameters', 'extensionAssociation_parameters' - The parameter names and values defined in the association.
--
-- 'resourceArn', 'extensionAssociation_resourceArn' - The ARNs of applications, configuration profiles, or environments
-- defined in the association.
newExtensionAssociation ::
  ExtensionAssociation
newExtensionAssociation =
  ExtensionAssociation'
    { arn = Prelude.Nothing,
      extensionArn = Prelude.Nothing,
      extensionVersionNumber = Prelude.Nothing,
      id = Prelude.Nothing,
      parameters = Prelude.Nothing,
      resourceArn = Prelude.Nothing
    }

-- | The system-generated Amazon Resource Name (ARN) for the extension.
extensionAssociation_arn :: Lens.Lens' ExtensionAssociation (Prelude.Maybe Prelude.Text)
extensionAssociation_arn = Lens.lens (\ExtensionAssociation' {arn} -> arn) (\s@ExtensionAssociation' {} a -> s {arn = a} :: ExtensionAssociation)

-- | The ARN of the extension defined in the association.
extensionAssociation_extensionArn :: Lens.Lens' ExtensionAssociation (Prelude.Maybe Prelude.Text)
extensionAssociation_extensionArn = Lens.lens (\ExtensionAssociation' {extensionArn} -> extensionArn) (\s@ExtensionAssociation' {} a -> s {extensionArn = a} :: ExtensionAssociation)

-- | The version number for the extension defined in the association.
extensionAssociation_extensionVersionNumber :: Lens.Lens' ExtensionAssociation (Prelude.Maybe Prelude.Int)
extensionAssociation_extensionVersionNumber = Lens.lens (\ExtensionAssociation' {extensionVersionNumber} -> extensionVersionNumber) (\s@ExtensionAssociation' {} a -> s {extensionVersionNumber = a} :: ExtensionAssociation)

-- | The system-generated ID for the association.
extensionAssociation_id :: Lens.Lens' ExtensionAssociation (Prelude.Maybe Prelude.Text)
extensionAssociation_id = Lens.lens (\ExtensionAssociation' {id} -> id) (\s@ExtensionAssociation' {} a -> s {id = a} :: ExtensionAssociation)

-- | The parameter names and values defined in the association.
extensionAssociation_parameters :: Lens.Lens' ExtensionAssociation (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
extensionAssociation_parameters = Lens.lens (\ExtensionAssociation' {parameters} -> parameters) (\s@ExtensionAssociation' {} a -> s {parameters = a} :: ExtensionAssociation) Prelude.. Lens.mapping Lens.coerced

-- | The ARNs of applications, configuration profiles, or environments
-- defined in the association.
extensionAssociation_resourceArn :: Lens.Lens' ExtensionAssociation (Prelude.Maybe Prelude.Text)
extensionAssociation_resourceArn = Lens.lens (\ExtensionAssociation' {resourceArn} -> resourceArn) (\s@ExtensionAssociation' {} a -> s {resourceArn = a} :: ExtensionAssociation)

instance Data.FromJSON ExtensionAssociation where
  parseJSON =
    Data.withObject
      "ExtensionAssociation"
      ( \x ->
          ExtensionAssociation'
            Prelude.<$> (x Data..:? "Arn")
            Prelude.<*> (x Data..:? "ExtensionArn")
            Prelude.<*> (x Data..:? "ExtensionVersionNumber")
            Prelude.<*> (x Data..:? "Id")
            Prelude.<*> (x Data..:? "Parameters" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "ResourceArn")
      )

instance Prelude.Hashable ExtensionAssociation where
  hashWithSalt _salt ExtensionAssociation' {..} =
    _salt
      `Prelude.hashWithSalt` arn
      `Prelude.hashWithSalt` extensionArn
      `Prelude.hashWithSalt` extensionVersionNumber
      `Prelude.hashWithSalt` id
      `Prelude.hashWithSalt` parameters
      `Prelude.hashWithSalt` resourceArn

instance Prelude.NFData ExtensionAssociation where
  rnf ExtensionAssociation' {..} =
    Prelude.rnf arn
      `Prelude.seq` Prelude.rnf extensionArn
      `Prelude.seq` Prelude.rnf extensionVersionNumber
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf parameters
      `Prelude.seq` Prelude.rnf resourceArn