{-# 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.FMS.Types.ResourceViolation
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.FMS.Types.ResourceViolation where

import qualified Amazonka.Core as Core
import Amazonka.FMS.Types.AwsEc2InstanceViolation
import Amazonka.FMS.Types.AwsEc2NetworkInterfaceViolation
import Amazonka.FMS.Types.AwsVPCSecurityGroupViolation
import Amazonka.FMS.Types.DnsDuplicateRuleGroupViolation
import Amazonka.FMS.Types.DnsRuleGroupLimitExceededViolation
import Amazonka.FMS.Types.DnsRuleGroupPriorityConflictViolation
import Amazonka.FMS.Types.NetworkFirewallBlackHoleRouteDetectedViolation
import Amazonka.FMS.Types.NetworkFirewallInternetTrafficNotInspectedViolation
import Amazonka.FMS.Types.NetworkFirewallInvalidRouteConfigurationViolation
import Amazonka.FMS.Types.NetworkFirewallMissingExpectedRTViolation
import Amazonka.FMS.Types.NetworkFirewallMissingExpectedRoutesViolation
import Amazonka.FMS.Types.NetworkFirewallMissingFirewallViolation
import Amazonka.FMS.Types.NetworkFirewallMissingSubnetViolation
import Amazonka.FMS.Types.NetworkFirewallPolicyModifiedViolation
import Amazonka.FMS.Types.NetworkFirewallUnexpectedFirewallRoutesViolation
import Amazonka.FMS.Types.NetworkFirewallUnexpectedGatewayRoutesViolation
import Amazonka.FMS.Types.PossibleRemediationActions
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Violation detail based on resource type.
--
-- /See:/ 'newResourceViolation' smart constructor.
data ResourceViolation = ResourceViolation'
  { -- | A list of possible remediation action lists. Each individual possible
    -- remediation action is a list of individual remediation actions.
    ResourceViolation -> Maybe PossibleRemediationActions
possibleRemediationActions :: Prelude.Maybe PossibleRemediationActions,
    ResourceViolation
-> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
networkFirewallBlackHoleRouteDetectedViolation :: Prelude.Maybe NetworkFirewallBlackHoleRouteDetectedViolation,
    -- | Violation detail for a DNS Firewall policy that indicates that the VPC
    -- reached the limit for associated DNS Firewall rule groups. Firewall
    -- Manager tried to associate another rule group with the VPC and failed.
    ResourceViolation -> Maybe DnsRuleGroupLimitExceededViolation
dnsRuleGroupLimitExceededViolation :: Prelude.Maybe DnsRuleGroupLimitExceededViolation,
    -- | Violation detail for an Network Firewall policy that indicates that a
    -- subnet is not associated with the expected Firewall Manager managed
    -- route table.
    ResourceViolation
-> Maybe NetworkFirewallMissingExpectedRTViolation
networkFirewallMissingExpectedRTViolation :: Prelude.Maybe NetworkFirewallMissingExpectedRTViolation,
    -- | Violation detail for the subnet for which internet traffic hasn\'t been
    -- inspected.
    ResourceViolation
-> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
networkFirewallInternetTrafficNotInspectedViolation :: Prelude.Maybe NetworkFirewallInternetTrafficNotInspectedViolation,
    -- | Violation detail for an Network Firewall policy that indicates that a
    -- subnet has no Firewall Manager managed firewall in its VPC.
    ResourceViolation -> Maybe NetworkFirewallMissingFirewallViolation
networkFirewallMissingFirewallViolation :: Prelude.Maybe NetworkFirewallMissingFirewallViolation,
    -- | Violation detail for an Network Firewall policy that indicates that an
    -- Availability Zone is missing the expected Firewall Manager managed
    -- subnet.
    ResourceViolation -> Maybe NetworkFirewallMissingSubnetViolation
networkFirewallMissingSubnetViolation :: Prelude.Maybe NetworkFirewallMissingSubnetViolation,
    -- | Violation detail for an EC2 instance.
    ResourceViolation -> Maybe AwsEc2InstanceViolation
awsEc2InstanceViolation :: Prelude.Maybe AwsEc2InstanceViolation,
    -- | Expected routes are missing from Network Firewall.
    ResourceViolation
-> Maybe NetworkFirewallMissingExpectedRoutesViolation
networkFirewallMissingExpectedRoutesViolation :: Prelude.Maybe NetworkFirewallMissingExpectedRoutesViolation,
    -- | Violation detail for a DNS Firewall policy that indicates that a rule
    -- group that Firewall Manager tried to associate with a VPC has the same
    -- priority as a rule group that\'s already associated.
    ResourceViolation -> Maybe DnsRuleGroupPriorityConflictViolation
dnsRuleGroupPriorityConflictViolation :: Prelude.Maybe DnsRuleGroupPriorityConflictViolation,
    -- | Violation detail for security groups.
    ResourceViolation -> Maybe AwsVPCSecurityGroupViolation
awsVPCSecurityGroupViolation :: Prelude.Maybe AwsVPCSecurityGroupViolation,
    -- | Violation detail for an Network Firewall policy that indicates that a
    -- firewall policy in an individual account has been modified in a way that
    -- makes it noncompliant. For example, the individual account owner might
    -- have deleted a rule group, changed the priority of a stateless rule
    -- group, or changed a policy default action.
    ResourceViolation -> Maybe NetworkFirewallPolicyModifiedViolation
networkFirewallPolicyModifiedViolation :: Prelude.Maybe NetworkFirewallPolicyModifiedViolation,
    -- | There\'s an unexpected firewall route.
    ResourceViolation
-> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
networkFirewallUnexpectedFirewallRoutesViolation :: Prelude.Maybe NetworkFirewallUnexpectedFirewallRoutesViolation,
    -- | Violation detail for a network interface.
    ResourceViolation -> Maybe AwsEc2NetworkInterfaceViolation
awsEc2NetworkInterfaceViolation :: Prelude.Maybe AwsEc2NetworkInterfaceViolation,
    -- | There\'s an unexpected gateway route.
    ResourceViolation
-> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
networkFirewallUnexpectedGatewayRoutesViolation :: Prelude.Maybe NetworkFirewallUnexpectedGatewayRoutesViolation,
    -- | Violation detail for a DNS Firewall policy that indicates that a rule
    -- group that Firewall Manager tried to associate with a VPC is already
    -- associated with the VPC and can\'t be associated again.
    ResourceViolation -> Maybe DnsDuplicateRuleGroupViolation
dnsDuplicateRuleGroupViolation :: Prelude.Maybe DnsDuplicateRuleGroupViolation,
    -- | The route configuration is invalid.
    ResourceViolation
-> Maybe NetworkFirewallInvalidRouteConfigurationViolation
networkFirewallInvalidRouteConfigurationViolation :: Prelude.Maybe NetworkFirewallInvalidRouteConfigurationViolation
  }
  deriving (ResourceViolation -> ResourceViolation -> Bool
(ResourceViolation -> ResourceViolation -> Bool)
-> (ResourceViolation -> ResourceViolation -> Bool)
-> Eq ResourceViolation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResourceViolation -> ResourceViolation -> Bool
$c/= :: ResourceViolation -> ResourceViolation -> Bool
== :: ResourceViolation -> ResourceViolation -> Bool
$c== :: ResourceViolation -> ResourceViolation -> Bool
Prelude.Eq, ReadPrec [ResourceViolation]
ReadPrec ResourceViolation
Int -> ReadS ResourceViolation
ReadS [ResourceViolation]
(Int -> ReadS ResourceViolation)
-> ReadS [ResourceViolation]
-> ReadPrec ResourceViolation
-> ReadPrec [ResourceViolation]
-> Read ResourceViolation
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResourceViolation]
$creadListPrec :: ReadPrec [ResourceViolation]
readPrec :: ReadPrec ResourceViolation
$creadPrec :: ReadPrec ResourceViolation
readList :: ReadS [ResourceViolation]
$creadList :: ReadS [ResourceViolation]
readsPrec :: Int -> ReadS ResourceViolation
$creadsPrec :: Int -> ReadS ResourceViolation
Prelude.Read, Int -> ResourceViolation -> ShowS
[ResourceViolation] -> ShowS
ResourceViolation -> String
(Int -> ResourceViolation -> ShowS)
-> (ResourceViolation -> String)
-> ([ResourceViolation] -> ShowS)
-> Show ResourceViolation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResourceViolation] -> ShowS
$cshowList :: [ResourceViolation] -> ShowS
show :: ResourceViolation -> String
$cshow :: ResourceViolation -> String
showsPrec :: Int -> ResourceViolation -> ShowS
$cshowsPrec :: Int -> ResourceViolation -> ShowS
Prelude.Show, (forall x. ResourceViolation -> Rep ResourceViolation x)
-> (forall x. Rep ResourceViolation x -> ResourceViolation)
-> Generic ResourceViolation
forall x. Rep ResourceViolation x -> ResourceViolation
forall x. ResourceViolation -> Rep ResourceViolation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ResourceViolation x -> ResourceViolation
$cfrom :: forall x. ResourceViolation -> Rep ResourceViolation x
Prelude.Generic)

-- |
-- Create a value of 'ResourceViolation' 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:
--
-- 'possibleRemediationActions', 'resourceViolation_possibleRemediationActions' - A list of possible remediation action lists. Each individual possible
-- remediation action is a list of individual remediation actions.
--
-- 'networkFirewallBlackHoleRouteDetectedViolation', 'resourceViolation_networkFirewallBlackHoleRouteDetectedViolation' - Undocumented member.
--
-- 'dnsRuleGroupLimitExceededViolation', 'resourceViolation_dnsRuleGroupLimitExceededViolation' - Violation detail for a DNS Firewall policy that indicates that the VPC
-- reached the limit for associated DNS Firewall rule groups. Firewall
-- Manager tried to associate another rule group with the VPC and failed.
--
-- 'networkFirewallMissingExpectedRTViolation', 'resourceViolation_networkFirewallMissingExpectedRTViolation' - Violation detail for an Network Firewall policy that indicates that a
-- subnet is not associated with the expected Firewall Manager managed
-- route table.
--
-- 'networkFirewallInternetTrafficNotInspectedViolation', 'resourceViolation_networkFirewallInternetTrafficNotInspectedViolation' - Violation detail for the subnet for which internet traffic hasn\'t been
-- inspected.
--
-- 'networkFirewallMissingFirewallViolation', 'resourceViolation_networkFirewallMissingFirewallViolation' - Violation detail for an Network Firewall policy that indicates that a
-- subnet has no Firewall Manager managed firewall in its VPC.
--
-- 'networkFirewallMissingSubnetViolation', 'resourceViolation_networkFirewallMissingSubnetViolation' - Violation detail for an Network Firewall policy that indicates that an
-- Availability Zone is missing the expected Firewall Manager managed
-- subnet.
--
-- 'awsEc2InstanceViolation', 'resourceViolation_awsEc2InstanceViolation' - Violation detail for an EC2 instance.
--
-- 'networkFirewallMissingExpectedRoutesViolation', 'resourceViolation_networkFirewallMissingExpectedRoutesViolation' - Expected routes are missing from Network Firewall.
--
-- 'dnsRuleGroupPriorityConflictViolation', 'resourceViolation_dnsRuleGroupPriorityConflictViolation' - Violation detail for a DNS Firewall policy that indicates that a rule
-- group that Firewall Manager tried to associate with a VPC has the same
-- priority as a rule group that\'s already associated.
--
-- 'awsVPCSecurityGroupViolation', 'resourceViolation_awsVPCSecurityGroupViolation' - Violation detail for security groups.
--
-- 'networkFirewallPolicyModifiedViolation', 'resourceViolation_networkFirewallPolicyModifiedViolation' - Violation detail for an Network Firewall policy that indicates that a
-- firewall policy in an individual account has been modified in a way that
-- makes it noncompliant. For example, the individual account owner might
-- have deleted a rule group, changed the priority of a stateless rule
-- group, or changed a policy default action.
--
-- 'networkFirewallUnexpectedFirewallRoutesViolation', 'resourceViolation_networkFirewallUnexpectedFirewallRoutesViolation' - There\'s an unexpected firewall route.
--
-- 'awsEc2NetworkInterfaceViolation', 'resourceViolation_awsEc2NetworkInterfaceViolation' - Violation detail for a network interface.
--
-- 'networkFirewallUnexpectedGatewayRoutesViolation', 'resourceViolation_networkFirewallUnexpectedGatewayRoutesViolation' - There\'s an unexpected gateway route.
--
-- 'dnsDuplicateRuleGroupViolation', 'resourceViolation_dnsDuplicateRuleGroupViolation' - Violation detail for a DNS Firewall policy that indicates that a rule
-- group that Firewall Manager tried to associate with a VPC is already
-- associated with the VPC and can\'t be associated again.
--
-- 'networkFirewallInvalidRouteConfigurationViolation', 'resourceViolation_networkFirewallInvalidRouteConfigurationViolation' - The route configuration is invalid.
newResourceViolation ::
  ResourceViolation
newResourceViolation :: ResourceViolation
newResourceViolation =
  ResourceViolation' :: Maybe PossibleRemediationActions
-> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
-> Maybe DnsRuleGroupLimitExceededViolation
-> Maybe NetworkFirewallMissingExpectedRTViolation
-> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
-> Maybe NetworkFirewallMissingFirewallViolation
-> Maybe NetworkFirewallMissingSubnetViolation
-> Maybe AwsEc2InstanceViolation
-> Maybe NetworkFirewallMissingExpectedRoutesViolation
-> Maybe DnsRuleGroupPriorityConflictViolation
-> Maybe AwsVPCSecurityGroupViolation
-> Maybe NetworkFirewallPolicyModifiedViolation
-> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
-> Maybe AwsEc2NetworkInterfaceViolation
-> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
-> Maybe DnsDuplicateRuleGroupViolation
-> Maybe NetworkFirewallInvalidRouteConfigurationViolation
-> ResourceViolation
ResourceViolation'
    { $sel:possibleRemediationActions:ResourceViolation' :: Maybe PossibleRemediationActions
possibleRemediationActions =
        Maybe PossibleRemediationActions
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallBlackHoleRouteDetectedViolation:ResourceViolation' :: Maybe NetworkFirewallBlackHoleRouteDetectedViolation
networkFirewallBlackHoleRouteDetectedViolation =
        Maybe NetworkFirewallBlackHoleRouteDetectedViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:dnsRuleGroupLimitExceededViolation:ResourceViolation' :: Maybe DnsRuleGroupLimitExceededViolation
dnsRuleGroupLimitExceededViolation = Maybe DnsRuleGroupLimitExceededViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallMissingExpectedRTViolation:ResourceViolation' :: Maybe NetworkFirewallMissingExpectedRTViolation
networkFirewallMissingExpectedRTViolation =
        Maybe NetworkFirewallMissingExpectedRTViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallInternetTrafficNotInspectedViolation:ResourceViolation' :: Maybe NetworkFirewallInternetTrafficNotInspectedViolation
networkFirewallInternetTrafficNotInspectedViolation =
        Maybe NetworkFirewallInternetTrafficNotInspectedViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallMissingFirewallViolation:ResourceViolation' :: Maybe NetworkFirewallMissingFirewallViolation
networkFirewallMissingFirewallViolation =
        Maybe NetworkFirewallMissingFirewallViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallMissingSubnetViolation:ResourceViolation' :: Maybe NetworkFirewallMissingSubnetViolation
networkFirewallMissingSubnetViolation =
        Maybe NetworkFirewallMissingSubnetViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:awsEc2InstanceViolation:ResourceViolation' :: Maybe AwsEc2InstanceViolation
awsEc2InstanceViolation = Maybe AwsEc2InstanceViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallMissingExpectedRoutesViolation:ResourceViolation' :: Maybe NetworkFirewallMissingExpectedRoutesViolation
networkFirewallMissingExpectedRoutesViolation =
        Maybe NetworkFirewallMissingExpectedRoutesViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:dnsRuleGroupPriorityConflictViolation:ResourceViolation' :: Maybe DnsRuleGroupPriorityConflictViolation
dnsRuleGroupPriorityConflictViolation =
        Maybe DnsRuleGroupPriorityConflictViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:awsVPCSecurityGroupViolation:ResourceViolation' :: Maybe AwsVPCSecurityGroupViolation
awsVPCSecurityGroupViolation = Maybe AwsVPCSecurityGroupViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallPolicyModifiedViolation:ResourceViolation' :: Maybe NetworkFirewallPolicyModifiedViolation
networkFirewallPolicyModifiedViolation =
        Maybe NetworkFirewallPolicyModifiedViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallUnexpectedFirewallRoutesViolation:ResourceViolation' :: Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
networkFirewallUnexpectedFirewallRoutesViolation =
        Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:awsEc2NetworkInterfaceViolation:ResourceViolation' :: Maybe AwsEc2NetworkInterfaceViolation
awsEc2NetworkInterfaceViolation = Maybe AwsEc2NetworkInterfaceViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallUnexpectedGatewayRoutesViolation:ResourceViolation' :: Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
networkFirewallUnexpectedGatewayRoutesViolation =
        Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:dnsDuplicateRuleGroupViolation:ResourceViolation' :: Maybe DnsDuplicateRuleGroupViolation
dnsDuplicateRuleGroupViolation = Maybe DnsDuplicateRuleGroupViolation
forall a. Maybe a
Prelude.Nothing,
      $sel:networkFirewallInvalidRouteConfigurationViolation:ResourceViolation' :: Maybe NetworkFirewallInvalidRouteConfigurationViolation
networkFirewallInvalidRouteConfigurationViolation =
        Maybe NetworkFirewallInvalidRouteConfigurationViolation
forall a. Maybe a
Prelude.Nothing
    }

-- | A list of possible remediation action lists. Each individual possible
-- remediation action is a list of individual remediation actions.
resourceViolation_possibleRemediationActions :: Lens.Lens' ResourceViolation (Prelude.Maybe PossibleRemediationActions)
resourceViolation_possibleRemediationActions :: (Maybe PossibleRemediationActions
 -> f (Maybe PossibleRemediationActions))
-> ResourceViolation -> f ResourceViolation
resourceViolation_possibleRemediationActions = (ResourceViolation -> Maybe PossibleRemediationActions)
-> (ResourceViolation
    -> Maybe PossibleRemediationActions -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe PossibleRemediationActions)
     (Maybe PossibleRemediationActions)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe PossibleRemediationActions
possibleRemediationActions :: Maybe PossibleRemediationActions
$sel:possibleRemediationActions:ResourceViolation' :: ResourceViolation -> Maybe PossibleRemediationActions
possibleRemediationActions} -> Maybe PossibleRemediationActions
possibleRemediationActions) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe PossibleRemediationActions
a -> ResourceViolation
s {$sel:possibleRemediationActions:ResourceViolation' :: Maybe PossibleRemediationActions
possibleRemediationActions = Maybe PossibleRemediationActions
a} :: ResourceViolation)

-- | Undocumented member.
resourceViolation_networkFirewallBlackHoleRouteDetectedViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallBlackHoleRouteDetectedViolation)
resourceViolation_networkFirewallBlackHoleRouteDetectedViolation :: (Maybe NetworkFirewallBlackHoleRouteDetectedViolation
 -> f (Maybe NetworkFirewallBlackHoleRouteDetectedViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallBlackHoleRouteDetectedViolation = (ResourceViolation
 -> Maybe NetworkFirewallBlackHoleRouteDetectedViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallBlackHoleRouteDetectedViolation)
     (Maybe NetworkFirewallBlackHoleRouteDetectedViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallBlackHoleRouteDetectedViolation
networkFirewallBlackHoleRouteDetectedViolation :: Maybe NetworkFirewallBlackHoleRouteDetectedViolation
$sel:networkFirewallBlackHoleRouteDetectedViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
networkFirewallBlackHoleRouteDetectedViolation} -> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
networkFirewallBlackHoleRouteDetectedViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallBlackHoleRouteDetectedViolation
a -> ResourceViolation
s {$sel:networkFirewallBlackHoleRouteDetectedViolation:ResourceViolation' :: Maybe NetworkFirewallBlackHoleRouteDetectedViolation
networkFirewallBlackHoleRouteDetectedViolation = Maybe NetworkFirewallBlackHoleRouteDetectedViolation
a} :: ResourceViolation)

-- | Violation detail for a DNS Firewall policy that indicates that the VPC
-- reached the limit for associated DNS Firewall rule groups. Firewall
-- Manager tried to associate another rule group with the VPC and failed.
resourceViolation_dnsRuleGroupLimitExceededViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe DnsRuleGroupLimitExceededViolation)
resourceViolation_dnsRuleGroupLimitExceededViolation :: (Maybe DnsRuleGroupLimitExceededViolation
 -> f (Maybe DnsRuleGroupLimitExceededViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_dnsRuleGroupLimitExceededViolation = (ResourceViolation -> Maybe DnsRuleGroupLimitExceededViolation)
-> (ResourceViolation
    -> Maybe DnsRuleGroupLimitExceededViolation -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe DnsRuleGroupLimitExceededViolation)
     (Maybe DnsRuleGroupLimitExceededViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe DnsRuleGroupLimitExceededViolation
dnsRuleGroupLimitExceededViolation :: Maybe DnsRuleGroupLimitExceededViolation
$sel:dnsRuleGroupLimitExceededViolation:ResourceViolation' :: ResourceViolation -> Maybe DnsRuleGroupLimitExceededViolation
dnsRuleGroupLimitExceededViolation} -> Maybe DnsRuleGroupLimitExceededViolation
dnsRuleGroupLimitExceededViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe DnsRuleGroupLimitExceededViolation
a -> ResourceViolation
s {$sel:dnsRuleGroupLimitExceededViolation:ResourceViolation' :: Maybe DnsRuleGroupLimitExceededViolation
dnsRuleGroupLimitExceededViolation = Maybe DnsRuleGroupLimitExceededViolation
a} :: ResourceViolation)

-- | Violation detail for an Network Firewall policy that indicates that a
-- subnet is not associated with the expected Firewall Manager managed
-- route table.
resourceViolation_networkFirewallMissingExpectedRTViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallMissingExpectedRTViolation)
resourceViolation_networkFirewallMissingExpectedRTViolation :: (Maybe NetworkFirewallMissingExpectedRTViolation
 -> f (Maybe NetworkFirewallMissingExpectedRTViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallMissingExpectedRTViolation = (ResourceViolation
 -> Maybe NetworkFirewallMissingExpectedRTViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallMissingExpectedRTViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallMissingExpectedRTViolation)
     (Maybe NetworkFirewallMissingExpectedRTViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallMissingExpectedRTViolation
networkFirewallMissingExpectedRTViolation :: Maybe NetworkFirewallMissingExpectedRTViolation
$sel:networkFirewallMissingExpectedRTViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallMissingExpectedRTViolation
networkFirewallMissingExpectedRTViolation} -> Maybe NetworkFirewallMissingExpectedRTViolation
networkFirewallMissingExpectedRTViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallMissingExpectedRTViolation
a -> ResourceViolation
s {$sel:networkFirewallMissingExpectedRTViolation:ResourceViolation' :: Maybe NetworkFirewallMissingExpectedRTViolation
networkFirewallMissingExpectedRTViolation = Maybe NetworkFirewallMissingExpectedRTViolation
a} :: ResourceViolation)

-- | Violation detail for the subnet for which internet traffic hasn\'t been
-- inspected.
resourceViolation_networkFirewallInternetTrafficNotInspectedViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallInternetTrafficNotInspectedViolation)
resourceViolation_networkFirewallInternetTrafficNotInspectedViolation :: (Maybe NetworkFirewallInternetTrafficNotInspectedViolation
 -> f (Maybe NetworkFirewallInternetTrafficNotInspectedViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallInternetTrafficNotInspectedViolation = (ResourceViolation
 -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallInternetTrafficNotInspectedViolation)
     (Maybe NetworkFirewallInternetTrafficNotInspectedViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallInternetTrafficNotInspectedViolation
networkFirewallInternetTrafficNotInspectedViolation :: Maybe NetworkFirewallInternetTrafficNotInspectedViolation
$sel:networkFirewallInternetTrafficNotInspectedViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
networkFirewallInternetTrafficNotInspectedViolation} -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
networkFirewallInternetTrafficNotInspectedViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallInternetTrafficNotInspectedViolation
a -> ResourceViolation
s {$sel:networkFirewallInternetTrafficNotInspectedViolation:ResourceViolation' :: Maybe NetworkFirewallInternetTrafficNotInspectedViolation
networkFirewallInternetTrafficNotInspectedViolation = Maybe NetworkFirewallInternetTrafficNotInspectedViolation
a} :: ResourceViolation)

-- | Violation detail for an Network Firewall policy that indicates that a
-- subnet has no Firewall Manager managed firewall in its VPC.
resourceViolation_networkFirewallMissingFirewallViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallMissingFirewallViolation)
resourceViolation_networkFirewallMissingFirewallViolation :: (Maybe NetworkFirewallMissingFirewallViolation
 -> f (Maybe NetworkFirewallMissingFirewallViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallMissingFirewallViolation = (ResourceViolation
 -> Maybe NetworkFirewallMissingFirewallViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallMissingFirewallViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallMissingFirewallViolation)
     (Maybe NetworkFirewallMissingFirewallViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallMissingFirewallViolation
networkFirewallMissingFirewallViolation :: Maybe NetworkFirewallMissingFirewallViolation
$sel:networkFirewallMissingFirewallViolation:ResourceViolation' :: ResourceViolation -> Maybe NetworkFirewallMissingFirewallViolation
networkFirewallMissingFirewallViolation} -> Maybe NetworkFirewallMissingFirewallViolation
networkFirewallMissingFirewallViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallMissingFirewallViolation
a -> ResourceViolation
s {$sel:networkFirewallMissingFirewallViolation:ResourceViolation' :: Maybe NetworkFirewallMissingFirewallViolation
networkFirewallMissingFirewallViolation = Maybe NetworkFirewallMissingFirewallViolation
a} :: ResourceViolation)

-- | Violation detail for an Network Firewall policy that indicates that an
-- Availability Zone is missing the expected Firewall Manager managed
-- subnet.
resourceViolation_networkFirewallMissingSubnetViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallMissingSubnetViolation)
resourceViolation_networkFirewallMissingSubnetViolation :: (Maybe NetworkFirewallMissingSubnetViolation
 -> f (Maybe NetworkFirewallMissingSubnetViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallMissingSubnetViolation = (ResourceViolation -> Maybe NetworkFirewallMissingSubnetViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallMissingSubnetViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallMissingSubnetViolation)
     (Maybe NetworkFirewallMissingSubnetViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallMissingSubnetViolation
networkFirewallMissingSubnetViolation :: Maybe NetworkFirewallMissingSubnetViolation
$sel:networkFirewallMissingSubnetViolation:ResourceViolation' :: ResourceViolation -> Maybe NetworkFirewallMissingSubnetViolation
networkFirewallMissingSubnetViolation} -> Maybe NetworkFirewallMissingSubnetViolation
networkFirewallMissingSubnetViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallMissingSubnetViolation
a -> ResourceViolation
s {$sel:networkFirewallMissingSubnetViolation:ResourceViolation' :: Maybe NetworkFirewallMissingSubnetViolation
networkFirewallMissingSubnetViolation = Maybe NetworkFirewallMissingSubnetViolation
a} :: ResourceViolation)

-- | Violation detail for an EC2 instance.
resourceViolation_awsEc2InstanceViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe AwsEc2InstanceViolation)
resourceViolation_awsEc2InstanceViolation :: (Maybe AwsEc2InstanceViolation
 -> f (Maybe AwsEc2InstanceViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_awsEc2InstanceViolation = (ResourceViolation -> Maybe AwsEc2InstanceViolation)
-> (ResourceViolation
    -> Maybe AwsEc2InstanceViolation -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe AwsEc2InstanceViolation)
     (Maybe AwsEc2InstanceViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe AwsEc2InstanceViolation
awsEc2InstanceViolation :: Maybe AwsEc2InstanceViolation
$sel:awsEc2InstanceViolation:ResourceViolation' :: ResourceViolation -> Maybe AwsEc2InstanceViolation
awsEc2InstanceViolation} -> Maybe AwsEc2InstanceViolation
awsEc2InstanceViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe AwsEc2InstanceViolation
a -> ResourceViolation
s {$sel:awsEc2InstanceViolation:ResourceViolation' :: Maybe AwsEc2InstanceViolation
awsEc2InstanceViolation = Maybe AwsEc2InstanceViolation
a} :: ResourceViolation)

-- | Expected routes are missing from Network Firewall.
resourceViolation_networkFirewallMissingExpectedRoutesViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallMissingExpectedRoutesViolation)
resourceViolation_networkFirewallMissingExpectedRoutesViolation :: (Maybe NetworkFirewallMissingExpectedRoutesViolation
 -> f (Maybe NetworkFirewallMissingExpectedRoutesViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallMissingExpectedRoutesViolation = (ResourceViolation
 -> Maybe NetworkFirewallMissingExpectedRoutesViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallMissingExpectedRoutesViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallMissingExpectedRoutesViolation)
     (Maybe NetworkFirewallMissingExpectedRoutesViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallMissingExpectedRoutesViolation
networkFirewallMissingExpectedRoutesViolation :: Maybe NetworkFirewallMissingExpectedRoutesViolation
$sel:networkFirewallMissingExpectedRoutesViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallMissingExpectedRoutesViolation
networkFirewallMissingExpectedRoutesViolation} -> Maybe NetworkFirewallMissingExpectedRoutesViolation
networkFirewallMissingExpectedRoutesViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallMissingExpectedRoutesViolation
a -> ResourceViolation
s {$sel:networkFirewallMissingExpectedRoutesViolation:ResourceViolation' :: Maybe NetworkFirewallMissingExpectedRoutesViolation
networkFirewallMissingExpectedRoutesViolation = Maybe NetworkFirewallMissingExpectedRoutesViolation
a} :: ResourceViolation)

-- | Violation detail for a DNS Firewall policy that indicates that a rule
-- group that Firewall Manager tried to associate with a VPC has the same
-- priority as a rule group that\'s already associated.
resourceViolation_dnsRuleGroupPriorityConflictViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe DnsRuleGroupPriorityConflictViolation)
resourceViolation_dnsRuleGroupPriorityConflictViolation :: (Maybe DnsRuleGroupPriorityConflictViolation
 -> f (Maybe DnsRuleGroupPriorityConflictViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_dnsRuleGroupPriorityConflictViolation = (ResourceViolation -> Maybe DnsRuleGroupPriorityConflictViolation)
-> (ResourceViolation
    -> Maybe DnsRuleGroupPriorityConflictViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe DnsRuleGroupPriorityConflictViolation)
     (Maybe DnsRuleGroupPriorityConflictViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe DnsRuleGroupPriorityConflictViolation
dnsRuleGroupPriorityConflictViolation :: Maybe DnsRuleGroupPriorityConflictViolation
$sel:dnsRuleGroupPriorityConflictViolation:ResourceViolation' :: ResourceViolation -> Maybe DnsRuleGroupPriorityConflictViolation
dnsRuleGroupPriorityConflictViolation} -> Maybe DnsRuleGroupPriorityConflictViolation
dnsRuleGroupPriorityConflictViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe DnsRuleGroupPriorityConflictViolation
a -> ResourceViolation
s {$sel:dnsRuleGroupPriorityConflictViolation:ResourceViolation' :: Maybe DnsRuleGroupPriorityConflictViolation
dnsRuleGroupPriorityConflictViolation = Maybe DnsRuleGroupPriorityConflictViolation
a} :: ResourceViolation)

-- | Violation detail for security groups.
resourceViolation_awsVPCSecurityGroupViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe AwsVPCSecurityGroupViolation)
resourceViolation_awsVPCSecurityGroupViolation :: (Maybe AwsVPCSecurityGroupViolation
 -> f (Maybe AwsVPCSecurityGroupViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_awsVPCSecurityGroupViolation = (ResourceViolation -> Maybe AwsVPCSecurityGroupViolation)
-> (ResourceViolation
    -> Maybe AwsVPCSecurityGroupViolation -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe AwsVPCSecurityGroupViolation)
     (Maybe AwsVPCSecurityGroupViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe AwsVPCSecurityGroupViolation
awsVPCSecurityGroupViolation :: Maybe AwsVPCSecurityGroupViolation
$sel:awsVPCSecurityGroupViolation:ResourceViolation' :: ResourceViolation -> Maybe AwsVPCSecurityGroupViolation
awsVPCSecurityGroupViolation} -> Maybe AwsVPCSecurityGroupViolation
awsVPCSecurityGroupViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe AwsVPCSecurityGroupViolation
a -> ResourceViolation
s {$sel:awsVPCSecurityGroupViolation:ResourceViolation' :: Maybe AwsVPCSecurityGroupViolation
awsVPCSecurityGroupViolation = Maybe AwsVPCSecurityGroupViolation
a} :: ResourceViolation)

-- | Violation detail for an Network Firewall policy that indicates that a
-- firewall policy in an individual account has been modified in a way that
-- makes it noncompliant. For example, the individual account owner might
-- have deleted a rule group, changed the priority of a stateless rule
-- group, or changed a policy default action.
resourceViolation_networkFirewallPolicyModifiedViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallPolicyModifiedViolation)
resourceViolation_networkFirewallPolicyModifiedViolation :: (Maybe NetworkFirewallPolicyModifiedViolation
 -> f (Maybe NetworkFirewallPolicyModifiedViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallPolicyModifiedViolation = (ResourceViolation -> Maybe NetworkFirewallPolicyModifiedViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallPolicyModifiedViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallPolicyModifiedViolation)
     (Maybe NetworkFirewallPolicyModifiedViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallPolicyModifiedViolation
networkFirewallPolicyModifiedViolation :: Maybe NetworkFirewallPolicyModifiedViolation
$sel:networkFirewallPolicyModifiedViolation:ResourceViolation' :: ResourceViolation -> Maybe NetworkFirewallPolicyModifiedViolation
networkFirewallPolicyModifiedViolation} -> Maybe NetworkFirewallPolicyModifiedViolation
networkFirewallPolicyModifiedViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallPolicyModifiedViolation
a -> ResourceViolation
s {$sel:networkFirewallPolicyModifiedViolation:ResourceViolation' :: Maybe NetworkFirewallPolicyModifiedViolation
networkFirewallPolicyModifiedViolation = Maybe NetworkFirewallPolicyModifiedViolation
a} :: ResourceViolation)

-- | There\'s an unexpected firewall route.
resourceViolation_networkFirewallUnexpectedFirewallRoutesViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallUnexpectedFirewallRoutesViolation)
resourceViolation_networkFirewallUnexpectedFirewallRoutesViolation :: (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
 -> f (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallUnexpectedFirewallRoutesViolation = (ResourceViolation
 -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation)
     (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
networkFirewallUnexpectedFirewallRoutesViolation :: Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
$sel:networkFirewallUnexpectedFirewallRoutesViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
networkFirewallUnexpectedFirewallRoutesViolation} -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
networkFirewallUnexpectedFirewallRoutesViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
a -> ResourceViolation
s {$sel:networkFirewallUnexpectedFirewallRoutesViolation:ResourceViolation' :: Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
networkFirewallUnexpectedFirewallRoutesViolation = Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
a} :: ResourceViolation)

-- | Violation detail for a network interface.
resourceViolation_awsEc2NetworkInterfaceViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe AwsEc2NetworkInterfaceViolation)
resourceViolation_awsEc2NetworkInterfaceViolation :: (Maybe AwsEc2NetworkInterfaceViolation
 -> f (Maybe AwsEc2NetworkInterfaceViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_awsEc2NetworkInterfaceViolation = (ResourceViolation -> Maybe AwsEc2NetworkInterfaceViolation)
-> (ResourceViolation
    -> Maybe AwsEc2NetworkInterfaceViolation -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe AwsEc2NetworkInterfaceViolation)
     (Maybe AwsEc2NetworkInterfaceViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe AwsEc2NetworkInterfaceViolation
awsEc2NetworkInterfaceViolation :: Maybe AwsEc2NetworkInterfaceViolation
$sel:awsEc2NetworkInterfaceViolation:ResourceViolation' :: ResourceViolation -> Maybe AwsEc2NetworkInterfaceViolation
awsEc2NetworkInterfaceViolation} -> Maybe AwsEc2NetworkInterfaceViolation
awsEc2NetworkInterfaceViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe AwsEc2NetworkInterfaceViolation
a -> ResourceViolation
s {$sel:awsEc2NetworkInterfaceViolation:ResourceViolation' :: Maybe AwsEc2NetworkInterfaceViolation
awsEc2NetworkInterfaceViolation = Maybe AwsEc2NetworkInterfaceViolation
a} :: ResourceViolation)

-- | There\'s an unexpected gateway route.
resourceViolation_networkFirewallUnexpectedGatewayRoutesViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallUnexpectedGatewayRoutesViolation)
resourceViolation_networkFirewallUnexpectedGatewayRoutesViolation :: (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
 -> f (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallUnexpectedGatewayRoutesViolation = (ResourceViolation
 -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation)
     (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
networkFirewallUnexpectedGatewayRoutesViolation :: Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
$sel:networkFirewallUnexpectedGatewayRoutesViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
networkFirewallUnexpectedGatewayRoutesViolation} -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
networkFirewallUnexpectedGatewayRoutesViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
a -> ResourceViolation
s {$sel:networkFirewallUnexpectedGatewayRoutesViolation:ResourceViolation' :: Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
networkFirewallUnexpectedGatewayRoutesViolation = Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
a} :: ResourceViolation)

-- | Violation detail for a DNS Firewall policy that indicates that a rule
-- group that Firewall Manager tried to associate with a VPC is already
-- associated with the VPC and can\'t be associated again.
resourceViolation_dnsDuplicateRuleGroupViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe DnsDuplicateRuleGroupViolation)
resourceViolation_dnsDuplicateRuleGroupViolation :: (Maybe DnsDuplicateRuleGroupViolation
 -> f (Maybe DnsDuplicateRuleGroupViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_dnsDuplicateRuleGroupViolation = (ResourceViolation -> Maybe DnsDuplicateRuleGroupViolation)
-> (ResourceViolation
    -> Maybe DnsDuplicateRuleGroupViolation -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe DnsDuplicateRuleGroupViolation)
     (Maybe DnsDuplicateRuleGroupViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe DnsDuplicateRuleGroupViolation
dnsDuplicateRuleGroupViolation :: Maybe DnsDuplicateRuleGroupViolation
$sel:dnsDuplicateRuleGroupViolation:ResourceViolation' :: ResourceViolation -> Maybe DnsDuplicateRuleGroupViolation
dnsDuplicateRuleGroupViolation} -> Maybe DnsDuplicateRuleGroupViolation
dnsDuplicateRuleGroupViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe DnsDuplicateRuleGroupViolation
a -> ResourceViolation
s {$sel:dnsDuplicateRuleGroupViolation:ResourceViolation' :: Maybe DnsDuplicateRuleGroupViolation
dnsDuplicateRuleGroupViolation = Maybe DnsDuplicateRuleGroupViolation
a} :: ResourceViolation)

-- | The route configuration is invalid.
resourceViolation_networkFirewallInvalidRouteConfigurationViolation :: Lens.Lens' ResourceViolation (Prelude.Maybe NetworkFirewallInvalidRouteConfigurationViolation)
resourceViolation_networkFirewallInvalidRouteConfigurationViolation :: (Maybe NetworkFirewallInvalidRouteConfigurationViolation
 -> f (Maybe NetworkFirewallInvalidRouteConfigurationViolation))
-> ResourceViolation -> f ResourceViolation
resourceViolation_networkFirewallInvalidRouteConfigurationViolation = (ResourceViolation
 -> Maybe NetworkFirewallInvalidRouteConfigurationViolation)
-> (ResourceViolation
    -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
    -> ResourceViolation)
-> Lens
     ResourceViolation
     ResourceViolation
     (Maybe NetworkFirewallInvalidRouteConfigurationViolation)
     (Maybe NetworkFirewallInvalidRouteConfigurationViolation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResourceViolation' {Maybe NetworkFirewallInvalidRouteConfigurationViolation
networkFirewallInvalidRouteConfigurationViolation :: Maybe NetworkFirewallInvalidRouteConfigurationViolation
$sel:networkFirewallInvalidRouteConfigurationViolation:ResourceViolation' :: ResourceViolation
-> Maybe NetworkFirewallInvalidRouteConfigurationViolation
networkFirewallInvalidRouteConfigurationViolation} -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
networkFirewallInvalidRouteConfigurationViolation) (\s :: ResourceViolation
s@ResourceViolation' {} Maybe NetworkFirewallInvalidRouteConfigurationViolation
a -> ResourceViolation
s {$sel:networkFirewallInvalidRouteConfigurationViolation:ResourceViolation' :: Maybe NetworkFirewallInvalidRouteConfigurationViolation
networkFirewallInvalidRouteConfigurationViolation = Maybe NetworkFirewallInvalidRouteConfigurationViolation
a} :: ResourceViolation)

instance Core.FromJSON ResourceViolation where
  parseJSON :: Value -> Parser ResourceViolation
parseJSON =
    String
-> (Object -> Parser ResourceViolation)
-> Value
-> Parser ResourceViolation
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ResourceViolation"
      ( \Object
x ->
          Maybe PossibleRemediationActions
-> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
-> Maybe DnsRuleGroupLimitExceededViolation
-> Maybe NetworkFirewallMissingExpectedRTViolation
-> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
-> Maybe NetworkFirewallMissingFirewallViolation
-> Maybe NetworkFirewallMissingSubnetViolation
-> Maybe AwsEc2InstanceViolation
-> Maybe NetworkFirewallMissingExpectedRoutesViolation
-> Maybe DnsRuleGroupPriorityConflictViolation
-> Maybe AwsVPCSecurityGroupViolation
-> Maybe NetworkFirewallPolicyModifiedViolation
-> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
-> Maybe AwsEc2NetworkInterfaceViolation
-> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
-> Maybe DnsDuplicateRuleGroupViolation
-> Maybe NetworkFirewallInvalidRouteConfigurationViolation
-> ResourceViolation
ResourceViolation'
            (Maybe PossibleRemediationActions
 -> Maybe NetworkFirewallBlackHoleRouteDetectedViolation
 -> Maybe DnsRuleGroupLimitExceededViolation
 -> Maybe NetworkFirewallMissingExpectedRTViolation
 -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
 -> Maybe NetworkFirewallMissingFirewallViolation
 -> Maybe NetworkFirewallMissingSubnetViolation
 -> Maybe AwsEc2InstanceViolation
 -> Maybe NetworkFirewallMissingExpectedRoutesViolation
 -> Maybe DnsRuleGroupPriorityConflictViolation
 -> Maybe AwsVPCSecurityGroupViolation
 -> Maybe NetworkFirewallPolicyModifiedViolation
 -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
 -> Maybe AwsEc2NetworkInterfaceViolation
 -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
 -> Maybe DnsDuplicateRuleGroupViolation
 -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
 -> ResourceViolation)
-> Parser (Maybe PossibleRemediationActions)
-> Parser
     (Maybe NetworkFirewallBlackHoleRouteDetectedViolation
      -> Maybe DnsRuleGroupLimitExceededViolation
      -> Maybe NetworkFirewallMissingExpectedRTViolation
      -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
      -> Maybe NetworkFirewallMissingFirewallViolation
      -> Maybe NetworkFirewallMissingSubnetViolation
      -> Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe PossibleRemediationActions)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PossibleRemediationActions")
            Parser
  (Maybe NetworkFirewallBlackHoleRouteDetectedViolation
   -> Maybe DnsRuleGroupLimitExceededViolation
   -> Maybe NetworkFirewallMissingExpectedRTViolation
   -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
   -> Maybe NetworkFirewallMissingFirewallViolation
   -> Maybe NetworkFirewallMissingSubnetViolation
   -> Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallBlackHoleRouteDetectedViolation)
-> Parser
     (Maybe DnsRuleGroupLimitExceededViolation
      -> Maybe NetworkFirewallMissingExpectedRTViolation
      -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
      -> Maybe NetworkFirewallMissingFirewallViolation
      -> Maybe NetworkFirewallMissingSubnetViolation
      -> Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text
-> Parser (Maybe NetworkFirewallBlackHoleRouteDetectedViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallBlackHoleRouteDetectedViolation"
                        )
            Parser
  (Maybe DnsRuleGroupLimitExceededViolation
   -> Maybe NetworkFirewallMissingExpectedRTViolation
   -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
   -> Maybe NetworkFirewallMissingFirewallViolation
   -> Maybe NetworkFirewallMissingSubnetViolation
   -> Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe DnsRuleGroupLimitExceededViolation)
-> Parser
     (Maybe NetworkFirewallMissingExpectedRTViolation
      -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
      -> Maybe NetworkFirewallMissingFirewallViolation
      -> Maybe NetworkFirewallMissingSubnetViolation
      -> Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DnsRuleGroupLimitExceededViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DnsRuleGroupLimitExceededViolation")
            Parser
  (Maybe NetworkFirewallMissingExpectedRTViolation
   -> Maybe NetworkFirewallInternetTrafficNotInspectedViolation
   -> Maybe NetworkFirewallMissingFirewallViolation
   -> Maybe NetworkFirewallMissingSubnetViolation
   -> Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallMissingExpectedRTViolation)
-> Parser
     (Maybe NetworkFirewallInternetTrafficNotInspectedViolation
      -> Maybe NetworkFirewallMissingFirewallViolation
      -> Maybe NetworkFirewallMissingSubnetViolation
      -> Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text -> Parser (Maybe NetworkFirewallMissingExpectedRTViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallMissingExpectedRTViolation"
                        )
            Parser
  (Maybe NetworkFirewallInternetTrafficNotInspectedViolation
   -> Maybe NetworkFirewallMissingFirewallViolation
   -> Maybe NetworkFirewallMissingSubnetViolation
   -> Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser
     (Maybe NetworkFirewallInternetTrafficNotInspectedViolation)
-> Parser
     (Maybe NetworkFirewallMissingFirewallViolation
      -> Maybe NetworkFirewallMissingSubnetViolation
      -> Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text
-> Parser
     (Maybe NetworkFirewallInternetTrafficNotInspectedViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallInternetTrafficNotInspectedViolation"
                        )
            Parser
  (Maybe NetworkFirewallMissingFirewallViolation
   -> Maybe NetworkFirewallMissingSubnetViolation
   -> Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallMissingFirewallViolation)
-> Parser
     (Maybe NetworkFirewallMissingSubnetViolation
      -> Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text -> Parser (Maybe NetworkFirewallMissingFirewallViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallMissingFirewallViolation"
                        )
            Parser
  (Maybe NetworkFirewallMissingSubnetViolation
   -> Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallMissingSubnetViolation)
-> Parser
     (Maybe AwsEc2InstanceViolation
      -> Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe NetworkFirewallMissingSubnetViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallMissingSubnetViolation")
            Parser
  (Maybe AwsEc2InstanceViolation
   -> Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe AwsEc2InstanceViolation)
-> Parser
     (Maybe NetworkFirewallMissingExpectedRoutesViolation
      -> Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsEc2InstanceViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AwsEc2InstanceViolation")
            Parser
  (Maybe NetworkFirewallMissingExpectedRoutesViolation
   -> Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallMissingExpectedRoutesViolation)
-> Parser
     (Maybe DnsRuleGroupPriorityConflictViolation
      -> Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text
-> Parser (Maybe NetworkFirewallMissingExpectedRoutesViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallMissingExpectedRoutesViolation"
                        )
            Parser
  (Maybe DnsRuleGroupPriorityConflictViolation
   -> Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe DnsRuleGroupPriorityConflictViolation)
-> Parser
     (Maybe AwsVPCSecurityGroupViolation
      -> Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe DnsRuleGroupPriorityConflictViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DnsRuleGroupPriorityConflictViolation")
            Parser
  (Maybe AwsVPCSecurityGroupViolation
   -> Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe AwsVPCSecurityGroupViolation)
-> Parser
     (Maybe NetworkFirewallPolicyModifiedViolation
      -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsVPCSecurityGroupViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AwsVPCSecurityGroupViolation")
            Parser
  (Maybe NetworkFirewallPolicyModifiedViolation
   -> Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallPolicyModifiedViolation)
-> Parser
     (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
      -> Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe NetworkFirewallPolicyModifiedViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallPolicyModifiedViolation")
            Parser
  (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation
   -> Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation)
-> Parser
     (Maybe AwsEc2NetworkInterfaceViolation
      -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text
-> Parser (Maybe NetworkFirewallUnexpectedFirewallRoutesViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallUnexpectedFirewallRoutesViolation"
                        )
            Parser
  (Maybe AwsEc2NetworkInterfaceViolation
   -> Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe AwsEc2NetworkInterfaceViolation)
-> Parser
     (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
      -> Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsEc2NetworkInterfaceViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AwsEc2NetworkInterfaceViolation")
            Parser
  (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation
   -> Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation)
-> Parser
     (Maybe DnsDuplicateRuleGroupViolation
      -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text
-> Parser (Maybe NetworkFirewallUnexpectedGatewayRoutesViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallUnexpectedGatewayRoutesViolation"
                        )
            Parser
  (Maybe DnsDuplicateRuleGroupViolation
   -> Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe DnsDuplicateRuleGroupViolation)
-> Parser
     (Maybe NetworkFirewallInvalidRouteConfigurationViolation
      -> ResourceViolation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DnsDuplicateRuleGroupViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DnsDuplicateRuleGroupViolation")
            Parser
  (Maybe NetworkFirewallInvalidRouteConfigurationViolation
   -> ResourceViolation)
-> Parser (Maybe NetworkFirewallInvalidRouteConfigurationViolation)
-> Parser ResourceViolation
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            Object
-> Text
-> Parser (Maybe NetworkFirewallInvalidRouteConfigurationViolation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NetworkFirewallInvalidRouteConfigurationViolation"
                        )
      )

instance Prelude.Hashable ResourceViolation

instance Prelude.NFData ResourceViolation