module AWS.EC2.Types.Image
( AMIAttribute(..)
, AMIAttributeDescription(..)
, BlockDeviceMapping(..)
, BlockDeviceMappingParam(..)
, EbsBlockDevice(..)
, EbsSource(..)
, Image(..)
, ImageState(..)
, ImageType(..)
, LaunchPermission(..)
, LaunchPermissionItem(..)
, ProductCodeItem(..)
, RegisterImageRequest(..)
) where
import AWS.EC2.Types.Common
import AWS.EC2.Types.Volume (VolumeType)
import AWS.Lib.FromText
data AMIAttribute
= AMIDescription
| AMIKernel
| AMIRamdisk
| AMILaunchPermission
| AMIProductCodes
| AMIBlockDeviceMapping
deriving (Show, Read, Eq)
data AMIAttributeDescription = AMIAttributeDescription
{ amiAttributeDescriptionImageId :: Text
, amiAttributeDescriptionLaunchPermission :: [LaunchPermissionItem]
, amiAttributeDescriptionProductCodes :: [ProductCodeItem]
, amiAttributeDescriptionKernel :: Maybe Text
, amiAttributeDescriptionRamdisk :: Maybe Text
, amiAttributeDescriptionDescription :: Maybe Text
, amiAttributeDescriptionBlockDeviceMapping :: [BlockDeviceMapping]
}
deriving (Show, Read, Eq)
data BlockDeviceMapping = BlockDeviceMapping
{ blockDeviceMappingDeviceName :: Text
, blockDeviceMappingVirtualName :: Maybe Text
, blockDeviceMappingEbs :: Maybe EbsBlockDevice
}
deriving (Show, Read, Eq)
data BlockDeviceMappingParam
= BlockDeviceMappingParamEbs
{ blockDeviceMappingParamEbsDeviceName :: Text
, blockDeviceMappingParamEbsNoDevice :: Maybe Bool
, blockDeviceMappingParamEbsSource :: EbsSource
, blockDeviceMappingParamEbsDeleteOnTermination
:: Maybe Bool
, blockDeviceMappingParamEbsVolumeType :: Maybe VolumeType
}
| BlockDeviceMappingParamInstanceStore
{ blockDeviceMappingParamInstanceStoreDeviceName :: Text
, blockDeviceMappingParamInstanceStoreNoDevice
:: Maybe Bool
, blockDeviceMappingParamInstanceStoreVirtualName
:: Maybe Text
}
deriving (Show, Read, Eq)
data EbsBlockDevice = EbsBlockDevice
{ ebsSnapshotId :: Maybe Text
, ebsVolumeSize :: Maybe Int
, ebsDeleteOnTermination :: Bool
, ebsVolumeType :: VolumeType
}
deriving (Show, Read, Eq)
data EbsSource
= EbsSourceSnapshotId Text
| EbsSourceVolumeSize Int
deriving (Show, Read, Eq)
data Image = Image
{ imageId :: Text
, imageLocation :: Text
, imageImageState :: ImageState
, imageOwnerId :: Text
, imageIsPublic :: Bool
, imageProductCodes :: [ProductCode]
, imageArchitecture :: Text
, imageImageType :: ImageType
, imageKernelId :: Maybe Text
, imageRamdiskId :: Maybe Text
, imagePlatform :: Platform
, imageStateReason :: Maybe StateReason
, imageViridianEnabled :: Maybe Bool
, imageOwnerAlias :: Maybe Text
, imageName :: Maybe Text
, imageDescription :: Maybe Text
, imageBillingProducts :: [Text]
, imageRootDeviceType :: RootDeviceType
, imageRootDeviceName :: Maybe Text
, imageBlockDeviceMappings :: [BlockDeviceMapping]
, imageVirtualizationType :: VirtualizationType
, imageTagSet :: [ResourceTag]
, imageHypervisor :: Hypervisor
}
deriving (Show, Read, Eq)
data ImageState
= ImageStateAvailable
| ImageStatePending
| ImageStateFailed
deriving (Show, Read, Eq)
data ImageType
= ImageTypeMachine
| ImageTypeKernel
| ImageTypeRamDisk
deriving (Show, Read, Eq)
data LaunchPermission = LaunchPermission
{ launchPermissionAdd :: [LaunchPermissionItem]
, launchPermissionRemove :: [LaunchPermissionItem]
}
deriving (Show, Read, Eq)
data LaunchPermissionItem
= LaunchPermissionItemGroup Text
| LaunchPermissionItemUserId Text
deriving (Show, Read, Eq)
data ProductCodeItem = ProductCodeItem
{ productCodeItemProductCode :: Text
}
deriving (Show, Read, Eq)
data RegisterImageRequest = RegisterImageRequest
{ registerImageRequestName :: Text
, registerImageRequestImageLocation :: Maybe Text
, registerImageRequestDescription :: Maybe Text
, registerImageRequestArchitecture :: Maybe Text
, registerImageRequestKernelId :: Maybe Text
, registerImageRequestRamdiskId :: Maybe Text
, registerImageRequestRootDeviceName :: Maybe Text
, registerImageRequestBlockDeviceMappings
:: [BlockDeviceMappingParam]
}
deriving (Show, Read, Eq)
deriveFromText "ImageState" ["available", "pending", "failed"]
deriveFromText "ImageType" ["machine", "kernel", "ramdisk"]