{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.StorageGateway.CreateStorediSCSIVolume
(
createStorediSCSIVolume
, CreateStorediSCSIVolume
, csscsivSnapshotId
, csscsivGatewayARN
, csscsivDiskId
, csscsivPreserveExistingData
, csscsivTargetName
, csscsivNetworkInterfaceId
, createStorediSCSIVolumeResponse
, CreateStorediSCSIVolumeResponse
, csscsivrsTargetARN
, csscsivrsVolumeARN
, csscsivrsVolumeSizeInBytes
, csscsivrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.StorageGateway.Types
import Network.AWS.StorageGateway.Types.Product
data CreateStorediSCSIVolume = CreateStorediSCSIVolume'
{ _csscsivSnapshotId :: !(Maybe Text)
, _csscsivGatewayARN :: !Text
, _csscsivDiskId :: !Text
, _csscsivPreserveExistingData :: !Bool
, _csscsivTargetName :: !Text
, _csscsivNetworkInterfaceId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createStorediSCSIVolume
:: Text
-> Text
-> Bool
-> Text
-> Text
-> CreateStorediSCSIVolume
createStorediSCSIVolume pGatewayARN_ pDiskId_ pPreserveExistingData_ pTargetName_ pNetworkInterfaceId_ =
CreateStorediSCSIVolume'
{ _csscsivSnapshotId = Nothing
, _csscsivGatewayARN = pGatewayARN_
, _csscsivDiskId = pDiskId_
, _csscsivPreserveExistingData = pPreserveExistingData_
, _csscsivTargetName = pTargetName_
, _csscsivNetworkInterfaceId = pNetworkInterfaceId_
}
csscsivSnapshotId :: Lens' CreateStorediSCSIVolume (Maybe Text)
csscsivSnapshotId = lens _csscsivSnapshotId (\ s a -> s{_csscsivSnapshotId = a});
csscsivGatewayARN :: Lens' CreateStorediSCSIVolume Text
csscsivGatewayARN = lens _csscsivGatewayARN (\ s a -> s{_csscsivGatewayARN = a});
csscsivDiskId :: Lens' CreateStorediSCSIVolume Text
csscsivDiskId = lens _csscsivDiskId (\ s a -> s{_csscsivDiskId = a});
csscsivPreserveExistingData :: Lens' CreateStorediSCSIVolume Bool
csscsivPreserveExistingData = lens _csscsivPreserveExistingData (\ s a -> s{_csscsivPreserveExistingData = a});
csscsivTargetName :: Lens' CreateStorediSCSIVolume Text
csscsivTargetName = lens _csscsivTargetName (\ s a -> s{_csscsivTargetName = a});
csscsivNetworkInterfaceId :: Lens' CreateStorediSCSIVolume Text
csscsivNetworkInterfaceId = lens _csscsivNetworkInterfaceId (\ s a -> s{_csscsivNetworkInterfaceId = a});
instance AWSRequest CreateStorediSCSIVolume where
type Rs CreateStorediSCSIVolume =
CreateStorediSCSIVolumeResponse
request = postJSON storageGateway
response
= receiveJSON
(\ s h x ->
CreateStorediSCSIVolumeResponse' <$>
(x .?> "TargetARN") <*> (x .?> "VolumeARN") <*>
(x .?> "VolumeSizeInBytes")
<*> (pure (fromEnum s)))
instance Hashable CreateStorediSCSIVolume
instance NFData CreateStorediSCSIVolume
instance ToHeaders CreateStorediSCSIVolume where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("StorageGateway_20130630.CreateStorediSCSIVolume" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateStorediSCSIVolume where
toJSON CreateStorediSCSIVolume'{..}
= object
(catMaybes
[("SnapshotId" .=) <$> _csscsivSnapshotId,
Just ("GatewayARN" .= _csscsivGatewayARN),
Just ("DiskId" .= _csscsivDiskId),
Just
("PreserveExistingData" .=
_csscsivPreserveExistingData),
Just ("TargetName" .= _csscsivTargetName),
Just
("NetworkInterfaceId" .=
_csscsivNetworkInterfaceId)])
instance ToPath CreateStorediSCSIVolume where
toPath = const "/"
instance ToQuery CreateStorediSCSIVolume where
toQuery = const mempty
data CreateStorediSCSIVolumeResponse = CreateStorediSCSIVolumeResponse'
{ _csscsivrsTargetARN :: !(Maybe Text)
, _csscsivrsVolumeARN :: !(Maybe Text)
, _csscsivrsVolumeSizeInBytes :: !(Maybe Integer)
, _csscsivrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createStorediSCSIVolumeResponse
:: Int
-> CreateStorediSCSIVolumeResponse
createStorediSCSIVolumeResponse pResponseStatus_ =
CreateStorediSCSIVolumeResponse'
{ _csscsivrsTargetARN = Nothing
, _csscsivrsVolumeARN = Nothing
, _csscsivrsVolumeSizeInBytes = Nothing
, _csscsivrsResponseStatus = pResponseStatus_
}
csscsivrsTargetARN :: Lens' CreateStorediSCSIVolumeResponse (Maybe Text)
csscsivrsTargetARN = lens _csscsivrsTargetARN (\ s a -> s{_csscsivrsTargetARN = a});
csscsivrsVolumeARN :: Lens' CreateStorediSCSIVolumeResponse (Maybe Text)
csscsivrsVolumeARN = lens _csscsivrsVolumeARN (\ s a -> s{_csscsivrsVolumeARN = a});
csscsivrsVolumeSizeInBytes :: Lens' CreateStorediSCSIVolumeResponse (Maybe Integer)
csscsivrsVolumeSizeInBytes = lens _csscsivrsVolumeSizeInBytes (\ s a -> s{_csscsivrsVolumeSizeInBytes = a});
csscsivrsResponseStatus :: Lens' CreateStorediSCSIVolumeResponse Int
csscsivrsResponseStatus = lens _csscsivrsResponseStatus (\ s a -> s{_csscsivrsResponseStatus = a});
instance NFData CreateStorediSCSIVolumeResponse