# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = ['SubnetPoolArgs', 'SubnetPool']

@pulumi.input_type
class SubnetPoolArgs:
    def __init__(__self__, *,
                 prefixes: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
                 address_scope_id: Optional[pulumi.Input[_builtins.str]] = None,
                 default_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 default_quota: Optional[pulumi.Input[_builtins.int]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 ip_version: Optional[pulumi.Input[_builtins.int]] = None,
                 is_default: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 min_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None):
        """
        The set of arguments for constructing a SubnetPool resource.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] prefixes: A list of subnet prefixes to assign to the subnetpool.
               Neutron API merges adjacent prefixes and treats them as a single prefix. Each
               subnet prefix must be unique among all subnet prefixes in all subnetpools that
               are associated with the address scope. Changing this updates the prefixes list
               of the existing subnetpool.
        :param pulumi.Input[_builtins.str] address_scope_id: The Neutron address scope to assign to the
               subnetpool. Changing this updates the address scope id of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] default_prefixlen: The size of the prefix to allocate when the cidr
               or prefixlen attributes are omitted when you create the subnet. Defaults to the
               MinPrefixLen. Changing this updates the default prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] default_quota: The per-project quota on the prefix space that can be
               allocated from the subnetpool for project subnets. Changing this updates the
               default quota of the existing subnetpool.
        :param pulumi.Input[_builtins.str] description: The human-readable description for the subnetpool.
               Changing this updates the description of the existing subnetpool.
        :param pulumi.Input[_builtins.int] ip_version: The IP protocol version.
        :param pulumi.Input[_builtins.bool] is_default: Indicates whether the subnetpool is default
               subnetpool or not. Changing this updates the default status of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] max_prefixlen: The maximum prefix size that can be allocated from
               the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
               default is 128. Changing this updates the max prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] min_prefixlen: The smallest prefix that can be allocated from a
               subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
               is 64. Changing this updates the min prefixlen of the existing subnetpool.
        :param pulumi.Input[_builtins.str] name: The name of the subnetpool. Changing this updates the name of
               the existing subnetpool.
        :param pulumi.Input[_builtins.str] project_id: The owner of the subnetpool. Required if admin wants to
               create a subnetpool for another project. Changing this creates a new subnetpool.
        :param pulumi.Input[_builtins.str] region: The region in which to obtain the V2 Networking client.
               A Networking client is needed to create a Neutron subnetpool. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               subnetpool.
        :param pulumi.Input[_builtins.bool] shared: Indicates whether this subnetpool is shared across
               all projects. Changing this updates the shared status of the existing
               subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the subnetpool.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        pulumi.set(__self__, "prefixes", prefixes)
        if address_scope_id is not None:
            pulumi.set(__self__, "address_scope_id", address_scope_id)
        if default_prefixlen is not None:
            pulumi.set(__self__, "default_prefixlen", default_prefixlen)
        if default_quota is not None:
            pulumi.set(__self__, "default_quota", default_quota)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if ip_version is not None:
            pulumi.set(__self__, "ip_version", ip_version)
        if is_default is not None:
            pulumi.set(__self__, "is_default", is_default)
        if max_prefixlen is not None:
            pulumi.set(__self__, "max_prefixlen", max_prefixlen)
        if min_prefixlen is not None:
            pulumi.set(__self__, "min_prefixlen", min_prefixlen)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if shared is not None:
            pulumi.set(__self__, "shared", shared)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if value_specs is not None:
            pulumi.set(__self__, "value_specs", value_specs)

    @_builtins.property
    @pulumi.getter
    def prefixes(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
        """
        A list of subnet prefixes to assign to the subnetpool.
        Neutron API merges adjacent prefixes and treats them as a single prefix. Each
        subnet prefix must be unique among all subnet prefixes in all subnetpools that
        are associated with the address scope. Changing this updates the prefixes list
        of the existing subnetpool.
        """
        return pulumi.get(self, "prefixes")

    @prefixes.setter
    def prefixes(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
        pulumi.set(self, "prefixes", value)

    @_builtins.property
    @pulumi.getter(name="addressScopeId")
    def address_scope_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The Neutron address scope to assign to the
        subnetpool. Changing this updates the address scope id of the existing
        subnetpool.
        """
        return pulumi.get(self, "address_scope_id")

    @address_scope_id.setter
    def address_scope_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "address_scope_id", value)

    @_builtins.property
    @pulumi.getter(name="defaultPrefixlen")
    def default_prefixlen(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The size of the prefix to allocate when the cidr
        or prefixlen attributes are omitted when you create the subnet. Defaults to the
        MinPrefixLen. Changing this updates the default prefixlen of the existing
        subnetpool.
        """
        return pulumi.get(self, "default_prefixlen")

    @default_prefixlen.setter
    def default_prefixlen(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "default_prefixlen", value)

    @_builtins.property
    @pulumi.getter(name="defaultQuota")
    def default_quota(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The per-project quota on the prefix space that can be
        allocated from the subnetpool for project subnets. Changing this updates the
        default quota of the existing subnetpool.
        """
        return pulumi.get(self, "default_quota")

    @default_quota.setter
    def default_quota(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "default_quota", value)

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The human-readable description for the subnetpool.
        Changing this updates the description of the existing subnetpool.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "description", value)

    @_builtins.property
    @pulumi.getter(name="ipVersion")
    def ip_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The IP protocol version.
        """
        return pulumi.get(self, "ip_version")

    @ip_version.setter
    def ip_version(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "ip_version", value)

    @_builtins.property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Indicates whether the subnetpool is default
        subnetpool or not. Changing this updates the default status of the existing
        subnetpool.
        """
        return pulumi.get(self, "is_default")

    @is_default.setter
    def is_default(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "is_default", value)

    @_builtins.property
    @pulumi.getter(name="maxPrefixlen")
    def max_prefixlen(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum prefix size that can be allocated from
        the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
        default is 128. Changing this updates the max prefixlen of the existing
        subnetpool.
        """
        return pulumi.get(self, "max_prefixlen")

    @max_prefixlen.setter
    def max_prefixlen(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "max_prefixlen", value)

    @_builtins.property
    @pulumi.getter(name="minPrefixlen")
    def min_prefixlen(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The smallest prefix that can be allocated from a
        subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
        is 64. Changing this updates the min prefixlen of the existing subnetpool.
        """
        return pulumi.get(self, "min_prefixlen")

    @min_prefixlen.setter
    def min_prefixlen(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "min_prefixlen", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the subnetpool. Changing this updates the name of
        the existing subnetpool.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The owner of the subnetpool. Required if admin wants to
        create a subnetpool for another project. Changing this creates a new subnetpool.
        """
        return pulumi.get(self, "project_id")

    @project_id.setter
    def project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "project_id", value)

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The region in which to obtain the V2 Networking client.
        A Networking client is needed to create a Neutron subnetpool. If omitted, the
        `region` argument of the provider is used. Changing this creates a new
        subnetpool.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "region", value)

    @_builtins.property
    @pulumi.getter
    def shared(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Indicates whether this subnetpool is shared across
        all projects. Changing this updates the shared status of the existing
        subnetpool.
        """
        return pulumi.get(self, "shared")

    @shared.setter
    def shared(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "shared", value)

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A set of string tags for the subnetpool.
        """
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "tags", value)

    @_builtins.property
    @pulumi.getter(name="valueSpecs")
    def value_specs(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        Map of additional options.
        """
        return pulumi.get(self, "value_specs")

    @value_specs.setter
    def value_specs(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "value_specs", value)


@pulumi.input_type
class _SubnetPoolState:
    def __init__(__self__, *,
                 address_scope_id: Optional[pulumi.Input[_builtins.str]] = None,
                 all_tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 created_at: Optional[pulumi.Input[_builtins.str]] = None,
                 default_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 default_quota: Optional[pulumi.Input[_builtins.int]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 ip_version: Optional[pulumi.Input[_builtins.int]] = None,
                 is_default: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 min_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 prefixes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 revision_number: Optional[pulumi.Input[_builtins.int]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 updated_at: Optional[pulumi.Input[_builtins.str]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None):
        """
        Input properties used for looking up and filtering SubnetPool resources.
        :param pulumi.Input[_builtins.str] address_scope_id: The Neutron address scope to assign to the
               subnetpool. Changing this updates the address scope id of the existing
               subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] all_tags: The collection of tags assigned on the subnetpool, which have been
               explicitly and implicitly added.
        :param pulumi.Input[_builtins.str] created_at: The time at which subnetpool was created.
        :param pulumi.Input[_builtins.int] default_prefixlen: The size of the prefix to allocate when the cidr
               or prefixlen attributes are omitted when you create the subnet. Defaults to the
               MinPrefixLen. Changing this updates the default prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] default_quota: The per-project quota on the prefix space that can be
               allocated from the subnetpool for project subnets. Changing this updates the
               default quota of the existing subnetpool.
        :param pulumi.Input[_builtins.str] description: The human-readable description for the subnetpool.
               Changing this updates the description of the existing subnetpool.
        :param pulumi.Input[_builtins.int] ip_version: The IP protocol version.
        :param pulumi.Input[_builtins.bool] is_default: Indicates whether the subnetpool is default
               subnetpool or not. Changing this updates the default status of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] max_prefixlen: The maximum prefix size that can be allocated from
               the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
               default is 128. Changing this updates the max prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] min_prefixlen: The smallest prefix that can be allocated from a
               subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
               is 64. Changing this updates the min prefixlen of the existing subnetpool.
        :param pulumi.Input[_builtins.str] name: The name of the subnetpool. Changing this updates the name of
               the existing subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] prefixes: A list of subnet prefixes to assign to the subnetpool.
               Neutron API merges adjacent prefixes and treats them as a single prefix. Each
               subnet prefix must be unique among all subnet prefixes in all subnetpools that
               are associated with the address scope. Changing this updates the prefixes list
               of the existing subnetpool.
        :param pulumi.Input[_builtins.str] project_id: The owner of the subnetpool. Required if admin wants to
               create a subnetpool for another project. Changing this creates a new subnetpool.
        :param pulumi.Input[_builtins.str] region: The region in which to obtain the V2 Networking client.
               A Networking client is needed to create a Neutron subnetpool. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               subnetpool.
        :param pulumi.Input[_builtins.int] revision_number: The revision number of the subnetpool.
        :param pulumi.Input[_builtins.bool] shared: Indicates whether this subnetpool is shared across
               all projects. Changing this updates the shared status of the existing
               subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the subnetpool.
        :param pulumi.Input[_builtins.str] updated_at: The time at which subnetpool was created.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        if address_scope_id is not None:
            pulumi.set(__self__, "address_scope_id", address_scope_id)
        if all_tags is not None:
            pulumi.set(__self__, "all_tags", all_tags)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if default_prefixlen is not None:
            pulumi.set(__self__, "default_prefixlen", default_prefixlen)
        if default_quota is not None:
            pulumi.set(__self__, "default_quota", default_quota)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if ip_version is not None:
            pulumi.set(__self__, "ip_version", ip_version)
        if is_default is not None:
            pulumi.set(__self__, "is_default", is_default)
        if max_prefixlen is not None:
            pulumi.set(__self__, "max_prefixlen", max_prefixlen)
        if min_prefixlen is not None:
            pulumi.set(__self__, "min_prefixlen", min_prefixlen)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if prefixes is not None:
            pulumi.set(__self__, "prefixes", prefixes)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if revision_number is not None:
            pulumi.set(__self__, "revision_number", revision_number)
        if shared is not None:
            pulumi.set(__self__, "shared", shared)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if updated_at is not None:
            pulumi.set(__self__, "updated_at", updated_at)
        if value_specs is not None:
            pulumi.set(__self__, "value_specs", value_specs)

    @_builtins.property
    @pulumi.getter(name="addressScopeId")
    def address_scope_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The Neutron address scope to assign to the
        subnetpool. Changing this updates the address scope id of the existing
        subnetpool.
        """
        return pulumi.get(self, "address_scope_id")

    @address_scope_id.setter
    def address_scope_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "address_scope_id", value)

    @_builtins.property
    @pulumi.getter(name="allTags")
    def all_tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        The collection of tags assigned on the subnetpool, which have been
        explicitly and implicitly added.
        """
        return pulumi.get(self, "all_tags")

    @all_tags.setter
    def all_tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "all_tags", value)

    @_builtins.property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The time at which subnetpool was created.
        """
        return pulumi.get(self, "created_at")

    @created_at.setter
    def created_at(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "created_at", value)

    @_builtins.property
    @pulumi.getter(name="defaultPrefixlen")
    def default_prefixlen(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The size of the prefix to allocate when the cidr
        or prefixlen attributes are omitted when you create the subnet. Defaults to the
        MinPrefixLen. Changing this updates the default prefixlen of the existing
        subnetpool.
        """
        return pulumi.get(self, "default_prefixlen")

    @default_prefixlen.setter
    def default_prefixlen(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "default_prefixlen", value)

    @_builtins.property
    @pulumi.getter(name="defaultQuota")
    def default_quota(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The per-project quota on the prefix space that can be
        allocated from the subnetpool for project subnets. Changing this updates the
        default quota of the existing subnetpool.
        """
        return pulumi.get(self, "default_quota")

    @default_quota.setter
    def default_quota(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "default_quota", value)

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The human-readable description for the subnetpool.
        Changing this updates the description of the existing subnetpool.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "description", value)

    @_builtins.property
    @pulumi.getter(name="ipVersion")
    def ip_version(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The IP protocol version.
        """
        return pulumi.get(self, "ip_version")

    @ip_version.setter
    def ip_version(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "ip_version", value)

    @_builtins.property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Indicates whether the subnetpool is default
        subnetpool or not. Changing this updates the default status of the existing
        subnetpool.
        """
        return pulumi.get(self, "is_default")

    @is_default.setter
    def is_default(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "is_default", value)

    @_builtins.property
    @pulumi.getter(name="maxPrefixlen")
    def max_prefixlen(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The maximum prefix size that can be allocated from
        the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
        default is 128. Changing this updates the max prefixlen of the existing
        subnetpool.
        """
        return pulumi.get(self, "max_prefixlen")

    @max_prefixlen.setter
    def max_prefixlen(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "max_prefixlen", value)

    @_builtins.property
    @pulumi.getter(name="minPrefixlen")
    def min_prefixlen(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The smallest prefix that can be allocated from a
        subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
        is 64. Changing this updates the min prefixlen of the existing subnetpool.
        """
        return pulumi.get(self, "min_prefixlen")

    @min_prefixlen.setter
    def min_prefixlen(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "min_prefixlen", value)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the subnetpool. Changing this updates the name of
        the existing subnetpool.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "name", value)

    @_builtins.property
    @pulumi.getter
    def prefixes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A list of subnet prefixes to assign to the subnetpool.
        Neutron API merges adjacent prefixes and treats them as a single prefix. Each
        subnet prefix must be unique among all subnet prefixes in all subnetpools that
        are associated with the address scope. Changing this updates the prefixes list
        of the existing subnetpool.
        """
        return pulumi.get(self, "prefixes")

    @prefixes.setter
    def prefixes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "prefixes", value)

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The owner of the subnetpool. Required if admin wants to
        create a subnetpool for another project. Changing this creates a new subnetpool.
        """
        return pulumi.get(self, "project_id")

    @project_id.setter
    def project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "project_id", value)

    @_builtins.property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The region in which to obtain the V2 Networking client.
        A Networking client is needed to create a Neutron subnetpool. If omitted, the
        `region` argument of the provider is used. Changing this creates a new
        subnetpool.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "region", value)

    @_builtins.property
    @pulumi.getter(name="revisionNumber")
    def revision_number(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The revision number of the subnetpool.
        """
        return pulumi.get(self, "revision_number")

    @revision_number.setter
    def revision_number(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "revision_number", value)

    @_builtins.property
    @pulumi.getter
    def shared(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Indicates whether this subnetpool is shared across
        all projects. Changing this updates the shared status of the existing
        subnetpool.
        """
        return pulumi.get(self, "shared")

    @shared.setter
    def shared(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "shared", value)

    @_builtins.property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        A set of string tags for the subnetpool.
        """
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "tags", value)

    @_builtins.property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The time at which subnetpool was created.
        """
        return pulumi.get(self, "updated_at")

    @updated_at.setter
    def updated_at(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "updated_at", value)

    @_builtins.property
    @pulumi.getter(name="valueSpecs")
    def value_specs(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
        """
        Map of additional options.
        """
        return pulumi.get(self, "value_specs")

    @value_specs.setter
    def value_specs(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
        pulumi.set(self, "value_specs", value)


@pulumi.type_token("openstack:networking/subnetPool:SubnetPool")
class SubnetPool(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 address_scope_id: Optional[pulumi.Input[_builtins.str]] = None,
                 default_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 default_quota: Optional[pulumi.Input[_builtins.int]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 ip_version: Optional[pulumi.Input[_builtins.int]] = None,
                 is_default: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 min_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 prefixes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 __props__=None):
        """
        Manages a V2 Neutron subnetpool resource within OpenStack.

        ## Example Usage

        ### Create a Subnet Pool

        ```python
        import pulumi
        import pulumi_openstack as openstack

        subnetpool1 = openstack.networking.SubnetPool("subnetpool_1",
            name="subnetpool_1",
            ip_version=6,
            prefixes=[
                "fdf7:b13d:dead:beef::/64",
                "fd65:86cc:a334:39b7::/64",
            ])
        ```

        ### Create a Subnet from a Subnet Pool

        ```python
        import pulumi
        import pulumi_openstack as openstack

        network1 = openstack.networking.Network("network_1",
            name="network_1",
            admin_state_up=True)
        subnetpool1 = openstack.networking.SubnetPool("subnetpool_1",
            name="subnetpool_1",
            prefixes=["10.11.12.0/24"])
        subnet1 = openstack.networking.Subnet("subnet_1",
            name="subnet_1",
            cidr="10.11.12.0/25",
            network_id=network1.id,
            subnetpool_id=subnetpool1.id)
        ```

        ## Import

        Subnetpools can be imported using the `id`, e.g.

        ```sh
        $ pulumi import openstack:networking/subnetPool:SubnetPool subnetpool_1 832cb7f3-59fe-40cf-8f64-8350ffc03272
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] address_scope_id: The Neutron address scope to assign to the
               subnetpool. Changing this updates the address scope id of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] default_prefixlen: The size of the prefix to allocate when the cidr
               or prefixlen attributes are omitted when you create the subnet. Defaults to the
               MinPrefixLen. Changing this updates the default prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] default_quota: The per-project quota on the prefix space that can be
               allocated from the subnetpool for project subnets. Changing this updates the
               default quota of the existing subnetpool.
        :param pulumi.Input[_builtins.str] description: The human-readable description for the subnetpool.
               Changing this updates the description of the existing subnetpool.
        :param pulumi.Input[_builtins.int] ip_version: The IP protocol version.
        :param pulumi.Input[_builtins.bool] is_default: Indicates whether the subnetpool is default
               subnetpool or not. Changing this updates the default status of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] max_prefixlen: The maximum prefix size that can be allocated from
               the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
               default is 128. Changing this updates the max prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] min_prefixlen: The smallest prefix that can be allocated from a
               subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
               is 64. Changing this updates the min prefixlen of the existing subnetpool.
        :param pulumi.Input[_builtins.str] name: The name of the subnetpool. Changing this updates the name of
               the existing subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] prefixes: A list of subnet prefixes to assign to the subnetpool.
               Neutron API merges adjacent prefixes and treats them as a single prefix. Each
               subnet prefix must be unique among all subnet prefixes in all subnetpools that
               are associated with the address scope. Changing this updates the prefixes list
               of the existing subnetpool.
        :param pulumi.Input[_builtins.str] project_id: The owner of the subnetpool. Required if admin wants to
               create a subnetpool for another project. Changing this creates a new subnetpool.
        :param pulumi.Input[_builtins.str] region: The region in which to obtain the V2 Networking client.
               A Networking client is needed to create a Neutron subnetpool. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               subnetpool.
        :param pulumi.Input[_builtins.bool] shared: Indicates whether this subnetpool is shared across
               all projects. Changing this updates the shared status of the existing
               subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the subnetpool.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: SubnetPoolArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Manages a V2 Neutron subnetpool resource within OpenStack.

        ## Example Usage

        ### Create a Subnet Pool

        ```python
        import pulumi
        import pulumi_openstack as openstack

        subnetpool1 = openstack.networking.SubnetPool("subnetpool_1",
            name="subnetpool_1",
            ip_version=6,
            prefixes=[
                "fdf7:b13d:dead:beef::/64",
                "fd65:86cc:a334:39b7::/64",
            ])
        ```

        ### Create a Subnet from a Subnet Pool

        ```python
        import pulumi
        import pulumi_openstack as openstack

        network1 = openstack.networking.Network("network_1",
            name="network_1",
            admin_state_up=True)
        subnetpool1 = openstack.networking.SubnetPool("subnetpool_1",
            name="subnetpool_1",
            prefixes=["10.11.12.0/24"])
        subnet1 = openstack.networking.Subnet("subnet_1",
            name="subnet_1",
            cidr="10.11.12.0/25",
            network_id=network1.id,
            subnetpool_id=subnetpool1.id)
        ```

        ## Import

        Subnetpools can be imported using the `id`, e.g.

        ```sh
        $ pulumi import openstack:networking/subnetPool:SubnetPool subnetpool_1 832cb7f3-59fe-40cf-8f64-8350ffc03272
        ```

        :param str resource_name: The name of the resource.
        :param SubnetPoolArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(SubnetPoolArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 address_scope_id: Optional[pulumi.Input[_builtins.str]] = None,
                 default_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 default_quota: Optional[pulumi.Input[_builtins.int]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 ip_version: Optional[pulumi.Input[_builtins.int]] = None,
                 is_default: Optional[pulumi.Input[_builtins.bool]] = None,
                 max_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 min_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 prefixes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = SubnetPoolArgs.__new__(SubnetPoolArgs)

            __props__.__dict__["address_scope_id"] = address_scope_id
            __props__.__dict__["default_prefixlen"] = default_prefixlen
            __props__.__dict__["default_quota"] = default_quota
            __props__.__dict__["description"] = description
            __props__.__dict__["ip_version"] = ip_version
            __props__.__dict__["is_default"] = is_default
            __props__.__dict__["max_prefixlen"] = max_prefixlen
            __props__.__dict__["min_prefixlen"] = min_prefixlen
            __props__.__dict__["name"] = name
            if prefixes is None and not opts.urn:
                raise TypeError("Missing required property 'prefixes'")
            __props__.__dict__["prefixes"] = prefixes
            __props__.__dict__["project_id"] = project_id
            __props__.__dict__["region"] = region
            __props__.__dict__["shared"] = shared
            __props__.__dict__["tags"] = tags
            __props__.__dict__["value_specs"] = value_specs
            __props__.__dict__["all_tags"] = None
            __props__.__dict__["created_at"] = None
            __props__.__dict__["revision_number"] = None
            __props__.__dict__["updated_at"] = None
        super(SubnetPool, __self__).__init__(
            'openstack:networking/subnetPool:SubnetPool',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            address_scope_id: Optional[pulumi.Input[_builtins.str]] = None,
            all_tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            created_at: Optional[pulumi.Input[_builtins.str]] = None,
            default_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
            default_quota: Optional[pulumi.Input[_builtins.int]] = None,
            description: Optional[pulumi.Input[_builtins.str]] = None,
            ip_version: Optional[pulumi.Input[_builtins.int]] = None,
            is_default: Optional[pulumi.Input[_builtins.bool]] = None,
            max_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
            min_prefixlen: Optional[pulumi.Input[_builtins.int]] = None,
            name: Optional[pulumi.Input[_builtins.str]] = None,
            prefixes: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            project_id: Optional[pulumi.Input[_builtins.str]] = None,
            region: Optional[pulumi.Input[_builtins.str]] = None,
            revision_number: Optional[pulumi.Input[_builtins.int]] = None,
            shared: Optional[pulumi.Input[_builtins.bool]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            updated_at: Optional[pulumi.Input[_builtins.str]] = None,
            value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None) -> 'SubnetPool':
        """
        Get an existing SubnetPool resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] address_scope_id: The Neutron address scope to assign to the
               subnetpool. Changing this updates the address scope id of the existing
               subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] all_tags: The collection of tags assigned on the subnetpool, which have been
               explicitly and implicitly added.
        :param pulumi.Input[_builtins.str] created_at: The time at which subnetpool was created.
        :param pulumi.Input[_builtins.int] default_prefixlen: The size of the prefix to allocate when the cidr
               or prefixlen attributes are omitted when you create the subnet. Defaults to the
               MinPrefixLen. Changing this updates the default prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] default_quota: The per-project quota on the prefix space that can be
               allocated from the subnetpool for project subnets. Changing this updates the
               default quota of the existing subnetpool.
        :param pulumi.Input[_builtins.str] description: The human-readable description for the subnetpool.
               Changing this updates the description of the existing subnetpool.
        :param pulumi.Input[_builtins.int] ip_version: The IP protocol version.
        :param pulumi.Input[_builtins.bool] is_default: Indicates whether the subnetpool is default
               subnetpool or not. Changing this updates the default status of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] max_prefixlen: The maximum prefix size that can be allocated from
               the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
               default is 128. Changing this updates the max prefixlen of the existing
               subnetpool.
        :param pulumi.Input[_builtins.int] min_prefixlen: The smallest prefix that can be allocated from a
               subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
               is 64. Changing this updates the min prefixlen of the existing subnetpool.
        :param pulumi.Input[_builtins.str] name: The name of the subnetpool. Changing this updates the name of
               the existing subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] prefixes: A list of subnet prefixes to assign to the subnetpool.
               Neutron API merges adjacent prefixes and treats them as a single prefix. Each
               subnet prefix must be unique among all subnet prefixes in all subnetpools that
               are associated with the address scope. Changing this updates the prefixes list
               of the existing subnetpool.
        :param pulumi.Input[_builtins.str] project_id: The owner of the subnetpool. Required if admin wants to
               create a subnetpool for another project. Changing this creates a new subnetpool.
        :param pulumi.Input[_builtins.str] region: The region in which to obtain the V2 Networking client.
               A Networking client is needed to create a Neutron subnetpool. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               subnetpool.
        :param pulumi.Input[_builtins.int] revision_number: The revision number of the subnetpool.
        :param pulumi.Input[_builtins.bool] shared: Indicates whether this subnetpool is shared across
               all projects. Changing this updates the shared status of the existing
               subnetpool.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the subnetpool.
        :param pulumi.Input[_builtins.str] updated_at: The time at which subnetpool was created.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _SubnetPoolState.__new__(_SubnetPoolState)

        __props__.__dict__["address_scope_id"] = address_scope_id
        __props__.__dict__["all_tags"] = all_tags
        __props__.__dict__["created_at"] = created_at
        __props__.__dict__["default_prefixlen"] = default_prefixlen
        __props__.__dict__["default_quota"] = default_quota
        __props__.__dict__["description"] = description
        __props__.__dict__["ip_version"] = ip_version
        __props__.__dict__["is_default"] = is_default
        __props__.__dict__["max_prefixlen"] = max_prefixlen
        __props__.__dict__["min_prefixlen"] = min_prefixlen
        __props__.__dict__["name"] = name
        __props__.__dict__["prefixes"] = prefixes
        __props__.__dict__["project_id"] = project_id
        __props__.__dict__["region"] = region
        __props__.__dict__["revision_number"] = revision_number
        __props__.__dict__["shared"] = shared
        __props__.__dict__["tags"] = tags
        __props__.__dict__["updated_at"] = updated_at
        __props__.__dict__["value_specs"] = value_specs
        return SubnetPool(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter(name="addressScopeId")
    def address_scope_id(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        The Neutron address scope to assign to the
        subnetpool. Changing this updates the address scope id of the existing
        subnetpool.
        """
        return pulumi.get(self, "address_scope_id")

    @_builtins.property
    @pulumi.getter(name="allTags")
    def all_tags(self) -> pulumi.Output[Sequence[_builtins.str]]:
        """
        The collection of tags assigned on the subnetpool, which have been
        explicitly and implicitly added.
        """
        return pulumi.get(self, "all_tags")

    @_builtins.property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> pulumi.Output[_builtins.str]:
        """
        The time at which subnetpool was created.
        """
        return pulumi.get(self, "created_at")

    @_builtins.property
    @pulumi.getter(name="defaultPrefixlen")
    def default_prefixlen(self) -> pulumi.Output[_builtins.int]:
        """
        The size of the prefix to allocate when the cidr
        or prefixlen attributes are omitted when you create the subnet. Defaults to the
        MinPrefixLen. Changing this updates the default prefixlen of the existing
        subnetpool.
        """
        return pulumi.get(self, "default_prefixlen")

    @_builtins.property
    @pulumi.getter(name="defaultQuota")
    def default_quota(self) -> pulumi.Output[Optional[_builtins.int]]:
        """
        The per-project quota on the prefix space that can be
        allocated from the subnetpool for project subnets. Changing this updates the
        default quota of the existing subnetpool.
        """
        return pulumi.get(self, "default_quota")

    @_builtins.property
    @pulumi.getter
    def description(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        The human-readable description for the subnetpool.
        Changing this updates the description of the existing subnetpool.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter(name="ipVersion")
    def ip_version(self) -> pulumi.Output[_builtins.int]:
        """
        The IP protocol version.
        """
        return pulumi.get(self, "ip_version")

    @_builtins.property
    @pulumi.getter(name="isDefault")
    def is_default(self) -> pulumi.Output[Optional[_builtins.bool]]:
        """
        Indicates whether the subnetpool is default
        subnetpool or not. Changing this updates the default status of the existing
        subnetpool.
        """
        return pulumi.get(self, "is_default")

    @_builtins.property
    @pulumi.getter(name="maxPrefixlen")
    def max_prefixlen(self) -> pulumi.Output[_builtins.int]:
        """
        The maximum prefix size that can be allocated from
        the subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,
        default is 128. Changing this updates the max prefixlen of the existing
        subnetpool.
        """
        return pulumi.get(self, "max_prefixlen")

    @_builtins.property
    @pulumi.getter(name="minPrefixlen")
    def min_prefixlen(self) -> pulumi.Output[_builtins.int]:
        """
        The smallest prefix that can be allocated from a
        subnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default
        is 64. Changing this updates the min prefixlen of the existing subnetpool.
        """
        return pulumi.get(self, "min_prefixlen")

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Output[_builtins.str]:
        """
        The name of the subnetpool. Changing this updates the name of
        the existing subnetpool.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def prefixes(self) -> pulumi.Output[Sequence[_builtins.str]]:
        """
        A list of subnet prefixes to assign to the subnetpool.
        Neutron API merges adjacent prefixes and treats them as a single prefix. Each
        subnet prefix must be unique among all subnet prefixes in all subnetpools that
        are associated with the address scope. Changing this updates the prefixes list
        of the existing subnetpool.
        """
        return pulumi.get(self, "prefixes")

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Output[_builtins.str]:
        """
        The owner of the subnetpool. Required if admin wants to
        create a subnetpool for another project. Changing this creates a new subnetpool.
        """
        return pulumi.get(self, "project_id")

    @_builtins.property
    @pulumi.getter
    def region(self) -> pulumi.Output[_builtins.str]:
        """
        The region in which to obtain the V2 Networking client.
        A Networking client is needed to create a Neutron subnetpool. If omitted, the
        `region` argument of the provider is used. Changing this creates a new
        subnetpool.
        """
        return pulumi.get(self, "region")

    @_builtins.property
    @pulumi.getter(name="revisionNumber")
    def revision_number(self) -> pulumi.Output[_builtins.int]:
        """
        The revision number of the subnetpool.
        """
        return pulumi.get(self, "revision_number")

    @_builtins.property
    @pulumi.getter
    def shared(self) -> pulumi.Output[Optional[_builtins.bool]]:
        """
        Indicates whether this subnetpool is shared across
        all projects. Changing this updates the shared status of the existing
        subnetpool.
        """
        return pulumi.get(self, "shared")

    @_builtins.property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
        """
        A set of string tags for the subnetpool.
        """
        return pulumi.get(self, "tags")

    @_builtins.property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> pulumi.Output[_builtins.str]:
        """
        The time at which subnetpool was created.
        """
        return pulumi.get(self, "updated_at")

    @_builtins.property
    @pulumi.getter(name="valueSpecs")
    def value_specs(self) -> pulumi.Output[Optional[Mapping[str, _builtins.str]]]:
        """
        Map of additional options.
        """
        return pulumi.get(self, "value_specs")

