{-# 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.SSM.Types.AssociationVersionInfo
-- 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.SSM.Types.AssociationVersionInfo 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
import Amazonka.SSM.Types.AssociationComplianceSeverity
import Amazonka.SSM.Types.AssociationSyncCompliance
import Amazonka.SSM.Types.InstanceAssociationOutputLocation
import Amazonka.SSM.Types.Target
import Amazonka.SSM.Types.TargetLocation

-- | Information about the association version.
--
-- /See:/ 'newAssociationVersionInfo' smart constructor.
data AssociationVersionInfo = AssociationVersionInfo'
  { -- | By default, when you create a new associations, the system runs it
    -- immediately after it is created and then according to the schedule you
    -- specified. Specify this option if you don\'t want an association to run
    -- immediately after you create it. This parameter isn\'t supported for
    -- rate expressions.
    AssociationVersionInfo -> Maybe Bool
applyOnlyAtCronInterval :: Prelude.Maybe Prelude.Bool,
    -- | The ID created by the system when the association was created.
    AssociationVersionInfo -> Maybe Text
associationId :: Prelude.Maybe Prelude.Text,
    -- | The name specified for the association version when the association
    -- version was created.
    AssociationVersionInfo -> Maybe Text
associationName :: Prelude.Maybe Prelude.Text,
    -- | The association version.
    AssociationVersionInfo -> Maybe Text
associationVersion :: Prelude.Maybe Prelude.Text,
    -- | The names or Amazon Resource Names (ARNs) of the Change Calendar type
    -- documents your associations are gated under. The associations for this
    -- version only run when that Change Calendar is open. For more
    -- information, see
    -- <https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar Amazon Web Services Systems Manager Change Calendar>.
    AssociationVersionInfo -> Maybe [Text]
calendarNames :: Prelude.Maybe [Prelude.Text],
    -- | The severity level that is assigned to the association.
    AssociationVersionInfo -> Maybe AssociationComplianceSeverity
complianceSeverity :: Prelude.Maybe AssociationComplianceSeverity,
    -- | The date the association version was created.
    AssociationVersionInfo -> Maybe POSIX
createdDate :: Prelude.Maybe Data.POSIX,
    -- | The version of an Amazon Web Services Systems Manager document (SSM
    -- document) used when the association version was created.
    AssociationVersionInfo -> Maybe Text
documentVersion :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of targets allowed to run the association at the same
    -- time. You can specify a number, for example 10, or a percentage of the
    -- target set, for example 10%. The default value is 100%, which means all
    -- targets run the association at the same time.
    --
    -- If a new managed node starts and attempts to run an association while
    -- Systems Manager is running @MaxConcurrency@ associations, the
    -- association is allowed to run. During the next association interval, the
    -- new managed node will process its association within the limit specified
    -- for @MaxConcurrency@.
    AssociationVersionInfo -> Maybe Text
maxConcurrency :: Prelude.Maybe Prelude.Text,
    -- | The number of errors that are allowed before the system stops sending
    -- requests to run the association on additional targets. You can specify
    -- either an absolute number of errors, for example 10, or a percentage of
    -- the target set, for example 10%. If you specify 3, for example, the
    -- system stops sending requests when the fourth error is received. If you
    -- specify 0, then the system stops sending requests after the first error
    -- is returned. If you run an association on 50 managed nodes and set
    -- @MaxError@ to 10%, then the system stops sending the request when the
    -- sixth error is received.
    --
    -- Executions that are already running an association when @MaxErrors@ is
    -- reached are allowed to complete, but some of these executions may fail
    -- as well. If you need to ensure that there won\'t be more than max-errors
    -- failed executions, set @MaxConcurrency@ to 1 so that executions proceed
    -- one at a time.
    AssociationVersionInfo -> Maybe Text
maxErrors :: Prelude.Maybe Prelude.Text,
    -- | The name specified when the association was created.
    AssociationVersionInfo -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The location in Amazon S3 specified for the association when the
    -- association version was created.
    AssociationVersionInfo -> Maybe InstanceAssociationOutputLocation
outputLocation :: Prelude.Maybe InstanceAssociationOutputLocation,
    -- | Parameters specified when the association version was created.
    AssociationVersionInfo -> Maybe (Sensitive (HashMap Text [Text]))
parameters :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text [Prelude.Text])),
    -- | The cron or rate schedule specified for the association when the
    -- association version was created.
    AssociationVersionInfo -> Maybe Text
scheduleExpression :: Prelude.Maybe Prelude.Text,
    -- | Number of days to wait after the scheduled day to run an association.
    AssociationVersionInfo -> Maybe Natural
scheduleOffset :: Prelude.Maybe Prelude.Natural,
    -- | The mode for generating association compliance. You can specify @AUTO@
    -- or @MANUAL@. In @AUTO@ mode, the system uses the status of the
    -- association execution to determine the compliance status. If the
    -- association execution runs successfully, then the association is
    -- @COMPLIANT@. If the association execution doesn\'t run successfully, the
    -- association is @NON-COMPLIANT@.
    --
    -- In @MANUAL@ mode, you must specify the @AssociationId@ as a parameter
    -- for the PutComplianceItems API operation. In this case, compliance data
    -- isn\'t managed by State Manager, a capability of Amazon Web Services
    -- Systems Manager. It is managed by your direct call to the
    -- PutComplianceItems API operation.
    --
    -- By default, all associations use @AUTO@ mode.
    AssociationVersionInfo -> Maybe AssociationSyncCompliance
syncCompliance :: Prelude.Maybe AssociationSyncCompliance,
    -- | The combination of Amazon Web Services Regions and Amazon Web Services
    -- accounts where you wanted to run the association when this association
    -- version was created.
    AssociationVersionInfo -> Maybe (NonEmpty TargetLocation)
targetLocations :: Prelude.Maybe (Prelude.NonEmpty TargetLocation),
    -- | A key-value mapping of document parameters to target resources. Both
    -- Targets and TargetMaps can\'t be specified together.
    AssociationVersionInfo -> Maybe [HashMap Text [Text]]
targetMaps :: Prelude.Maybe [Prelude.HashMap Prelude.Text [Prelude.Text]],
    -- | The targets specified for the association when the association version
    -- was created.
    AssociationVersionInfo -> Maybe [Target]
targets :: Prelude.Maybe [Target]
  }
  deriving (AssociationVersionInfo -> AssociationVersionInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AssociationVersionInfo -> AssociationVersionInfo -> Bool
$c/= :: AssociationVersionInfo -> AssociationVersionInfo -> Bool
== :: AssociationVersionInfo -> AssociationVersionInfo -> Bool
$c== :: AssociationVersionInfo -> AssociationVersionInfo -> Bool
Prelude.Eq, Int -> AssociationVersionInfo -> ShowS
[AssociationVersionInfo] -> ShowS
AssociationVersionInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AssociationVersionInfo] -> ShowS
$cshowList :: [AssociationVersionInfo] -> ShowS
show :: AssociationVersionInfo -> String
$cshow :: AssociationVersionInfo -> String
showsPrec :: Int -> AssociationVersionInfo -> ShowS
$cshowsPrec :: Int -> AssociationVersionInfo -> ShowS
Prelude.Show, forall x. Rep AssociationVersionInfo x -> AssociationVersionInfo
forall x. AssociationVersionInfo -> Rep AssociationVersionInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AssociationVersionInfo x -> AssociationVersionInfo
$cfrom :: forall x. AssociationVersionInfo -> Rep AssociationVersionInfo x
Prelude.Generic)

-- |
-- Create a value of 'AssociationVersionInfo' 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:
--
-- 'applyOnlyAtCronInterval', 'associationVersionInfo_applyOnlyAtCronInterval' - By default, when you create a new associations, the system runs it
-- immediately after it is created and then according to the schedule you
-- specified. Specify this option if you don\'t want an association to run
-- immediately after you create it. This parameter isn\'t supported for
-- rate expressions.
--
-- 'associationId', 'associationVersionInfo_associationId' - The ID created by the system when the association was created.
--
-- 'associationName', 'associationVersionInfo_associationName' - The name specified for the association version when the association
-- version was created.
--
-- 'associationVersion', 'associationVersionInfo_associationVersion' - The association version.
--
-- 'calendarNames', 'associationVersionInfo_calendarNames' - The names or Amazon Resource Names (ARNs) of the Change Calendar type
-- documents your associations are gated under. The associations for this
-- version only run when that Change Calendar is open. For more
-- information, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar Amazon Web Services Systems Manager Change Calendar>.
--
-- 'complianceSeverity', 'associationVersionInfo_complianceSeverity' - The severity level that is assigned to the association.
--
-- 'createdDate', 'associationVersionInfo_createdDate' - The date the association version was created.
--
-- 'documentVersion', 'associationVersionInfo_documentVersion' - The version of an Amazon Web Services Systems Manager document (SSM
-- document) used when the association version was created.
--
-- 'maxConcurrency', 'associationVersionInfo_maxConcurrency' - The maximum number of targets allowed to run the association at the same
-- time. You can specify a number, for example 10, or a percentage of the
-- target set, for example 10%. The default value is 100%, which means all
-- targets run the association at the same time.
--
-- If a new managed node starts and attempts to run an association while
-- Systems Manager is running @MaxConcurrency@ associations, the
-- association is allowed to run. During the next association interval, the
-- new managed node will process its association within the limit specified
-- for @MaxConcurrency@.
--
-- 'maxErrors', 'associationVersionInfo_maxErrors' - The number of errors that are allowed before the system stops sending
-- requests to run the association on additional targets. You can specify
-- either an absolute number of errors, for example 10, or a percentage of
-- the target set, for example 10%. If you specify 3, for example, the
-- system stops sending requests when the fourth error is received. If you
-- specify 0, then the system stops sending requests after the first error
-- is returned. If you run an association on 50 managed nodes and set
-- @MaxError@ to 10%, then the system stops sending the request when the
-- sixth error is received.
--
-- Executions that are already running an association when @MaxErrors@ is
-- reached are allowed to complete, but some of these executions may fail
-- as well. If you need to ensure that there won\'t be more than max-errors
-- failed executions, set @MaxConcurrency@ to 1 so that executions proceed
-- one at a time.
--
-- 'name', 'associationVersionInfo_name' - The name specified when the association was created.
--
-- 'outputLocation', 'associationVersionInfo_outputLocation' - The location in Amazon S3 specified for the association when the
-- association version was created.
--
-- 'parameters', 'associationVersionInfo_parameters' - Parameters specified when the association version was created.
--
-- 'scheduleExpression', 'associationVersionInfo_scheduleExpression' - The cron or rate schedule specified for the association when the
-- association version was created.
--
-- 'scheduleOffset', 'associationVersionInfo_scheduleOffset' - Number of days to wait after the scheduled day to run an association.
--
-- 'syncCompliance', 'associationVersionInfo_syncCompliance' - The mode for generating association compliance. You can specify @AUTO@
-- or @MANUAL@. In @AUTO@ mode, the system uses the status of the
-- association execution to determine the compliance status. If the
-- association execution runs successfully, then the association is
-- @COMPLIANT@. If the association execution doesn\'t run successfully, the
-- association is @NON-COMPLIANT@.
--
-- In @MANUAL@ mode, you must specify the @AssociationId@ as a parameter
-- for the PutComplianceItems API operation. In this case, compliance data
-- isn\'t managed by State Manager, a capability of Amazon Web Services
-- Systems Manager. It is managed by your direct call to the
-- PutComplianceItems API operation.
--
-- By default, all associations use @AUTO@ mode.
--
-- 'targetLocations', 'associationVersionInfo_targetLocations' - The combination of Amazon Web Services Regions and Amazon Web Services
-- accounts where you wanted to run the association when this association
-- version was created.
--
-- 'targetMaps', 'associationVersionInfo_targetMaps' - A key-value mapping of document parameters to target resources. Both
-- Targets and TargetMaps can\'t be specified together.
--
-- 'targets', 'associationVersionInfo_targets' - The targets specified for the association when the association version
-- was created.
newAssociationVersionInfo ::
  AssociationVersionInfo
newAssociationVersionInfo :: AssociationVersionInfo
newAssociationVersionInfo =
  AssociationVersionInfo'
    { $sel:applyOnlyAtCronInterval:AssociationVersionInfo' :: Maybe Bool
applyOnlyAtCronInterval =
        forall a. Maybe a
Prelude.Nothing,
      $sel:associationId:AssociationVersionInfo' :: Maybe Text
associationId = forall a. Maybe a
Prelude.Nothing,
      $sel:associationName:AssociationVersionInfo' :: Maybe Text
associationName = forall a. Maybe a
Prelude.Nothing,
      $sel:associationVersion:AssociationVersionInfo' :: Maybe Text
associationVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:calendarNames:AssociationVersionInfo' :: Maybe [Text]
calendarNames = forall a. Maybe a
Prelude.Nothing,
      $sel:complianceSeverity:AssociationVersionInfo' :: Maybe AssociationComplianceSeverity
complianceSeverity = forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:AssociationVersionInfo' :: Maybe POSIX
createdDate = forall a. Maybe a
Prelude.Nothing,
      $sel:documentVersion:AssociationVersionInfo' :: Maybe Text
documentVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:maxConcurrency:AssociationVersionInfo' :: Maybe Text
maxConcurrency = forall a. Maybe a
Prelude.Nothing,
      $sel:maxErrors:AssociationVersionInfo' :: Maybe Text
maxErrors = forall a. Maybe a
Prelude.Nothing,
      $sel:name:AssociationVersionInfo' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:AssociationVersionInfo' :: Maybe InstanceAssociationOutputLocation
outputLocation = forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:AssociationVersionInfo' :: Maybe (Sensitive (HashMap Text [Text]))
parameters = forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleExpression:AssociationVersionInfo' :: Maybe Text
scheduleExpression = forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleOffset:AssociationVersionInfo' :: Maybe Natural
scheduleOffset = forall a. Maybe a
Prelude.Nothing,
      $sel:syncCompliance:AssociationVersionInfo' :: Maybe AssociationSyncCompliance
syncCompliance = forall a. Maybe a
Prelude.Nothing,
      $sel:targetLocations:AssociationVersionInfo' :: Maybe (NonEmpty TargetLocation)
targetLocations = forall a. Maybe a
Prelude.Nothing,
      $sel:targetMaps:AssociationVersionInfo' :: Maybe [HashMap Text [Text]]
targetMaps = forall a. Maybe a
Prelude.Nothing,
      $sel:targets:AssociationVersionInfo' :: Maybe [Target]
targets = forall a. Maybe a
Prelude.Nothing
    }

-- | By default, when you create a new associations, the system runs it
-- immediately after it is created and then according to the schedule you
-- specified. Specify this option if you don\'t want an association to run
-- immediately after you create it. This parameter isn\'t supported for
-- rate expressions.
associationVersionInfo_applyOnlyAtCronInterval :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Bool)
associationVersionInfo_applyOnlyAtCronInterval :: Lens' AssociationVersionInfo (Maybe Bool)
associationVersionInfo_applyOnlyAtCronInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Bool
applyOnlyAtCronInterval :: Maybe Bool
$sel:applyOnlyAtCronInterval:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Bool
applyOnlyAtCronInterval} -> Maybe Bool
applyOnlyAtCronInterval) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Bool
a -> AssociationVersionInfo
s {$sel:applyOnlyAtCronInterval:AssociationVersionInfo' :: Maybe Bool
applyOnlyAtCronInterval = Maybe Bool
a} :: AssociationVersionInfo)

-- | The ID created by the system when the association was created.
associationVersionInfo_associationId :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_associationId :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_associationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
associationId :: Maybe Text
$sel:associationId:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
associationId} -> Maybe Text
associationId) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:associationId:AssociationVersionInfo' :: Maybe Text
associationId = Maybe Text
a} :: AssociationVersionInfo)

-- | The name specified for the association version when the association
-- version was created.
associationVersionInfo_associationName :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_associationName :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_associationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
associationName :: Maybe Text
$sel:associationName:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
associationName} -> Maybe Text
associationName) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:associationName:AssociationVersionInfo' :: Maybe Text
associationName = Maybe Text
a} :: AssociationVersionInfo)

-- | The association version.
associationVersionInfo_associationVersion :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_associationVersion :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_associationVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
associationVersion :: Maybe Text
$sel:associationVersion:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
associationVersion} -> Maybe Text
associationVersion) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:associationVersion:AssociationVersionInfo' :: Maybe Text
associationVersion = Maybe Text
a} :: AssociationVersionInfo)

-- | The names or Amazon Resource Names (ARNs) of the Change Calendar type
-- documents your associations are gated under. The associations for this
-- version only run when that Change Calendar is open. For more
-- information, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar Amazon Web Services Systems Manager Change Calendar>.
associationVersionInfo_calendarNames :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe [Prelude.Text])
associationVersionInfo_calendarNames :: Lens' AssociationVersionInfo (Maybe [Text])
associationVersionInfo_calendarNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe [Text]
calendarNames :: Maybe [Text]
$sel:calendarNames:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [Text]
calendarNames} -> Maybe [Text]
calendarNames) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe [Text]
a -> AssociationVersionInfo
s {$sel:calendarNames:AssociationVersionInfo' :: Maybe [Text]
calendarNames = Maybe [Text]
a} :: AssociationVersionInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The severity level that is assigned to the association.
associationVersionInfo_complianceSeverity :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe AssociationComplianceSeverity)
associationVersionInfo_complianceSeverity :: Lens' AssociationVersionInfo (Maybe AssociationComplianceSeverity)
associationVersionInfo_complianceSeverity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe AssociationComplianceSeverity
complianceSeverity :: Maybe AssociationComplianceSeverity
$sel:complianceSeverity:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe AssociationComplianceSeverity
complianceSeverity} -> Maybe AssociationComplianceSeverity
complianceSeverity) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe AssociationComplianceSeverity
a -> AssociationVersionInfo
s {$sel:complianceSeverity:AssociationVersionInfo' :: Maybe AssociationComplianceSeverity
complianceSeverity = Maybe AssociationComplianceSeverity
a} :: AssociationVersionInfo)

-- | The date the association version was created.
associationVersionInfo_createdDate :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.UTCTime)
associationVersionInfo_createdDate :: Lens' AssociationVersionInfo (Maybe UTCTime)
associationVersionInfo_createdDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe POSIX
createdDate :: Maybe POSIX
$sel:createdDate:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe POSIX
createdDate} -> Maybe POSIX
createdDate) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe POSIX
a -> AssociationVersionInfo
s {$sel:createdDate:AssociationVersionInfo' :: Maybe POSIX
createdDate = Maybe POSIX
a} :: AssociationVersionInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The version of an Amazon Web Services Systems Manager document (SSM
-- document) used when the association version was created.
associationVersionInfo_documentVersion :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_documentVersion :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_documentVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
documentVersion :: Maybe Text
$sel:documentVersion:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
documentVersion} -> Maybe Text
documentVersion) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:documentVersion:AssociationVersionInfo' :: Maybe Text
documentVersion = Maybe Text
a} :: AssociationVersionInfo)

-- | The maximum number of targets allowed to run the association at the same
-- time. You can specify a number, for example 10, or a percentage of the
-- target set, for example 10%. The default value is 100%, which means all
-- targets run the association at the same time.
--
-- If a new managed node starts and attempts to run an association while
-- Systems Manager is running @MaxConcurrency@ associations, the
-- association is allowed to run. During the next association interval, the
-- new managed node will process its association within the limit specified
-- for @MaxConcurrency@.
associationVersionInfo_maxConcurrency :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_maxConcurrency :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_maxConcurrency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
maxConcurrency :: Maybe Text
$sel:maxConcurrency:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
maxConcurrency} -> Maybe Text
maxConcurrency) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:maxConcurrency:AssociationVersionInfo' :: Maybe Text
maxConcurrency = Maybe Text
a} :: AssociationVersionInfo)

-- | The number of errors that are allowed before the system stops sending
-- requests to run the association on additional targets. You can specify
-- either an absolute number of errors, for example 10, or a percentage of
-- the target set, for example 10%. If you specify 3, for example, the
-- system stops sending requests when the fourth error is received. If you
-- specify 0, then the system stops sending requests after the first error
-- is returned. If you run an association on 50 managed nodes and set
-- @MaxError@ to 10%, then the system stops sending the request when the
-- sixth error is received.
--
-- Executions that are already running an association when @MaxErrors@ is
-- reached are allowed to complete, but some of these executions may fail
-- as well. If you need to ensure that there won\'t be more than max-errors
-- failed executions, set @MaxConcurrency@ to 1 so that executions proceed
-- one at a time.
associationVersionInfo_maxErrors :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_maxErrors :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_maxErrors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
maxErrors :: Maybe Text
$sel:maxErrors:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
maxErrors} -> Maybe Text
maxErrors) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:maxErrors:AssociationVersionInfo' :: Maybe Text
maxErrors = Maybe Text
a} :: AssociationVersionInfo)

-- | The name specified when the association was created.
associationVersionInfo_name :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_name :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
name :: Maybe Text
$sel:name:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
name} -> Maybe Text
name) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:name:AssociationVersionInfo' :: Maybe Text
name = Maybe Text
a} :: AssociationVersionInfo)

-- | The location in Amazon S3 specified for the association when the
-- association version was created.
associationVersionInfo_outputLocation :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe InstanceAssociationOutputLocation)
associationVersionInfo_outputLocation :: Lens'
  AssociationVersionInfo (Maybe InstanceAssociationOutputLocation)
associationVersionInfo_outputLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe InstanceAssociationOutputLocation
outputLocation :: Maybe InstanceAssociationOutputLocation
$sel:outputLocation:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe InstanceAssociationOutputLocation
outputLocation} -> Maybe InstanceAssociationOutputLocation
outputLocation) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe InstanceAssociationOutputLocation
a -> AssociationVersionInfo
s {$sel:outputLocation:AssociationVersionInfo' :: Maybe InstanceAssociationOutputLocation
outputLocation = Maybe InstanceAssociationOutputLocation
a} :: AssociationVersionInfo)

-- | Parameters specified when the association version was created.
associationVersionInfo_parameters :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
associationVersionInfo_parameters :: Lens' AssociationVersionInfo (Maybe (HashMap Text [Text]))
associationVersionInfo_parameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe (Sensitive (HashMap Text [Text]))
parameters :: Maybe (Sensitive (HashMap Text [Text]))
$sel:parameters:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe (Sensitive (HashMap Text [Text]))
parameters} -> Maybe (Sensitive (HashMap Text [Text]))
parameters) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe (Sensitive (HashMap Text [Text]))
a -> AssociationVersionInfo
s {$sel:parameters:AssociationVersionInfo' :: Maybe (Sensitive (HashMap Text [Text]))
parameters = Maybe (Sensitive (HashMap Text [Text]))
a} :: AssociationVersionInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 (forall a. Iso' (Sensitive a) a
Data._Sensitive forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced)

-- | The cron or rate schedule specified for the association when the
-- association version was created.
associationVersionInfo_scheduleExpression :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Text)
associationVersionInfo_scheduleExpression :: Lens' AssociationVersionInfo (Maybe Text)
associationVersionInfo_scheduleExpression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Text
scheduleExpression :: Maybe Text
$sel:scheduleExpression:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
scheduleExpression} -> Maybe Text
scheduleExpression) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Text
a -> AssociationVersionInfo
s {$sel:scheduleExpression:AssociationVersionInfo' :: Maybe Text
scheduleExpression = Maybe Text
a} :: AssociationVersionInfo)

-- | Number of days to wait after the scheduled day to run an association.
associationVersionInfo_scheduleOffset :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe Prelude.Natural)
associationVersionInfo_scheduleOffset :: Lens' AssociationVersionInfo (Maybe Natural)
associationVersionInfo_scheduleOffset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe Natural
scheduleOffset :: Maybe Natural
$sel:scheduleOffset:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Natural
scheduleOffset} -> Maybe Natural
scheduleOffset) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe Natural
a -> AssociationVersionInfo
s {$sel:scheduleOffset:AssociationVersionInfo' :: Maybe Natural
scheduleOffset = Maybe Natural
a} :: AssociationVersionInfo)

-- | The mode for generating association compliance. You can specify @AUTO@
-- or @MANUAL@. In @AUTO@ mode, the system uses the status of the
-- association execution to determine the compliance status. If the
-- association execution runs successfully, then the association is
-- @COMPLIANT@. If the association execution doesn\'t run successfully, the
-- association is @NON-COMPLIANT@.
--
-- In @MANUAL@ mode, you must specify the @AssociationId@ as a parameter
-- for the PutComplianceItems API operation. In this case, compliance data
-- isn\'t managed by State Manager, a capability of Amazon Web Services
-- Systems Manager. It is managed by your direct call to the
-- PutComplianceItems API operation.
--
-- By default, all associations use @AUTO@ mode.
associationVersionInfo_syncCompliance :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe AssociationSyncCompliance)
associationVersionInfo_syncCompliance :: Lens' AssociationVersionInfo (Maybe AssociationSyncCompliance)
associationVersionInfo_syncCompliance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe AssociationSyncCompliance
syncCompliance :: Maybe AssociationSyncCompliance
$sel:syncCompliance:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe AssociationSyncCompliance
syncCompliance} -> Maybe AssociationSyncCompliance
syncCompliance) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe AssociationSyncCompliance
a -> AssociationVersionInfo
s {$sel:syncCompliance:AssociationVersionInfo' :: Maybe AssociationSyncCompliance
syncCompliance = Maybe AssociationSyncCompliance
a} :: AssociationVersionInfo)

-- | The combination of Amazon Web Services Regions and Amazon Web Services
-- accounts where you wanted to run the association when this association
-- version was created.
associationVersionInfo_targetLocations :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe (Prelude.NonEmpty TargetLocation))
associationVersionInfo_targetLocations :: Lens' AssociationVersionInfo (Maybe (NonEmpty TargetLocation))
associationVersionInfo_targetLocations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe (NonEmpty TargetLocation)
targetLocations :: Maybe (NonEmpty TargetLocation)
$sel:targetLocations:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe (NonEmpty TargetLocation)
targetLocations} -> Maybe (NonEmpty TargetLocation)
targetLocations) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe (NonEmpty TargetLocation)
a -> AssociationVersionInfo
s {$sel:targetLocations:AssociationVersionInfo' :: Maybe (NonEmpty TargetLocation)
targetLocations = Maybe (NonEmpty TargetLocation)
a} :: AssociationVersionInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A key-value mapping of document parameters to target resources. Both
-- Targets and TargetMaps can\'t be specified together.
associationVersionInfo_targetMaps :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe [Prelude.HashMap Prelude.Text [Prelude.Text]])
associationVersionInfo_targetMaps :: Lens' AssociationVersionInfo (Maybe [HashMap Text [Text]])
associationVersionInfo_targetMaps = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe [HashMap Text [Text]]
targetMaps :: Maybe [HashMap Text [Text]]
$sel:targetMaps:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [HashMap Text [Text]]
targetMaps} -> Maybe [HashMap Text [Text]]
targetMaps) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe [HashMap Text [Text]]
a -> AssociationVersionInfo
s {$sel:targetMaps:AssociationVersionInfo' :: Maybe [HashMap Text [Text]]
targetMaps = Maybe [HashMap Text [Text]]
a} :: AssociationVersionInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The targets specified for the association when the association version
-- was created.
associationVersionInfo_targets :: Lens.Lens' AssociationVersionInfo (Prelude.Maybe [Target])
associationVersionInfo_targets :: Lens' AssociationVersionInfo (Maybe [Target])
associationVersionInfo_targets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AssociationVersionInfo' {Maybe [Target]
targets :: Maybe [Target]
$sel:targets:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [Target]
targets} -> Maybe [Target]
targets) (\s :: AssociationVersionInfo
s@AssociationVersionInfo' {} Maybe [Target]
a -> AssociationVersionInfo
s {$sel:targets:AssociationVersionInfo' :: Maybe [Target]
targets = Maybe [Target]
a} :: AssociationVersionInfo) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON AssociationVersionInfo where
  parseJSON :: Value -> Parser AssociationVersionInfo
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"AssociationVersionInfo"
      ( \Object
x ->
          Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe AssociationComplianceSeverity
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InstanceAssociationOutputLocation
-> Maybe (Sensitive (HashMap Text [Text]))
-> Maybe Text
-> Maybe Natural
-> Maybe AssociationSyncCompliance
-> Maybe (NonEmpty TargetLocation)
-> Maybe [HashMap Text [Text]]
-> Maybe [Target]
-> AssociationVersionInfo
AssociationVersionInfo'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ApplyOnlyAtCronInterval")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AssociationId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AssociationName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AssociationVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CalendarNames" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ComplianceSeverity")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreatedDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DocumentVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MaxConcurrency")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MaxErrors")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"OutputLocation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Parameters" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ScheduleExpression")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ScheduleOffset")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncCompliance")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TargetLocations")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TargetMaps" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Targets" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable AssociationVersionInfo where
  hashWithSalt :: Int -> AssociationVersionInfo -> Int
hashWithSalt Int
_salt AssociationVersionInfo' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [HashMap Text [Text]]
Maybe [Target]
Maybe (NonEmpty TargetLocation)
Maybe Text
Maybe (Sensitive (HashMap Text [Text]))
Maybe POSIX
Maybe AssociationComplianceSeverity
Maybe AssociationSyncCompliance
Maybe InstanceAssociationOutputLocation
targets :: Maybe [Target]
targetMaps :: Maybe [HashMap Text [Text]]
targetLocations :: Maybe (NonEmpty TargetLocation)
syncCompliance :: Maybe AssociationSyncCompliance
scheduleOffset :: Maybe Natural
scheduleExpression :: Maybe Text
parameters :: Maybe (Sensitive (HashMap Text [Text]))
outputLocation :: Maybe InstanceAssociationOutputLocation
name :: Maybe Text
maxErrors :: Maybe Text
maxConcurrency :: Maybe Text
documentVersion :: Maybe Text
createdDate :: Maybe POSIX
complianceSeverity :: Maybe AssociationComplianceSeverity
calendarNames :: Maybe [Text]
associationVersion :: Maybe Text
associationName :: Maybe Text
associationId :: Maybe Text
applyOnlyAtCronInterval :: Maybe Bool
$sel:targets:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [Target]
$sel:targetMaps:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [HashMap Text [Text]]
$sel:targetLocations:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe (NonEmpty TargetLocation)
$sel:syncCompliance:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe AssociationSyncCompliance
$sel:scheduleOffset:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Natural
$sel:scheduleExpression:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:parameters:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe (Sensitive (HashMap Text [Text]))
$sel:outputLocation:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe InstanceAssociationOutputLocation
$sel:name:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:maxErrors:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:maxConcurrency:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:documentVersion:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:createdDate:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe POSIX
$sel:complianceSeverity:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe AssociationComplianceSeverity
$sel:calendarNames:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [Text]
$sel:associationVersion:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:associationName:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:associationId:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:applyOnlyAtCronInterval:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
applyOnlyAtCronInterval
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
calendarNames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AssociationComplianceSeverity
complianceSeverity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
documentVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maxConcurrency
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maxErrors
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceAssociationOutputLocation
outputLocation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive (HashMap Text [Text]))
parameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
scheduleExpression
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
scheduleOffset
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AssociationSyncCompliance
syncCompliance
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty TargetLocation)
targetLocations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HashMap Text [Text]]
targetMaps
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Target]
targets

instance Prelude.NFData AssociationVersionInfo where
  rnf :: AssociationVersionInfo -> ()
rnf AssociationVersionInfo' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [HashMap Text [Text]]
Maybe [Target]
Maybe (NonEmpty TargetLocation)
Maybe Text
Maybe (Sensitive (HashMap Text [Text]))
Maybe POSIX
Maybe AssociationComplianceSeverity
Maybe AssociationSyncCompliance
Maybe InstanceAssociationOutputLocation
targets :: Maybe [Target]
targetMaps :: Maybe [HashMap Text [Text]]
targetLocations :: Maybe (NonEmpty TargetLocation)
syncCompliance :: Maybe AssociationSyncCompliance
scheduleOffset :: Maybe Natural
scheduleExpression :: Maybe Text
parameters :: Maybe (Sensitive (HashMap Text [Text]))
outputLocation :: Maybe InstanceAssociationOutputLocation
name :: Maybe Text
maxErrors :: Maybe Text
maxConcurrency :: Maybe Text
documentVersion :: Maybe Text
createdDate :: Maybe POSIX
complianceSeverity :: Maybe AssociationComplianceSeverity
calendarNames :: Maybe [Text]
associationVersion :: Maybe Text
associationName :: Maybe Text
associationId :: Maybe Text
applyOnlyAtCronInterval :: Maybe Bool
$sel:targets:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [Target]
$sel:targetMaps:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [HashMap Text [Text]]
$sel:targetLocations:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe (NonEmpty TargetLocation)
$sel:syncCompliance:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe AssociationSyncCompliance
$sel:scheduleOffset:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Natural
$sel:scheduleExpression:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:parameters:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe (Sensitive (HashMap Text [Text]))
$sel:outputLocation:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe InstanceAssociationOutputLocation
$sel:name:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:maxErrors:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:maxConcurrency:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:documentVersion:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:createdDate:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe POSIX
$sel:complianceSeverity:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe AssociationComplianceSeverity
$sel:calendarNames:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe [Text]
$sel:associationVersion:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:associationName:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:associationId:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Text
$sel:applyOnlyAtCronInterval:AssociationVersionInfo' :: AssociationVersionInfo -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
applyOnlyAtCronInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
calendarNames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AssociationComplianceSeverity
complianceSeverity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
documentVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maxConcurrency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maxErrors
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceAssociationOutputLocation
outputLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive (HashMap Text [Text]))
parameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
scheduleExpression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
scheduleOffset
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AssociationSyncCompliance
syncCompliance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty TargetLocation)
targetLocations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HashMap Text [Text]]
targetMaps
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Target]
targets