{-# LANGUAGE TemplateHaskell #-} module AWS.EC2.Types.Address ( Address(..) , AddressDomain(..) , AllocateAddress(..) , AssociateAddressRequest(..) , DisassociateAddressRequest(..) ) where import AWS.Lib.FromText data Address = Address { addressPublicIp :: IPv4 , addressAllocationId :: Maybe Text , addressDomain :: AddressDomain , addressInstanceId :: Maybe Text , addressAssociationId :: Maybe Text , addressNetworkInterfaceId :: Maybe Text , addressNetworkInterfaceOwnerId :: Maybe Text , addressPrivateIpAddress :: Maybe IPv4 } deriving (Show, Read, Eq) data AddressDomain = AddressDomainStandard | AddressDomainVPC deriving (Show, Read, Eq) instance FromText AddressDomain where fromMaybeText _name Nothing = return AddressDomainStandard fromMaybeText _name (Just t) | t == "standard" = return AddressDomainStandard | t == "vpc" = return AddressDomainVPC | otherwise = monadThrow $ FromTextError t data AllocateAddress = AllocateAddress { allocateAddressPublicIp :: IPv4 , allocateAddressDomain :: AddressDomain , allocateAddressAllocationId :: Maybe Text } deriving (Show, Read, Eq) data AssociateAddressRequest = AssociateAddressRequestEc2 { associateAddressRequestEc2PublicIp :: IPv4 , associateAddressRequestEc2InstanceId :: Text } | AssociateAddressRequestVpc { associateAddressRequestVpcAllocationId :: Text , associateAddressRequestVpcInstanceId :: Maybe Text , associateAddressRequestVpcNetworkInterfaceId :: Maybe Text , associateAddressRequestVpcPrivateIpAddress :: Maybe IPv4 , associateAddressRequestVpcAllowReassociation :: Maybe Bool } deriving (Show, Read, Eq) data DisassociateAddressRequest = DisassociateAddressRequestEc2 IPv4 -- ^ PublicIp for EC2 | DisassociateAddressRequestVpc IPv4 -- ^ AssociationId for VPC deriving (Show, Read, Eq)