/** * 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 #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace EC2 { namespace Model { /** *

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.

See Also:

AWS API * Reference

*/ class IpamPool { public: AWS_EC2_API IpamPool(); AWS_EC2_API IpamPool(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_EC2_API IpamPool& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_EC2_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_EC2_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline const Aws::String& GetOwnerId() const{ return m_ownerId; } /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline bool OwnerIdHasBeenSet() const { return m_ownerIdHasBeenSet; } /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline void SetOwnerId(const Aws::String& value) { m_ownerIdHasBeenSet = true; m_ownerId = value; } /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline void SetOwnerId(Aws::String&& value) { m_ownerIdHasBeenSet = true; m_ownerId = std::move(value); } /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline void SetOwnerId(const char* value) { m_ownerIdHasBeenSet = true; m_ownerId.assign(value); } /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline IpamPool& WithOwnerId(const Aws::String& value) { SetOwnerId(value); return *this;} /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline IpamPool& WithOwnerId(Aws::String&& value) { SetOwnerId(std::move(value)); return *this;} /** *

The Amazon Web Services account ID of the owner of the IPAM pool.

*/ inline IpamPool& WithOwnerId(const char* value) { SetOwnerId(value); return *this;} /** *

The ID of the IPAM pool.

*/ inline const Aws::String& GetIpamPoolId() const{ return m_ipamPoolId; } /** *

The ID of the IPAM pool.

*/ inline bool IpamPoolIdHasBeenSet() const { return m_ipamPoolIdHasBeenSet; } /** *

The ID of the IPAM pool.

*/ inline void SetIpamPoolId(const Aws::String& value) { m_ipamPoolIdHasBeenSet = true; m_ipamPoolId = value; } /** *

The ID of the IPAM pool.

*/ inline void SetIpamPoolId(Aws::String&& value) { m_ipamPoolIdHasBeenSet = true; m_ipamPoolId = std::move(value); } /** *

The ID of the IPAM pool.

*/ inline void SetIpamPoolId(const char* value) { m_ipamPoolIdHasBeenSet = true; m_ipamPoolId.assign(value); } /** *

The ID of the IPAM pool.

*/ inline IpamPool& WithIpamPoolId(const Aws::String& value) { SetIpamPoolId(value); return *this;} /** *

The ID of the IPAM pool.

*/ inline IpamPool& WithIpamPoolId(Aws::String&& value) { SetIpamPoolId(std::move(value)); return *this;} /** *

The ID of the IPAM pool.

*/ inline IpamPool& WithIpamPoolId(const char* value) { SetIpamPoolId(value); return *this;} /** *

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

*/ inline const Aws::String& GetSourceIpamPoolId() const{ return m_sourceIpamPoolId; } /** *

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The ID of the source IPAM pool. You can use this option to create an IPAM * pool within an existing source pool.

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

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline const Aws::String& GetIpamPoolArn() const{ return m_ipamPoolArn; } /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline bool IpamPoolArnHasBeenSet() const { return m_ipamPoolArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline void SetIpamPoolArn(const Aws::String& value) { m_ipamPoolArnHasBeenSet = true; m_ipamPoolArn = value; } /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline void SetIpamPoolArn(Aws::String&& value) { m_ipamPoolArnHasBeenSet = true; m_ipamPoolArn = std::move(value); } /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline void SetIpamPoolArn(const char* value) { m_ipamPoolArnHasBeenSet = true; m_ipamPoolArn.assign(value); } /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline IpamPool& WithIpamPoolArn(const Aws::String& value) { SetIpamPoolArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline IpamPool& WithIpamPoolArn(Aws::String&& value) { SetIpamPoolArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the IPAM pool.

*/ inline IpamPool& WithIpamPoolArn(const char* value) { SetIpamPoolArn(value); return *this;} /** *

The ARN of the scope of the IPAM pool.

*/ inline const Aws::String& GetIpamScopeArn() const{ return m_ipamScopeArn; } /** *

The ARN of the scope of the IPAM pool.

*/ inline bool IpamScopeArnHasBeenSet() const { return m_ipamScopeArnHasBeenSet; } /** *

The ARN of the scope of the IPAM pool.

*/ inline void SetIpamScopeArn(const Aws::String& value) { m_ipamScopeArnHasBeenSet = true; m_ipamScopeArn = value; } /** *

The ARN of the scope of the IPAM pool.

*/ inline void SetIpamScopeArn(Aws::String&& value) { m_ipamScopeArnHasBeenSet = true; m_ipamScopeArn = std::move(value); } /** *

The ARN of the scope of the IPAM pool.

*/ inline void SetIpamScopeArn(const char* value) { m_ipamScopeArnHasBeenSet = true; m_ipamScopeArn.assign(value); } /** *

The ARN of the scope of the IPAM pool.

*/ inline IpamPool& WithIpamScopeArn(const Aws::String& value) { SetIpamScopeArn(value); return *this;} /** *

The ARN of the scope of the IPAM pool.

*/ inline IpamPool& WithIpamScopeArn(Aws::String&& value) { SetIpamScopeArn(std::move(value)); return *this;} /** *

The ARN of the scope of the IPAM pool.

*/ inline IpamPool& WithIpamScopeArn(const char* value) { SetIpamScopeArn(value); return *this;} /** *

In IPAM, a scope is the highest-level container within IPAM. An IPAM contains * two default scopes. Each scope represents the IP space for a single network. The * private scope is intended for all private IP address space. The public scope is * intended for all public IP address space. Scopes enable you to reuse IP * addresses across multiple unconnected networks without causing IP address * overlap or conflict.

*/ inline const IpamScopeType& GetIpamScopeType() const{ return m_ipamScopeType; } /** *

In IPAM, a scope is the highest-level container within IPAM. An IPAM contains * two default scopes. Each scope represents the IP space for a single network. The * private scope is intended for all private IP address space. The public scope is * intended for all public IP address space. Scopes enable you to reuse IP * addresses across multiple unconnected networks without causing IP address * overlap or conflict.

*/ inline bool IpamScopeTypeHasBeenSet() const { return m_ipamScopeTypeHasBeenSet; } /** *

In IPAM, a scope is the highest-level container within IPAM. An IPAM contains * two default scopes. Each scope represents the IP space for a single network. The * private scope is intended for all private IP address space. The public scope is * intended for all public IP address space. Scopes enable you to reuse IP * addresses across multiple unconnected networks without causing IP address * overlap or conflict.

*/ inline void SetIpamScopeType(const IpamScopeType& value) { m_ipamScopeTypeHasBeenSet = true; m_ipamScopeType = value; } /** *

In IPAM, a scope is the highest-level container within IPAM. An IPAM contains * two default scopes. Each scope represents the IP space for a single network. The * private scope is intended for all private IP address space. The public scope is * intended for all public IP address space. Scopes enable you to reuse IP * addresses across multiple unconnected networks without causing IP address * overlap or conflict.

*/ inline void SetIpamScopeType(IpamScopeType&& value) { m_ipamScopeTypeHasBeenSet = true; m_ipamScopeType = std::move(value); } /** *

In IPAM, a scope is the highest-level container within IPAM. An IPAM contains * two default scopes. Each scope represents the IP space for a single network. The * private scope is intended for all private IP address space. The public scope is * intended for all public IP address space. Scopes enable you to reuse IP * addresses across multiple unconnected networks without causing IP address * overlap or conflict.

*/ inline IpamPool& WithIpamScopeType(const IpamScopeType& value) { SetIpamScopeType(value); return *this;} /** *

In IPAM, a scope is the highest-level container within IPAM. An IPAM contains * two default scopes. Each scope represents the IP space for a single network. The * private scope is intended for all private IP address space. The public scope is * intended for all public IP address space. Scopes enable you to reuse IP * addresses across multiple unconnected networks without causing IP address * overlap or conflict.

*/ inline IpamPool& WithIpamScopeType(IpamScopeType&& value) { SetIpamScopeType(std::move(value)); return *this;} /** *

The ARN of the IPAM.

*/ inline const Aws::String& GetIpamArn() const{ return m_ipamArn; } /** *

The ARN of the IPAM.

*/ inline bool IpamArnHasBeenSet() const { return m_ipamArnHasBeenSet; } /** *

The ARN of the IPAM.

*/ inline void SetIpamArn(const Aws::String& value) { m_ipamArnHasBeenSet = true; m_ipamArn = value; } /** *

The ARN of the IPAM.

*/ inline void SetIpamArn(Aws::String&& value) { m_ipamArnHasBeenSet = true; m_ipamArn = std::move(value); } /** *

The ARN of the IPAM.

*/ inline void SetIpamArn(const char* value) { m_ipamArnHasBeenSet = true; m_ipamArn.assign(value); } /** *

The ARN of the IPAM.

*/ inline IpamPool& WithIpamArn(const Aws::String& value) { SetIpamArn(value); return *this;} /** *

The ARN of the IPAM.

*/ inline IpamPool& WithIpamArn(Aws::String&& value) { SetIpamArn(std::move(value)); return *this;} /** *

The ARN of the IPAM.

*/ inline IpamPool& WithIpamArn(const char* value) { SetIpamArn(value); return *this;} /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline const Aws::String& GetIpamRegion() const{ return m_ipamRegion; } /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline bool IpamRegionHasBeenSet() const { return m_ipamRegionHasBeenSet; } /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline void SetIpamRegion(const Aws::String& value) { m_ipamRegionHasBeenSet = true; m_ipamRegion = value; } /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline void SetIpamRegion(Aws::String&& value) { m_ipamRegionHasBeenSet = true; m_ipamRegion = std::move(value); } /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline void SetIpamRegion(const char* value) { m_ipamRegionHasBeenSet = true; m_ipamRegion.assign(value); } /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline IpamPool& WithIpamRegion(const Aws::String& value) { SetIpamRegion(value); return *this;} /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline IpamPool& WithIpamRegion(Aws::String&& value) { SetIpamRegion(std::move(value)); return *this;} /** *

The Amazon Web Services Region of the IPAM pool.

*/ inline IpamPool& WithIpamRegion(const char* value) { SetIpamRegion(value); return *this;} /** *

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

*/ inline const Aws::String& GetLocale() const{ return m_locale; } /** *

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The locale of the IPAM pool. 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 choose an Amazon Web * Services Region for locale that has not been configured as an operating Region * for the IPAM, you'll get an error.

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

The depth of pools in your IPAM pool. The pool depth quota is 10. For more * information, see Quotas in * IPAM in the Amazon VPC IPAM User Guide.

*/ inline int GetPoolDepth() const{ return m_poolDepth; } /** *

The depth of pools in your IPAM pool. The pool depth quota is 10. For more * information, see Quotas in * IPAM in the Amazon VPC IPAM User Guide.

*/ inline bool PoolDepthHasBeenSet() const { return m_poolDepthHasBeenSet; } /** *

The depth of pools in your IPAM pool. The pool depth quota is 10. For more * information, see Quotas in * IPAM in the Amazon VPC IPAM User Guide.

*/ inline void SetPoolDepth(int value) { m_poolDepthHasBeenSet = true; m_poolDepth = value; } /** *

The depth of pools in your IPAM pool. The pool depth quota is 10. For more * information, see Quotas in * IPAM in the Amazon VPC IPAM User Guide.

*/ inline IpamPool& WithPoolDepth(int value) { SetPoolDepth(value); return *this;} /** *

The state of the IPAM pool.

*/ inline const IpamPoolState& GetState() const{ return m_state; } /** *

The state of the IPAM pool.

*/ inline bool StateHasBeenSet() const { return m_stateHasBeenSet; } /** *

The state of the IPAM pool.

*/ inline void SetState(const IpamPoolState& value) { m_stateHasBeenSet = true; m_state = value; } /** *

The state of the IPAM pool.

*/ inline void SetState(IpamPoolState&& value) { m_stateHasBeenSet = true; m_state = std::move(value); } /** *

The state of the IPAM pool.

*/ inline IpamPool& WithState(const IpamPoolState& value) { SetState(value); return *this;} /** *

The state of the IPAM pool.

*/ inline IpamPool& WithState(IpamPoolState&& value) { SetState(std::move(value)); return *this;} /** *

A message related to the failed creation of an IPAM pool.

*/ inline const Aws::String& GetStateMessage() const{ return m_stateMessage; } /** *

A message related to the failed creation of an IPAM pool.

*/ inline bool StateMessageHasBeenSet() const { return m_stateMessageHasBeenSet; } /** *

A message related to the failed creation of an IPAM pool.

*/ inline void SetStateMessage(const Aws::String& value) { m_stateMessageHasBeenSet = true; m_stateMessage = value; } /** *

A message related to the failed creation of an IPAM pool.

*/ inline void SetStateMessage(Aws::String&& value) { m_stateMessageHasBeenSet = true; m_stateMessage = std::move(value); } /** *

A message related to the failed creation of an IPAM pool.

*/ inline void SetStateMessage(const char* value) { m_stateMessageHasBeenSet = true; m_stateMessage.assign(value); } /** *

A message related to the failed creation of an IPAM pool.

*/ inline IpamPool& WithStateMessage(const Aws::String& value) { SetStateMessage(value); return *this;} /** *

A message related to the failed creation of an IPAM pool.

*/ inline IpamPool& WithStateMessage(Aws::String&& value) { SetStateMessage(std::move(value)); return *this;} /** *

A message related to the failed creation of an IPAM pool.

*/ inline IpamPool& WithStateMessage(const char* value) { SetStateMessage(value); return *this;} /** *

The description of the IPAM pool.

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

The description of the IPAM pool.

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

The description of the IPAM pool.

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

The description of the IPAM pool.

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

The description of the IPAM pool.

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

The description of the IPAM pool.

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

The description of the IPAM pool.

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

The description of the IPAM pool.

*/ inline IpamPool& WithDescription(const char* value) { SetDescription(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 IpamPool& WithAutoImport(bool value) { SetAutoImport(value); return *this;} /** *

Determines if a 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 a 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 a 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 a pool is publicly advertisable. This option is not available * for pools with AddressFamily set to ipv4.

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

The address family of the pool.

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

The address family of the pool.

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

The address family of the pool.

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

The address family of the pool.

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

The address family of the pool.

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

The address family of the pool.

*/ inline IpamPool& WithAddressFamily(AddressFamily&& value) { SetAddressFamily(std::move(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 IpamPool& 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 IpamPool& 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 IpamPool& 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 IpamPool& 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 IpamPool& 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 IpamPool& AddAllocationResourceTags(const IpamResourceTag& 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 IpamPool& AddAllocationResourceTags(IpamResourceTag&& 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& GetTags() const{ return m_tags; } /** *

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 TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

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 SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = 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 SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = 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 IpamPool& WithTags(const Aws::Vector& value) { SetTags(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 IpamPool& WithTags(Aws::Vector&& value) { SetTags(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 IpamPool& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.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 IpamPool& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(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 IpamPool& 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 IpamPool& 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. 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. 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. 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. 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. For * information on increasing the default limit, see Quotas for * your IPAM in the Amazon VPC IPAM User Guide.

*/ inline IpamPool& 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. For * information on increasing the default limit, see Quotas for * your IPAM in the Amazon VPC IPAM User Guide.

*/ inline IpamPool& WithPublicIpSource(IpamPoolPublicIpSource&& value) { SetPublicIpSource(std::move(value)); return *this;} private: Aws::String m_ownerId; bool m_ownerIdHasBeenSet = false; Aws::String m_ipamPoolId; bool m_ipamPoolIdHasBeenSet = false; Aws::String m_sourceIpamPoolId; bool m_sourceIpamPoolIdHasBeenSet = false; Aws::String m_ipamPoolArn; bool m_ipamPoolArnHasBeenSet = false; Aws::String m_ipamScopeArn; bool m_ipamScopeArnHasBeenSet = false; IpamScopeType m_ipamScopeType; bool m_ipamScopeTypeHasBeenSet = false; Aws::String m_ipamArn; bool m_ipamArnHasBeenSet = false; Aws::String m_ipamRegion; bool m_ipamRegionHasBeenSet = false; Aws::String m_locale; bool m_localeHasBeenSet = false; int m_poolDepth; bool m_poolDepthHasBeenSet = false; IpamPoolState m_state; bool m_stateHasBeenSet = false; Aws::String m_stateMessage; bool m_stateMessageHasBeenSet = false; Aws::String m_description; bool m_descriptionHasBeenSet = false; bool m_autoImport; bool m_autoImportHasBeenSet = false; bool m_publiclyAdvertisable; bool m_publiclyAdvertisableHasBeenSet = false; AddressFamily m_addressFamily; bool m_addressFamilyHasBeenSet = 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_tags; bool m_tagsHasBeenSet = false; IpamPoolAwsService m_awsService; bool m_awsServiceHasBeenSet = false; IpamPoolPublicIpSource m_publicIpSource; bool m_publicIpSourceHasBeenSet = false; }; } // namespace Model } // namespace EC2 } // namespace Aws