{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.SMS.UpdateReplicationJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the specified settings for the specified replication job.
module Amazonka.SMS.UpdateReplicationJob
  ( -- * Creating a Request
    UpdateReplicationJob (..),
    newUpdateReplicationJob,

    -- * Request Lenses
    updateReplicationJob_description,
    updateReplicationJob_encrypted,
    updateReplicationJob_frequency,
    updateReplicationJob_kmsKeyId,
    updateReplicationJob_licenseType,
    updateReplicationJob_nextReplicationRunStartTime,
    updateReplicationJob_numberOfRecentAmisToKeep,
    updateReplicationJob_roleName,
    updateReplicationJob_replicationJobId,

    -- * Destructuring the Response
    UpdateReplicationJobResponse (..),
    newUpdateReplicationJobResponse,

    -- * Response Lenses
    updateReplicationJobResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SMS.Types

-- | /See:/ 'newUpdateReplicationJob' smart constructor.
data UpdateReplicationJob = UpdateReplicationJob'
  { -- | The description of the replication job.
    UpdateReplicationJob -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | When true, the replication job produces encrypted AMIs. For more
    -- information, @KmsKeyId@.
    UpdateReplicationJob -> Maybe Bool
encrypted :: Prelude.Maybe Prelude.Bool,
    -- | The time between consecutive replication runs, in hours.
    UpdateReplicationJob -> Maybe Int
frequency :: Prelude.Maybe Prelude.Int,
    -- | The ID of the KMS key for replication jobs that produce encrypted AMIs.
    -- This value can be any of the following:
    --
    -- -   KMS key ID
    --
    -- -   KMS key alias
    --
    -- -   ARN referring to the KMS key ID
    --
    -- -   ARN referring to the KMS key alias
    --
    -- If encrypted is enabled but a KMS key ID is not specified, the
    -- customer\'s default KMS key for Amazon EBS is used.
    UpdateReplicationJob -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The license type to be used for the AMI created by a successful
    -- replication run.
    UpdateReplicationJob -> Maybe LicenseType
licenseType :: Prelude.Maybe LicenseType,
    -- | The start time of the next replication run.
    UpdateReplicationJob -> Maybe POSIX
nextReplicationRunStartTime :: Prelude.Maybe Data.POSIX,
    -- | The maximum number of SMS-created AMIs to retain. The oldest is deleted
    -- after the maximum number is reached and a new AMI is created.
    UpdateReplicationJob -> Maybe Int
numberOfRecentAmisToKeep :: Prelude.Maybe Prelude.Int,
    -- | The name of the IAM role to be used by Server Migration Service.
    UpdateReplicationJob -> Maybe Text
roleName :: Prelude.Maybe Prelude.Text,
    -- | The ID of the replication job.
    UpdateReplicationJob -> Text
replicationJobId :: Prelude.Text
  }
  deriving (UpdateReplicationJob -> UpdateReplicationJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateReplicationJob -> UpdateReplicationJob -> Bool
$c/= :: UpdateReplicationJob -> UpdateReplicationJob -> Bool
== :: UpdateReplicationJob -> UpdateReplicationJob -> Bool
$c== :: UpdateReplicationJob -> UpdateReplicationJob -> Bool
Prelude.Eq, ReadPrec [UpdateReplicationJob]
ReadPrec UpdateReplicationJob
Int -> ReadS UpdateReplicationJob
ReadS [UpdateReplicationJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateReplicationJob]
$creadListPrec :: ReadPrec [UpdateReplicationJob]
readPrec :: ReadPrec UpdateReplicationJob
$creadPrec :: ReadPrec UpdateReplicationJob
readList :: ReadS [UpdateReplicationJob]
$creadList :: ReadS [UpdateReplicationJob]
readsPrec :: Int -> ReadS UpdateReplicationJob
$creadsPrec :: Int -> ReadS UpdateReplicationJob
Prelude.Read, Int -> UpdateReplicationJob -> ShowS
[UpdateReplicationJob] -> ShowS
UpdateReplicationJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateReplicationJob] -> ShowS
$cshowList :: [UpdateReplicationJob] -> ShowS
show :: UpdateReplicationJob -> String
$cshow :: UpdateReplicationJob -> String
showsPrec :: Int -> UpdateReplicationJob -> ShowS
$cshowsPrec :: Int -> UpdateReplicationJob -> ShowS
Prelude.Show, forall x. Rep UpdateReplicationJob x -> UpdateReplicationJob
forall x. UpdateReplicationJob -> Rep UpdateReplicationJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateReplicationJob x -> UpdateReplicationJob
$cfrom :: forall x. UpdateReplicationJob -> Rep UpdateReplicationJob x
Prelude.Generic)

-- |
-- Create a value of 'UpdateReplicationJob' 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:
--
-- 'description', 'updateReplicationJob_description' - The description of the replication job.
--
-- 'encrypted', 'updateReplicationJob_encrypted' - When true, the replication job produces encrypted AMIs. For more
-- information, @KmsKeyId@.
--
-- 'frequency', 'updateReplicationJob_frequency' - The time between consecutive replication runs, in hours.
--
-- 'kmsKeyId', 'updateReplicationJob_kmsKeyId' - The ID of the KMS key for replication jobs that produce encrypted AMIs.
-- This value can be any of the following:
--
-- -   KMS key ID
--
-- -   KMS key alias
--
-- -   ARN referring to the KMS key ID
--
-- -   ARN referring to the KMS key alias
--
-- If encrypted is enabled but a KMS key ID is not specified, the
-- customer\'s default KMS key for Amazon EBS is used.
--
-- 'licenseType', 'updateReplicationJob_licenseType' - The license type to be used for the AMI created by a successful
-- replication run.
--
-- 'nextReplicationRunStartTime', 'updateReplicationJob_nextReplicationRunStartTime' - The start time of the next replication run.
--
-- 'numberOfRecentAmisToKeep', 'updateReplicationJob_numberOfRecentAmisToKeep' - The maximum number of SMS-created AMIs to retain. The oldest is deleted
-- after the maximum number is reached and a new AMI is created.
--
-- 'roleName', 'updateReplicationJob_roleName' - The name of the IAM role to be used by Server Migration Service.
--
-- 'replicationJobId', 'updateReplicationJob_replicationJobId' - The ID of the replication job.
newUpdateReplicationJob ::
  -- | 'replicationJobId'
  Prelude.Text ->
  UpdateReplicationJob
newUpdateReplicationJob :: Text -> UpdateReplicationJob
newUpdateReplicationJob Text
pReplicationJobId_ =
  UpdateReplicationJob'
    { $sel:description:UpdateReplicationJob' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:encrypted:UpdateReplicationJob' :: Maybe Bool
encrypted = forall a. Maybe a
Prelude.Nothing,
      $sel:frequency:UpdateReplicationJob' :: Maybe Int
frequency = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:UpdateReplicationJob' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseType:UpdateReplicationJob' :: Maybe LicenseType
licenseType = forall a. Maybe a
Prelude.Nothing,
      $sel:nextReplicationRunStartTime:UpdateReplicationJob' :: Maybe POSIX
nextReplicationRunStartTime = forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfRecentAmisToKeep:UpdateReplicationJob' :: Maybe Int
numberOfRecentAmisToKeep = forall a. Maybe a
Prelude.Nothing,
      $sel:roleName:UpdateReplicationJob' :: Maybe Text
roleName = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationJobId:UpdateReplicationJob' :: Text
replicationJobId = Text
pReplicationJobId_
    }

-- | The description of the replication job.
updateReplicationJob_description :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.Text)
updateReplicationJob_description :: Lens' UpdateReplicationJob (Maybe Text)
updateReplicationJob_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe Text
description :: Maybe Text
$sel:description:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe Text
a -> UpdateReplicationJob
s {$sel:description:UpdateReplicationJob' :: Maybe Text
description = Maybe Text
a} :: UpdateReplicationJob)

-- | When true, the replication job produces encrypted AMIs. For more
-- information, @KmsKeyId@.
updateReplicationJob_encrypted :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.Bool)
updateReplicationJob_encrypted :: Lens' UpdateReplicationJob (Maybe Bool)
updateReplicationJob_encrypted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe Bool
encrypted :: Maybe Bool
$sel:encrypted:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Bool
encrypted} -> Maybe Bool
encrypted) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe Bool
a -> UpdateReplicationJob
s {$sel:encrypted:UpdateReplicationJob' :: Maybe Bool
encrypted = Maybe Bool
a} :: UpdateReplicationJob)

-- | The time between consecutive replication runs, in hours.
updateReplicationJob_frequency :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.Int)
updateReplicationJob_frequency :: Lens' UpdateReplicationJob (Maybe Int)
updateReplicationJob_frequency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe Int
frequency :: Maybe Int
$sel:frequency:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
frequency} -> Maybe Int
frequency) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe Int
a -> UpdateReplicationJob
s {$sel:frequency:UpdateReplicationJob' :: Maybe Int
frequency = Maybe Int
a} :: UpdateReplicationJob)

-- | The ID of the KMS key for replication jobs that produce encrypted AMIs.
-- This value can be any of the following:
--
-- -   KMS key ID
--
-- -   KMS key alias
--
-- -   ARN referring to the KMS key ID
--
-- -   ARN referring to the KMS key alias
--
-- If encrypted is enabled but a KMS key ID is not specified, the
-- customer\'s default KMS key for Amazon EBS is used.
updateReplicationJob_kmsKeyId :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.Text)
updateReplicationJob_kmsKeyId :: Lens' UpdateReplicationJob (Maybe Text)
updateReplicationJob_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe Text
a -> UpdateReplicationJob
s {$sel:kmsKeyId:UpdateReplicationJob' :: Maybe Text
kmsKeyId = Maybe Text
a} :: UpdateReplicationJob)

-- | The license type to be used for the AMI created by a successful
-- replication run.
updateReplicationJob_licenseType :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe LicenseType)
updateReplicationJob_licenseType :: Lens' UpdateReplicationJob (Maybe LicenseType)
updateReplicationJob_licenseType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe LicenseType
licenseType :: Maybe LicenseType
$sel:licenseType:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe LicenseType
licenseType} -> Maybe LicenseType
licenseType) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe LicenseType
a -> UpdateReplicationJob
s {$sel:licenseType:UpdateReplicationJob' :: Maybe LicenseType
licenseType = Maybe LicenseType
a} :: UpdateReplicationJob)

-- | The start time of the next replication run.
updateReplicationJob_nextReplicationRunStartTime :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.UTCTime)
updateReplicationJob_nextReplicationRunStartTime :: Lens' UpdateReplicationJob (Maybe UTCTime)
updateReplicationJob_nextReplicationRunStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe POSIX
nextReplicationRunStartTime :: Maybe POSIX
$sel:nextReplicationRunStartTime:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe POSIX
nextReplicationRunStartTime} -> Maybe POSIX
nextReplicationRunStartTime) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe POSIX
a -> UpdateReplicationJob
s {$sel:nextReplicationRunStartTime:UpdateReplicationJob' :: Maybe POSIX
nextReplicationRunStartTime = Maybe POSIX
a} :: UpdateReplicationJob) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The maximum number of SMS-created AMIs to retain. The oldest is deleted
-- after the maximum number is reached and a new AMI is created.
updateReplicationJob_numberOfRecentAmisToKeep :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.Int)
updateReplicationJob_numberOfRecentAmisToKeep :: Lens' UpdateReplicationJob (Maybe Int)
updateReplicationJob_numberOfRecentAmisToKeep = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe Int
numberOfRecentAmisToKeep :: Maybe Int
$sel:numberOfRecentAmisToKeep:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
numberOfRecentAmisToKeep} -> Maybe Int
numberOfRecentAmisToKeep) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe Int
a -> UpdateReplicationJob
s {$sel:numberOfRecentAmisToKeep:UpdateReplicationJob' :: Maybe Int
numberOfRecentAmisToKeep = Maybe Int
a} :: UpdateReplicationJob)

-- | The name of the IAM role to be used by Server Migration Service.
updateReplicationJob_roleName :: Lens.Lens' UpdateReplicationJob (Prelude.Maybe Prelude.Text)
updateReplicationJob_roleName :: Lens' UpdateReplicationJob (Maybe Text)
updateReplicationJob_roleName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Maybe Text
roleName :: Maybe Text
$sel:roleName:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
roleName} -> Maybe Text
roleName) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Maybe Text
a -> UpdateReplicationJob
s {$sel:roleName:UpdateReplicationJob' :: Maybe Text
roleName = Maybe Text
a} :: UpdateReplicationJob)

-- | The ID of the replication job.
updateReplicationJob_replicationJobId :: Lens.Lens' UpdateReplicationJob Prelude.Text
updateReplicationJob_replicationJobId :: Lens' UpdateReplicationJob Text
updateReplicationJob_replicationJobId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJob' {Text
replicationJobId :: Text
$sel:replicationJobId:UpdateReplicationJob' :: UpdateReplicationJob -> Text
replicationJobId} -> Text
replicationJobId) (\s :: UpdateReplicationJob
s@UpdateReplicationJob' {} Text
a -> UpdateReplicationJob
s {$sel:replicationJobId:UpdateReplicationJob' :: Text
replicationJobId = Text
a} :: UpdateReplicationJob)

instance Core.AWSRequest UpdateReplicationJob where
  type
    AWSResponse UpdateReplicationJob =
      UpdateReplicationJobResponse
  request :: (Service -> Service)
-> UpdateReplicationJob -> Request UpdateReplicationJob
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateReplicationJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateReplicationJob)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> UpdateReplicationJobResponse
UpdateReplicationJobResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateReplicationJob where
  hashWithSalt :: Int -> UpdateReplicationJob -> Int
hashWithSalt Int
_salt UpdateReplicationJob' {Maybe Bool
Maybe Int
Maybe Text
Maybe POSIX
Maybe LicenseType
Text
replicationJobId :: Text
roleName :: Maybe Text
numberOfRecentAmisToKeep :: Maybe Int
nextReplicationRunStartTime :: Maybe POSIX
licenseType :: Maybe LicenseType
kmsKeyId :: Maybe Text
frequency :: Maybe Int
encrypted :: Maybe Bool
description :: Maybe Text
$sel:replicationJobId:UpdateReplicationJob' :: UpdateReplicationJob -> Text
$sel:roleName:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
$sel:numberOfRecentAmisToKeep:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
$sel:nextReplicationRunStartTime:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe POSIX
$sel:licenseType:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe LicenseType
$sel:kmsKeyId:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
$sel:frequency:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
$sel:encrypted:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Bool
$sel:description:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
encrypted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
frequency
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LicenseType
licenseType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
nextReplicationRunStartTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
numberOfRecentAmisToKeep
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
replicationJobId

instance Prelude.NFData UpdateReplicationJob where
  rnf :: UpdateReplicationJob -> ()
rnf UpdateReplicationJob' {Maybe Bool
Maybe Int
Maybe Text
Maybe POSIX
Maybe LicenseType
Text
replicationJobId :: Text
roleName :: Maybe Text
numberOfRecentAmisToKeep :: Maybe Int
nextReplicationRunStartTime :: Maybe POSIX
licenseType :: Maybe LicenseType
kmsKeyId :: Maybe Text
frequency :: Maybe Int
encrypted :: Maybe Bool
description :: Maybe Text
$sel:replicationJobId:UpdateReplicationJob' :: UpdateReplicationJob -> Text
$sel:roleName:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
$sel:numberOfRecentAmisToKeep:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
$sel:nextReplicationRunStartTime:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe POSIX
$sel:licenseType:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe LicenseType
$sel:kmsKeyId:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
$sel:frequency:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
$sel:encrypted:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Bool
$sel:description:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
encrypted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
frequency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LicenseType
licenseType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
nextReplicationRunStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
numberOfRecentAmisToKeep
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
replicationJobId

instance Data.ToHeaders UpdateReplicationJob where
  toHeaders :: UpdateReplicationJob -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AWSServerMigrationService_V2016_10_24.UpdateReplicationJob" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateReplicationJob where
  toJSON :: UpdateReplicationJob -> Value
toJSON UpdateReplicationJob' {Maybe Bool
Maybe Int
Maybe Text
Maybe POSIX
Maybe LicenseType
Text
replicationJobId :: Text
roleName :: Maybe Text
numberOfRecentAmisToKeep :: Maybe Int
nextReplicationRunStartTime :: Maybe POSIX
licenseType :: Maybe LicenseType
kmsKeyId :: Maybe Text
frequency :: Maybe Int
encrypted :: Maybe Bool
description :: Maybe Text
$sel:replicationJobId:UpdateReplicationJob' :: UpdateReplicationJob -> Text
$sel:roleName:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
$sel:numberOfRecentAmisToKeep:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
$sel:nextReplicationRunStartTime:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe POSIX
$sel:licenseType:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe LicenseType
$sel:kmsKeyId:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
$sel:frequency:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Int
$sel:encrypted:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Bool
$sel:description:UpdateReplicationJob' :: UpdateReplicationJob -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"encrypted" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
encrypted,
            (Key
"frequency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
frequency,
            (Key
"kmsKeyId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
kmsKeyId,
            (Key
"licenseType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LicenseType
licenseType,
            (Key
"nextReplicationRunStartTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe POSIX
nextReplicationRunStartTime,
            (Key
"numberOfRecentAmisToKeep" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
numberOfRecentAmisToKeep,
            (Key
"roleName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
roleName,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"replicationJobId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
replicationJobId)
          ]
      )

instance Data.ToPath UpdateReplicationJob where
  toPath :: UpdateReplicationJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery UpdateReplicationJob where
  toQuery :: UpdateReplicationJob -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateReplicationJobResponse' smart constructor.
data UpdateReplicationJobResponse = UpdateReplicationJobResponse'
  { -- | The response's http status code.
    UpdateReplicationJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateReplicationJobResponse
-> UpdateReplicationJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateReplicationJobResponse
-> UpdateReplicationJobResponse -> Bool
$c/= :: UpdateReplicationJobResponse
-> UpdateReplicationJobResponse -> Bool
== :: UpdateReplicationJobResponse
-> UpdateReplicationJobResponse -> Bool
$c== :: UpdateReplicationJobResponse
-> UpdateReplicationJobResponse -> Bool
Prelude.Eq, ReadPrec [UpdateReplicationJobResponse]
ReadPrec UpdateReplicationJobResponse
Int -> ReadS UpdateReplicationJobResponse
ReadS [UpdateReplicationJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateReplicationJobResponse]
$creadListPrec :: ReadPrec [UpdateReplicationJobResponse]
readPrec :: ReadPrec UpdateReplicationJobResponse
$creadPrec :: ReadPrec UpdateReplicationJobResponse
readList :: ReadS [UpdateReplicationJobResponse]
$creadList :: ReadS [UpdateReplicationJobResponse]
readsPrec :: Int -> ReadS UpdateReplicationJobResponse
$creadsPrec :: Int -> ReadS UpdateReplicationJobResponse
Prelude.Read, Int -> UpdateReplicationJobResponse -> ShowS
[UpdateReplicationJobResponse] -> ShowS
UpdateReplicationJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateReplicationJobResponse] -> ShowS
$cshowList :: [UpdateReplicationJobResponse] -> ShowS
show :: UpdateReplicationJobResponse -> String
$cshow :: UpdateReplicationJobResponse -> String
showsPrec :: Int -> UpdateReplicationJobResponse -> ShowS
$cshowsPrec :: Int -> UpdateReplicationJobResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateReplicationJobResponse x -> UpdateReplicationJobResponse
forall x.
UpdateReplicationJobResponse -> Rep UpdateReplicationJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateReplicationJobResponse x -> UpdateReplicationJobResponse
$cfrom :: forall x.
UpdateReplicationJobResponse -> Rep UpdateReplicationJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateReplicationJobResponse' 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:
--
-- 'httpStatus', 'updateReplicationJobResponse_httpStatus' - The response's http status code.
newUpdateReplicationJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateReplicationJobResponse
newUpdateReplicationJobResponse :: Int -> UpdateReplicationJobResponse
newUpdateReplicationJobResponse Int
pHttpStatus_ =
  UpdateReplicationJobResponse'
    { $sel:httpStatus:UpdateReplicationJobResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

-- | The response's http status code.
updateReplicationJobResponse_httpStatus :: Lens.Lens' UpdateReplicationJobResponse Prelude.Int
updateReplicationJobResponse_httpStatus :: Lens' UpdateReplicationJobResponse Int
updateReplicationJobResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateReplicationJobResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateReplicationJobResponse' :: UpdateReplicationJobResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateReplicationJobResponse
s@UpdateReplicationJobResponse' {} Int
a -> UpdateReplicationJobResponse
s {$sel:httpStatus:UpdateReplicationJobResponse' :: Int
httpStatus = Int
a} :: UpdateReplicationJobResponse)

instance Prelude.NFData UpdateReplicationJobResponse where
  rnf :: UpdateReplicationJobResponse -> ()
rnf UpdateReplicationJobResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateReplicationJobResponse' :: UpdateReplicationJobResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus