{-# 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 #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.EC2.CreateNetworkInterfacePermission -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Grants an AWS authorized partner account permission to attach the specified network interface to an instance in their account. -- -- -- You can grant permission to a single AWS account only, and only one account at a time. -- module Network.AWS.EC2.CreateNetworkInterfacePermission ( -- * Creating a Request createNetworkInterfacePermission , CreateNetworkInterfacePermission -- * Request Lenses , cnipAWSAccountId , cnipAWSService , cnipDryRun , cnipNetworkInterfaceId , cnipPermission -- * Destructuring the Response , createNetworkInterfacePermissionResponse , CreateNetworkInterfacePermissionResponse -- * Response Lenses , cniprsInterfacePermission , cniprsResponseStatus ) where import Network.AWS.EC2.Types import Network.AWS.EC2.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Contains the parameters for CreateNetworkInterfacePermission. -- -- -- -- /See:/ 'createNetworkInterfacePermission' smart constructor. data CreateNetworkInterfacePermission = CreateNetworkInterfacePermission' { _cnipAWSAccountId :: !(Maybe Text) , _cnipAWSService :: !(Maybe Text) , _cnipDryRun :: !(Maybe Bool) , _cnipNetworkInterfaceId :: !Text , _cnipPermission :: !InterfacePermissionType } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateNetworkInterfacePermission' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cnipAWSAccountId' - The AWS account ID. -- -- * 'cnipAWSService' - The AWS service. Currently not supported. -- -- * 'cnipDryRun' - 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@ . -- -- * 'cnipNetworkInterfaceId' - The ID of the network interface. -- -- * 'cnipPermission' - The type of permission to grant. createNetworkInterfacePermission :: Text -- ^ 'cnipNetworkInterfaceId' -> InterfacePermissionType -- ^ 'cnipPermission' -> CreateNetworkInterfacePermission createNetworkInterfacePermission pNetworkInterfaceId_ pPermission_ = CreateNetworkInterfacePermission' { _cnipAWSAccountId = Nothing , _cnipAWSService = Nothing , _cnipDryRun = Nothing , _cnipNetworkInterfaceId = pNetworkInterfaceId_ , _cnipPermission = pPermission_ } -- | The AWS account ID. cnipAWSAccountId :: Lens' CreateNetworkInterfacePermission (Maybe Text) cnipAWSAccountId = lens _cnipAWSAccountId (\ s a -> s{_cnipAWSAccountId = a}) -- | The AWS service. Currently not supported. cnipAWSService :: Lens' CreateNetworkInterfacePermission (Maybe Text) cnipAWSService = lens _cnipAWSService (\ s a -> s{_cnipAWSService = a}) -- | 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@ . cnipDryRun :: Lens' CreateNetworkInterfacePermission (Maybe Bool) cnipDryRun = lens _cnipDryRun (\ s a -> s{_cnipDryRun = a}) -- | The ID of the network interface. cnipNetworkInterfaceId :: Lens' CreateNetworkInterfacePermission Text cnipNetworkInterfaceId = lens _cnipNetworkInterfaceId (\ s a -> s{_cnipNetworkInterfaceId = a}) -- | The type of permission to grant. cnipPermission :: Lens' CreateNetworkInterfacePermission InterfacePermissionType cnipPermission = lens _cnipPermission (\ s a -> s{_cnipPermission = a}) instance AWSRequest CreateNetworkInterfacePermission where type Rs CreateNetworkInterfacePermission = CreateNetworkInterfacePermissionResponse request = postQuery ec2 response = receiveXML (\ s h x -> CreateNetworkInterfacePermissionResponse' <$> (x .@? "interfacePermission") <*> (pure (fromEnum s))) instance Hashable CreateNetworkInterfacePermission where instance NFData CreateNetworkInterfacePermission where instance ToHeaders CreateNetworkInterfacePermission where toHeaders = const mempty instance ToPath CreateNetworkInterfacePermission where toPath = const "/" instance ToQuery CreateNetworkInterfacePermission where toQuery CreateNetworkInterfacePermission'{..} = mconcat ["Action" =: ("CreateNetworkInterfacePermission" :: ByteString), "Version" =: ("2016-11-15" :: ByteString), "AwsAccountId" =: _cnipAWSAccountId, "AwsService" =: _cnipAWSService, "DryRun" =: _cnipDryRun, "NetworkInterfaceId" =: _cnipNetworkInterfaceId, "Permission" =: _cnipPermission] -- | Contains the output of CreateNetworkInterfacePermission. -- -- -- -- /See:/ 'createNetworkInterfacePermissionResponse' smart constructor. data CreateNetworkInterfacePermissionResponse = CreateNetworkInterfacePermissionResponse' { _cniprsInterfacePermission :: !(Maybe NetworkInterfacePermission) , _cniprsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateNetworkInterfacePermissionResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cniprsInterfacePermission' - Information about the permission for the network interface. -- -- * 'cniprsResponseStatus' - -- | The response status code. createNetworkInterfacePermissionResponse :: Int -- ^ 'cniprsResponseStatus' -> CreateNetworkInterfacePermissionResponse createNetworkInterfacePermissionResponse pResponseStatus_ = CreateNetworkInterfacePermissionResponse' { _cniprsInterfacePermission = Nothing , _cniprsResponseStatus = pResponseStatus_ } -- | Information about the permission for the network interface. cniprsInterfacePermission :: Lens' CreateNetworkInterfacePermissionResponse (Maybe NetworkInterfacePermission) cniprsInterfacePermission = lens _cniprsInterfacePermission (\ s a -> s{_cniprsInterfacePermission = a}) -- | -- | The response status code. cniprsResponseStatus :: Lens' CreateNetworkInterfacePermissionResponse Int cniprsResponseStatus = lens _cniprsResponseStatus (\ s a -> s{_cniprsResponseStatus = a}) instance NFData CreateNetworkInterfacePermissionResponse where