amazonka-ec2-0.3.5: gen/Network/AWS/EC2/ImportImage.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.EC2.ImportImage
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | Import single or multi-volume disk images or EBS snapshots into an Amazon
-- Machine Image (AMI).
--
-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-ImportImage.html>
module Network.AWS.EC2.ImportImage
(
-- * Request
ImportImage
-- ** Request constructor
, importImage
-- ** Request lenses
, ii1Architecture
, ii1ClientData
, ii1ClientToken
, ii1Description
, ii1DiskContainers
, ii1DryRun
, ii1Hypervisor
, ii1LicenseType
, ii1Platform
, ii1RoleName
-- * Response
, ImportImageResponse
-- ** Response constructor
, importImageResponse
-- ** Response lenses
, iirArchitecture
, iirDescription
, iirHypervisor
, iirImageId
, iirImportTaskId
, iirLicenseType
, iirPlatform
, iirProgress
, iirSnapshotDetails
, iirStatus
, iirStatusMessage
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.EC2.Types
import qualified GHC.Exts
data ImportImage = ImportImage
{ _ii1Architecture :: Maybe Text
, _ii1ClientData :: Maybe ClientData
, _ii1ClientToken :: Maybe Text
, _ii1Description :: Maybe Text
, _ii1DiskContainers :: List "item" ImageDiskContainer
, _ii1DryRun :: Maybe Bool
, _ii1Hypervisor :: Maybe Text
, _ii1LicenseType :: Maybe Text
, _ii1Platform :: Maybe Text
, _ii1RoleName :: Maybe Text
} deriving (Eq, Read, Show)
-- | 'ImportImage' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'ii1Architecture' @::@ 'Maybe' 'Text'
--
-- * 'ii1ClientData' @::@ 'Maybe' 'ClientData'
--
-- * 'ii1ClientToken' @::@ 'Maybe' 'Text'
--
-- * 'ii1Description' @::@ 'Maybe' 'Text'
--
-- * 'ii1DiskContainers' @::@ ['ImageDiskContainer']
--
-- * 'ii1DryRun' @::@ 'Maybe' 'Bool'
--
-- * 'ii1Hypervisor' @::@ 'Maybe' 'Text'
--
-- * 'ii1LicenseType' @::@ 'Maybe' 'Text'
--
-- * 'ii1Platform' @::@ 'Maybe' 'Text'
--
-- * 'ii1RoleName' @::@ 'Maybe' 'Text'
--
importImage :: ImportImage
importImage = ImportImage
{ _ii1DryRun = Nothing
, _ii1Description = Nothing
, _ii1DiskContainers = mempty
, _ii1LicenseType = Nothing
, _ii1Hypervisor = Nothing
, _ii1Architecture = Nothing
, _ii1Platform = Nothing
, _ii1ClientData = Nothing
, _ii1ClientToken = Nothing
, _ii1RoleName = Nothing
}
-- | The architecture of the virtual machine.
--
-- Valid values: 'i386' | 'x86_64'
ii1Architecture :: Lens' ImportImage (Maybe Text)
ii1Architecture = lens _ii1Architecture (\s a -> s { _ii1Architecture = a })
-- | The client-specific data.
ii1ClientData :: Lens' ImportImage (Maybe ClientData)
ii1ClientData = lens _ii1ClientData (\s a -> s { _ii1ClientData = a })
-- | The token to enable idempotency for VM import requests.
ii1ClientToken :: Lens' ImportImage (Maybe Text)
ii1ClientToken = lens _ii1ClientToken (\s a -> s { _ii1ClientToken = a })
-- | A description string for the import image task.
ii1Description :: Lens' ImportImage (Maybe Text)
ii1Description = lens _ii1Description (\s a -> s { _ii1Description = a })
-- | Information about the disk containers.
ii1DiskContainers :: Lens' ImportImage [ImageDiskContainer]
ii1DiskContainers =
lens _ii1DiskContainers (\s a -> s { _ii1DiskContainers = a })
. _List
-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have the
-- required permissions, the error response is 'DryRunOperation'. Otherwise, it is 'UnauthorizedOperation'.
ii1DryRun :: Lens' ImportImage (Maybe Bool)
ii1DryRun = lens _ii1DryRun (\s a -> s { _ii1DryRun = a })
-- | The target hypervisor platform.
--
-- Valid values: 'xen'
ii1Hypervisor :: Lens' ImportImage (Maybe Text)
ii1Hypervisor = lens _ii1Hypervisor (\s a -> s { _ii1Hypervisor = a })
-- | The license type to be used for the Amazon Machine Image (AMI) after
-- importing.
--
-- Note: You may only use BYOL if you have existing licenses with rights to use
-- these licenses in a third party cloud like AWS. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html VMImport/Export Prerequisites> in the /Amazon Elastic Compute Cloud User Guide/.
--
-- Valid values: 'AWS' | 'BYOL'
ii1LicenseType :: Lens' ImportImage (Maybe Text)
ii1LicenseType = lens _ii1LicenseType (\s a -> s { _ii1LicenseType = a })
-- | The operating system of the virtual machine.
--
-- Valid values: 'Windows' | 'Linux'
ii1Platform :: Lens' ImportImage (Maybe Text)
ii1Platform = lens _ii1Platform (\s a -> s { _ii1Platform = a })
-- | The name of the role to use when not using the default role, 'vmimport'.
ii1RoleName :: Lens' ImportImage (Maybe Text)
ii1RoleName = lens _ii1RoleName (\s a -> s { _ii1RoleName = a })
data ImportImageResponse = ImportImageResponse
{ _iirArchitecture :: Maybe Text
, _iirDescription :: Maybe Text
, _iirHypervisor :: Maybe Text
, _iirImageId :: Maybe Text
, _iirImportTaskId :: Maybe Text
, _iirLicenseType :: Maybe Text
, _iirPlatform :: Maybe Text
, _iirProgress :: Maybe Text
, _iirSnapshotDetails :: List "item" SnapshotDetail
, _iirStatus :: Maybe Text
, _iirStatusMessage :: Maybe Text
} deriving (Eq, Read, Show)
-- | 'ImportImageResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'iirArchitecture' @::@ 'Maybe' 'Text'
--
-- * 'iirDescription' @::@ 'Maybe' 'Text'
--
-- * 'iirHypervisor' @::@ 'Maybe' 'Text'
--
-- * 'iirImageId' @::@ 'Maybe' 'Text'
--
-- * 'iirImportTaskId' @::@ 'Maybe' 'Text'
--
-- * 'iirLicenseType' @::@ 'Maybe' 'Text'
--
-- * 'iirPlatform' @::@ 'Maybe' 'Text'
--
-- * 'iirProgress' @::@ 'Maybe' 'Text'
--
-- * 'iirSnapshotDetails' @::@ ['SnapshotDetail']
--
-- * 'iirStatus' @::@ 'Maybe' 'Text'
--
-- * 'iirStatusMessage' @::@ 'Maybe' 'Text'
--
importImageResponse :: ImportImageResponse
importImageResponse = ImportImageResponse
{ _iirImportTaskId = Nothing
, _iirArchitecture = Nothing
, _iirLicenseType = Nothing
, _iirPlatform = Nothing
, _iirHypervisor = Nothing
, _iirDescription = Nothing
, _iirSnapshotDetails = mempty
, _iirImageId = Nothing
, _iirProgress = Nothing
, _iirStatusMessage = Nothing
, _iirStatus = Nothing
}
-- | The architecture of the virtual machine.
iirArchitecture :: Lens' ImportImageResponse (Maybe Text)
iirArchitecture = lens _iirArchitecture (\s a -> s { _iirArchitecture = a })
-- | A description of the import task.
iirDescription :: Lens' ImportImageResponse (Maybe Text)
iirDescription = lens _iirDescription (\s a -> s { _iirDescription = a })
-- | The target hypervisor of the import task.
iirHypervisor :: Lens' ImportImageResponse (Maybe Text)
iirHypervisor = lens _iirHypervisor (\s a -> s { _iirHypervisor = a })
-- | The ID of the Amazon Machine Image (AMI) created by the import task.
iirImageId :: Lens' ImportImageResponse (Maybe Text)
iirImageId = lens _iirImageId (\s a -> s { _iirImageId = a })
-- | The task ID of the import image task.
iirImportTaskId :: Lens' ImportImageResponse (Maybe Text)
iirImportTaskId = lens _iirImportTaskId (\s a -> s { _iirImportTaskId = a })
-- | The license type of the virtual machine.
iirLicenseType :: Lens' ImportImageResponse (Maybe Text)
iirLicenseType = lens _iirLicenseType (\s a -> s { _iirLicenseType = a })
-- | The operating system of the virtual machine.
iirPlatform :: Lens' ImportImageResponse (Maybe Text)
iirPlatform = lens _iirPlatform (\s a -> s { _iirPlatform = a })
-- | The progress of the task.
iirProgress :: Lens' ImportImageResponse (Maybe Text)
iirProgress = lens _iirProgress (\s a -> s { _iirProgress = a })
-- | Information about the snapshots.
iirSnapshotDetails :: Lens' ImportImageResponse [SnapshotDetail]
iirSnapshotDetails =
lens _iirSnapshotDetails (\s a -> s { _iirSnapshotDetails = a })
. _List
-- | A brief status of the task.
iirStatus :: Lens' ImportImageResponse (Maybe Text)
iirStatus = lens _iirStatus (\s a -> s { _iirStatus = a })
-- | A detailed status message of the import task.
iirStatusMessage :: Lens' ImportImageResponse (Maybe Text)
iirStatusMessage = lens _iirStatusMessage (\s a -> s { _iirStatusMessage = a })
instance ToPath ImportImage where
toPath = const "/"
instance ToQuery ImportImage where
toQuery ImportImage{..} = mconcat
[ "Architecture" =? _ii1Architecture
, "ClientData" =? _ii1ClientData
, "ClientToken" =? _ii1ClientToken
, "Description" =? _ii1Description
, "DiskContainer" `toQueryList` _ii1DiskContainers
, "DryRun" =? _ii1DryRun
, "Hypervisor" =? _ii1Hypervisor
, "LicenseType" =? _ii1LicenseType
, "Platform" =? _ii1Platform
, "RoleName" =? _ii1RoleName
]
instance ToHeaders ImportImage
instance AWSRequest ImportImage where
type Sv ImportImage = EC2
type Rs ImportImage = ImportImageResponse
request = post "ImportImage"
response = xmlResponse
instance FromXML ImportImageResponse where
parseXML x = ImportImageResponse
<$> x .@? "architecture"
<*> x .@? "description"
<*> x .@? "hypervisor"
<*> x .@? "imageId"
<*> x .@? "importTaskId"
<*> x .@? "licenseType"
<*> x .@? "platform"
<*> x .@? "progress"
<*> x .@? "snapshotDetailSet" .!@ mempty
<*> x .@? "status"
<*> x .@? "statusMessage"