{-# 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.BackupGateway.StartVirtualMachinesMetadataSync
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- This action sends a request to sync metadata across the specified
-- virtual machines.
module Amazonka.BackupGateway.StartVirtualMachinesMetadataSync
  ( -- * Creating a Request
    StartVirtualMachinesMetadataSync (..),
    newStartVirtualMachinesMetadataSync,

    -- * Request Lenses
    startVirtualMachinesMetadataSync_hypervisorArn,

    -- * Destructuring the Response
    StartVirtualMachinesMetadataSyncResponse (..),
    newStartVirtualMachinesMetadataSyncResponse,

    -- * Response Lenses
    startVirtualMachinesMetadataSyncResponse_hypervisorArn,
    startVirtualMachinesMetadataSyncResponse_httpStatus,
  )
where

import Amazonka.BackupGateway.Types
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

-- | /See:/ 'newStartVirtualMachinesMetadataSync' smart constructor.
data StartVirtualMachinesMetadataSync = StartVirtualMachinesMetadataSync'
  { -- | The Amazon Resource Name (ARN) of the hypervisor.
    StartVirtualMachinesMetadataSync -> Text
hypervisorArn :: Prelude.Text
  }
  deriving (StartVirtualMachinesMetadataSync
-> StartVirtualMachinesMetadataSync -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StartVirtualMachinesMetadataSync
-> StartVirtualMachinesMetadataSync -> Bool
$c/= :: StartVirtualMachinesMetadataSync
-> StartVirtualMachinesMetadataSync -> Bool
== :: StartVirtualMachinesMetadataSync
-> StartVirtualMachinesMetadataSync -> Bool
$c== :: StartVirtualMachinesMetadataSync
-> StartVirtualMachinesMetadataSync -> Bool
Prelude.Eq, ReadPrec [StartVirtualMachinesMetadataSync]
ReadPrec StartVirtualMachinesMetadataSync
Int -> ReadS StartVirtualMachinesMetadataSync
ReadS [StartVirtualMachinesMetadataSync]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StartVirtualMachinesMetadataSync]
$creadListPrec :: ReadPrec [StartVirtualMachinesMetadataSync]
readPrec :: ReadPrec StartVirtualMachinesMetadataSync
$creadPrec :: ReadPrec StartVirtualMachinesMetadataSync
readList :: ReadS [StartVirtualMachinesMetadataSync]
$creadList :: ReadS [StartVirtualMachinesMetadataSync]
readsPrec :: Int -> ReadS StartVirtualMachinesMetadataSync
$creadsPrec :: Int -> ReadS StartVirtualMachinesMetadataSync
Prelude.Read, Int -> StartVirtualMachinesMetadataSync -> ShowS
[StartVirtualMachinesMetadataSync] -> ShowS
StartVirtualMachinesMetadataSync -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StartVirtualMachinesMetadataSync] -> ShowS
$cshowList :: [StartVirtualMachinesMetadataSync] -> ShowS
show :: StartVirtualMachinesMetadataSync -> String
$cshow :: StartVirtualMachinesMetadataSync -> String
showsPrec :: Int -> StartVirtualMachinesMetadataSync -> ShowS
$cshowsPrec :: Int -> StartVirtualMachinesMetadataSync -> ShowS
Prelude.Show, forall x.
Rep StartVirtualMachinesMetadataSync x
-> StartVirtualMachinesMetadataSync
forall x.
StartVirtualMachinesMetadataSync
-> Rep StartVirtualMachinesMetadataSync x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep StartVirtualMachinesMetadataSync x
-> StartVirtualMachinesMetadataSync
$cfrom :: forall x.
StartVirtualMachinesMetadataSync
-> Rep StartVirtualMachinesMetadataSync x
Prelude.Generic)

-- |
-- Create a value of 'StartVirtualMachinesMetadataSync' 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:
--
-- 'hypervisorArn', 'startVirtualMachinesMetadataSync_hypervisorArn' - The Amazon Resource Name (ARN) of the hypervisor.
newStartVirtualMachinesMetadataSync ::
  -- | 'hypervisorArn'
  Prelude.Text ->
  StartVirtualMachinesMetadataSync
newStartVirtualMachinesMetadataSync :: Text -> StartVirtualMachinesMetadataSync
newStartVirtualMachinesMetadataSync Text
pHypervisorArn_ =
  StartVirtualMachinesMetadataSync'
    { $sel:hypervisorArn:StartVirtualMachinesMetadataSync' :: Text
hypervisorArn =
        Text
pHypervisorArn_
    }

-- | The Amazon Resource Name (ARN) of the hypervisor.
startVirtualMachinesMetadataSync_hypervisorArn :: Lens.Lens' StartVirtualMachinesMetadataSync Prelude.Text
startVirtualMachinesMetadataSync_hypervisorArn :: Lens' StartVirtualMachinesMetadataSync Text
startVirtualMachinesMetadataSync_hypervisorArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartVirtualMachinesMetadataSync' {Text
hypervisorArn :: Text
$sel:hypervisorArn:StartVirtualMachinesMetadataSync' :: StartVirtualMachinesMetadataSync -> Text
hypervisorArn} -> Text
hypervisorArn) (\s :: StartVirtualMachinesMetadataSync
s@StartVirtualMachinesMetadataSync' {} Text
a -> StartVirtualMachinesMetadataSync
s {$sel:hypervisorArn:StartVirtualMachinesMetadataSync' :: Text
hypervisorArn = Text
a} :: StartVirtualMachinesMetadataSync)

instance
  Core.AWSRequest
    StartVirtualMachinesMetadataSync
  where
  type
    AWSResponse StartVirtualMachinesMetadataSync =
      StartVirtualMachinesMetadataSyncResponse
  request :: (Service -> Service)
-> StartVirtualMachinesMetadataSync
-> Request StartVirtualMachinesMetadataSync
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 StartVirtualMachinesMetadataSync
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse StartVirtualMachinesMetadataSync)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> StartVirtualMachinesMetadataSyncResponse
StartVirtualMachinesMetadataSyncResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"HypervisorArn")
            forall (f :: * -> *) a b. Applicative f => 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
    StartVirtualMachinesMetadataSync
  where
  hashWithSalt :: Int -> StartVirtualMachinesMetadataSync -> Int
hashWithSalt
    Int
_salt
    StartVirtualMachinesMetadataSync' {Text
hypervisorArn :: Text
$sel:hypervisorArn:StartVirtualMachinesMetadataSync' :: StartVirtualMachinesMetadataSync -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
hypervisorArn

instance
  Prelude.NFData
    StartVirtualMachinesMetadataSync
  where
  rnf :: StartVirtualMachinesMetadataSync -> ()
rnf StartVirtualMachinesMetadataSync' {Text
hypervisorArn :: Text
$sel:hypervisorArn:StartVirtualMachinesMetadataSync' :: StartVirtualMachinesMetadataSync -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
hypervisorArn

instance
  Data.ToHeaders
    StartVirtualMachinesMetadataSync
  where
  toHeaders :: StartVirtualMachinesMetadataSync -> 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
"BackupOnPremises_v20210101.StartVirtualMachinesMetadataSync" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON StartVirtualMachinesMetadataSync where
  toJSON :: StartVirtualMachinesMetadataSync -> Value
toJSON StartVirtualMachinesMetadataSync' {Text
hypervisorArn :: Text
$sel:hypervisorArn:StartVirtualMachinesMetadataSync' :: StartVirtualMachinesMetadataSync -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              (Key
"HypervisorArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
hypervisorArn)
          ]
      )

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

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

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

-- |
-- Create a value of 'StartVirtualMachinesMetadataSyncResponse' 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:
--
-- 'hypervisorArn', 'startVirtualMachinesMetadataSyncResponse_hypervisorArn' - The Amazon Resource Name (ARN) of the hypervisor.
--
-- 'httpStatus', 'startVirtualMachinesMetadataSyncResponse_httpStatus' - The response's http status code.
newStartVirtualMachinesMetadataSyncResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartVirtualMachinesMetadataSyncResponse
newStartVirtualMachinesMetadataSyncResponse :: Int -> StartVirtualMachinesMetadataSyncResponse
newStartVirtualMachinesMetadataSyncResponse
  Int
pHttpStatus_ =
    StartVirtualMachinesMetadataSyncResponse'
      { $sel:hypervisorArn:StartVirtualMachinesMetadataSyncResponse' :: Maybe Text
hypervisorArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:StartVirtualMachinesMetadataSyncResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The Amazon Resource Name (ARN) of the hypervisor.
startVirtualMachinesMetadataSyncResponse_hypervisorArn :: Lens.Lens' StartVirtualMachinesMetadataSyncResponse (Prelude.Maybe Prelude.Text)
startVirtualMachinesMetadataSyncResponse_hypervisorArn :: Lens' StartVirtualMachinesMetadataSyncResponse (Maybe Text)
startVirtualMachinesMetadataSyncResponse_hypervisorArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StartVirtualMachinesMetadataSyncResponse' {Maybe Text
hypervisorArn :: Maybe Text
$sel:hypervisorArn:StartVirtualMachinesMetadataSyncResponse' :: StartVirtualMachinesMetadataSyncResponse -> Maybe Text
hypervisorArn} -> Maybe Text
hypervisorArn) (\s :: StartVirtualMachinesMetadataSyncResponse
s@StartVirtualMachinesMetadataSyncResponse' {} Maybe Text
a -> StartVirtualMachinesMetadataSyncResponse
s {$sel:hypervisorArn:StartVirtualMachinesMetadataSyncResponse' :: Maybe Text
hypervisorArn = Maybe Text
a} :: StartVirtualMachinesMetadataSyncResponse)

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

instance
  Prelude.NFData
    StartVirtualMachinesMetadataSyncResponse
  where
  rnf :: StartVirtualMachinesMetadataSyncResponse -> ()
rnf StartVirtualMachinesMetadataSyncResponse' {Int
Maybe Text
httpStatus :: Int
hypervisorArn :: Maybe Text
$sel:httpStatus:StartVirtualMachinesMetadataSyncResponse' :: StartVirtualMachinesMetadataSyncResponse -> Int
$sel:hypervisorArn:StartVirtualMachinesMetadataSyncResponse' :: StartVirtualMachinesMetadataSyncResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
hypervisorArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus