{-# LANGUAGE TemplateHaskell #-} module AWS.EC2.Types.NetworkInterface ( NetworkInterface(..) , NetworkInterfaceAssociation(..) , NetworkInterfaceAttachment(..) , NetworkInterfaceParam(..) , NetworkInterfacePrivateIpAddress(..) , NetworkInterfaceStatus(..) , SecondaryPrivateIpAddressParam(..) ) where import AWS.EC2.Types.Common (Group, ResourceTag) import AWS.Lib.FromText data NetworkInterface = NetworkInterface { networkInterfaceId :: Text , networkInterfaceSubnetId :: Text , networkInterfaceVpcId :: Text , networkInterfaceAvailabilityZone :: Text , networkInterfaceDescription :: Maybe Text , networkInterfaceOwnerId :: Text , networkInterfaceRequesterId :: Maybe Text , networkInterfaceRequesterManaged :: Text , networkInterfaceStatus :: NetworkInterfaceStatus , networkInterfaceMacAddress :: Text , networkInterfacePrivateIpAddress :: IPv4 , networkInterfacePrivateDnsName :: Maybe Text , networkInterfaceSourceDestCheck :: Bool , networkInterfaceGroupSet :: [Group] , networkInterfaceAttachment :: Maybe NetworkInterfaceAttachment , networkInterfaceAssociation :: Maybe NetworkInterfaceAssociation , networkInterfaceTagSet :: [ResourceTag] , networkInterfacePrivateIpAddressesSet :: [NetworkInterfacePrivateIpAddress] } deriving (Show, Read, Eq) data NetworkInterfaceAssociation = NetworkInterfaceAssociation { networkInterfaceAssociationAttachmentId :: Maybe Text , networkInterfaceAssociationInstanceId :: Maybe Text , networkInterfaceAssociationPublicIp :: IPv4 , networkInterfaceAssociationPublicDnsName :: Maybe Text , networkInterfaceAssociationIpOwnerId :: Text , networkInterfaceAssociationId :: Maybe Text } deriving (Show, Read, Eq) data NetworkInterfaceAttachment = NetworkInterfaceAttachment { networkInterfaceAttachmentId :: Text , networkInterfaceAttachmentInstanceId :: Maybe Text , networkInterfaceAttachmentInstanceOwnerId :: Text , networkInterfaceAttachmentDeviceIndex :: Int , networkInterfaceAttachmentStatus :: Text , networkInterfaceAttachmentAttachTime :: UTCTime , networkInterfaceAttachmentDeleteOnTermination :: Bool } deriving (Show, Read, Eq) data NetworkInterfaceParam = NetworkInterfaceParamCreate { networkInterfaceParamCreateDeviceIndex :: Int , networkInterfaceParamCreateSubnetId :: Text , networkInterfaceParamCreateDescription :: Text , networkInterfaceParamCreatePrivateIpAddress :: Maybe IPv4 , networkInterfaceParamCreatePrivateIpAddresses :: SecondaryPrivateIpAddressParam , networkInterfaceParamCreateSecurityGroupIds :: [Text] , networkInterfaceParamCreateDeleteOnTermination :: Bool } | NetworkInterfaceParamAttach { networkInterfaceParamAttachInterfaceId :: Text , networkInterfaceParamAttachDeviceIndex :: Int , networkInterfaceParamAttachDeleteOnTermination :: Bool } deriving (Show, Read, Eq) data NetworkInterfacePrivateIpAddress = NetworkInterfacePrivateIpAddress { networkInterfacePrivateIpAddressPrivateIpAddress :: IPv4 , networkInterfacePrivateIpAddressDnsName :: Maybe Text , networkInterfacePrivateIpAddressPrimary :: Bool , networkInterfacePrivateIpAddressAssociation :: Maybe NetworkInterfaceAssociation } deriving (Show, Read, Eq) data NetworkInterfaceStatus = NetworkInterfaceStatusAvailable | NetworkInterfaceStatusInUse | NetworkInterfaceStatusPending deriving (Show, Read, Eq) data SecondaryPrivateIpAddressParam = SecondaryPrivateIpAddressParamNothing | SecondaryPrivateIpAddressParamCount Int | SecondaryPrivateIpAddressParamSpecified { secondaryPrivateIpAddressParamSpecifiedAddresses :: [IPv4] , secondaryPrivateIpAddressParamSpecifiedPrimary :: Maybe Int } deriving (Show, Read, Eq) deriveFromText "NetworkInterfaceStatus" ["available", "in-use", "pending"]