/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the ec2-2016-11-15.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.EC2.Model
{
///
/// Container for the parameters to the CreateIpamPool operation.
/// Create an IP address pool for Amazon VPC IP Address Manager (IPAM). In IPAM, a pool
/// is a collection of contiguous IP addresses CIDRs. Pools enable you to organize your
/// IP addresses according to your routing and security needs. For example, if you have
/// separate routing and security needs for development and production applications, you
/// can create a pool for each.
///
///
///
/// For more information, see Create
/// a top-level pool in the Amazon VPC IPAM User Guide.
///
///
public partial class CreateIpamPoolRequest : AmazonEC2Request
{
private AddressFamily _addressFamily;
private int? _allocationDefaultNetmaskLength;
private int? _allocationMaxNetmaskLength;
private int? _allocationMinNetmaskLength;
private List _allocationResourceTags = new List();
private bool? _autoImport;
private IpamPoolAwsService _awsService;
private string _clientToken;
private string _description;
private string _ipamScopeId;
private string _locale;
private IpamPoolPublicIpSource _publicIpSource;
private bool? _publiclyAdvertisable;
private string _sourceIpamPoolId;
private List _tagSpecifications = new List();
///
/// Gets and sets the property AddressFamily.
///
/// The IP protocol assigned to this IPAM pool. You must choose either IPv4 or IPv6 protocol
/// for a pool.
///
///
[AWSProperty(Required=true)]
public AddressFamily AddressFamily
{
get { return this._addressFamily; }
set { this._addressFamily = value; }
}
// Check to see if AddressFamily property is set
internal bool IsSetAddressFamily()
{
return this._addressFamily != null;
}
///
/// Gets and sets the property AllocationDefaultNetmaskLength.
///
/// The default netmask length for allocations added to this pool. If, for example, the
/// CIDR assigned to this pool is 10.0.0.0/8 and you enter 16 here, new allocations will
/// default to 10.0.0.0/16.
///
///
[AWSProperty(Min=0, Max=128)]
public int AllocationDefaultNetmaskLength
{
get { return this._allocationDefaultNetmaskLength.GetValueOrDefault(); }
set { this._allocationDefaultNetmaskLength = value; }
}
// Check to see if AllocationDefaultNetmaskLength property is set
internal bool IsSetAllocationDefaultNetmaskLength()
{
return this._allocationDefaultNetmaskLength.HasValue;
}
///
/// Gets and sets the property AllocationMaxNetmaskLength.
///
/// The maximum netmask length possible for CIDR allocations in this IPAM pool to be compliant.
/// The maximum netmask length must be greater than the minimum netmask length. Possible
/// netmask lengths for IPv4 addresses are 0 - 32. Possible netmask lengths for IPv6 addresses
/// are 0 - 128.
///
///
[AWSProperty(Min=0, Max=128)]
public int AllocationMaxNetmaskLength
{
get { return this._allocationMaxNetmaskLength.GetValueOrDefault(); }
set { this._allocationMaxNetmaskLength = value; }
}
// Check to see if AllocationMaxNetmaskLength property is set
internal bool IsSetAllocationMaxNetmaskLength()
{
return this._allocationMaxNetmaskLength.HasValue;
}
///
/// Gets and sets the property AllocationMinNetmaskLength.
///
/// The minimum netmask length required for CIDR allocations in this IPAM pool to be compliant.
/// The minimum netmask length must be less than the maximum netmask length. Possible
/// netmask lengths for IPv4 addresses are 0 - 32. Possible netmask lengths for IPv6 addresses
/// are 0 - 128.
///
///
[AWSProperty(Min=0, Max=128)]
public int AllocationMinNetmaskLength
{
get { return this._allocationMinNetmaskLength.GetValueOrDefault(); }
set { this._allocationMinNetmaskLength = value; }
}
// Check to see if AllocationMinNetmaskLength property is set
internal bool IsSetAllocationMinNetmaskLength()
{
return this._allocationMinNetmaskLength.HasValue;
}
///
/// Gets and sets the property AllocationResourceTags.
///
/// Tags that are required for resources that use CIDRs from this IPAM pool. Resources
/// that do not have these tags will not be allowed to allocate space from the pool. If
/// the resources have their tags changed after they have allocated space or if the allocation
/// tagging requirements are changed on the pool, the resource may be marked as noncompliant.
///
///
public List AllocationResourceTags
{
get { return this._allocationResourceTags; }
set { this._allocationResourceTags = value; }
}
// Check to see if AllocationResourceTags property is set
internal bool IsSetAllocationResourceTags()
{
return this._allocationResourceTags != null && this._allocationResourceTags.Count > 0;
}
///
/// Gets and sets the property AutoImport.
///
/// If selected, IPAM will continuously look for resources within the CIDR range of this
/// pool and automatically import them as allocations into your IPAM. The CIDRs that will
/// be allocated for these resources must not already be allocated to other resources
/// in order for the import to succeed. IPAM will import a CIDR regardless of its compliance
/// with the pool's allocation rules, so a resource might be imported and subsequently
/// marked as noncompliant. If IPAM discovers multiple CIDRs that overlap, IPAM will import
/// the largest CIDR only. If IPAM discovers multiple CIDRs with matching CIDRs, IPAM
/// will randomly import one of them only.
///
///
///
/// A locale must be set on the pool for this feature to work.
///
///
public bool AutoImport
{
get { return this._autoImport.GetValueOrDefault(); }
set { this._autoImport = value; }
}
// Check to see if AutoImport property is set
internal bool IsSetAutoImport()
{
return this._autoImport.HasValue;
}
///
/// Gets and sets the property AwsService.
///
/// Limits which service in Amazon Web Services that the pool can be used in. "ec2", for
/// example, allows users to use space for Elastic IP addresses and VPCs.
///
///
public IpamPoolAwsService AwsService
{
get { return this._awsService; }
set { this._awsService = value; }
}
// Check to see if AwsService property is set
internal bool IsSetAwsService()
{
return this._awsService != null;
}
///
/// Gets and sets the property ClientToken.
///
/// A unique, case-sensitive identifier that you provide to ensure the idempotency of
/// the request. For more information, see Ensuring
/// Idempotency.
///
///
public string ClientToken
{
get { return this._clientToken; }
set { this._clientToken = value; }
}
// Check to see if ClientToken property is set
internal bool IsSetClientToken()
{
return this._clientToken != null;
}
///
/// Gets and sets the property Description.
///
/// A description for the IPAM pool.
///
///
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property IpamScopeId.
///
/// The ID of the scope in which you would like to create the IPAM pool.
///
///
[AWSProperty(Required=true)]
public string IpamScopeId
{
get { return this._ipamScopeId; }
set { this._ipamScopeId = value; }
}
// Check to see if IpamScopeId property is set
internal bool IsSetIpamScopeId()
{
return this._ipamScopeId != null;
}
///
/// Gets and sets the property Locale.
///
/// In IPAM, the locale is the Amazon Web Services Region where you want to make an IPAM
/// pool available for allocations. Only resources in the same Region as the locale of
/// the pool can get IP address allocations from the pool. You can only allocate a CIDR
/// for a VPC, for example, from an IPAM pool that shares a locale with the VPC’s Region.
/// Note that once you choose a Locale for a pool, you cannot modify it. If you do not
/// choose a locale, resources in Regions others than the IPAM's home region cannot use
/// CIDRs from this pool.
///
///
///
/// Possible values: Any Amazon Web Services Region, such as us-east-1.
///
///
public string Locale
{
get { return this._locale; }
set { this._locale = value; }
}
// Check to see if Locale property is set
internal bool IsSetLocale()
{
return this._locale != null;
}
///
/// Gets and sets the property PublicIpSource.
///
/// The IP address source for pools in the public scope. Only used for provisioning IP
/// address CIDRs to pools in the public scope. Default is byoip
. For more
/// information, see Create
/// IPv6 pools in the Amazon VPC IPAM User Guide. By default, you can add only
/// one Amazon-provided IPv6 CIDR block to a top-level IPv6 pool if PublicIpSource is
/// amazon
. For information on increasing the default limit, see
/// Quotas for your IPAM in the Amazon VPC IPAM User Guide.
///
///
public IpamPoolPublicIpSource PublicIpSource
{
get { return this._publicIpSource; }
set { this._publicIpSource = value; }
}
// Check to see if PublicIpSource property is set
internal bool IsSetPublicIpSource()
{
return this._publicIpSource != null;
}
///
/// Gets and sets the property PubliclyAdvertisable.
///
/// Determines if the pool is publicly advertisable. This option is not available for
/// pools with AddressFamily set to ipv4
.
///
///
public bool PubliclyAdvertisable
{
get { return this._publiclyAdvertisable.GetValueOrDefault(); }
set { this._publiclyAdvertisable = value; }
}
// Check to see if PubliclyAdvertisable property is set
internal bool IsSetPubliclyAdvertisable()
{
return this._publiclyAdvertisable.HasValue;
}
///
/// Gets and sets the property SourceIpamPoolId.
///
/// The ID of the source IPAM pool. Use this option to create a pool within an existing
/// pool. Note that the CIDR you provision for the pool within the source pool must be
/// available in the source pool's CIDR range.
///
///
public string SourceIpamPoolId
{
get { return this._sourceIpamPoolId; }
set { this._sourceIpamPoolId = value; }
}
// Check to see if SourceIpamPoolId property is set
internal bool IsSetSourceIpamPoolId()
{
return this._sourceIpamPoolId != null;
}
///
/// Gets and sets the property TagSpecifications.
///
/// The key/value combination of a tag assigned to the resource. Use the tag key in the
/// filter name and the tag value as the filter value. For example, to find all resources
/// that have a tag with the key Owner
and the value TeamA
,
/// specify tag:Owner
for the filter name and TeamA
for the
/// filter value.
///
///
public List TagSpecifications
{
get { return this._tagSpecifications; }
set { this._tagSpecifications = value; }
}
// Check to see if TagSpecifications property is set
internal bool IsSetTagSpecifications()
{
return this._tagSpecifications != null && this._tagSpecifications.Count > 0;
}
}
}