{-# 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 #-}
module Amazonka.EC2.Types.VolumeStatusInfo where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.VolumeStatusDetails
import Amazonka.EC2.Types.VolumeStatusInfoStatus
import qualified Amazonka.Prelude as Prelude
data VolumeStatusInfo = VolumeStatusInfo'
{
VolumeStatusInfo -> Maybe [VolumeStatusDetails]
details :: Prelude.Maybe [VolumeStatusDetails],
VolumeStatusInfo -> Maybe VolumeStatusInfoStatus
status :: Prelude.Maybe VolumeStatusInfoStatus
}
deriving (VolumeStatusInfo -> VolumeStatusInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VolumeStatusInfo -> VolumeStatusInfo -> Bool
$c/= :: VolumeStatusInfo -> VolumeStatusInfo -> Bool
== :: VolumeStatusInfo -> VolumeStatusInfo -> Bool
$c== :: VolumeStatusInfo -> VolumeStatusInfo -> Bool
Prelude.Eq, ReadPrec [VolumeStatusInfo]
ReadPrec VolumeStatusInfo
Int -> ReadS VolumeStatusInfo
ReadS [VolumeStatusInfo]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VolumeStatusInfo]
$creadListPrec :: ReadPrec [VolumeStatusInfo]
readPrec :: ReadPrec VolumeStatusInfo
$creadPrec :: ReadPrec VolumeStatusInfo
readList :: ReadS [VolumeStatusInfo]
$creadList :: ReadS [VolumeStatusInfo]
readsPrec :: Int -> ReadS VolumeStatusInfo
$creadsPrec :: Int -> ReadS VolumeStatusInfo
Prelude.Read, Int -> VolumeStatusInfo -> ShowS
[VolumeStatusInfo] -> ShowS
VolumeStatusInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VolumeStatusInfo] -> ShowS
$cshowList :: [VolumeStatusInfo] -> ShowS
show :: VolumeStatusInfo -> String
$cshow :: VolumeStatusInfo -> String
showsPrec :: Int -> VolumeStatusInfo -> ShowS
$cshowsPrec :: Int -> VolumeStatusInfo -> ShowS
Prelude.Show, forall x. Rep VolumeStatusInfo x -> VolumeStatusInfo
forall x. VolumeStatusInfo -> Rep VolumeStatusInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VolumeStatusInfo x -> VolumeStatusInfo
$cfrom :: forall x. VolumeStatusInfo -> Rep VolumeStatusInfo x
Prelude.Generic)
newVolumeStatusInfo ::
VolumeStatusInfo
newVolumeStatusInfo :: VolumeStatusInfo
newVolumeStatusInfo =
VolumeStatusInfo'
{ $sel:details:VolumeStatusInfo' :: Maybe [VolumeStatusDetails]
details = forall a. Maybe a
Prelude.Nothing,
$sel:status:VolumeStatusInfo' :: Maybe VolumeStatusInfoStatus
status = forall a. Maybe a
Prelude.Nothing
}
volumeStatusInfo_details :: Lens.Lens' VolumeStatusInfo (Prelude.Maybe [VolumeStatusDetails])
volumeStatusInfo_details :: Lens' VolumeStatusInfo (Maybe [VolumeStatusDetails])
volumeStatusInfo_details = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeStatusInfo' {Maybe [VolumeStatusDetails]
details :: Maybe [VolumeStatusDetails]
$sel:details:VolumeStatusInfo' :: VolumeStatusInfo -> Maybe [VolumeStatusDetails]
details} -> Maybe [VolumeStatusDetails]
details) (\s :: VolumeStatusInfo
s@VolumeStatusInfo' {} Maybe [VolumeStatusDetails]
a -> VolumeStatusInfo
s {$sel:details:VolumeStatusInfo' :: Maybe [VolumeStatusDetails]
details = Maybe [VolumeStatusDetails]
a} :: VolumeStatusInfo) 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
volumeStatusInfo_status :: Lens.Lens' VolumeStatusInfo (Prelude.Maybe VolumeStatusInfoStatus)
volumeStatusInfo_status :: Lens' VolumeStatusInfo (Maybe VolumeStatusInfoStatus)
volumeStatusInfo_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeStatusInfo' {Maybe VolumeStatusInfoStatus
status :: Maybe VolumeStatusInfoStatus
$sel:status:VolumeStatusInfo' :: VolumeStatusInfo -> Maybe VolumeStatusInfoStatus
status} -> Maybe VolumeStatusInfoStatus
status) (\s :: VolumeStatusInfo
s@VolumeStatusInfo' {} Maybe VolumeStatusInfoStatus
a -> VolumeStatusInfo
s {$sel:status:VolumeStatusInfo' :: Maybe VolumeStatusInfoStatus
status = Maybe VolumeStatusInfoStatus
a} :: VolumeStatusInfo)
instance Data.FromXML VolumeStatusInfo where
parseXML :: [Node] -> Either String VolumeStatusInfo
parseXML [Node]
x =
Maybe [VolumeStatusDetails]
-> Maybe VolumeStatusInfoStatus -> VolumeStatusInfo
VolumeStatusInfo'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"details"
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"status")
instance Prelude.Hashable VolumeStatusInfo where
hashWithSalt :: Int -> VolumeStatusInfo -> Int
hashWithSalt Int
_salt VolumeStatusInfo' {Maybe [VolumeStatusDetails]
Maybe VolumeStatusInfoStatus
status :: Maybe VolumeStatusInfoStatus
details :: Maybe [VolumeStatusDetails]
$sel:status:VolumeStatusInfo' :: VolumeStatusInfo -> Maybe VolumeStatusInfoStatus
$sel:details:VolumeStatusInfo' :: VolumeStatusInfo -> Maybe [VolumeStatusDetails]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VolumeStatusDetails]
details
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VolumeStatusInfoStatus
status
instance Prelude.NFData VolumeStatusInfo where
rnf :: VolumeStatusInfo -> ()
rnf VolumeStatusInfo' {Maybe [VolumeStatusDetails]
Maybe VolumeStatusInfoStatus
status :: Maybe VolumeStatusInfoStatus
details :: Maybe [VolumeStatusDetails]
$sel:status:VolumeStatusInfo' :: VolumeStatusInfo -> Maybe VolumeStatusInfoStatus
$sel:details:VolumeStatusInfo' :: VolumeStatusInfo -> Maybe [VolumeStatusDetails]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [VolumeStatusDetails]
details
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VolumeStatusInfoStatus
status