/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace EC2 { namespace Model { /** */ class CreateIpamPoolRequest : public EC2Request { public: AWS_EC2_API CreateIpamPoolRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateIpamPool"; } AWS_EC2_API Aws::String SerializePayload() const override; protected: AWS_EC2_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override; public: /** *

A check for whether you have the required permissions for the action without * actually making the request and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline bool GetDryRun() const{ return m_dryRun; } /** *

A check for whether you have the required permissions for the action without * actually making the request and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline bool DryRunHasBeenSet() const { return m_dryRunHasBeenSet; } /** *

A check for whether you have the required permissions for the action without * actually making the request and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline void SetDryRun(bool value) { m_dryRunHasBeenSet = true; m_dryRun = value; } /** *

A check for whether you have the required permissions for the action without * actually making the request and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline CreateIpamPoolRequest& WithDryRun(bool value) { SetDryRun(value); return *this;} /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline const Aws::String& GetIpamScopeId() const{ return m_ipamScopeId; } /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline bool IpamScopeIdHasBeenSet() const { return m_ipamScopeIdHasBeenSet; } /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline void SetIpamScopeId(const Aws::String& value) { m_ipamScopeIdHasBeenSet = true; m_ipamScopeId = value; } /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline void SetIpamScopeId(Aws::String&& value) { m_ipamScopeIdHasBeenSet = true; m_ipamScopeId = std::move(value); } /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline void SetIpamScopeId(const char* value) { m_ipamScopeIdHasBeenSet = true; m_ipamScopeId.assign(value); } /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline CreateIpamPoolRequest& WithIpamScopeId(const Aws::String& value) { SetIpamScopeId(value); return *this;} /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline CreateIpamPoolRequest& WithIpamScopeId(Aws::String&& value) { SetIpamScopeId(std::move(value)); return *this;} /** *

The ID of the scope in which you would like to create the IPAM pool.

*/ inline CreateIpamPoolRequest& WithIpamScopeId(const char* value) { SetIpamScopeId(value); return *this;} /** *

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.

*/ inline const Aws::String& GetLocale() const{ return m_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.

*/ inline bool LocaleHasBeenSet() const { return m_localeHasBeenSet; } /** *

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.

*/ inline void SetLocale(const Aws::String& value) { m_localeHasBeenSet = true; m_locale = value; } /** *

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.

*/ inline void SetLocale(Aws::String&& value) { m_localeHasBeenSet = true; m_locale = std::move(value); } /** *

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.

*/ inline void SetLocale(const char* value) { m_localeHasBeenSet = true; m_locale.assign(value); } /** *

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.

*/ inline CreateIpamPoolRequest& WithLocale(const Aws::String& value) { SetLocale(value); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithLocale(Aws::String&& value) { SetLocale(std::move(value)); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithLocale(const char* value) { SetLocale(value); return *this;} /** *

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.

*/ inline const Aws::String& GetSourceIpamPoolId() const{ return m_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.

*/ inline bool SourceIpamPoolIdHasBeenSet() const { return m_sourceIpamPoolIdHasBeenSet; } /** *

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.

*/ inline void SetSourceIpamPoolId(const Aws::String& value) { m_sourceIpamPoolIdHasBeenSet = true; m_sourceIpamPoolId = value; } /** *

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.

*/ inline void SetSourceIpamPoolId(Aws::String&& value) { m_sourceIpamPoolIdHasBeenSet = true; m_sourceIpamPoolId = std::move(value); } /** *

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.

*/ inline void SetSourceIpamPoolId(const char* value) { m_sourceIpamPoolIdHasBeenSet = true; m_sourceIpamPoolId.assign(value); } /** *

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.

*/ inline CreateIpamPoolRequest& WithSourceIpamPoolId(const Aws::String& value) { SetSourceIpamPoolId(value); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithSourceIpamPoolId(Aws::String&& value) { SetSourceIpamPoolId(std::move(value)); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithSourceIpamPoolId(const char* value) { SetSourceIpamPoolId(value); return *this;} /** *

A description for the IPAM pool.

*/ inline const Aws::String& GetDescription() const{ return m_description; } /** *

A description for the IPAM pool.

*/ inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; } /** *

A description for the IPAM pool.

*/ inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; } /** *

A description for the IPAM pool.

*/ inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); } /** *

A description for the IPAM pool.

*/ inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); } /** *

A description for the IPAM pool.

*/ inline CreateIpamPoolRequest& WithDescription(const Aws::String& value) { SetDescription(value); return *this;} /** *

A description for the IPAM pool.

*/ inline CreateIpamPoolRequest& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;} /** *

A description for the IPAM pool.

*/ inline CreateIpamPoolRequest& WithDescription(const char* value) { SetDescription(value); return *this;} /** *

The IP protocol assigned to this IPAM pool. You must choose either IPv4 or * IPv6 protocol for a pool.

*/ inline const AddressFamily& GetAddressFamily() const{ return m_addressFamily; } /** *

The IP protocol assigned to this IPAM pool. You must choose either IPv4 or * IPv6 protocol for a pool.

*/ inline bool AddressFamilyHasBeenSet() const { return m_addressFamilyHasBeenSet; } /** *

The IP protocol assigned to this IPAM pool. You must choose either IPv4 or * IPv6 protocol for a pool.

*/ inline void SetAddressFamily(const AddressFamily& value) { m_addressFamilyHasBeenSet = true; m_addressFamily = value; } /** *

The IP protocol assigned to this IPAM pool. You must choose either IPv4 or * IPv6 protocol for a pool.

*/ inline void SetAddressFamily(AddressFamily&& value) { m_addressFamilyHasBeenSet = true; m_addressFamily = std::move(value); } /** *

The IP protocol assigned to this IPAM pool. You must choose either IPv4 or * IPv6 protocol for a pool.

*/ inline CreateIpamPoolRequest& WithAddressFamily(const AddressFamily& value) { SetAddressFamily(value); return *this;} /** *

The IP protocol assigned to this IPAM pool. You must choose either IPv4 or * IPv6 protocol for a pool.

*/ inline CreateIpamPoolRequest& WithAddressFamily(AddressFamily&& value) { SetAddressFamily(std::move(value)); return *this;} /** *

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.

*/ inline bool GetAutoImport() const{ return m_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.

*/ inline bool AutoImportHasBeenSet() const { return m_autoImportHasBeenSet; } /** *

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.

*/ inline void SetAutoImport(bool value) { m_autoImportHasBeenSet = true; m_autoImport = value; } /** *

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.

*/ inline CreateIpamPoolRequest& WithAutoImport(bool value) { SetAutoImport(value); return *this;} /** *

Determines if the pool is publicly advertisable. This option is not available * for pools with AddressFamily set to ipv4.

*/ inline bool GetPubliclyAdvertisable() const{ return m_publiclyAdvertisable; } /** *

Determines if the pool is publicly advertisable. This option is not available * for pools with AddressFamily set to ipv4.

*/ inline bool PubliclyAdvertisableHasBeenSet() const { return m_publiclyAdvertisableHasBeenSet; } /** *

Determines if the pool is publicly advertisable. This option is not available * for pools with AddressFamily set to ipv4.

*/ inline void SetPubliclyAdvertisable(bool value) { m_publiclyAdvertisableHasBeenSet = true; m_publiclyAdvertisable = value; } /** *

Determines if the pool is publicly advertisable. This option is not available * for pools with AddressFamily set to ipv4.

*/ inline CreateIpamPoolRequest& WithPubliclyAdvertisable(bool value) { SetPubliclyAdvertisable(value); return *this;} /** *

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.

*/ inline int GetAllocationMinNetmaskLength() const{ return m_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.

*/ inline bool AllocationMinNetmaskLengthHasBeenSet() const { return m_allocationMinNetmaskLengthHasBeenSet; } /** *

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.

*/ inline void SetAllocationMinNetmaskLength(int value) { m_allocationMinNetmaskLengthHasBeenSet = true; m_allocationMinNetmaskLength = value; } /** *

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.

*/ inline CreateIpamPoolRequest& WithAllocationMinNetmaskLength(int value) { SetAllocationMinNetmaskLength(value); return *this;} /** *

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.

*/ inline int GetAllocationMaxNetmaskLength() const{ return m_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.

*/ inline bool AllocationMaxNetmaskLengthHasBeenSet() const { return m_allocationMaxNetmaskLengthHasBeenSet; } /** *

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.

*/ inline void SetAllocationMaxNetmaskLength(int value) { m_allocationMaxNetmaskLengthHasBeenSet = true; m_allocationMaxNetmaskLength = value; } /** *

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.

*/ inline CreateIpamPoolRequest& WithAllocationMaxNetmaskLength(int value) { SetAllocationMaxNetmaskLength(value); return *this;} /** *

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.

*/ inline int GetAllocationDefaultNetmaskLength() const{ return m_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.

*/ inline bool AllocationDefaultNetmaskLengthHasBeenSet() const { return m_allocationDefaultNetmaskLengthHasBeenSet; } /** *

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.

*/ inline void SetAllocationDefaultNetmaskLength(int value) { m_allocationDefaultNetmaskLengthHasBeenSet = true; m_allocationDefaultNetmaskLength = value; } /** *

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.

*/ inline CreateIpamPoolRequest& WithAllocationDefaultNetmaskLength(int value) { SetAllocationDefaultNetmaskLength(value); return *this;} /** *

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.

*/ inline const Aws::Vector& GetAllocationResourceTags() const{ return m_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.

*/ inline bool AllocationResourceTagsHasBeenSet() const { return m_allocationResourceTagsHasBeenSet; } /** *

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.

*/ inline void SetAllocationResourceTags(const Aws::Vector& value) { m_allocationResourceTagsHasBeenSet = true; m_allocationResourceTags = value; } /** *

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.

*/ inline void SetAllocationResourceTags(Aws::Vector&& value) { m_allocationResourceTagsHasBeenSet = true; m_allocationResourceTags = std::move(value); } /** *

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.

*/ inline CreateIpamPoolRequest& WithAllocationResourceTags(const Aws::Vector& value) { SetAllocationResourceTags(value); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithAllocationResourceTags(Aws::Vector&& value) { SetAllocationResourceTags(std::move(value)); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& AddAllocationResourceTags(const RequestIpamResourceTag& value) { m_allocationResourceTagsHasBeenSet = true; m_allocationResourceTags.push_back(value); return *this; } /** *

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.

*/ inline CreateIpamPoolRequest& AddAllocationResourceTags(RequestIpamResourceTag&& value) { m_allocationResourceTagsHasBeenSet = true; m_allocationResourceTags.push_back(std::move(value)); return *this; } /** *

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.

*/ inline const Aws::Vector& GetTagSpecifications() const{ return m_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.

*/ inline bool TagSpecificationsHasBeenSet() const { return m_tagSpecificationsHasBeenSet; } /** *

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.

*/ inline void SetTagSpecifications(const Aws::Vector& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications = value; } /** *

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.

*/ inline void SetTagSpecifications(Aws::Vector&& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications = std::move(value); } /** *

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.

*/ inline CreateIpamPoolRequest& WithTagSpecifications(const Aws::Vector& value) { SetTagSpecifications(value); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithTagSpecifications(Aws::Vector&& value) { SetTagSpecifications(std::move(value)); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& AddTagSpecifications(const TagSpecification& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications.push_back(value); return *this; } /** *

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.

*/ inline CreateIpamPoolRequest& AddTagSpecifications(TagSpecification&& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications.push_back(std::move(value)); return *this; } /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline const Aws::String& GetClientToken() const{ return m_clientToken; } /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline CreateIpamPoolRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline CreateIpamPoolRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} /** *

A unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see Ensuring * Idempotency.

*/ inline CreateIpamPoolRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} /** *

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.

*/ inline const IpamPoolAwsService& GetAwsService() const{ return m_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.

*/ inline bool AwsServiceHasBeenSet() const { return m_awsServiceHasBeenSet; } /** *

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.

*/ inline void SetAwsService(const IpamPoolAwsService& value) { m_awsServiceHasBeenSet = true; m_awsService = value; } /** *

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.

*/ inline void SetAwsService(IpamPoolAwsService&& value) { m_awsServiceHasBeenSet = true; m_awsService = std::move(value); } /** *

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.

*/ inline CreateIpamPoolRequest& WithAwsService(const IpamPoolAwsService& value) { SetAwsService(value); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithAwsService(IpamPoolAwsService&& value) { SetAwsService(std::move(value)); return *this;} /** *

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.

*/ inline const IpamPoolPublicIpSource& GetPublicIpSource() const{ return m_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.

*/ inline bool PublicIpSourceHasBeenSet() const { return m_publicIpSourceHasBeenSet; } /** *

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.

*/ inline void SetPublicIpSource(const IpamPoolPublicIpSource& value) { m_publicIpSourceHasBeenSet = true; m_publicIpSource = value; } /** *

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.

*/ inline void SetPublicIpSource(IpamPoolPublicIpSource&& value) { m_publicIpSourceHasBeenSet = true; m_publicIpSource = std::move(value); } /** *

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.

*/ inline CreateIpamPoolRequest& WithPublicIpSource(const IpamPoolPublicIpSource& value) { SetPublicIpSource(value); return *this;} /** *

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.

*/ inline CreateIpamPoolRequest& WithPublicIpSource(IpamPoolPublicIpSource&& value) { SetPublicIpSource(std::move(value)); return *this;} private: bool m_dryRun; bool m_dryRunHasBeenSet = false; Aws::String m_ipamScopeId; bool m_ipamScopeIdHasBeenSet = false; Aws::String m_locale; bool m_localeHasBeenSet = false; Aws::String m_sourceIpamPoolId; bool m_sourceIpamPoolIdHasBeenSet = false; Aws::String m_description; bool m_descriptionHasBeenSet = false; AddressFamily m_addressFamily; bool m_addressFamilyHasBeenSet = false; bool m_autoImport; bool m_autoImportHasBeenSet = false; bool m_publiclyAdvertisable; bool m_publiclyAdvertisableHasBeenSet = false; int m_allocationMinNetmaskLength; bool m_allocationMinNetmaskLengthHasBeenSet = false; int m_allocationMaxNetmaskLength; bool m_allocationMaxNetmaskLengthHasBeenSet = false; int m_allocationDefaultNetmaskLength; bool m_allocationDefaultNetmaskLengthHasBeenSet = false; Aws::Vector m_allocationResourceTags; bool m_allocationResourceTagsHasBeenSet = false; Aws::Vector m_tagSpecifications; bool m_tagSpecificationsHasBeenSet = false; Aws::String m_clientToken; bool m_clientTokenHasBeenSet = false; IpamPoolAwsService m_awsService; bool m_awsServiceHasBeenSet = false; IpamPoolPublicIpSource m_publicIpSource; bool m_publicIpSourceHasBeenSet = false; }; } // namespace Model } // namespace EC2 } // namespace Aws