{-# 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.RemediationAction
-- 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.RemediationAction where

import qualified Amazonka.Core as Core
import Amazonka.FMS.Types.EC2AssociateRouteTableAction
import Amazonka.FMS.Types.EC2CopyRouteTableAction
import Amazonka.FMS.Types.EC2CreateRouteAction
import Amazonka.FMS.Types.EC2CreateRouteTableAction
import Amazonka.FMS.Types.EC2DeleteRouteAction
import Amazonka.FMS.Types.EC2ReplaceRouteAction
import Amazonka.FMS.Types.EC2ReplaceRouteTableAssociationAction
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Information about an individual action you can take to remediate a
-- violation.
--
-- /See:/ 'newRemediationAction' smart constructor.
data RemediationAction = RemediationAction'
  { -- | Information about the CreateRoute action in the Amazon EC2 API.
    RemediationAction -> Maybe EC2CreateRouteAction
eC2CreateRouteAction :: Prelude.Maybe EC2CreateRouteAction,
    -- | Information about the CopyRouteTable action in the Amazon EC2 API.
    RemediationAction -> Maybe EC2CopyRouteTableAction
eC2CopyRouteTableAction :: Prelude.Maybe EC2CopyRouteTableAction,
    -- | Information about the ReplaceRouteTableAssociation action in the Amazon
    -- EC2 API.
    RemediationAction -> Maybe EC2ReplaceRouteTableAssociationAction
eC2ReplaceRouteTableAssociationAction :: Prelude.Maybe EC2ReplaceRouteTableAssociationAction,
    -- | Information about the AssociateRouteTable action in the Amazon EC2 API.
    RemediationAction -> Maybe EC2AssociateRouteTableAction
eC2AssociateRouteTableAction :: Prelude.Maybe EC2AssociateRouteTableAction,
    -- | Information about the ReplaceRoute action in the Amazon EC2 API.
    RemediationAction -> Maybe EC2ReplaceRouteAction
eC2ReplaceRouteAction :: Prelude.Maybe EC2ReplaceRouteAction,
    -- | Information about the DeleteRoute action in the Amazon EC2 API.
    RemediationAction -> Maybe EC2DeleteRouteAction
eC2DeleteRouteAction :: Prelude.Maybe EC2DeleteRouteAction,
    -- | A description of a remediation action.
    RemediationAction -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Information about the CreateRouteTable action in the Amazon EC2 API.
    RemediationAction -> Maybe EC2CreateRouteTableAction
eC2CreateRouteTableAction :: Prelude.Maybe EC2CreateRouteTableAction
  }
  deriving (RemediationAction -> RemediationAction -> Bool
(RemediationAction -> RemediationAction -> Bool)
-> (RemediationAction -> RemediationAction -> Bool)
-> Eq RemediationAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RemediationAction -> RemediationAction -> Bool
$c/= :: RemediationAction -> RemediationAction -> Bool
== :: RemediationAction -> RemediationAction -> Bool
$c== :: RemediationAction -> RemediationAction -> Bool
Prelude.Eq, ReadPrec [RemediationAction]
ReadPrec RemediationAction
Int -> ReadS RemediationAction
ReadS [RemediationAction]
(Int -> ReadS RemediationAction)
-> ReadS [RemediationAction]
-> ReadPrec RemediationAction
-> ReadPrec [RemediationAction]
-> Read RemediationAction
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RemediationAction]
$creadListPrec :: ReadPrec [RemediationAction]
readPrec :: ReadPrec RemediationAction
$creadPrec :: ReadPrec RemediationAction
readList :: ReadS [RemediationAction]
$creadList :: ReadS [RemediationAction]
readsPrec :: Int -> ReadS RemediationAction
$creadsPrec :: Int -> ReadS RemediationAction
Prelude.Read, Int -> RemediationAction -> ShowS
[RemediationAction] -> ShowS
RemediationAction -> String
(Int -> RemediationAction -> ShowS)
-> (RemediationAction -> String)
-> ([RemediationAction] -> ShowS)
-> Show RemediationAction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RemediationAction] -> ShowS
$cshowList :: [RemediationAction] -> ShowS
show :: RemediationAction -> String
$cshow :: RemediationAction -> String
showsPrec :: Int -> RemediationAction -> ShowS
$cshowsPrec :: Int -> RemediationAction -> ShowS
Prelude.Show, (forall x. RemediationAction -> Rep RemediationAction x)
-> (forall x. Rep RemediationAction x -> RemediationAction)
-> Generic RemediationAction
forall x. Rep RemediationAction x -> RemediationAction
forall x. RemediationAction -> Rep RemediationAction x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RemediationAction x -> RemediationAction
$cfrom :: forall x. RemediationAction -> Rep RemediationAction x
Prelude.Generic)

-- |
-- Create a value of 'RemediationAction' 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:
--
-- 'eC2CreateRouteAction', 'remediationAction_eC2CreateRouteAction' - Information about the CreateRoute action in the Amazon EC2 API.
--
-- 'eC2CopyRouteTableAction', 'remediationAction_eC2CopyRouteTableAction' - Information about the CopyRouteTable action in the Amazon EC2 API.
--
-- 'eC2ReplaceRouteTableAssociationAction', 'remediationAction_eC2ReplaceRouteTableAssociationAction' - Information about the ReplaceRouteTableAssociation action in the Amazon
-- EC2 API.
--
-- 'eC2AssociateRouteTableAction', 'remediationAction_eC2AssociateRouteTableAction' - Information about the AssociateRouteTable action in the Amazon EC2 API.
--
-- 'eC2ReplaceRouteAction', 'remediationAction_eC2ReplaceRouteAction' - Information about the ReplaceRoute action in the Amazon EC2 API.
--
-- 'eC2DeleteRouteAction', 'remediationAction_eC2DeleteRouteAction' - Information about the DeleteRoute action in the Amazon EC2 API.
--
-- 'description', 'remediationAction_description' - A description of a remediation action.
--
-- 'eC2CreateRouteTableAction', 'remediationAction_eC2CreateRouteTableAction' - Information about the CreateRouteTable action in the Amazon EC2 API.
newRemediationAction ::
  RemediationAction
newRemediationAction :: RemediationAction
newRemediationAction =
  RemediationAction' :: Maybe EC2CreateRouteAction
-> Maybe EC2CopyRouteTableAction
-> Maybe EC2ReplaceRouteTableAssociationAction
-> Maybe EC2AssociateRouteTableAction
-> Maybe EC2ReplaceRouteAction
-> Maybe EC2DeleteRouteAction
-> Maybe Text
-> Maybe EC2CreateRouteTableAction
-> RemediationAction
RemediationAction'
    { $sel:eC2CreateRouteAction:RemediationAction' :: Maybe EC2CreateRouteAction
eC2CreateRouteAction =
        Maybe EC2CreateRouteAction
forall a. Maybe a
Prelude.Nothing,
      $sel:eC2CopyRouteTableAction:RemediationAction' :: Maybe EC2CopyRouteTableAction
eC2CopyRouteTableAction = Maybe EC2CopyRouteTableAction
forall a. Maybe a
Prelude.Nothing,
      $sel:eC2ReplaceRouteTableAssociationAction:RemediationAction' :: Maybe EC2ReplaceRouteTableAssociationAction
eC2ReplaceRouteTableAssociationAction =
        Maybe EC2ReplaceRouteTableAssociationAction
forall a. Maybe a
Prelude.Nothing,
      $sel:eC2AssociateRouteTableAction:RemediationAction' :: Maybe EC2AssociateRouteTableAction
eC2AssociateRouteTableAction = Maybe EC2AssociateRouteTableAction
forall a. Maybe a
Prelude.Nothing,
      $sel:eC2ReplaceRouteAction:RemediationAction' :: Maybe EC2ReplaceRouteAction
eC2ReplaceRouteAction = Maybe EC2ReplaceRouteAction
forall a. Maybe a
Prelude.Nothing,
      $sel:eC2DeleteRouteAction:RemediationAction' :: Maybe EC2DeleteRouteAction
eC2DeleteRouteAction = Maybe EC2DeleteRouteAction
forall a. Maybe a
Prelude.Nothing,
      $sel:description:RemediationAction' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:eC2CreateRouteTableAction:RemediationAction' :: Maybe EC2CreateRouteTableAction
eC2CreateRouteTableAction = Maybe EC2CreateRouteTableAction
forall a. Maybe a
Prelude.Nothing
    }

-- | Information about the CreateRoute action in the Amazon EC2 API.
remediationAction_eC2CreateRouteAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2CreateRouteAction)
remediationAction_eC2CreateRouteAction :: (Maybe EC2CreateRouteAction -> f (Maybe EC2CreateRouteAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2CreateRouteAction = (RemediationAction -> Maybe EC2CreateRouteAction)
-> (RemediationAction
    -> Maybe EC2CreateRouteAction -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2CreateRouteAction)
     (Maybe EC2CreateRouteAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2CreateRouteAction
eC2CreateRouteAction :: Maybe EC2CreateRouteAction
$sel:eC2CreateRouteAction:RemediationAction' :: RemediationAction -> Maybe EC2CreateRouteAction
eC2CreateRouteAction} -> Maybe EC2CreateRouteAction
eC2CreateRouteAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2CreateRouteAction
a -> RemediationAction
s {$sel:eC2CreateRouteAction:RemediationAction' :: Maybe EC2CreateRouteAction
eC2CreateRouteAction = Maybe EC2CreateRouteAction
a} :: RemediationAction)

-- | Information about the CopyRouteTable action in the Amazon EC2 API.
remediationAction_eC2CopyRouteTableAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2CopyRouteTableAction)
remediationAction_eC2CopyRouteTableAction :: (Maybe EC2CopyRouteTableAction
 -> f (Maybe EC2CopyRouteTableAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2CopyRouteTableAction = (RemediationAction -> Maybe EC2CopyRouteTableAction)
-> (RemediationAction
    -> Maybe EC2CopyRouteTableAction -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2CopyRouteTableAction)
     (Maybe EC2CopyRouteTableAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2CopyRouteTableAction
eC2CopyRouteTableAction :: Maybe EC2CopyRouteTableAction
$sel:eC2CopyRouteTableAction:RemediationAction' :: RemediationAction -> Maybe EC2CopyRouteTableAction
eC2CopyRouteTableAction} -> Maybe EC2CopyRouteTableAction
eC2CopyRouteTableAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2CopyRouteTableAction
a -> RemediationAction
s {$sel:eC2CopyRouteTableAction:RemediationAction' :: Maybe EC2CopyRouteTableAction
eC2CopyRouteTableAction = Maybe EC2CopyRouteTableAction
a} :: RemediationAction)

-- | Information about the ReplaceRouteTableAssociation action in the Amazon
-- EC2 API.
remediationAction_eC2ReplaceRouteTableAssociationAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2ReplaceRouteTableAssociationAction)
remediationAction_eC2ReplaceRouteTableAssociationAction :: (Maybe EC2ReplaceRouteTableAssociationAction
 -> f (Maybe EC2ReplaceRouteTableAssociationAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2ReplaceRouteTableAssociationAction = (RemediationAction -> Maybe EC2ReplaceRouteTableAssociationAction)
-> (RemediationAction
    -> Maybe EC2ReplaceRouteTableAssociationAction
    -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2ReplaceRouteTableAssociationAction)
     (Maybe EC2ReplaceRouteTableAssociationAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2ReplaceRouteTableAssociationAction
eC2ReplaceRouteTableAssociationAction :: Maybe EC2ReplaceRouteTableAssociationAction
$sel:eC2ReplaceRouteTableAssociationAction:RemediationAction' :: RemediationAction -> Maybe EC2ReplaceRouteTableAssociationAction
eC2ReplaceRouteTableAssociationAction} -> Maybe EC2ReplaceRouteTableAssociationAction
eC2ReplaceRouteTableAssociationAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2ReplaceRouteTableAssociationAction
a -> RemediationAction
s {$sel:eC2ReplaceRouteTableAssociationAction:RemediationAction' :: Maybe EC2ReplaceRouteTableAssociationAction
eC2ReplaceRouteTableAssociationAction = Maybe EC2ReplaceRouteTableAssociationAction
a} :: RemediationAction)

-- | Information about the AssociateRouteTable action in the Amazon EC2 API.
remediationAction_eC2AssociateRouteTableAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2AssociateRouteTableAction)
remediationAction_eC2AssociateRouteTableAction :: (Maybe EC2AssociateRouteTableAction
 -> f (Maybe EC2AssociateRouteTableAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2AssociateRouteTableAction = (RemediationAction -> Maybe EC2AssociateRouteTableAction)
-> (RemediationAction
    -> Maybe EC2AssociateRouteTableAction -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2AssociateRouteTableAction)
     (Maybe EC2AssociateRouteTableAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2AssociateRouteTableAction
eC2AssociateRouteTableAction :: Maybe EC2AssociateRouteTableAction
$sel:eC2AssociateRouteTableAction:RemediationAction' :: RemediationAction -> Maybe EC2AssociateRouteTableAction
eC2AssociateRouteTableAction} -> Maybe EC2AssociateRouteTableAction
eC2AssociateRouteTableAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2AssociateRouteTableAction
a -> RemediationAction
s {$sel:eC2AssociateRouteTableAction:RemediationAction' :: Maybe EC2AssociateRouteTableAction
eC2AssociateRouteTableAction = Maybe EC2AssociateRouteTableAction
a} :: RemediationAction)

-- | Information about the ReplaceRoute action in the Amazon EC2 API.
remediationAction_eC2ReplaceRouteAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2ReplaceRouteAction)
remediationAction_eC2ReplaceRouteAction :: (Maybe EC2ReplaceRouteAction -> f (Maybe EC2ReplaceRouteAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2ReplaceRouteAction = (RemediationAction -> Maybe EC2ReplaceRouteAction)
-> (RemediationAction
    -> Maybe EC2ReplaceRouteAction -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2ReplaceRouteAction)
     (Maybe EC2ReplaceRouteAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2ReplaceRouteAction
eC2ReplaceRouteAction :: Maybe EC2ReplaceRouteAction
$sel:eC2ReplaceRouteAction:RemediationAction' :: RemediationAction -> Maybe EC2ReplaceRouteAction
eC2ReplaceRouteAction} -> Maybe EC2ReplaceRouteAction
eC2ReplaceRouteAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2ReplaceRouteAction
a -> RemediationAction
s {$sel:eC2ReplaceRouteAction:RemediationAction' :: Maybe EC2ReplaceRouteAction
eC2ReplaceRouteAction = Maybe EC2ReplaceRouteAction
a} :: RemediationAction)

-- | Information about the DeleteRoute action in the Amazon EC2 API.
remediationAction_eC2DeleteRouteAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2DeleteRouteAction)
remediationAction_eC2DeleteRouteAction :: (Maybe EC2DeleteRouteAction -> f (Maybe EC2DeleteRouteAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2DeleteRouteAction = (RemediationAction -> Maybe EC2DeleteRouteAction)
-> (RemediationAction
    -> Maybe EC2DeleteRouteAction -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2DeleteRouteAction)
     (Maybe EC2DeleteRouteAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2DeleteRouteAction
eC2DeleteRouteAction :: Maybe EC2DeleteRouteAction
$sel:eC2DeleteRouteAction:RemediationAction' :: RemediationAction -> Maybe EC2DeleteRouteAction
eC2DeleteRouteAction} -> Maybe EC2DeleteRouteAction
eC2DeleteRouteAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2DeleteRouteAction
a -> RemediationAction
s {$sel:eC2DeleteRouteAction:RemediationAction' :: Maybe EC2DeleteRouteAction
eC2DeleteRouteAction = Maybe EC2DeleteRouteAction
a} :: RemediationAction)

-- | A description of a remediation action.
remediationAction_description :: Lens.Lens' RemediationAction (Prelude.Maybe Prelude.Text)
remediationAction_description :: (Maybe Text -> f (Maybe Text))
-> RemediationAction -> f RemediationAction
remediationAction_description = (RemediationAction -> Maybe Text)
-> (RemediationAction -> Maybe Text -> RemediationAction)
-> Lens
     RemediationAction RemediationAction (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe Text
description :: Maybe Text
$sel:description:RemediationAction' :: RemediationAction -> Maybe Text
description} -> Maybe Text
description) (\s :: RemediationAction
s@RemediationAction' {} Maybe Text
a -> RemediationAction
s {$sel:description:RemediationAction' :: Maybe Text
description = Maybe Text
a} :: RemediationAction)

-- | Information about the CreateRouteTable action in the Amazon EC2 API.
remediationAction_eC2CreateRouteTableAction :: Lens.Lens' RemediationAction (Prelude.Maybe EC2CreateRouteTableAction)
remediationAction_eC2CreateRouteTableAction :: (Maybe EC2CreateRouteTableAction
 -> f (Maybe EC2CreateRouteTableAction))
-> RemediationAction -> f RemediationAction
remediationAction_eC2CreateRouteTableAction = (RemediationAction -> Maybe EC2CreateRouteTableAction)
-> (RemediationAction
    -> Maybe EC2CreateRouteTableAction -> RemediationAction)
-> Lens
     RemediationAction
     RemediationAction
     (Maybe EC2CreateRouteTableAction)
     (Maybe EC2CreateRouteTableAction)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemediationAction' {Maybe EC2CreateRouteTableAction
eC2CreateRouteTableAction :: Maybe EC2CreateRouteTableAction
$sel:eC2CreateRouteTableAction:RemediationAction' :: RemediationAction -> Maybe EC2CreateRouteTableAction
eC2CreateRouteTableAction} -> Maybe EC2CreateRouteTableAction
eC2CreateRouteTableAction) (\s :: RemediationAction
s@RemediationAction' {} Maybe EC2CreateRouteTableAction
a -> RemediationAction
s {$sel:eC2CreateRouteTableAction:RemediationAction' :: Maybe EC2CreateRouteTableAction
eC2CreateRouteTableAction = Maybe EC2CreateRouteTableAction
a} :: RemediationAction)

instance Core.FromJSON RemediationAction where
  parseJSON :: Value -> Parser RemediationAction
parseJSON =
    String
-> (Object -> Parser RemediationAction)
-> Value
-> Parser RemediationAction
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"RemediationAction"
      ( \Object
x ->
          Maybe EC2CreateRouteAction
-> Maybe EC2CopyRouteTableAction
-> Maybe EC2ReplaceRouteTableAssociationAction
-> Maybe EC2AssociateRouteTableAction
-> Maybe EC2ReplaceRouteAction
-> Maybe EC2DeleteRouteAction
-> Maybe Text
-> Maybe EC2CreateRouteTableAction
-> RemediationAction
RemediationAction'
            (Maybe EC2CreateRouteAction
 -> Maybe EC2CopyRouteTableAction
 -> Maybe EC2ReplaceRouteTableAssociationAction
 -> Maybe EC2AssociateRouteTableAction
 -> Maybe EC2ReplaceRouteAction
 -> Maybe EC2DeleteRouteAction
 -> Maybe Text
 -> Maybe EC2CreateRouteTableAction
 -> RemediationAction)
-> Parser (Maybe EC2CreateRouteAction)
-> Parser
     (Maybe EC2CopyRouteTableAction
      -> Maybe EC2ReplaceRouteTableAssociationAction
      -> Maybe EC2AssociateRouteTableAction
      -> Maybe EC2ReplaceRouteAction
      -> Maybe EC2DeleteRouteAction
      -> Maybe Text
      -> Maybe EC2CreateRouteTableAction
      -> RemediationAction)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe EC2CreateRouteAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2CreateRouteAction")
            Parser
  (Maybe EC2CopyRouteTableAction
   -> Maybe EC2ReplaceRouteTableAssociationAction
   -> Maybe EC2AssociateRouteTableAction
   -> Maybe EC2ReplaceRouteAction
   -> Maybe EC2DeleteRouteAction
   -> Maybe Text
   -> Maybe EC2CreateRouteTableAction
   -> RemediationAction)
-> Parser (Maybe EC2CopyRouteTableAction)
-> Parser
     (Maybe EC2ReplaceRouteTableAssociationAction
      -> Maybe EC2AssociateRouteTableAction
      -> Maybe EC2ReplaceRouteAction
      -> Maybe EC2DeleteRouteAction
      -> Maybe Text
      -> Maybe EC2CreateRouteTableAction
      -> RemediationAction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EC2CopyRouteTableAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2CopyRouteTableAction")
            Parser
  (Maybe EC2ReplaceRouteTableAssociationAction
   -> Maybe EC2AssociateRouteTableAction
   -> Maybe EC2ReplaceRouteAction
   -> Maybe EC2DeleteRouteAction
   -> Maybe Text
   -> Maybe EC2CreateRouteTableAction
   -> RemediationAction)
-> Parser (Maybe EC2ReplaceRouteTableAssociationAction)
-> Parser
     (Maybe EC2AssociateRouteTableAction
      -> Maybe EC2ReplaceRouteAction
      -> Maybe EC2DeleteRouteAction
      -> Maybe Text
      -> Maybe EC2CreateRouteTableAction
      -> RemediationAction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe EC2ReplaceRouteTableAssociationAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2ReplaceRouteTableAssociationAction")
            Parser
  (Maybe EC2AssociateRouteTableAction
   -> Maybe EC2ReplaceRouteAction
   -> Maybe EC2DeleteRouteAction
   -> Maybe Text
   -> Maybe EC2CreateRouteTableAction
   -> RemediationAction)
-> Parser (Maybe EC2AssociateRouteTableAction)
-> Parser
     (Maybe EC2ReplaceRouteAction
      -> Maybe EC2DeleteRouteAction
      -> Maybe Text
      -> Maybe EC2CreateRouteTableAction
      -> RemediationAction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EC2AssociateRouteTableAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2AssociateRouteTableAction")
            Parser
  (Maybe EC2ReplaceRouteAction
   -> Maybe EC2DeleteRouteAction
   -> Maybe Text
   -> Maybe EC2CreateRouteTableAction
   -> RemediationAction)
-> Parser (Maybe EC2ReplaceRouteAction)
-> Parser
     (Maybe EC2DeleteRouteAction
      -> Maybe Text
      -> Maybe EC2CreateRouteTableAction
      -> RemediationAction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EC2ReplaceRouteAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2ReplaceRouteAction")
            Parser
  (Maybe EC2DeleteRouteAction
   -> Maybe Text
   -> Maybe EC2CreateRouteTableAction
   -> RemediationAction)
-> Parser (Maybe EC2DeleteRouteAction)
-> Parser
     (Maybe Text
      -> Maybe EC2CreateRouteTableAction -> RemediationAction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EC2DeleteRouteAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2DeleteRouteAction")
            Parser
  (Maybe Text
   -> Maybe EC2CreateRouteTableAction -> RemediationAction)
-> Parser (Maybe Text)
-> Parser (Maybe EC2CreateRouteTableAction -> RemediationAction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Description")
            Parser (Maybe EC2CreateRouteTableAction -> RemediationAction)
-> Parser (Maybe EC2CreateRouteTableAction)
-> Parser RemediationAction
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EC2CreateRouteTableAction)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EC2CreateRouteTableAction")
      )

instance Prelude.Hashable RemediationAction

instance Prelude.NFData RemediationAction