module AWS.EC2.Types.Volume
( AttachmentSetItemResponse(..)
, AttachmentSetItemResponseStatus(..)
, CreateVolumeRequest(..)
, Volume(..)
, VolumeAttribute(..)
, VolumeAttributeRequest(..)
, VolumeState(..)
, VolumeStatus(..)
, VolumeStatusAction(..)
, VolumeStatusDetail(..)
, VolumeStatusEvent(..)
, VolumeStatusInfo(..)
, VolumeStatusInfoStatus(..)
, VolumeType(..)
) where
import AWS.EC2.Types.Common (ProductCode, ResourceTag)
import AWS.Lib.FromText
data AttachmentSetItemResponse = AttachmentSetItemResponse
{ attachmentSetItemResponseVolumeId :: Text
, attachmentSetItemResponseInstanceId :: Text
, attachmentSetItemResponseDevice :: Text
, attachmentSetItemResponseStatus
:: AttachmentSetItemResponseStatus
, attachmentSetItemResponseAttachTime :: UTCTime
, attachmentSetItemResponseDeleteOnTermination :: Maybe Bool
}
deriving (Show, Read, Eq)
data AttachmentSetItemResponseStatus
= AttachmentSetItemResponseStatusAttaching
| AttachmentSetItemResponseStatusAttached
| AttachmentSetItemResponseStatusDetaching
| AttachmentSetItemResponseStatusDetached
deriving (Show, Read, Eq)
data CreateVolumeRequest
= CreateNewVolume
{ createNewVolumeSize :: Int
, createNewVolumeAvailabilityZone :: Text
, createNewVolumeVolumeType :: Maybe VolumeType
}
| CreateFromSnapshot
{ createFromSnapshotSnapshotId :: Text
, createFromSnapshotAvailabilityZone :: Text
, createFromSnapshotSize :: Maybe Int
, createFromSnapshotVolumeType :: Maybe VolumeType
}
deriving (Show, Read, Eq)
data Volume = Volume
{ volumeId :: Text
, volumeSize :: Int
, volumeSnapshotId :: Maybe Text
, volumeAvailabilityZone :: Text
, volumeStatus :: VolumeState
, volumeCreateTime :: UTCTime
, volumeAttachmentSet :: [AttachmentSetItemResponse]
, volumeTagSet :: [ResourceTag]
, volumeVolumeType :: VolumeType
}
deriving (Show, Read, Eq)
data VolumeAttribute
= VolumeAttributeAutoEnableIO Bool
| VolumeAttributeProductCodes [ProductCode]
deriving (Show, Read, Eq)
data VolumeAttributeRequest
= VolumeAttributeRequestAutoEnableIO
| VolumeAttributeRequestProductCodes
deriving (Show, Read, Eq)
data VolumeState
= VolumeStateCreating
| VolumeStateAvailable
| VolumeStateInUse
| VolumeStateDeleting
| VolumeStateDeleted
| VolumeStateError
deriving (Show, Read, Eq)
data VolumeStatus = VolumeStatus
{ volumeStatusVolumeId :: Text
, volumeStatusAvailabilityZone :: Text
, volumeStatusVolumeStatus :: VolumeStatusInfo
, volumeStatusEventSet :: [VolumeStatusEvent]
, volumeStatusActionSet :: [VolumeStatusAction]
}
deriving (Show, Read, Eq)
data VolumeStatusAction = VolumeStatusAction
{ volumeStatusActionCode :: Text
, volumeStatusActionEventType :: Text
, volumeStatusActionEventId :: Text
, volumeStatusActionDescription :: Text
}
deriving (Show, Read, Eq)
data VolumeStatusDetail = VolumeStatusDetail
{ volumeStatusDetailName :: Text
, volumeStatusDetailStatus :: Text
}
deriving (Show, Read, Eq)
data VolumeStatusEvent = VolumeStatusEvent
{ volumeStatusEventType :: Text
, volumeStatusEventId :: Text
, volumeStatusEventDescription :: Text
, volumeStatusEventNotBefore :: Maybe UTCTime
, volumeStatusEventNotAfter :: Maybe UTCTime
}
deriving (Show, Read, Eq)
data VolumeStatusInfo = VolumeStatusInfo
{ volumeStatusInfoStatus :: VolumeStatusInfoStatus
, volumeStatusInfoDetails :: [VolumeStatusDetail]
}
deriving (Show, Read, Eq)
data VolumeStatusInfoStatus
= VolumeStatusInfoStatusOK
| VolumeStatusInfoStatusImpaired
| VolumeStatusInfoStatusInsufficientData
deriving (Show, Read, Eq)
data VolumeType
= VolumeTypeStandard
| VolumeTypeIO1 Int
deriving (Show, Read, Eq)
deriveFromText "AttachmentSetItemResponseStatus"
["attaching", "attached", "detaching", "detached"]
deriveFromText "VolumeState"
[ "creating"
, "available"
, "in-use"
, "deleting"
, "deleted"
, "error"
]
deriveFromText "VolumeStatusInfoStatus"
["ok", "impaired", "insufficient-data"]