{-# 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.MGN.Types.LaunchConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MGN.Types.LaunchConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MGN.Types.BootMode
import Amazonka.MGN.Types.LaunchDisposition
import Amazonka.MGN.Types.Licensing
import Amazonka.MGN.Types.PostLaunchActions
import Amazonka.MGN.Types.TargetInstanceTypeRightSizingMethod
import qualified Amazonka.Prelude as Prelude

-- | /See:/ 'newLaunchConfiguration' smart constructor.
data LaunchConfiguration = LaunchConfiguration'
  { -- | Launch configuration boot mode.
    LaunchConfiguration -> Maybe BootMode
bootMode :: Prelude.Maybe BootMode,
    -- | Copy Private IP during Launch Configuration.
    LaunchConfiguration -> Maybe Bool
copyPrivateIp :: Prelude.Maybe Prelude.Bool,
    -- | Copy Tags during Launch Configuration.
    LaunchConfiguration -> Maybe Bool
copyTags :: Prelude.Maybe Prelude.Bool,
    -- | Launch configuration EC2 Launch template ID.
    LaunchConfiguration -> Maybe Text
ec2LaunchTemplateID :: Prelude.Maybe Prelude.Text,
    -- | Enable map auto tagging.
    LaunchConfiguration -> Maybe Bool
enableMapAutoTagging :: Prelude.Maybe Prelude.Bool,
    -- | Launch disposition for launch configuration.
    LaunchConfiguration -> Maybe LaunchDisposition
launchDisposition :: Prelude.Maybe LaunchDisposition,
    -- | Launch configuration OS licensing.
    LaunchConfiguration -> Maybe Licensing
licensing :: Prelude.Maybe Licensing,
    -- | Map auto tagging MPE ID.
    LaunchConfiguration -> Maybe Text
mapAutoTaggingMpeID :: Prelude.Maybe Prelude.Text,
    -- | Launch configuration name.
    LaunchConfiguration -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    LaunchConfiguration -> Maybe PostLaunchActions
postLaunchActions :: Prelude.Maybe PostLaunchActions,
    -- | Launch configuration Source Server ID.
    LaunchConfiguration -> Maybe Text
sourceServerID :: Prelude.Maybe Prelude.Text,
    -- | Launch configuration Target instance type right sizing method.
    LaunchConfiguration -> Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod :: Prelude.Maybe TargetInstanceTypeRightSizingMethod
  }
  deriving (LaunchConfiguration -> LaunchConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LaunchConfiguration -> LaunchConfiguration -> Bool
$c/= :: LaunchConfiguration -> LaunchConfiguration -> Bool
== :: LaunchConfiguration -> LaunchConfiguration -> Bool
$c== :: LaunchConfiguration -> LaunchConfiguration -> Bool
Prelude.Eq, ReadPrec [LaunchConfiguration]
ReadPrec LaunchConfiguration
Int -> ReadS LaunchConfiguration
ReadS [LaunchConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [LaunchConfiguration]
$creadListPrec :: ReadPrec [LaunchConfiguration]
readPrec :: ReadPrec LaunchConfiguration
$creadPrec :: ReadPrec LaunchConfiguration
readList :: ReadS [LaunchConfiguration]
$creadList :: ReadS [LaunchConfiguration]
readsPrec :: Int -> ReadS LaunchConfiguration
$creadsPrec :: Int -> ReadS LaunchConfiguration
Prelude.Read, Int -> LaunchConfiguration -> ShowS
[LaunchConfiguration] -> ShowS
LaunchConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LaunchConfiguration] -> ShowS
$cshowList :: [LaunchConfiguration] -> ShowS
show :: LaunchConfiguration -> String
$cshow :: LaunchConfiguration -> String
showsPrec :: Int -> LaunchConfiguration -> ShowS
$cshowsPrec :: Int -> LaunchConfiguration -> ShowS
Prelude.Show, forall x. Rep LaunchConfiguration x -> LaunchConfiguration
forall x. LaunchConfiguration -> Rep LaunchConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep LaunchConfiguration x -> LaunchConfiguration
$cfrom :: forall x. LaunchConfiguration -> Rep LaunchConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'LaunchConfiguration' 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:
--
-- 'bootMode', 'launchConfiguration_bootMode' - Launch configuration boot mode.
--
-- 'copyPrivateIp', 'launchConfiguration_copyPrivateIp' - Copy Private IP during Launch Configuration.
--
-- 'copyTags', 'launchConfiguration_copyTags' - Copy Tags during Launch Configuration.
--
-- 'ec2LaunchTemplateID', 'launchConfiguration_ec2LaunchTemplateID' - Launch configuration EC2 Launch template ID.
--
-- 'enableMapAutoTagging', 'launchConfiguration_enableMapAutoTagging' - Enable map auto tagging.
--
-- 'launchDisposition', 'launchConfiguration_launchDisposition' - Launch disposition for launch configuration.
--
-- 'licensing', 'launchConfiguration_licensing' - Launch configuration OS licensing.
--
-- 'mapAutoTaggingMpeID', 'launchConfiguration_mapAutoTaggingMpeID' - Map auto tagging MPE ID.
--
-- 'name', 'launchConfiguration_name' - Launch configuration name.
--
-- 'postLaunchActions', 'launchConfiguration_postLaunchActions' - Undocumented member.
--
-- 'sourceServerID', 'launchConfiguration_sourceServerID' - Launch configuration Source Server ID.
--
-- 'targetInstanceTypeRightSizingMethod', 'launchConfiguration_targetInstanceTypeRightSizingMethod' - Launch configuration Target instance type right sizing method.
newLaunchConfiguration ::
  LaunchConfiguration
newLaunchConfiguration :: LaunchConfiguration
newLaunchConfiguration =
  LaunchConfiguration'
    { $sel:bootMode:LaunchConfiguration' :: Maybe BootMode
bootMode = forall a. Maybe a
Prelude.Nothing,
      $sel:copyPrivateIp:LaunchConfiguration' :: Maybe Bool
copyPrivateIp = forall a. Maybe a
Prelude.Nothing,
      $sel:copyTags:LaunchConfiguration' :: Maybe Bool
copyTags = forall a. Maybe a
Prelude.Nothing,
      $sel:ec2LaunchTemplateID:LaunchConfiguration' :: Maybe Text
ec2LaunchTemplateID = forall a. Maybe a
Prelude.Nothing,
      $sel:enableMapAutoTagging:LaunchConfiguration' :: Maybe Bool
enableMapAutoTagging = forall a. Maybe a
Prelude.Nothing,
      $sel:launchDisposition:LaunchConfiguration' :: Maybe LaunchDisposition
launchDisposition = forall a. Maybe a
Prelude.Nothing,
      $sel:licensing:LaunchConfiguration' :: Maybe Licensing
licensing = forall a. Maybe a
Prelude.Nothing,
      $sel:mapAutoTaggingMpeID:LaunchConfiguration' :: Maybe Text
mapAutoTaggingMpeID = forall a. Maybe a
Prelude.Nothing,
      $sel:name:LaunchConfiguration' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:postLaunchActions:LaunchConfiguration' :: Maybe PostLaunchActions
postLaunchActions = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceServerID:LaunchConfiguration' :: Maybe Text
sourceServerID = forall a. Maybe a
Prelude.Nothing,
      $sel:targetInstanceTypeRightSizingMethod:LaunchConfiguration' :: Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod =
        forall a. Maybe a
Prelude.Nothing
    }

-- | Launch configuration boot mode.
launchConfiguration_bootMode :: Lens.Lens' LaunchConfiguration (Prelude.Maybe BootMode)
launchConfiguration_bootMode :: Lens' LaunchConfiguration (Maybe BootMode)
launchConfiguration_bootMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe BootMode
bootMode :: Maybe BootMode
$sel:bootMode:LaunchConfiguration' :: LaunchConfiguration -> Maybe BootMode
bootMode} -> Maybe BootMode
bootMode) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe BootMode
a -> LaunchConfiguration
s {$sel:bootMode:LaunchConfiguration' :: Maybe BootMode
bootMode = Maybe BootMode
a} :: LaunchConfiguration)

-- | Copy Private IP during Launch Configuration.
launchConfiguration_copyPrivateIp :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Bool)
launchConfiguration_copyPrivateIp :: Lens' LaunchConfiguration (Maybe Bool)
launchConfiguration_copyPrivateIp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Bool
copyPrivateIp :: Maybe Bool
$sel:copyPrivateIp:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
copyPrivateIp} -> Maybe Bool
copyPrivateIp) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Bool
a -> LaunchConfiguration
s {$sel:copyPrivateIp:LaunchConfiguration' :: Maybe Bool
copyPrivateIp = Maybe Bool
a} :: LaunchConfiguration)

-- | Copy Tags during Launch Configuration.
launchConfiguration_copyTags :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Bool)
launchConfiguration_copyTags :: Lens' LaunchConfiguration (Maybe Bool)
launchConfiguration_copyTags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Bool
copyTags :: Maybe Bool
$sel:copyTags:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
copyTags} -> Maybe Bool
copyTags) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Bool
a -> LaunchConfiguration
s {$sel:copyTags:LaunchConfiguration' :: Maybe Bool
copyTags = Maybe Bool
a} :: LaunchConfiguration)

-- | Launch configuration EC2 Launch template ID.
launchConfiguration_ec2LaunchTemplateID :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)
launchConfiguration_ec2LaunchTemplateID :: Lens' LaunchConfiguration (Maybe Text)
launchConfiguration_ec2LaunchTemplateID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Text
ec2LaunchTemplateID :: Maybe Text
$sel:ec2LaunchTemplateID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
ec2LaunchTemplateID} -> Maybe Text
ec2LaunchTemplateID) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Text
a -> LaunchConfiguration
s {$sel:ec2LaunchTemplateID:LaunchConfiguration' :: Maybe Text
ec2LaunchTemplateID = Maybe Text
a} :: LaunchConfiguration)

-- | Enable map auto tagging.
launchConfiguration_enableMapAutoTagging :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Bool)
launchConfiguration_enableMapAutoTagging :: Lens' LaunchConfiguration (Maybe Bool)
launchConfiguration_enableMapAutoTagging = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Bool
enableMapAutoTagging :: Maybe Bool
$sel:enableMapAutoTagging:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
enableMapAutoTagging} -> Maybe Bool
enableMapAutoTagging) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Bool
a -> LaunchConfiguration
s {$sel:enableMapAutoTagging:LaunchConfiguration' :: Maybe Bool
enableMapAutoTagging = Maybe Bool
a} :: LaunchConfiguration)

-- | Launch disposition for launch configuration.
launchConfiguration_launchDisposition :: Lens.Lens' LaunchConfiguration (Prelude.Maybe LaunchDisposition)
launchConfiguration_launchDisposition :: Lens' LaunchConfiguration (Maybe LaunchDisposition)
launchConfiguration_launchDisposition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe LaunchDisposition
launchDisposition :: Maybe LaunchDisposition
$sel:launchDisposition:LaunchConfiguration' :: LaunchConfiguration -> Maybe LaunchDisposition
launchDisposition} -> Maybe LaunchDisposition
launchDisposition) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe LaunchDisposition
a -> LaunchConfiguration
s {$sel:launchDisposition:LaunchConfiguration' :: Maybe LaunchDisposition
launchDisposition = Maybe LaunchDisposition
a} :: LaunchConfiguration)

-- | Launch configuration OS licensing.
launchConfiguration_licensing :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Licensing)
launchConfiguration_licensing :: Lens' LaunchConfiguration (Maybe Licensing)
launchConfiguration_licensing = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Licensing
licensing :: Maybe Licensing
$sel:licensing:LaunchConfiguration' :: LaunchConfiguration -> Maybe Licensing
licensing} -> Maybe Licensing
licensing) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Licensing
a -> LaunchConfiguration
s {$sel:licensing:LaunchConfiguration' :: Maybe Licensing
licensing = Maybe Licensing
a} :: LaunchConfiguration)

-- | Map auto tagging MPE ID.
launchConfiguration_mapAutoTaggingMpeID :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)
launchConfiguration_mapAutoTaggingMpeID :: Lens' LaunchConfiguration (Maybe Text)
launchConfiguration_mapAutoTaggingMpeID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Text
mapAutoTaggingMpeID :: Maybe Text
$sel:mapAutoTaggingMpeID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
mapAutoTaggingMpeID} -> Maybe Text
mapAutoTaggingMpeID) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Text
a -> LaunchConfiguration
s {$sel:mapAutoTaggingMpeID:LaunchConfiguration' :: Maybe Text
mapAutoTaggingMpeID = Maybe Text
a} :: LaunchConfiguration)

-- | Launch configuration name.
launchConfiguration_name :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)
launchConfiguration_name :: Lens' LaunchConfiguration (Maybe Text)
launchConfiguration_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Text
name :: Maybe Text
$sel:name:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
name} -> Maybe Text
name) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Text
a -> LaunchConfiguration
s {$sel:name:LaunchConfiguration' :: Maybe Text
name = Maybe Text
a} :: LaunchConfiguration)

-- | Undocumented member.
launchConfiguration_postLaunchActions :: Lens.Lens' LaunchConfiguration (Prelude.Maybe PostLaunchActions)
launchConfiguration_postLaunchActions :: Lens' LaunchConfiguration (Maybe PostLaunchActions)
launchConfiguration_postLaunchActions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe PostLaunchActions
postLaunchActions :: Maybe PostLaunchActions
$sel:postLaunchActions:LaunchConfiguration' :: LaunchConfiguration -> Maybe PostLaunchActions
postLaunchActions} -> Maybe PostLaunchActions
postLaunchActions) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe PostLaunchActions
a -> LaunchConfiguration
s {$sel:postLaunchActions:LaunchConfiguration' :: Maybe PostLaunchActions
postLaunchActions = Maybe PostLaunchActions
a} :: LaunchConfiguration)

-- | Launch configuration Source Server ID.
launchConfiguration_sourceServerID :: Lens.Lens' LaunchConfiguration (Prelude.Maybe Prelude.Text)
launchConfiguration_sourceServerID :: Lens' LaunchConfiguration (Maybe Text)
launchConfiguration_sourceServerID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe Text
sourceServerID :: Maybe Text
$sel:sourceServerID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
sourceServerID} -> Maybe Text
sourceServerID) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe Text
a -> LaunchConfiguration
s {$sel:sourceServerID:LaunchConfiguration' :: Maybe Text
sourceServerID = Maybe Text
a} :: LaunchConfiguration)

-- | Launch configuration Target instance type right sizing method.
launchConfiguration_targetInstanceTypeRightSizingMethod :: Lens.Lens' LaunchConfiguration (Prelude.Maybe TargetInstanceTypeRightSizingMethod)
launchConfiguration_targetInstanceTypeRightSizingMethod :: Lens'
  LaunchConfiguration (Maybe TargetInstanceTypeRightSizingMethod)
launchConfiguration_targetInstanceTypeRightSizingMethod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\LaunchConfiguration' {Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod :: Maybe TargetInstanceTypeRightSizingMethod
$sel:targetInstanceTypeRightSizingMethod:LaunchConfiguration' :: LaunchConfiguration -> Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod} -> Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod) (\s :: LaunchConfiguration
s@LaunchConfiguration' {} Maybe TargetInstanceTypeRightSizingMethod
a -> LaunchConfiguration
s {$sel:targetInstanceTypeRightSizingMethod:LaunchConfiguration' :: Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod = Maybe TargetInstanceTypeRightSizingMethod
a} :: LaunchConfiguration)

instance Data.FromJSON LaunchConfiguration where
  parseJSON :: Value -> Parser LaunchConfiguration
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"LaunchConfiguration"
      ( \Object
x ->
          Maybe BootMode
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe LaunchDisposition
-> Maybe Licensing
-> Maybe Text
-> Maybe Text
-> Maybe PostLaunchActions
-> Maybe Text
-> Maybe TargetInstanceTypeRightSizingMethod
-> LaunchConfiguration
LaunchConfiguration'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"bootMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"copyPrivateIp")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"copyTags")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ec2LaunchTemplateID")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"enableMapAutoTagging")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"launchDisposition")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"licensing")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"mapAutoTaggingMpeID")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"postLaunchActions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"sourceServerID")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"targetInstanceTypeRightSizingMethod")
      )

instance Prelude.Hashable LaunchConfiguration where
  hashWithSalt :: Int -> LaunchConfiguration -> Int
hashWithSalt Int
_salt LaunchConfiguration' {Maybe Bool
Maybe Text
Maybe BootMode
Maybe LaunchDisposition
Maybe Licensing
Maybe PostLaunchActions
Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod :: Maybe TargetInstanceTypeRightSizingMethod
sourceServerID :: Maybe Text
postLaunchActions :: Maybe PostLaunchActions
name :: Maybe Text
mapAutoTaggingMpeID :: Maybe Text
licensing :: Maybe Licensing
launchDisposition :: Maybe LaunchDisposition
enableMapAutoTagging :: Maybe Bool
ec2LaunchTemplateID :: Maybe Text
copyTags :: Maybe Bool
copyPrivateIp :: Maybe Bool
bootMode :: Maybe BootMode
$sel:targetInstanceTypeRightSizingMethod:LaunchConfiguration' :: LaunchConfiguration -> Maybe TargetInstanceTypeRightSizingMethod
$sel:sourceServerID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:postLaunchActions:LaunchConfiguration' :: LaunchConfiguration -> Maybe PostLaunchActions
$sel:name:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:mapAutoTaggingMpeID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:licensing:LaunchConfiguration' :: LaunchConfiguration -> Maybe Licensing
$sel:launchDisposition:LaunchConfiguration' :: LaunchConfiguration -> Maybe LaunchDisposition
$sel:enableMapAutoTagging:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
$sel:ec2LaunchTemplateID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:copyTags:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
$sel:copyPrivateIp:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
$sel:bootMode:LaunchConfiguration' :: LaunchConfiguration -> Maybe BootMode
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BootMode
bootMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
copyPrivateIp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
copyTags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ec2LaunchTemplateID
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableMapAutoTagging
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LaunchDisposition
launchDisposition
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Licensing
licensing
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
mapAutoTaggingMpeID
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PostLaunchActions
postLaunchActions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceServerID
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod

instance Prelude.NFData LaunchConfiguration where
  rnf :: LaunchConfiguration -> ()
rnf LaunchConfiguration' {Maybe Bool
Maybe Text
Maybe BootMode
Maybe LaunchDisposition
Maybe Licensing
Maybe PostLaunchActions
Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod :: Maybe TargetInstanceTypeRightSizingMethod
sourceServerID :: Maybe Text
postLaunchActions :: Maybe PostLaunchActions
name :: Maybe Text
mapAutoTaggingMpeID :: Maybe Text
licensing :: Maybe Licensing
launchDisposition :: Maybe LaunchDisposition
enableMapAutoTagging :: Maybe Bool
ec2LaunchTemplateID :: Maybe Text
copyTags :: Maybe Bool
copyPrivateIp :: Maybe Bool
bootMode :: Maybe BootMode
$sel:targetInstanceTypeRightSizingMethod:LaunchConfiguration' :: LaunchConfiguration -> Maybe TargetInstanceTypeRightSizingMethod
$sel:sourceServerID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:postLaunchActions:LaunchConfiguration' :: LaunchConfiguration -> Maybe PostLaunchActions
$sel:name:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:mapAutoTaggingMpeID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:licensing:LaunchConfiguration' :: LaunchConfiguration -> Maybe Licensing
$sel:launchDisposition:LaunchConfiguration' :: LaunchConfiguration -> Maybe LaunchDisposition
$sel:enableMapAutoTagging:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
$sel:ec2LaunchTemplateID:LaunchConfiguration' :: LaunchConfiguration -> Maybe Text
$sel:copyTags:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
$sel:copyPrivateIp:LaunchConfiguration' :: LaunchConfiguration -> Maybe Bool
$sel:bootMode:LaunchConfiguration' :: LaunchConfiguration -> Maybe BootMode
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe BootMode
bootMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
copyPrivateIp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
copyTags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ec2LaunchTemplateID
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableMapAutoTagging
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LaunchDisposition
launchDisposition
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Licensing
licensing
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
mapAutoTaggingMpeID
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PostLaunchActions
postLaunchActions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceServerID
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe TargetInstanceTypeRightSizingMethod
targetInstanceTypeRightSizingMethod