{-# 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.BaselineOverride
-- 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.BaselineOverride 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.OperatingSystem
import Amazonka.SSM.Types.PatchAction
import Amazonka.SSM.Types.PatchComplianceLevel
import Amazonka.SSM.Types.PatchFilterGroup
import Amazonka.SSM.Types.PatchRuleGroup
import Amazonka.SSM.Types.PatchSource

-- | Defines the basic information about a patch baseline override.
--
-- /See:/ 'newBaselineOverride' smart constructor.
data BaselineOverride = BaselineOverride'
  { BaselineOverride -> Maybe PatchRuleGroup
approvalRules :: Prelude.Maybe PatchRuleGroup,
    -- | A list of explicitly approved patches for the baseline.
    --
    -- For information about accepted formats for lists of approved patches and
    -- rejected patches, see
    -- <https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html About package name formats for approved and rejected patch lists>
    -- in the /Amazon Web Services Systems Manager User Guide/.
    BaselineOverride -> Maybe [Text]
approvedPatches :: Prelude.Maybe [Prelude.Text],
    -- | Defines the compliance level for approved patches. When an approved
    -- patch is reported as missing, this value describes the severity of the
    -- compliance violation.
    BaselineOverride -> Maybe PatchComplianceLevel
approvedPatchesComplianceLevel :: Prelude.Maybe PatchComplianceLevel,
    -- | Indicates whether the list of approved patches includes non-security
    -- updates that should be applied to the managed nodes. The default value
    -- is @false@. Applies to Linux managed nodes only.
    BaselineOverride -> Maybe Bool
approvedPatchesEnableNonSecurity :: Prelude.Maybe Prelude.Bool,
    BaselineOverride -> Maybe PatchFilterGroup
globalFilters :: Prelude.Maybe PatchFilterGroup,
    -- | The operating system rule used by the patch baseline override.
    BaselineOverride -> Maybe OperatingSystem
operatingSystem :: Prelude.Maybe OperatingSystem,
    -- | A list of explicitly rejected patches for the baseline.
    --
    -- For information about accepted formats for lists of approved patches and
    -- rejected patches, see
    -- <https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html About package name formats for approved and rejected patch lists>
    -- in the /Amazon Web Services Systems Manager User Guide/.
    BaselineOverride -> Maybe [Text]
rejectedPatches :: Prelude.Maybe [Prelude.Text],
    -- | The action for Patch Manager to take on patches included in the
    -- @RejectedPackages@ list. A patch can be allowed only if it is a
    -- dependency of another package, or blocked entirely along with packages
    -- that include it as a dependency.
    BaselineOverride -> Maybe PatchAction
rejectedPatchesAction :: Prelude.Maybe PatchAction,
    -- | Information about the patches to use to update the managed nodes,
    -- including target operating systems and source repositories. Applies to
    -- Linux managed nodes only.
    BaselineOverride -> Maybe [PatchSource]
sources :: Prelude.Maybe [PatchSource]
  }
  deriving (BaselineOverride -> BaselineOverride -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BaselineOverride -> BaselineOverride -> Bool
$c/= :: BaselineOverride -> BaselineOverride -> Bool
== :: BaselineOverride -> BaselineOverride -> Bool
$c== :: BaselineOverride -> BaselineOverride -> Bool
Prelude.Eq, Int -> BaselineOverride -> ShowS
[BaselineOverride] -> ShowS
BaselineOverride -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BaselineOverride] -> ShowS
$cshowList :: [BaselineOverride] -> ShowS
show :: BaselineOverride -> String
$cshow :: BaselineOverride -> String
showsPrec :: Int -> BaselineOverride -> ShowS
$cshowsPrec :: Int -> BaselineOverride -> ShowS
Prelude.Show, forall x. Rep BaselineOverride x -> BaselineOverride
forall x. BaselineOverride -> Rep BaselineOverride x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BaselineOverride x -> BaselineOverride
$cfrom :: forall x. BaselineOverride -> Rep BaselineOverride x
Prelude.Generic)

-- |
-- Create a value of 'BaselineOverride' 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:
--
-- 'approvalRules', 'baselineOverride_approvalRules' - Undocumented member.
--
-- 'approvedPatches', 'baselineOverride_approvedPatches' - A list of explicitly approved patches for the baseline.
--
-- For information about accepted formats for lists of approved patches and
-- rejected patches, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html About package name formats for approved and rejected patch lists>
-- in the /Amazon Web Services Systems Manager User Guide/.
--
-- 'approvedPatchesComplianceLevel', 'baselineOverride_approvedPatchesComplianceLevel' - Defines the compliance level for approved patches. When an approved
-- patch is reported as missing, this value describes the severity of the
-- compliance violation.
--
-- 'approvedPatchesEnableNonSecurity', 'baselineOverride_approvedPatchesEnableNonSecurity' - Indicates whether the list of approved patches includes non-security
-- updates that should be applied to the managed nodes. The default value
-- is @false@. Applies to Linux managed nodes only.
--
-- 'globalFilters', 'baselineOverride_globalFilters' - Undocumented member.
--
-- 'operatingSystem', 'baselineOverride_operatingSystem' - The operating system rule used by the patch baseline override.
--
-- 'rejectedPatches', 'baselineOverride_rejectedPatches' - A list of explicitly rejected patches for the baseline.
--
-- For information about accepted formats for lists of approved patches and
-- rejected patches, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html About package name formats for approved and rejected patch lists>
-- in the /Amazon Web Services Systems Manager User Guide/.
--
-- 'rejectedPatchesAction', 'baselineOverride_rejectedPatchesAction' - The action for Patch Manager to take on patches included in the
-- @RejectedPackages@ list. A patch can be allowed only if it is a
-- dependency of another package, or blocked entirely along with packages
-- that include it as a dependency.
--
-- 'sources', 'baselineOverride_sources' - Information about the patches to use to update the managed nodes,
-- including target operating systems and source repositories. Applies to
-- Linux managed nodes only.
newBaselineOverride ::
  BaselineOverride
newBaselineOverride :: BaselineOverride
newBaselineOverride =
  BaselineOverride'
    { $sel:approvalRules:BaselineOverride' :: Maybe PatchRuleGroup
approvalRules = forall a. Maybe a
Prelude.Nothing,
      $sel:approvedPatches:BaselineOverride' :: Maybe [Text]
approvedPatches = forall a. Maybe a
Prelude.Nothing,
      $sel:approvedPatchesComplianceLevel:BaselineOverride' :: Maybe PatchComplianceLevel
approvedPatchesComplianceLevel = forall a. Maybe a
Prelude.Nothing,
      $sel:approvedPatchesEnableNonSecurity:BaselineOverride' :: Maybe Bool
approvedPatchesEnableNonSecurity = forall a. Maybe a
Prelude.Nothing,
      $sel:globalFilters:BaselineOverride' :: Maybe PatchFilterGroup
globalFilters = forall a. Maybe a
Prelude.Nothing,
      $sel:operatingSystem:BaselineOverride' :: Maybe OperatingSystem
operatingSystem = forall a. Maybe a
Prelude.Nothing,
      $sel:rejectedPatches:BaselineOverride' :: Maybe [Text]
rejectedPatches = forall a. Maybe a
Prelude.Nothing,
      $sel:rejectedPatchesAction:BaselineOverride' :: Maybe PatchAction
rejectedPatchesAction = forall a. Maybe a
Prelude.Nothing,
      $sel:sources:BaselineOverride' :: Maybe [PatchSource]
sources = forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
baselineOverride_approvalRules :: Lens.Lens' BaselineOverride (Prelude.Maybe PatchRuleGroup)
baselineOverride_approvalRules :: Lens' BaselineOverride (Maybe PatchRuleGroup)
baselineOverride_approvalRules = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe PatchRuleGroup
approvalRules :: Maybe PatchRuleGroup
$sel:approvalRules:BaselineOverride' :: BaselineOverride -> Maybe PatchRuleGroup
approvalRules} -> Maybe PatchRuleGroup
approvalRules) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe PatchRuleGroup
a -> BaselineOverride
s {$sel:approvalRules:BaselineOverride' :: Maybe PatchRuleGroup
approvalRules = Maybe PatchRuleGroup
a} :: BaselineOverride)

-- | A list of explicitly approved patches for the baseline.
--
-- For information about accepted formats for lists of approved patches and
-- rejected patches, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html About package name formats for approved and rejected patch lists>
-- in the /Amazon Web Services Systems Manager User Guide/.
baselineOverride_approvedPatches :: Lens.Lens' BaselineOverride (Prelude.Maybe [Prelude.Text])
baselineOverride_approvedPatches :: Lens' BaselineOverride (Maybe [Text])
baselineOverride_approvedPatches = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe [Text]
approvedPatches :: Maybe [Text]
$sel:approvedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
approvedPatches} -> Maybe [Text]
approvedPatches) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe [Text]
a -> BaselineOverride
s {$sel:approvedPatches:BaselineOverride' :: Maybe [Text]
approvedPatches = Maybe [Text]
a} :: BaselineOverride) 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

-- | Defines the compliance level for approved patches. When an approved
-- patch is reported as missing, this value describes the severity of the
-- compliance violation.
baselineOverride_approvedPatchesComplianceLevel :: Lens.Lens' BaselineOverride (Prelude.Maybe PatchComplianceLevel)
baselineOverride_approvedPatchesComplianceLevel :: Lens' BaselineOverride (Maybe PatchComplianceLevel)
baselineOverride_approvedPatchesComplianceLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe PatchComplianceLevel
approvedPatchesComplianceLevel :: Maybe PatchComplianceLevel
$sel:approvedPatchesComplianceLevel:BaselineOverride' :: BaselineOverride -> Maybe PatchComplianceLevel
approvedPatchesComplianceLevel} -> Maybe PatchComplianceLevel
approvedPatchesComplianceLevel) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe PatchComplianceLevel
a -> BaselineOverride
s {$sel:approvedPatchesComplianceLevel:BaselineOverride' :: Maybe PatchComplianceLevel
approvedPatchesComplianceLevel = Maybe PatchComplianceLevel
a} :: BaselineOverride)

-- | Indicates whether the list of approved patches includes non-security
-- updates that should be applied to the managed nodes. The default value
-- is @false@. Applies to Linux managed nodes only.
baselineOverride_approvedPatchesEnableNonSecurity :: Lens.Lens' BaselineOverride (Prelude.Maybe Prelude.Bool)
baselineOverride_approvedPatchesEnableNonSecurity :: Lens' BaselineOverride (Maybe Bool)
baselineOverride_approvedPatchesEnableNonSecurity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe Bool
approvedPatchesEnableNonSecurity :: Maybe Bool
$sel:approvedPatchesEnableNonSecurity:BaselineOverride' :: BaselineOverride -> Maybe Bool
approvedPatchesEnableNonSecurity} -> Maybe Bool
approvedPatchesEnableNonSecurity) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe Bool
a -> BaselineOverride
s {$sel:approvedPatchesEnableNonSecurity:BaselineOverride' :: Maybe Bool
approvedPatchesEnableNonSecurity = Maybe Bool
a} :: BaselineOverride)

-- | Undocumented member.
baselineOverride_globalFilters :: Lens.Lens' BaselineOverride (Prelude.Maybe PatchFilterGroup)
baselineOverride_globalFilters :: Lens' BaselineOverride (Maybe PatchFilterGroup)
baselineOverride_globalFilters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe PatchFilterGroup
globalFilters :: Maybe PatchFilterGroup
$sel:globalFilters:BaselineOverride' :: BaselineOverride -> Maybe PatchFilterGroup
globalFilters} -> Maybe PatchFilterGroup
globalFilters) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe PatchFilterGroup
a -> BaselineOverride
s {$sel:globalFilters:BaselineOverride' :: Maybe PatchFilterGroup
globalFilters = Maybe PatchFilterGroup
a} :: BaselineOverride)

-- | The operating system rule used by the patch baseline override.
baselineOverride_operatingSystem :: Lens.Lens' BaselineOverride (Prelude.Maybe OperatingSystem)
baselineOverride_operatingSystem :: Lens' BaselineOverride (Maybe OperatingSystem)
baselineOverride_operatingSystem = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe OperatingSystem
operatingSystem :: Maybe OperatingSystem
$sel:operatingSystem:BaselineOverride' :: BaselineOverride -> Maybe OperatingSystem
operatingSystem} -> Maybe OperatingSystem
operatingSystem) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe OperatingSystem
a -> BaselineOverride
s {$sel:operatingSystem:BaselineOverride' :: Maybe OperatingSystem
operatingSystem = Maybe OperatingSystem
a} :: BaselineOverride)

-- | A list of explicitly rejected patches for the baseline.
--
-- For information about accepted formats for lists of approved patches and
-- rejected patches, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html About package name formats for approved and rejected patch lists>
-- in the /Amazon Web Services Systems Manager User Guide/.
baselineOverride_rejectedPatches :: Lens.Lens' BaselineOverride (Prelude.Maybe [Prelude.Text])
baselineOverride_rejectedPatches :: Lens' BaselineOverride (Maybe [Text])
baselineOverride_rejectedPatches = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe [Text]
rejectedPatches :: Maybe [Text]
$sel:rejectedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
rejectedPatches} -> Maybe [Text]
rejectedPatches) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe [Text]
a -> BaselineOverride
s {$sel:rejectedPatches:BaselineOverride' :: Maybe [Text]
rejectedPatches = Maybe [Text]
a} :: BaselineOverride) 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 action for Patch Manager to take on patches included in the
-- @RejectedPackages@ list. A patch can be allowed only if it is a
-- dependency of another package, or blocked entirely along with packages
-- that include it as a dependency.
baselineOverride_rejectedPatchesAction :: Lens.Lens' BaselineOverride (Prelude.Maybe PatchAction)
baselineOverride_rejectedPatchesAction :: Lens' BaselineOverride (Maybe PatchAction)
baselineOverride_rejectedPatchesAction = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe PatchAction
rejectedPatchesAction :: Maybe PatchAction
$sel:rejectedPatchesAction:BaselineOverride' :: BaselineOverride -> Maybe PatchAction
rejectedPatchesAction} -> Maybe PatchAction
rejectedPatchesAction) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe PatchAction
a -> BaselineOverride
s {$sel:rejectedPatchesAction:BaselineOverride' :: Maybe PatchAction
rejectedPatchesAction = Maybe PatchAction
a} :: BaselineOverride)

-- | Information about the patches to use to update the managed nodes,
-- including target operating systems and source repositories. Applies to
-- Linux managed nodes only.
baselineOverride_sources :: Lens.Lens' BaselineOverride (Prelude.Maybe [PatchSource])
baselineOverride_sources :: Lens' BaselineOverride (Maybe [PatchSource])
baselineOverride_sources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BaselineOverride' {Maybe [PatchSource]
sources :: Maybe [PatchSource]
$sel:sources:BaselineOverride' :: BaselineOverride -> Maybe [PatchSource]
sources} -> Maybe [PatchSource]
sources) (\s :: BaselineOverride
s@BaselineOverride' {} Maybe [PatchSource]
a -> BaselineOverride
s {$sel:sources:BaselineOverride' :: Maybe [PatchSource]
sources = Maybe [PatchSource]
a} :: BaselineOverride) 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 Prelude.Hashable BaselineOverride where
  hashWithSalt :: Int -> BaselineOverride -> Int
hashWithSalt Int
_salt BaselineOverride' {Maybe Bool
Maybe [Text]
Maybe [PatchSource]
Maybe OperatingSystem
Maybe PatchAction
Maybe PatchComplianceLevel
Maybe PatchFilterGroup
Maybe PatchRuleGroup
sources :: Maybe [PatchSource]
rejectedPatchesAction :: Maybe PatchAction
rejectedPatches :: Maybe [Text]
operatingSystem :: Maybe OperatingSystem
globalFilters :: Maybe PatchFilterGroup
approvedPatchesEnableNonSecurity :: Maybe Bool
approvedPatchesComplianceLevel :: Maybe PatchComplianceLevel
approvedPatches :: Maybe [Text]
approvalRules :: Maybe PatchRuleGroup
$sel:sources:BaselineOverride' :: BaselineOverride -> Maybe [PatchSource]
$sel:rejectedPatchesAction:BaselineOverride' :: BaselineOverride -> Maybe PatchAction
$sel:rejectedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
$sel:operatingSystem:BaselineOverride' :: BaselineOverride -> Maybe OperatingSystem
$sel:globalFilters:BaselineOverride' :: BaselineOverride -> Maybe PatchFilterGroup
$sel:approvedPatchesEnableNonSecurity:BaselineOverride' :: BaselineOverride -> Maybe Bool
$sel:approvedPatchesComplianceLevel:BaselineOverride' :: BaselineOverride -> Maybe PatchComplianceLevel
$sel:approvedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
$sel:approvalRules:BaselineOverride' :: BaselineOverride -> Maybe PatchRuleGroup
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PatchRuleGroup
approvalRules
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
approvedPatches
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PatchComplianceLevel
approvedPatchesComplianceLevel
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
approvedPatchesEnableNonSecurity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PatchFilterGroup
globalFilters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OperatingSystem
operatingSystem
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
rejectedPatches
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PatchAction
rejectedPatchesAction
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PatchSource]
sources

instance Prelude.NFData BaselineOverride where
  rnf :: BaselineOverride -> ()
rnf BaselineOverride' {Maybe Bool
Maybe [Text]
Maybe [PatchSource]
Maybe OperatingSystem
Maybe PatchAction
Maybe PatchComplianceLevel
Maybe PatchFilterGroup
Maybe PatchRuleGroup
sources :: Maybe [PatchSource]
rejectedPatchesAction :: Maybe PatchAction
rejectedPatches :: Maybe [Text]
operatingSystem :: Maybe OperatingSystem
globalFilters :: Maybe PatchFilterGroup
approvedPatchesEnableNonSecurity :: Maybe Bool
approvedPatchesComplianceLevel :: Maybe PatchComplianceLevel
approvedPatches :: Maybe [Text]
approvalRules :: Maybe PatchRuleGroup
$sel:sources:BaselineOverride' :: BaselineOverride -> Maybe [PatchSource]
$sel:rejectedPatchesAction:BaselineOverride' :: BaselineOverride -> Maybe PatchAction
$sel:rejectedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
$sel:operatingSystem:BaselineOverride' :: BaselineOverride -> Maybe OperatingSystem
$sel:globalFilters:BaselineOverride' :: BaselineOverride -> Maybe PatchFilterGroup
$sel:approvedPatchesEnableNonSecurity:BaselineOverride' :: BaselineOverride -> Maybe Bool
$sel:approvedPatchesComplianceLevel:BaselineOverride' :: BaselineOverride -> Maybe PatchComplianceLevel
$sel:approvedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
$sel:approvalRules:BaselineOverride' :: BaselineOverride -> Maybe PatchRuleGroup
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe PatchRuleGroup
approvalRules
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
approvedPatches
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PatchComplianceLevel
approvedPatchesComplianceLevel
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
approvedPatchesEnableNonSecurity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PatchFilterGroup
globalFilters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OperatingSystem
operatingSystem
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
rejectedPatches
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PatchAction
rejectedPatchesAction
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PatchSource]
sources

instance Data.ToJSON BaselineOverride where
  toJSON :: BaselineOverride -> Value
toJSON BaselineOverride' {Maybe Bool
Maybe [Text]
Maybe [PatchSource]
Maybe OperatingSystem
Maybe PatchAction
Maybe PatchComplianceLevel
Maybe PatchFilterGroup
Maybe PatchRuleGroup
sources :: Maybe [PatchSource]
rejectedPatchesAction :: Maybe PatchAction
rejectedPatches :: Maybe [Text]
operatingSystem :: Maybe OperatingSystem
globalFilters :: Maybe PatchFilterGroup
approvedPatchesEnableNonSecurity :: Maybe Bool
approvedPatchesComplianceLevel :: Maybe PatchComplianceLevel
approvedPatches :: Maybe [Text]
approvalRules :: Maybe PatchRuleGroup
$sel:sources:BaselineOverride' :: BaselineOverride -> Maybe [PatchSource]
$sel:rejectedPatchesAction:BaselineOverride' :: BaselineOverride -> Maybe PatchAction
$sel:rejectedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
$sel:operatingSystem:BaselineOverride' :: BaselineOverride -> Maybe OperatingSystem
$sel:globalFilters:BaselineOverride' :: BaselineOverride -> Maybe PatchFilterGroup
$sel:approvedPatchesEnableNonSecurity:BaselineOverride' :: BaselineOverride -> Maybe Bool
$sel:approvedPatchesComplianceLevel:BaselineOverride' :: BaselineOverride -> Maybe PatchComplianceLevel
$sel:approvedPatches:BaselineOverride' :: BaselineOverride -> Maybe [Text]
$sel:approvalRules:BaselineOverride' :: BaselineOverride -> Maybe PatchRuleGroup
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ApprovalRules" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PatchRuleGroup
approvalRules,
            (Key
"ApprovedPatches" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
approvedPatches,
            (Key
"ApprovedPatchesComplianceLevel" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PatchComplianceLevel
approvedPatchesComplianceLevel,
            (Key
"ApprovedPatchesEnableNonSecurity" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
approvedPatchesEnableNonSecurity,
            (Key
"GlobalFilters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PatchFilterGroup
globalFilters,
            (Key
"OperatingSystem" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OperatingSystem
operatingSystem,
            (Key
"RejectedPatches" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
rejectedPatches,
            (Key
"RejectedPatchesAction" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PatchAction
rejectedPatchesAction,
            (Key
"Sources" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [PatchSource]
sources
          ]
      )