{-# 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 #-}
module Amazonka.Lightsail.CreateInstanceSnapshot
(
CreateInstanceSnapshot (..),
newCreateInstanceSnapshot,
createInstanceSnapshot_tags,
createInstanceSnapshot_instanceSnapshotName,
createInstanceSnapshot_instanceName,
CreateInstanceSnapshotResponse (..),
newCreateInstanceSnapshotResponse,
createInstanceSnapshotResponse_operations,
createInstanceSnapshotResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Lightsail.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
data CreateInstanceSnapshot = CreateInstanceSnapshot'
{
CreateInstanceSnapshot -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
CreateInstanceSnapshot -> Text
instanceSnapshotName :: Prelude.Text,
CreateInstanceSnapshot -> Text
instanceName :: Prelude.Text
}
deriving (CreateInstanceSnapshot -> CreateInstanceSnapshot -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateInstanceSnapshot -> CreateInstanceSnapshot -> Bool
$c/= :: CreateInstanceSnapshot -> CreateInstanceSnapshot -> Bool
== :: CreateInstanceSnapshot -> CreateInstanceSnapshot -> Bool
$c== :: CreateInstanceSnapshot -> CreateInstanceSnapshot -> Bool
Prelude.Eq, ReadPrec [CreateInstanceSnapshot]
ReadPrec CreateInstanceSnapshot
Int -> ReadS CreateInstanceSnapshot
ReadS [CreateInstanceSnapshot]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateInstanceSnapshot]
$creadListPrec :: ReadPrec [CreateInstanceSnapshot]
readPrec :: ReadPrec CreateInstanceSnapshot
$creadPrec :: ReadPrec CreateInstanceSnapshot
readList :: ReadS [CreateInstanceSnapshot]
$creadList :: ReadS [CreateInstanceSnapshot]
readsPrec :: Int -> ReadS CreateInstanceSnapshot
$creadsPrec :: Int -> ReadS CreateInstanceSnapshot
Prelude.Read, Int -> CreateInstanceSnapshot -> ShowS
[CreateInstanceSnapshot] -> ShowS
CreateInstanceSnapshot -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateInstanceSnapshot] -> ShowS
$cshowList :: [CreateInstanceSnapshot] -> ShowS
show :: CreateInstanceSnapshot -> String
$cshow :: CreateInstanceSnapshot -> String
showsPrec :: Int -> CreateInstanceSnapshot -> ShowS
$cshowsPrec :: Int -> CreateInstanceSnapshot -> ShowS
Prelude.Show, forall x. Rep CreateInstanceSnapshot x -> CreateInstanceSnapshot
forall x. CreateInstanceSnapshot -> Rep CreateInstanceSnapshot x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateInstanceSnapshot x -> CreateInstanceSnapshot
$cfrom :: forall x. CreateInstanceSnapshot -> Rep CreateInstanceSnapshot x
Prelude.Generic)
newCreateInstanceSnapshot ::
Prelude.Text ->
Prelude.Text ->
CreateInstanceSnapshot
newCreateInstanceSnapshot :: Text -> Text -> CreateInstanceSnapshot
newCreateInstanceSnapshot
Text
pInstanceSnapshotName_
Text
pInstanceName_ =
CreateInstanceSnapshot'
{ $sel:tags:CreateInstanceSnapshot' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
$sel:instanceSnapshotName:CreateInstanceSnapshot' :: Text
instanceSnapshotName = Text
pInstanceSnapshotName_,
$sel:instanceName:CreateInstanceSnapshot' :: Text
instanceName = Text
pInstanceName_
}
createInstanceSnapshot_tags :: Lens.Lens' CreateInstanceSnapshot (Prelude.Maybe [Tag])
createInstanceSnapshot_tags :: Lens' CreateInstanceSnapshot (Maybe [Tag])
createInstanceSnapshot_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceSnapshot' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateInstanceSnapshot
s@CreateInstanceSnapshot' {} Maybe [Tag]
a -> CreateInstanceSnapshot
s {$sel:tags:CreateInstanceSnapshot' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateInstanceSnapshot) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
createInstanceSnapshot_instanceSnapshotName :: Lens.Lens' CreateInstanceSnapshot Prelude.Text
createInstanceSnapshot_instanceSnapshotName :: Lens' CreateInstanceSnapshot Text
createInstanceSnapshot_instanceSnapshotName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceSnapshot' {Text
instanceSnapshotName :: Text
$sel:instanceSnapshotName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
instanceSnapshotName} -> Text
instanceSnapshotName) (\s :: CreateInstanceSnapshot
s@CreateInstanceSnapshot' {} Text
a -> CreateInstanceSnapshot
s {$sel:instanceSnapshotName:CreateInstanceSnapshot' :: Text
instanceSnapshotName = Text
a} :: CreateInstanceSnapshot)
createInstanceSnapshot_instanceName :: Lens.Lens' CreateInstanceSnapshot Prelude.Text
createInstanceSnapshot_instanceName :: Lens' CreateInstanceSnapshot Text
createInstanceSnapshot_instanceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceSnapshot' {Text
instanceName :: Text
$sel:instanceName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
instanceName} -> Text
instanceName) (\s :: CreateInstanceSnapshot
s@CreateInstanceSnapshot' {} Text
a -> CreateInstanceSnapshot
s {$sel:instanceName:CreateInstanceSnapshot' :: Text
instanceName = Text
a} :: CreateInstanceSnapshot)
instance Core.AWSRequest CreateInstanceSnapshot where
type
AWSResponse CreateInstanceSnapshot =
CreateInstanceSnapshotResponse
request :: (Service -> Service)
-> CreateInstanceSnapshot -> Request CreateInstanceSnapshot
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 CreateInstanceSnapshot
-> ClientResponse ClientBody
-> m (Either
Error (ClientResponse (AWSResponse CreateInstanceSnapshot)))
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 [Operation] -> Int -> CreateInstanceSnapshotResponse
CreateInstanceSnapshotResponse'
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
"operations" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
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 CreateInstanceSnapshot where
hashWithSalt :: Int -> CreateInstanceSnapshot -> Int
hashWithSalt Int
_salt CreateInstanceSnapshot' {Maybe [Tag]
Text
instanceName :: Text
instanceSnapshotName :: Text
tags :: Maybe [Tag]
$sel:instanceName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
$sel:instanceSnapshotName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
$sel:tags:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Maybe [Tag]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceSnapshotName
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceName
instance Prelude.NFData CreateInstanceSnapshot where
rnf :: CreateInstanceSnapshot -> ()
rnf CreateInstanceSnapshot' {Maybe [Tag]
Text
instanceName :: Text
instanceSnapshotName :: Text
tags :: Maybe [Tag]
$sel:instanceName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
$sel:instanceSnapshotName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
$sel:tags:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Maybe [Tag]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
instanceSnapshotName
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
instanceName
instance Data.ToHeaders CreateInstanceSnapshot where
toHeaders :: CreateInstanceSnapshot -> 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
"Lightsail_20161128.CreateInstanceSnapshot" ::
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 CreateInstanceSnapshot where
toJSON :: CreateInstanceSnapshot -> Value
toJSON CreateInstanceSnapshot' {Maybe [Tag]
Text
instanceName :: Text
instanceSnapshotName :: Text
tags :: Maybe [Tag]
$sel:instanceName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
$sel:instanceSnapshotName:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Text
$sel:tags:CreateInstanceSnapshot' :: CreateInstanceSnapshot -> Maybe [Tag]
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"tags" 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 [Tag]
tags,
forall a. a -> Maybe a
Prelude.Just
( Key
"instanceSnapshotName"
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
instanceSnapshotName
),
forall a. a -> Maybe a
Prelude.Just (Key
"instanceName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
instanceName)
]
)
instance Data.ToPath CreateInstanceSnapshot where
toPath :: CreateInstanceSnapshot -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"
instance Data.ToQuery CreateInstanceSnapshot where
toQuery :: CreateInstanceSnapshot -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty
data CreateInstanceSnapshotResponse = CreateInstanceSnapshotResponse'
{
CreateInstanceSnapshotResponse -> Maybe [Operation]
operations :: Prelude.Maybe [Operation],
CreateInstanceSnapshotResponse -> Int
httpStatus :: Prelude.Int
}
deriving (CreateInstanceSnapshotResponse
-> CreateInstanceSnapshotResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateInstanceSnapshotResponse
-> CreateInstanceSnapshotResponse -> Bool
$c/= :: CreateInstanceSnapshotResponse
-> CreateInstanceSnapshotResponse -> Bool
== :: CreateInstanceSnapshotResponse
-> CreateInstanceSnapshotResponse -> Bool
$c== :: CreateInstanceSnapshotResponse
-> CreateInstanceSnapshotResponse -> Bool
Prelude.Eq, ReadPrec [CreateInstanceSnapshotResponse]
ReadPrec CreateInstanceSnapshotResponse
Int -> ReadS CreateInstanceSnapshotResponse
ReadS [CreateInstanceSnapshotResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateInstanceSnapshotResponse]
$creadListPrec :: ReadPrec [CreateInstanceSnapshotResponse]
readPrec :: ReadPrec CreateInstanceSnapshotResponse
$creadPrec :: ReadPrec CreateInstanceSnapshotResponse
readList :: ReadS [CreateInstanceSnapshotResponse]
$creadList :: ReadS [CreateInstanceSnapshotResponse]
readsPrec :: Int -> ReadS CreateInstanceSnapshotResponse
$creadsPrec :: Int -> ReadS CreateInstanceSnapshotResponse
Prelude.Read, Int -> CreateInstanceSnapshotResponse -> ShowS
[CreateInstanceSnapshotResponse] -> ShowS
CreateInstanceSnapshotResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateInstanceSnapshotResponse] -> ShowS
$cshowList :: [CreateInstanceSnapshotResponse] -> ShowS
show :: CreateInstanceSnapshotResponse -> String
$cshow :: CreateInstanceSnapshotResponse -> String
showsPrec :: Int -> CreateInstanceSnapshotResponse -> ShowS
$cshowsPrec :: Int -> CreateInstanceSnapshotResponse -> ShowS
Prelude.Show, forall x.
Rep CreateInstanceSnapshotResponse x
-> CreateInstanceSnapshotResponse
forall x.
CreateInstanceSnapshotResponse
-> Rep CreateInstanceSnapshotResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateInstanceSnapshotResponse x
-> CreateInstanceSnapshotResponse
$cfrom :: forall x.
CreateInstanceSnapshotResponse
-> Rep CreateInstanceSnapshotResponse x
Prelude.Generic)
newCreateInstanceSnapshotResponse ::
Prelude.Int ->
CreateInstanceSnapshotResponse
newCreateInstanceSnapshotResponse :: Int -> CreateInstanceSnapshotResponse
newCreateInstanceSnapshotResponse Int
pHttpStatus_ =
CreateInstanceSnapshotResponse'
{ $sel:operations:CreateInstanceSnapshotResponse' :: Maybe [Operation]
operations =
forall a. Maybe a
Prelude.Nothing,
$sel:httpStatus:CreateInstanceSnapshotResponse' :: Int
httpStatus = Int
pHttpStatus_
}
createInstanceSnapshotResponse_operations :: Lens.Lens' CreateInstanceSnapshotResponse (Prelude.Maybe [Operation])
createInstanceSnapshotResponse_operations :: Lens' CreateInstanceSnapshotResponse (Maybe [Operation])
createInstanceSnapshotResponse_operations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceSnapshotResponse' {Maybe [Operation]
operations :: Maybe [Operation]
$sel:operations:CreateInstanceSnapshotResponse' :: CreateInstanceSnapshotResponse -> Maybe [Operation]
operations} -> Maybe [Operation]
operations) (\s :: CreateInstanceSnapshotResponse
s@CreateInstanceSnapshotResponse' {} Maybe [Operation]
a -> CreateInstanceSnapshotResponse
s {$sel:operations:CreateInstanceSnapshotResponse' :: Maybe [Operation]
operations = Maybe [Operation]
a} :: CreateInstanceSnapshotResponse) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
createInstanceSnapshotResponse_httpStatus :: Lens.Lens' CreateInstanceSnapshotResponse Prelude.Int
createInstanceSnapshotResponse_httpStatus :: Lens' CreateInstanceSnapshotResponse Int
createInstanceSnapshotResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceSnapshotResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateInstanceSnapshotResponse' :: CreateInstanceSnapshotResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateInstanceSnapshotResponse
s@CreateInstanceSnapshotResponse' {} Int
a -> CreateInstanceSnapshotResponse
s {$sel:httpStatus:CreateInstanceSnapshotResponse' :: Int
httpStatus = Int
a} :: CreateInstanceSnapshotResponse)
instance
Prelude.NFData
CreateInstanceSnapshotResponse
where
rnf :: CreateInstanceSnapshotResponse -> ()
rnf CreateInstanceSnapshotResponse' {Int
Maybe [Operation]
httpStatus :: Int
operations :: Maybe [Operation]
$sel:httpStatus:CreateInstanceSnapshotResponse' :: CreateInstanceSnapshotResponse -> Int
$sel:operations:CreateInstanceSnapshotResponse' :: CreateInstanceSnapshotResponse -> Maybe [Operation]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [Operation]
operations
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus