All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.aws.ec2.VpcIpamPoolArgs Maven / Gradle / Ivy

Go to download

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

There is a newer version: 6.60.0-alpha.1731982519
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.ec2;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class VpcIpamPoolArgs extends com.pulumi.resources.ResourceArgs {

    public static final VpcIpamPoolArgs Empty = new VpcIpamPoolArgs();

    /**
     * The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
     * 
     */
    @Import(name="addressFamily", required=true)
    private Output addressFamily;

    /**
     * @return The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
     * 
     */
    public Output addressFamily() {
        return this.addressFamily;
    }

    /**
     * A 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 (unless you provide a different netmask value when you create the new allocation).
     * 
     */
    @Import(name="allocationDefaultNetmaskLength")
    private @Nullable Output allocationDefaultNetmaskLength;

    /**
     * @return A 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 (unless you provide a different netmask value when you create the new allocation).
     * 
     */
    public Optional> allocationDefaultNetmaskLength() {
        return Optional.ofNullable(this.allocationDefaultNetmaskLength);
    }

    /**
     * The maximum netmask length that will be required for CIDR allocations in this pool.
     * 
     */
    @Import(name="allocationMaxNetmaskLength")
    private @Nullable Output allocationMaxNetmaskLength;

    /**
     * @return The maximum netmask length that will be required for CIDR allocations in this pool.
     * 
     */
    public Optional> allocationMaxNetmaskLength() {
        return Optional.ofNullable(this.allocationMaxNetmaskLength);
    }

    /**
     * The minimum netmask length that will be required for CIDR allocations in this pool.
     * 
     */
    @Import(name="allocationMinNetmaskLength")
    private @Nullable Output allocationMinNetmaskLength;

    /**
     * @return The minimum netmask length that will be required for CIDR allocations in this pool.
     * 
     */
    public Optional> allocationMinNetmaskLength() {
        return Optional.ofNullable(this.allocationMinNetmaskLength);
    }

    /**
     * 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.
     * 
     */
    @Import(name="allocationResourceTags")
    private @Nullable Output> allocationResourceTags;

    /**
     * @return 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 Optional>> allocationResourceTags() {
        return Optional.ofNullable(this.allocationResourceTags);
    }

    /**
     * If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
     * within the CIDR range in the pool.
     * 
     */
    @Import(name="autoImport")
    private @Nullable Output autoImport;

    /**
     * @return If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
     * within the CIDR range in the pool.
     * 
     */
    public Optional> autoImport() {
        return Optional.ofNullable(this.autoImport);
    }

    /**
     * Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
     * 
     */
    @Import(name="awsService")
    private @Nullable Output awsService;

    /**
     * @return Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
     * 
     */
    public Optional> awsService() {
        return Optional.ofNullable(this.awsService);
    }

    /**
     * Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
     * 
     */
    @Import(name="cascade")
    private @Nullable Output cascade;

    /**
     * @return Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
     * 
     */
    public Optional> cascade() {
        return Optional.ofNullable(this.cascade);
    }

    /**
     * A description for the IPAM pool.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return A description for the IPAM pool.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * The ID of the scope in which you would like to create the IPAM pool.
     * 
     */
    @Import(name="ipamScopeId", required=true)
    private Output ipamScopeId;

    /**
     * @return The ID of the scope in which you would like to create the IPAM pool.
     * 
     */
    public Output ipamScopeId() {
        return this.ipamScopeId;
    }

    /**
     * The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
     * 
     */
    @Import(name="locale")
    private @Nullable Output locale;

    /**
     * @return The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
     * 
     */
    public Optional> locale() {
        return Optional.ofNullable(this.locale);
    }

    /**
     * The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
     * 
     */
    @Import(name="publicIpSource")
    private @Nullable Output publicIpSource;

    /**
     * @return The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
     * 
     */
    public Optional> publicIpSource() {
        return Optional.ofNullable(this.publicIpSource);
    }

    /**
     * Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `address_family = "ipv6"` and `public_ip_source = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `public_ip_source = "amazon"`.
     * 
     */
    @Import(name="publiclyAdvertisable")
    private @Nullable Output publiclyAdvertisable;

    /**
     * @return Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `address_family = "ipv6"` and `public_ip_source = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `public_ip_source = "amazon"`.
     * 
     */
    public Optional> publiclyAdvertisable() {
        return Optional.ofNullable(this.publiclyAdvertisable);
    }

    /**
     * The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
     * 
     */
    @Import(name="sourceIpamPoolId")
    private @Nullable Output sourceIpamPoolId;

    /**
     * @return The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
     * 
     */
    public Optional> sourceIpamPoolId() {
        return Optional.ofNullable(this.sourceIpamPoolId);
    }

    /**
     * A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private VpcIpamPoolArgs() {}

    private VpcIpamPoolArgs(VpcIpamPoolArgs $) {
        this.addressFamily = $.addressFamily;
        this.allocationDefaultNetmaskLength = $.allocationDefaultNetmaskLength;
        this.allocationMaxNetmaskLength = $.allocationMaxNetmaskLength;
        this.allocationMinNetmaskLength = $.allocationMinNetmaskLength;
        this.allocationResourceTags = $.allocationResourceTags;
        this.autoImport = $.autoImport;
        this.awsService = $.awsService;
        this.cascade = $.cascade;
        this.description = $.description;
        this.ipamScopeId = $.ipamScopeId;
        this.locale = $.locale;
        this.publicIpSource = $.publicIpSource;
        this.publiclyAdvertisable = $.publiclyAdvertisable;
        this.sourceIpamPoolId = $.sourceIpamPoolId;
        this.tags = $.tags;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(VpcIpamPoolArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private VpcIpamPoolArgs $;

        public Builder() {
            $ = new VpcIpamPoolArgs();
        }

        public Builder(VpcIpamPoolArgs defaults) {
            $ = new VpcIpamPoolArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param addressFamily The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
         * 
         * @return builder
         * 
         */
        public Builder addressFamily(Output addressFamily) {
            $.addressFamily = addressFamily;
            return this;
        }

        /**
         * @param addressFamily The IP protocol assigned to this pool. You must choose either IPv4 or IPv6 protocol for a pool.
         * 
         * @return builder
         * 
         */
        public Builder addressFamily(String addressFamily) {
            return addressFamily(Output.of(addressFamily));
        }

        /**
         * @param allocationDefaultNetmaskLength A 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 (unless you provide a different netmask value when you create the new allocation).
         * 
         * @return builder
         * 
         */
        public Builder allocationDefaultNetmaskLength(@Nullable Output allocationDefaultNetmaskLength) {
            $.allocationDefaultNetmaskLength = allocationDefaultNetmaskLength;
            return this;
        }

        /**
         * @param allocationDefaultNetmaskLength A 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 (unless you provide a different netmask value when you create the new allocation).
         * 
         * @return builder
         * 
         */
        public Builder allocationDefaultNetmaskLength(Integer allocationDefaultNetmaskLength) {
            return allocationDefaultNetmaskLength(Output.of(allocationDefaultNetmaskLength));
        }

        /**
         * @param allocationMaxNetmaskLength The maximum netmask length that will be required for CIDR allocations in this pool.
         * 
         * @return builder
         * 
         */
        public Builder allocationMaxNetmaskLength(@Nullable Output allocationMaxNetmaskLength) {
            $.allocationMaxNetmaskLength = allocationMaxNetmaskLength;
            return this;
        }

        /**
         * @param allocationMaxNetmaskLength The maximum netmask length that will be required for CIDR allocations in this pool.
         * 
         * @return builder
         * 
         */
        public Builder allocationMaxNetmaskLength(Integer allocationMaxNetmaskLength) {
            return allocationMaxNetmaskLength(Output.of(allocationMaxNetmaskLength));
        }

        /**
         * @param allocationMinNetmaskLength The minimum netmask length that will be required for CIDR allocations in this pool.
         * 
         * @return builder
         * 
         */
        public Builder allocationMinNetmaskLength(@Nullable Output allocationMinNetmaskLength) {
            $.allocationMinNetmaskLength = allocationMinNetmaskLength;
            return this;
        }

        /**
         * @param allocationMinNetmaskLength The minimum netmask length that will be required for CIDR allocations in this pool.
         * 
         * @return builder
         * 
         */
        public Builder allocationMinNetmaskLength(Integer allocationMinNetmaskLength) {
            return allocationMinNetmaskLength(Output.of(allocationMinNetmaskLength));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder allocationResourceTags(@Nullable Output> allocationResourceTags) {
            $.allocationResourceTags = allocationResourceTags;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder allocationResourceTags(Map allocationResourceTags) {
            return allocationResourceTags(Output.of(allocationResourceTags));
        }

        /**
         * @param autoImport If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
         * within the CIDR range in the pool.
         * 
         * @return builder
         * 
         */
        public Builder autoImport(@Nullable Output autoImport) {
            $.autoImport = autoImport;
            return this;
        }

        /**
         * @param autoImport If you include this argument, IPAM automatically imports any VPCs you have in your scope that fall
         * within the CIDR range in the pool.
         * 
         * @return builder
         * 
         */
        public Builder autoImport(Boolean autoImport) {
            return autoImport(Output.of(autoImport));
        }

        /**
         * @param awsService Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
         * 
         * @return builder
         * 
         */
        public Builder awsService(@Nullable Output awsService) {
            $.awsService = awsService;
            return this;
        }

        /**
         * @param awsService Limits which AWS service the pool can be used in. Only useable on public scopes. Valid Values: `ec2`.
         * 
         * @return builder
         * 
         */
        public Builder awsService(String awsService) {
            return awsService(Output.of(awsService));
        }

        /**
         * @param cascade Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
         * 
         * @return builder
         * 
         */
        public Builder cascade(@Nullable Output cascade) {
            $.cascade = cascade;
            return this;
        }

        /**
         * @param cascade Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools.
         * 
         * @return builder
         * 
         */
        public Builder cascade(Boolean cascade) {
            return cascade(Output.of(cascade));
        }

        /**
         * @param description A description for the IPAM pool.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description A description for the IPAM pool.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param ipamScopeId The ID of the scope in which you would like to create the IPAM pool.
         * 
         * @return builder
         * 
         */
        public Builder ipamScopeId(Output ipamScopeId) {
            $.ipamScopeId = ipamScopeId;
            return this;
        }

        /**
         * @param ipamScopeId The ID of the scope in which you would like to create the IPAM pool.
         * 
         * @return builder
         * 
         */
        public Builder ipamScopeId(String ipamScopeId) {
            return ipamScopeId(Output.of(ipamScopeId));
        }

        /**
         * @param locale The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
         * 
         * @return builder
         * 
         */
        public Builder locale(@Nullable Output locale) {
            $.locale = locale;
            return this;
        }

        /**
         * @param locale The locale in which you would like to create the IPAM pool. Locale is the Region where you want to make an IPAM pool available for allocations. You can only create pools with locales that match the operating Regions of the IPAM. You can only create VPCs from a pool whose locale matches the VPC's Region. Possible values: Any AWS region, such as `us-east-1`.
         * 
         * @return builder
         * 
         */
        public Builder locale(String locale) {
            return locale(Output.of(locale));
        }

        /**
         * @param publicIpSource The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
         * 
         * @return builder
         * 
         */
        public Builder publicIpSource(@Nullable Output publicIpSource) {
            $.publicIpSource = publicIpSource;
            return this;
        }

        /**
         * @param publicIpSource The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Valid values are `byoip` or `amazon`. Default is `byoip`.
         * 
         * @return builder
         * 
         */
        public Builder publicIpSource(String publicIpSource) {
            return publicIpSource(Output.of(publicIpSource));
        }

        /**
         * @param publiclyAdvertisable Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `address_family = "ipv6"` and `public_ip_source = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `public_ip_source = "amazon"`.
         * 
         * @return builder
         * 
         */
        public Builder publiclyAdvertisable(@Nullable Output publiclyAdvertisable) {
            $.publiclyAdvertisable = publiclyAdvertisable;
            return this;
        }

        /**
         * @param publiclyAdvertisable Defines whether or not IPv6 pool space is publicly advertisable over the internet. This argument is required if `address_family = "ipv6"` and `public_ip_source = "byoip"`, default is `false`. This option is not available for IPv4 pool space or if `public_ip_source = "amazon"`.
         * 
         * @return builder
         * 
         */
        public Builder publiclyAdvertisable(Boolean publiclyAdvertisable) {
            return publiclyAdvertisable(Output.of(publiclyAdvertisable));
        }

        /**
         * @param sourceIpamPoolId The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
         * 
         * @return builder
         * 
         */
        public Builder sourceIpamPoolId(@Nullable Output sourceIpamPoolId) {
            $.sourceIpamPoolId = sourceIpamPoolId;
            return this;
        }

        /**
         * @param sourceIpamPoolId The ID of the source IPAM pool. Use this argument to create a child pool within an existing pool.
         * 
         * @return builder
         * 
         */
        public Builder sourceIpamPoolId(String sourceIpamPoolId) {
            return sourceIpamPoolId(Output.of(sourceIpamPoolId));
        }

        /**
         * @param tags A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        public VpcIpamPoolArgs build() {
            if ($.addressFamily == null) {
                throw new MissingRequiredPropertyException("VpcIpamPoolArgs", "addressFamily");
            }
            if ($.ipamScopeId == null) {
                throw new MissingRequiredPropertyException("VpcIpamPoolArgs", "ipamScopeId");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy