amazonka-ec2-0.0.2: gen/Network/AWS/EC2/DescribeNetworkInterfaces.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.DescribeNetworkInterfaces
-- 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)
-- | Describes one or more of your network interfaces.
--
-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeNetworkInterfaces.html>
module Network.AWS.EC2.DescribeNetworkInterfaces
(
-- * Request
DescribeNetworkInterfaces
-- ** Request constructor
, describeNetworkInterfaces
-- ** Request lenses
, dni1DryRun
, dni1Filters
, dni1NetworkInterfaceIds
-- * Response
, DescribeNetworkInterfacesResponse
-- ** Response constructor
, describeNetworkInterfacesResponse
-- ** Response lenses
, dnirNetworkInterfaces
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.EC2.Types
import qualified GHC.Exts
data DescribeNetworkInterfaces = DescribeNetworkInterfaces
{ _dni1DryRun :: Maybe Bool
, _dni1Filters :: List "Filter" Filter
, _dni1NetworkInterfaceIds :: List "item" Text
} deriving (Eq, Show)
-- | 'DescribeNetworkInterfaces' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dni1DryRun' @::@ 'Maybe' 'Bool'
--
-- * 'dni1Filters' @::@ ['Filter']
--
-- * 'dni1NetworkInterfaceIds' @::@ ['Text']
--
describeNetworkInterfaces :: DescribeNetworkInterfaces
describeNetworkInterfaces = DescribeNetworkInterfaces
{ _dni1DryRun = Nothing
, _dni1NetworkInterfaceIds = mempty
, _dni1Filters = mempty
}
dni1DryRun :: Lens' DescribeNetworkInterfaces (Maybe Bool)
dni1DryRun = lens _dni1DryRun (\s a -> s { _dni1DryRun = a })
-- | One or more filters.
--
-- 'addresses.private-ip-address' - The private IP addresses associated with
-- the network interface.
--
-- 'addresses.primary' - Whether the private IP address is the primary IP
-- address associated with the network interface.
--
-- 'addresses.association.public-ip' - The association ID returned when the
-- network interface was associated with the Elastic IP address.
--
-- 'addresses.association.owner-id' - The owner ID of the addresses associated
-- with the network interface.
--
-- 'association.association-id' - The association ID returned when the network
-- interface was associated with an IP address.
--
-- 'association.allocation-id' - The allocation ID returned when you allocated
-- the Elastic IP address for your network interface.
--
-- 'association.ip-owner-id' - The owner of the Elastic IP address associated
-- with the network interface.
--
-- 'association.public-ip' - The address of the Elastic IP address bound to the
-- network interface.
--
-- 'association.public-dns-name' - The public DNS name for the network
-- interface.
--
-- 'attachment.attachment-id' - The ID of the interface attachment.
--
-- 'attachment.instance-id' - The ID of the instance to which the network
-- interface is attached.
--
-- 'attachment.instance-owner-id' - The owner ID of the instance to which the
-- network interface is attached.
--
-- 'attachment.device-index' - The device index to which the network interface
-- is attached.
--
-- 'attachment.status' - The status of the attachment ('attaching' | 'attached' | 'detaching' | 'detached').
--
-- 'attachment.attach.time' - The time that the network interface was attached
-- to an instance.
--
-- 'attachment.delete-on-termination' - Indicates whether the attachment is
-- deleted when an instance is terminated.
--
-- 'availability-zone' - The Availability Zone of the network interface.
--
-- 'description' - The description of the network interface.
--
-- 'group-id' - The ID of a security group associated with the network
-- interface.
--
-- 'group-name' - The name of a security group associated with the network
-- interface.
--
-- 'mac-address' - The MAC address of the network interface.
--
-- 'network-interface-id' - The ID of the network interface.
--
-- 'owner-id' - The AWS account ID of the network interface owner.
--
-- 'private-ip-address' - The private IP address or addresses of the network
-- interface.
--
-- 'private-dns-name' - The private DNS name of the network interface.
--
-- 'requester-id' - The ID of the entity that launched the instance on your
-- behalf (for example, AWS Management Console, Auto Scaling, and so on).
--
-- 'requester-managed' - Indicates whether the network interface is being
-- managed by an AWS service (for example, AWS Management Console, Auto Scaling,
-- and so on).
--
-- 'source-desk-check' - Indicates whether the network interface performs
-- source/destination checking. A value of 'true' means checking is enabled, and 'false' means checking is disabled. The value must be 'false' for the network
-- interface to perform Network Address Translation (NAT) in your VPC.
--
-- 'status' - The status of the network interface. If the network interface is
-- not attached to an instance, the status is 'available'; if a network interface
-- is attached to an instance the status is 'in-use'.
--
-- 'subnet-id' - The ID of the subnet for the network interface.
--
-- 'tag':/key/=/value/ - The key/value combination of a tag assigned to the
-- resource.
--
-- 'tag-key' - The key of a tag assigned to the resource. This filter is
-- independent of the 'tag-value' filter. For example, if you use both the filter
-- "tag-key=Purpose" and the filter "tag-value=X", you get any resources
-- assigned both the tag key Purpose (regardless of what the tag's value is),
-- and the tag value X (regardless of what the tag's key is). If you want to
-- list only resources where Purpose is X, see the 'tag':/key/=/value/ filter.
--
-- 'tag-value' - The value of a tag assigned to the resource. This filter is
-- independent of the 'tag-key' filter.
--
-- 'vpc-id' - The ID of the VPC for the network interface.
--
--
dni1Filters :: Lens' DescribeNetworkInterfaces [Filter]
dni1Filters = lens _dni1Filters (\s a -> s { _dni1Filters = a }) . _List
-- | One or more network interface IDs.
--
-- Default: Describes all your network interfaces.
dni1NetworkInterfaceIds :: Lens' DescribeNetworkInterfaces [Text]
dni1NetworkInterfaceIds =
lens _dni1NetworkInterfaceIds (\s a -> s { _dni1NetworkInterfaceIds = a })
. _List
newtype DescribeNetworkInterfacesResponse = DescribeNetworkInterfacesResponse
{ _dnirNetworkInterfaces :: List "item" NetworkInterface
} deriving (Eq, Show, Monoid, Semigroup)
instance GHC.Exts.IsList DescribeNetworkInterfacesResponse where
type Item DescribeNetworkInterfacesResponse = NetworkInterface
fromList = DescribeNetworkInterfacesResponse . GHC.Exts.fromList
toList = GHC.Exts.toList . _dnirNetworkInterfaces
-- | 'DescribeNetworkInterfacesResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dnirNetworkInterfaces' @::@ ['NetworkInterface']
--
describeNetworkInterfacesResponse :: DescribeNetworkInterfacesResponse
describeNetworkInterfacesResponse = DescribeNetworkInterfacesResponse
{ _dnirNetworkInterfaces = mempty
}
-- | Information about one or more network interfaces.
dnirNetworkInterfaces :: Lens' DescribeNetworkInterfacesResponse [NetworkInterface]
dnirNetworkInterfaces =
lens _dnirNetworkInterfaces (\s a -> s { _dnirNetworkInterfaces = a })
. _List
instance ToPath DescribeNetworkInterfaces where
toPath = const "/"
instance ToQuery DescribeNetworkInterfaces where
toQuery DescribeNetworkInterfaces{..} = mconcat
[ "dryRun" =? _dni1DryRun
, "filter" =? _dni1Filters
, "NetworkInterfaceId" =? _dni1NetworkInterfaceIds
]
instance ToHeaders DescribeNetworkInterfaces
instance AWSRequest DescribeNetworkInterfaces where
type Sv DescribeNetworkInterfaces = EC2
type Rs DescribeNetworkInterfaces = DescribeNetworkInterfacesResponse
request = post "DescribeNetworkInterfaces"
response = xmlResponse
instance FromXML DescribeNetworkInterfacesResponse where
parseXML x = DescribeNetworkInterfacesResponse
<$> x .@ "networkInterfaceSet"