{-# 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.CreateDhcpOptions -- Copyright : (c) 2013-2014 Brendan Hay -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Creates a set of DHCP options for your VPC. After creating the set, you must -- associate it with the VPC, causing all existing and new instances that you -- launch in the VPC to use this set of DHCP options. The following are the -- individual DHCP options you can specify. For more information about the -- options, see . -- -- 'domain-name-servers' - The IP addresses of up to four domain name servers, -- or 'AmazonProvidedDNS'. The default DHCP option set specifies 'AmazonProvidedDNS'. If specifying more than one domain name server, specify the IP addresses in a single parameter, separated by commas. -- 'domain-name' - If you're using AmazonProvidedDNS in 'us-east-1', specify 'ec2.internal'. If you're using AmazonProvidedDNS in another region, specify 'region.compute.internal' (for example, 'ap-northeast-1.compute.internal'). Otherwise, specify a domain -- name (for example, 'MyCompany.com'). If specifying more than one domain name, -- separate them with spaces. 'ntp-servers' - The IP addresses of up to four -- Network Time Protocol (NTP) servers. 'netbios-name-servers' - The IP addresses -- of up to four NetBIOS name servers. 'netbios-node-type' - The NetBIOS node -- type (1, 2, 4, or 8). We recommend that you specify 2 (broadcast and -- multicast are not currently supported). For more information about these node -- types, see . Your VPC automatically starts out with a set of DHCP -- options that includes only a DNS server that we provide (AmazonProvidedDNS). -- If you create a set of options, and if your VPC has an Internet gateway, make -- sure to set the 'domain-name-servers' option either to 'AmazonProvidedDNS' or to -- a domain name server of your choice. For more information about DHCP options, -- see in the /Amazon Virtual Private Cloud User Guide/. -- -- module Network.AWS.EC2.CreateDhcpOptions ( -- * Request CreateDhcpOptions -- ** Request constructor , createDhcpOptions -- ** Request lenses , cdoDhcpConfigurations , cdoDryRun -- * Response , CreateDhcpOptionsResponse -- ** Response constructor , createDhcpOptionsResponse -- ** Response lenses , cdorDhcpOptions ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.EC2.Types import qualified GHC.Exts data CreateDhcpOptions = CreateDhcpOptions { _cdoDhcpConfigurations :: List "item" NewDhcpConfiguration , _cdoDryRun :: Maybe Bool } deriving (Eq, Show) -- | 'CreateDhcpOptions' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdoDhcpConfigurations' @::@ ['NewDhcpConfiguration'] -- -- * 'cdoDryRun' @::@ 'Maybe' 'Bool' -- createDhcpOptions :: CreateDhcpOptions createDhcpOptions = CreateDhcpOptions { _cdoDryRun = Nothing , _cdoDhcpConfigurations = mempty } -- | A DHCP configuration option. cdoDhcpConfigurations :: Lens' CreateDhcpOptions [NewDhcpConfiguration] cdoDhcpConfigurations = lens _cdoDhcpConfigurations (\s a -> s { _cdoDhcpConfigurations = a }) . _List cdoDryRun :: Lens' CreateDhcpOptions (Maybe Bool) cdoDryRun = lens _cdoDryRun (\s a -> s { _cdoDryRun = a }) newtype CreateDhcpOptionsResponse = CreateDhcpOptionsResponse { _cdorDhcpOptions :: Maybe DhcpOptions } deriving (Eq, Show) -- | 'CreateDhcpOptionsResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cdorDhcpOptions' @::@ 'Maybe' 'DhcpOptions' -- createDhcpOptionsResponse :: CreateDhcpOptionsResponse createDhcpOptionsResponse = CreateDhcpOptionsResponse { _cdorDhcpOptions = Nothing } -- | A set of DHCP options. cdorDhcpOptions :: Lens' CreateDhcpOptionsResponse (Maybe DhcpOptions) cdorDhcpOptions = lens _cdorDhcpOptions (\s a -> s { _cdorDhcpOptions = a }) instance ToPath CreateDhcpOptions where toPath = const "/" instance ToQuery CreateDhcpOptions where toQuery CreateDhcpOptions{..} = mconcat [ "dhcpConfiguration" `toQueryList` _cdoDhcpConfigurations , "dryRun" =? _cdoDryRun ] instance ToHeaders CreateDhcpOptions instance AWSRequest CreateDhcpOptions where type Sv CreateDhcpOptions = EC2 type Rs CreateDhcpOptions = CreateDhcpOptionsResponse request = post "CreateDhcpOptions" response = xmlResponse instance FromXML CreateDhcpOptionsResponse where parseXML x = CreateDhcpOptionsResponse <$> x .@? "dhcpOptions"