packages feed

stratosphere-dlm-1.0.0: gen/Stratosphere/DLM/LifecyclePolicy/PolicyDetailsProperty.hs

module Stratosphere.DLM.LifecyclePolicy.PolicyDetailsProperty (
        module Exports, PolicyDetailsProperty(..), mkPolicyDetailsProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.DLM.LifecyclePolicy.ActionProperty as Exports
import {-# SOURCE #-} Stratosphere.DLM.LifecyclePolicy.CrossRegionCopyTargetsProperty as Exports
import {-# SOURCE #-} Stratosphere.DLM.LifecyclePolicy.EventSourceProperty as Exports
import {-# SOURCE #-} Stratosphere.DLM.LifecyclePolicy.ExclusionsProperty as Exports
import {-# SOURCE #-} Stratosphere.DLM.LifecyclePolicy.ParametersProperty as Exports
import {-# SOURCE #-} Stratosphere.DLM.LifecyclePolicy.ScheduleProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data PolicyDetailsProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html>
    PolicyDetailsProperty {haddock_workaround_ :: (),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-actions>
                           actions :: (Prelude.Maybe [ActionProperty]),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-copytags>
                           copyTags :: (Prelude.Maybe (Value Prelude.Bool)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-createinterval>
                           createInterval :: (Prelude.Maybe (Value Prelude.Integer)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-crossregioncopytargets>
                           crossRegionCopyTargets :: (Prelude.Maybe CrossRegionCopyTargetsProperty),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-eventsource>
                           eventSource :: (Prelude.Maybe EventSourceProperty),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-exclusions>
                           exclusions :: (Prelude.Maybe ExclusionsProperty),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-extenddeletion>
                           extendDeletion :: (Prelude.Maybe (Value Prelude.Bool)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-parameters>
                           parameters :: (Prelude.Maybe ParametersProperty),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-policylanguage>
                           policyLanguage :: (Prelude.Maybe (Value Prelude.Text)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-policytype>
                           policyType :: (Prelude.Maybe (Value Prelude.Text)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcelocations>
                           resourceLocations :: (Prelude.Maybe (ValueList Prelude.Text)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcetype>
                           resourceType :: (Prelude.Maybe (Value Prelude.Text)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcetypes>
                           resourceTypes :: (Prelude.Maybe (ValueList Prelude.Text)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-retaininterval>
                           retainInterval :: (Prelude.Maybe (Value Prelude.Integer)),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-schedules>
                           schedules :: (Prelude.Maybe [ScheduleProperty]),
                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-targettags>
                           targetTags :: (Prelude.Maybe [Tag])}
  deriving stock (Prelude.Eq, Prelude.Show)
mkPolicyDetailsProperty :: PolicyDetailsProperty
mkPolicyDetailsProperty
  = PolicyDetailsProperty
      {haddock_workaround_ = (), actions = Prelude.Nothing,
       copyTags = Prelude.Nothing, createInterval = Prelude.Nothing,
       crossRegionCopyTargets = Prelude.Nothing,
       eventSource = Prelude.Nothing, exclusions = Prelude.Nothing,
       extendDeletion = Prelude.Nothing, parameters = Prelude.Nothing,
       policyLanguage = Prelude.Nothing, policyType = Prelude.Nothing,
       resourceLocations = Prelude.Nothing,
       resourceType = Prelude.Nothing, resourceTypes = Prelude.Nothing,
       retainInterval = Prelude.Nothing, schedules = Prelude.Nothing,
       targetTags = Prelude.Nothing}
instance ToResourceProperties PolicyDetailsProperty where
  toResourceProperties PolicyDetailsProperty {..}
    = ResourceProperties
        {awsType = "AWS::DLM::LifecyclePolicy.PolicyDetails",
         supportsTags = Prelude.False,
         properties = Prelude.fromList
                        (Prelude.catMaybes
                           [(JSON..=) "Actions" Prelude.<$> actions,
                            (JSON..=) "CopyTags" Prelude.<$> copyTags,
                            (JSON..=) "CreateInterval" Prelude.<$> createInterval,
                            (JSON..=) "CrossRegionCopyTargets"
                              Prelude.<$> crossRegionCopyTargets,
                            (JSON..=) "EventSource" Prelude.<$> eventSource,
                            (JSON..=) "Exclusions" Prelude.<$> exclusions,
                            (JSON..=) "ExtendDeletion" Prelude.<$> extendDeletion,
                            (JSON..=) "Parameters" Prelude.<$> parameters,
                            (JSON..=) "PolicyLanguage" Prelude.<$> policyLanguage,
                            (JSON..=) "PolicyType" Prelude.<$> policyType,
                            (JSON..=) "ResourceLocations" Prelude.<$> resourceLocations,
                            (JSON..=) "ResourceType" Prelude.<$> resourceType,
                            (JSON..=) "ResourceTypes" Prelude.<$> resourceTypes,
                            (JSON..=) "RetainInterval" Prelude.<$> retainInterval,
                            (JSON..=) "Schedules" Prelude.<$> schedules,
                            (JSON..=) "TargetTags" Prelude.<$> targetTags])}
instance JSON.ToJSON PolicyDetailsProperty where
  toJSON PolicyDetailsProperty {..}
    = JSON.object
        (Prelude.fromList
           (Prelude.catMaybes
              [(JSON..=) "Actions" Prelude.<$> actions,
               (JSON..=) "CopyTags" Prelude.<$> copyTags,
               (JSON..=) "CreateInterval" Prelude.<$> createInterval,
               (JSON..=) "CrossRegionCopyTargets"
                 Prelude.<$> crossRegionCopyTargets,
               (JSON..=) "EventSource" Prelude.<$> eventSource,
               (JSON..=) "Exclusions" Prelude.<$> exclusions,
               (JSON..=) "ExtendDeletion" Prelude.<$> extendDeletion,
               (JSON..=) "Parameters" Prelude.<$> parameters,
               (JSON..=) "PolicyLanguage" Prelude.<$> policyLanguage,
               (JSON..=) "PolicyType" Prelude.<$> policyType,
               (JSON..=) "ResourceLocations" Prelude.<$> resourceLocations,
               (JSON..=) "ResourceType" Prelude.<$> resourceType,
               (JSON..=) "ResourceTypes" Prelude.<$> resourceTypes,
               (JSON..=) "RetainInterval" Prelude.<$> retainInterval,
               (JSON..=) "Schedules" Prelude.<$> schedules,
               (JSON..=) "TargetTags" Prelude.<$> targetTags]))
instance Property "Actions" PolicyDetailsProperty where
  type PropertyType "Actions" PolicyDetailsProperty = [ActionProperty]
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {actions = Prelude.pure newValue, ..}
instance Property "CopyTags" PolicyDetailsProperty where
  type PropertyType "CopyTags" PolicyDetailsProperty = Value Prelude.Bool
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {copyTags = Prelude.pure newValue, ..}
instance Property "CreateInterval" PolicyDetailsProperty where
  type PropertyType "CreateInterval" PolicyDetailsProperty = Value Prelude.Integer
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty
        {createInterval = Prelude.pure newValue, ..}
instance Property "CrossRegionCopyTargets" PolicyDetailsProperty where
  type PropertyType "CrossRegionCopyTargets" PolicyDetailsProperty = CrossRegionCopyTargetsProperty
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty
        {crossRegionCopyTargets = Prelude.pure newValue, ..}
instance Property "EventSource" PolicyDetailsProperty where
  type PropertyType "EventSource" PolicyDetailsProperty = EventSourceProperty
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {eventSource = Prelude.pure newValue, ..}
instance Property "Exclusions" PolicyDetailsProperty where
  type PropertyType "Exclusions" PolicyDetailsProperty = ExclusionsProperty
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {exclusions = Prelude.pure newValue, ..}
instance Property "ExtendDeletion" PolicyDetailsProperty where
  type PropertyType "ExtendDeletion" PolicyDetailsProperty = Value Prelude.Bool
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty
        {extendDeletion = Prelude.pure newValue, ..}
instance Property "Parameters" PolicyDetailsProperty where
  type PropertyType "Parameters" PolicyDetailsProperty = ParametersProperty
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {parameters = Prelude.pure newValue, ..}
instance Property "PolicyLanguage" PolicyDetailsProperty where
  type PropertyType "PolicyLanguage" PolicyDetailsProperty = Value Prelude.Text
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty
        {policyLanguage = Prelude.pure newValue, ..}
instance Property "PolicyType" PolicyDetailsProperty where
  type PropertyType "PolicyType" PolicyDetailsProperty = Value Prelude.Text
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {policyType = Prelude.pure newValue, ..}
instance Property "ResourceLocations" PolicyDetailsProperty where
  type PropertyType "ResourceLocations" PolicyDetailsProperty = ValueList Prelude.Text
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty
        {resourceLocations = Prelude.pure newValue, ..}
instance Property "ResourceType" PolicyDetailsProperty where
  type PropertyType "ResourceType" PolicyDetailsProperty = Value Prelude.Text
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {resourceType = Prelude.pure newValue, ..}
instance Property "ResourceTypes" PolicyDetailsProperty where
  type PropertyType "ResourceTypes" PolicyDetailsProperty = ValueList Prelude.Text
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {resourceTypes = Prelude.pure newValue, ..}
instance Property "RetainInterval" PolicyDetailsProperty where
  type PropertyType "RetainInterval" PolicyDetailsProperty = Value Prelude.Integer
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty
        {retainInterval = Prelude.pure newValue, ..}
instance Property "Schedules" PolicyDetailsProperty where
  type PropertyType "Schedules" PolicyDetailsProperty = [ScheduleProperty]
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {schedules = Prelude.pure newValue, ..}
instance Property "TargetTags" PolicyDetailsProperty where
  type PropertyType "TargetTags" PolicyDetailsProperty = [Tag]
  set newValue PolicyDetailsProperty {..}
    = PolicyDetailsProperty {targetTags = Prelude.pure newValue, ..}