# 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
from . import outputs
from ._inputs import *

__all__ = ['NetworkArgs', 'Network']

@pulumi.input_type
class NetworkArgs:
    def __init__(__self__, *,
                 admin_state_up: Optional[pulumi.Input[_builtins.bool]] = None,
                 availability_zone_hints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 dns_domain: Optional[pulumi.Input[_builtins.str]] = None,
                 external: Optional[pulumi.Input[_builtins.bool]] = None,
                 mtu: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 port_security_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 qos_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 segments: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 tenant_id: Optional[pulumi.Input[_builtins.str]] = None,
                 transparent_vlan: Optional[pulumi.Input[_builtins.bool]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None):
        """
        The set of arguments for constructing a Network resource.

        :param pulumi.Input[_builtins.bool] admin_state_up: The administrative state of the network.
               Acceptable values are "true" and "false". Changing this value updates the
               state of the existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] availability_zone_hints: An availability zone is used to make
               network resources highly available. Used for resources with high availability
               so that they are scheduled on different availability zones. Changing this
               creates a new network.
        :param pulumi.Input[_builtins.str] description: Human-readable description of the network. Changing this
               updates the name of the existing network.
        :param pulumi.Input[_builtins.str] dns_domain: The network DNS domain. Available, when Neutron DNS
               extension is enabled. The `dns_domain` of a network in conjunction with the
               `dns_name` attribute of its ports will be published in an external DNS
               service when Neutron is configured to integrate with such a service.
        :param pulumi.Input[_builtins.bool] external: Specifies whether the network resource has the
               external routing facility. Valid values are true and false. Defaults to
               false. Changing this updates the external attribute of the existing network.
        :param pulumi.Input[_builtins.int] mtu: The network MTU. Available for read-only, when Neutron
               `net-mtu` extension is enabled. Available for the modification, when
               Neutron `net-mtu-writable` extension is enabled.
        :param pulumi.Input[_builtins.str] name: The name of the network. Changing this updates the name of
               the existing network.
        :param pulumi.Input[_builtins.bool] port_security_enabled: Whether to explicitly enable or disable
               port security on the network. Port Security is usually enabled by default, so
               omitting this argument will usually result in a value of "true". Setting this
               explicitly to `false` will disable port security. Valid values are `true` and
               `false`.
        :param pulumi.Input[_builtins.str] qos_policy_id: Reference to the associated QoS policy.
        :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 network. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               network.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]] segments: An array of one or more provider segment objects.
               Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
               updating any provider related segments attributes. Check your plug-in whether
               it supports updating.
        :param pulumi.Input[_builtins.bool] shared: Specifies whether the network resource can be accessed
               by any tenant or not. Changing this updates the sharing capabilities of the
               existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the network.
        :param pulumi.Input[_builtins.str] tenant_id: The owner of the network. Required if admin wants to
               create a network for another tenant. Changing this creates a new network.
        :param pulumi.Input[_builtins.bool] transparent_vlan: Specifies whether the network resource has the
               VLAN transparent attribute set. Valid values are true and false. Defaults to
               false. Changing this updates the `transparent_vlan` attribute of the existing
               network.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        if admin_state_up is not None:
            pulumi.set(__self__, "admin_state_up", admin_state_up)
        if availability_zone_hints is not None:
            pulumi.set(__self__, "availability_zone_hints", availability_zone_hints)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if dns_domain is not None:
            pulumi.set(__self__, "dns_domain", dns_domain)
        if external is not None:
            pulumi.set(__self__, "external", external)
        if mtu is not None:
            pulumi.set(__self__, "mtu", mtu)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if port_security_enabled is not None:
            pulumi.set(__self__, "port_security_enabled", port_security_enabled)
        if qos_policy_id is not None:
            pulumi.set(__self__, "qos_policy_id", qos_policy_id)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if segments is not None:
            pulumi.set(__self__, "segments", segments)
        if shared is not None:
            pulumi.set(__self__, "shared", shared)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)
        if transparent_vlan is not None:
            pulumi.set(__self__, "transparent_vlan", transparent_vlan)
        if value_specs is not None:
            pulumi.set(__self__, "value_specs", value_specs)

    @_builtins.property
    @pulumi.getter(name="adminStateUp")
    def admin_state_up(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        The administrative state of the network.
        Acceptable values are "true" and "false". Changing this value updates the
        state of the existing network.
        """
        return pulumi.get(self, "admin_state_up")

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

    @_builtins.property
    @pulumi.getter(name="availabilityZoneHints")
    def availability_zone_hints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        An availability zone is used to make
        network resources highly available. Used for resources with high availability
        so that they are scheduled on different availability zones. Changing this
        creates a new network.
        """
        return pulumi.get(self, "availability_zone_hints")

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

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Human-readable description of the network. Changing this
        updates the name of the existing network.
        """
        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="dnsDomain")
    def dns_domain(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The network DNS domain. Available, when Neutron DNS
        extension is enabled. The `dns_domain` of a network in conjunction with the
        `dns_name` attribute of its ports will be published in an external DNS
        service when Neutron is configured to integrate with such a service.
        """
        return pulumi.get(self, "dns_domain")

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

    @_builtins.property
    @pulumi.getter
    def external(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether the network resource has the
        external routing facility. Valid values are true and false. Defaults to
        false. Changing this updates the external attribute of the existing network.
        """
        return pulumi.get(self, "external")

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

    @_builtins.property
    @pulumi.getter
    def mtu(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The network MTU. Available for read-only, when Neutron
        `net-mtu` extension is enabled. Available for the modification, when
        Neutron `net-mtu-writable` extension is enabled.
        """
        return pulumi.get(self, "mtu")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the network. Changing this updates the name of
        the existing network.
        """
        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="portSecurityEnabled")
    def port_security_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to explicitly enable or disable
        port security on the network. Port Security is usually enabled by default, so
        omitting this argument will usually result in a value of "true". Setting this
        explicitly to `false` will disable port security. Valid values are `true` and
        `false`.
        """
        return pulumi.get(self, "port_security_enabled")

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

    @_builtins.property
    @pulumi.getter(name="qosPolicyId")
    def qos_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Reference to the associated QoS policy.
        """
        return pulumi.get(self, "qos_policy_id")

    @qos_policy_id.setter
    def qos_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "qos_policy_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 network. If omitted, the
        `region` argument of the provider is used. Changing this creates a new
        network.
        """
        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 segments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]]]:
        """
        An array of one or more provider segment objects.
        Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
        updating any provider related segments attributes. Check your plug-in whether
        it supports updating.
        """
        return pulumi.get(self, "segments")

    @segments.setter
    def segments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]]]):
        pulumi.set(self, "segments", value)

    @_builtins.property
    @pulumi.getter
    def shared(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether the network resource can be accessed
        by any tenant or not. Changing this updates the sharing capabilities of the
        existing network.
        """
        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 network.
        """
        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="tenantId")
    def tenant_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The owner of the network. Required if admin wants to
        create a network for another tenant. Changing this creates a new network.
        """
        return pulumi.get(self, "tenant_id")

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

    @_builtins.property
    @pulumi.getter(name="transparentVlan")
    def transparent_vlan(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether the network resource has the
        VLAN transparent attribute set. Valid values are true and false. Defaults to
        false. Changing this updates the `transparent_vlan` attribute of the existing
        network.
        """
        return pulumi.get(self, "transparent_vlan")

    @transparent_vlan.setter
    def transparent_vlan(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "transparent_vlan", 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 _NetworkState:
    def __init__(__self__, *,
                 admin_state_up: Optional[pulumi.Input[_builtins.bool]] = None,
                 all_tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 availability_zone_hints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 dns_domain: Optional[pulumi.Input[_builtins.str]] = None,
                 external: Optional[pulumi.Input[_builtins.bool]] = None,
                 mtu: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 port_security_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 qos_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 segments: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 tenant_id: Optional[pulumi.Input[_builtins.str]] = None,
                 transparent_vlan: Optional[pulumi.Input[_builtins.bool]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None):
        """
        Input properties used for looking up and filtering Network resources.

        :param pulumi.Input[_builtins.bool] admin_state_up: The administrative state of the network.
               Acceptable values are "true" and "false". Changing this value updates the
               state of the existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] all_tags: The collection of tags assigned on the network, which have been
               explicitly and implicitly added.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] availability_zone_hints: An availability zone is used to make
               network resources highly available. Used for resources with high availability
               so that they are scheduled on different availability zones. Changing this
               creates a new network.
        :param pulumi.Input[_builtins.str] description: Human-readable description of the network. Changing this
               updates the name of the existing network.
        :param pulumi.Input[_builtins.str] dns_domain: The network DNS domain. Available, when Neutron DNS
               extension is enabled. The `dns_domain` of a network in conjunction with the
               `dns_name` attribute of its ports will be published in an external DNS
               service when Neutron is configured to integrate with such a service.
        :param pulumi.Input[_builtins.bool] external: Specifies whether the network resource has the
               external routing facility. Valid values are true and false. Defaults to
               false. Changing this updates the external attribute of the existing network.
        :param pulumi.Input[_builtins.int] mtu: The network MTU. Available for read-only, when Neutron
               `net-mtu` extension is enabled. Available for the modification, when
               Neutron `net-mtu-writable` extension is enabled.
        :param pulumi.Input[_builtins.str] name: The name of the network. Changing this updates the name of
               the existing network.
        :param pulumi.Input[_builtins.bool] port_security_enabled: Whether to explicitly enable or disable
               port security on the network. Port Security is usually enabled by default, so
               omitting this argument will usually result in a value of "true". Setting this
               explicitly to `false` will disable port security. Valid values are `true` and
               `false`.
        :param pulumi.Input[_builtins.str] qos_policy_id: Reference to the associated QoS policy.
        :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 network. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               network.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]] segments: An array of one or more provider segment objects.
               Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
               updating any provider related segments attributes. Check your plug-in whether
               it supports updating.
        :param pulumi.Input[_builtins.bool] shared: Specifies whether the network resource can be accessed
               by any tenant or not. Changing this updates the sharing capabilities of the
               existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the network.
        :param pulumi.Input[_builtins.str] tenant_id: The owner of the network. Required if admin wants to
               create a network for another tenant. Changing this creates a new network.
        :param pulumi.Input[_builtins.bool] transparent_vlan: Specifies whether the network resource has the
               VLAN transparent attribute set. Valid values are true and false. Defaults to
               false. Changing this updates the `transparent_vlan` attribute of the existing
               network.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        if admin_state_up is not None:
            pulumi.set(__self__, "admin_state_up", admin_state_up)
        if all_tags is not None:
            pulumi.set(__self__, "all_tags", all_tags)
        if availability_zone_hints is not None:
            pulumi.set(__self__, "availability_zone_hints", availability_zone_hints)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if dns_domain is not None:
            pulumi.set(__self__, "dns_domain", dns_domain)
        if external is not None:
            pulumi.set(__self__, "external", external)
        if mtu is not None:
            pulumi.set(__self__, "mtu", mtu)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if port_security_enabled is not None:
            pulumi.set(__self__, "port_security_enabled", port_security_enabled)
        if qos_policy_id is not None:
            pulumi.set(__self__, "qos_policy_id", qos_policy_id)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if segments is not None:
            pulumi.set(__self__, "segments", segments)
        if shared is not None:
            pulumi.set(__self__, "shared", shared)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if tenant_id is not None:
            pulumi.set(__self__, "tenant_id", tenant_id)
        if transparent_vlan is not None:
            pulumi.set(__self__, "transparent_vlan", transparent_vlan)
        if value_specs is not None:
            pulumi.set(__self__, "value_specs", value_specs)

    @_builtins.property
    @pulumi.getter(name="adminStateUp")
    def admin_state_up(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        The administrative state of the network.
        Acceptable values are "true" and "false". Changing this value updates the
        state of the existing network.
        """
        return pulumi.get(self, "admin_state_up")

    @admin_state_up.setter
    def admin_state_up(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "admin_state_up", 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 network, 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="availabilityZoneHints")
    def availability_zone_hints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
        """
        An availability zone is used to make
        network resources highly available. Used for resources with high availability
        so that they are scheduled on different availability zones. Changing this
        creates a new network.
        """
        return pulumi.get(self, "availability_zone_hints")

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

    @_builtins.property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Human-readable description of the network. Changing this
        updates the name of the existing network.
        """
        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="dnsDomain")
    def dns_domain(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The network DNS domain. Available, when Neutron DNS
        extension is enabled. The `dns_domain` of a network in conjunction with the
        `dns_name` attribute of its ports will be published in an external DNS
        service when Neutron is configured to integrate with such a service.
        """
        return pulumi.get(self, "dns_domain")

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

    @_builtins.property
    @pulumi.getter
    def external(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether the network resource has the
        external routing facility. Valid values are true and false. Defaults to
        false. Changing this updates the external attribute of the existing network.
        """
        return pulumi.get(self, "external")

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

    @_builtins.property
    @pulumi.getter
    def mtu(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        The network MTU. Available for read-only, when Neutron
        `net-mtu` extension is enabled. Available for the modification, when
        Neutron `net-mtu-writable` extension is enabled.
        """
        return pulumi.get(self, "mtu")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The name of the network. Changing this updates the name of
        the existing network.
        """
        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="portSecurityEnabled")
    def port_security_enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether to explicitly enable or disable
        port security on the network. Port Security is usually enabled by default, so
        omitting this argument will usually result in a value of "true". Setting this
        explicitly to `false` will disable port security. Valid values are `true` and
        `false`.
        """
        return pulumi.get(self, "port_security_enabled")

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

    @_builtins.property
    @pulumi.getter(name="qosPolicyId")
    def qos_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Reference to the associated QoS policy.
        """
        return pulumi.get(self, "qos_policy_id")

    @qos_policy_id.setter
    def qos_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
        pulumi.set(self, "qos_policy_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 network. If omitted, the
        `region` argument of the provider is used. Changing this creates a new
        network.
        """
        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 segments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]]]:
        """
        An array of one or more provider segment objects.
        Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
        updating any provider related segments attributes. Check your plug-in whether
        it supports updating.
        """
        return pulumi.get(self, "segments")

    @segments.setter
    def segments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkSegmentArgs']]]]):
        pulumi.set(self, "segments", value)

    @_builtins.property
    @pulumi.getter
    def shared(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether the network resource can be accessed
        by any tenant or not. Changing this updates the sharing capabilities of the
        existing network.
        """
        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 network.
        """
        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="tenantId")
    def tenant_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The owner of the network. Required if admin wants to
        create a network for another tenant. Changing this creates a new network.
        """
        return pulumi.get(self, "tenant_id")

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

    @_builtins.property
    @pulumi.getter(name="transparentVlan")
    def transparent_vlan(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Specifies whether the network resource has the
        VLAN transparent attribute set. Valid values are true and false. Defaults to
        false. Changing this updates the `transparent_vlan` attribute of the existing
        network.
        """
        return pulumi.get(self, "transparent_vlan")

    @transparent_vlan.setter
    def transparent_vlan(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "transparent_vlan", 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/network:Network")
class Network(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 admin_state_up: Optional[pulumi.Input[_builtins.bool]] = None,
                 availability_zone_hints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 dns_domain: Optional[pulumi.Input[_builtins.str]] = None,
                 external: Optional[pulumi.Input[_builtins.bool]] = None,
                 mtu: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 port_security_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 qos_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 segments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['NetworkSegmentArgs', 'NetworkSegmentArgsDict']]]]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 tenant_id: Optional[pulumi.Input[_builtins.str]] = None,
                 transparent_vlan: Optional[pulumi.Input[_builtins.bool]] = None,
                 value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
                 __props__=None):
        """
        Manages a V2 Neutron network resource within OpenStack.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_openstack as openstack

        network1 = openstack.networking.Network("network_1",
            name="network_1",
            admin_state_up=True)
        subnet1 = openstack.networking.Subnet("subnet_1",
            name="subnet_1",
            network_id=network1.id,
            cidr="192.168.199.0/24",
            ip_version=4)
        secgroup1 = openstack.networking.SecGroup("secgroup_1",
            name="secgroup_1",
            description="a security group")
        secgroup_rule1 = openstack.networking.SecGroupRule("secgroup_rule_1",
            direction="ingress",
            ethertype="IPv4",
            protocol="tcp",
            port_range_min=22,
            port_range_max=22,
            remote_ip_prefix="0.0.0.0/0",
            security_group_id=secgroup1.id)
        port1 = openstack.networking.Port("port_1",
            name="port_1",
            network_id=network1.id,
            admin_state_up=True,
            security_group_ids=[secgroup1.id],
            fixed_ips=[{
                "subnet_id": subnet1.id,
                "ip_address": "192.168.199.10",
            }])
        instance1 = openstack.compute.Instance("instance_1",
            name="instance_1",
            security_groups=[secgroup1.name],
            networks=[{
                "port": port1.id,
            }])
        ```

        ## Import

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

        ```sh
        $ pulumi import openstack:networking/network:Network network_1 d90ce693-5ccf-4136-a0ed-152ce412b6b9
        ```


        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.bool] admin_state_up: The administrative state of the network.
               Acceptable values are "true" and "false". Changing this value updates the
               state of the existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] availability_zone_hints: An availability zone is used to make
               network resources highly available. Used for resources with high availability
               so that they are scheduled on different availability zones. Changing this
               creates a new network.
        :param pulumi.Input[_builtins.str] description: Human-readable description of the network. Changing this
               updates the name of the existing network.
        :param pulumi.Input[_builtins.str] dns_domain: The network DNS domain. Available, when Neutron DNS
               extension is enabled. The `dns_domain` of a network in conjunction with the
               `dns_name` attribute of its ports will be published in an external DNS
               service when Neutron is configured to integrate with such a service.
        :param pulumi.Input[_builtins.bool] external: Specifies whether the network resource has the
               external routing facility. Valid values are true and false. Defaults to
               false. Changing this updates the external attribute of the existing network.
        :param pulumi.Input[_builtins.int] mtu: The network MTU. Available for read-only, when Neutron
               `net-mtu` extension is enabled. Available for the modification, when
               Neutron `net-mtu-writable` extension is enabled.
        :param pulumi.Input[_builtins.str] name: The name of the network. Changing this updates the name of
               the existing network.
        :param pulumi.Input[_builtins.bool] port_security_enabled: Whether to explicitly enable or disable
               port security on the network. Port Security is usually enabled by default, so
               omitting this argument will usually result in a value of "true". Setting this
               explicitly to `false` will disable port security. Valid values are `true` and
               `false`.
        :param pulumi.Input[_builtins.str] qos_policy_id: Reference to the associated QoS policy.
        :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 network. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               network.
        :param pulumi.Input[Sequence[pulumi.Input[Union['NetworkSegmentArgs', 'NetworkSegmentArgsDict']]]] segments: An array of one or more provider segment objects.
               Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
               updating any provider related segments attributes. Check your plug-in whether
               it supports updating.
        :param pulumi.Input[_builtins.bool] shared: Specifies whether the network resource can be accessed
               by any tenant or not. Changing this updates the sharing capabilities of the
               existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the network.
        :param pulumi.Input[_builtins.str] tenant_id: The owner of the network. Required if admin wants to
               create a network for another tenant. Changing this creates a new network.
        :param pulumi.Input[_builtins.bool] transparent_vlan: Specifies whether the network resource has the
               VLAN transparent attribute set. Valid values are true and false. Defaults to
               false. Changing this updates the `transparent_vlan` attribute of the existing
               network.
        :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] value_specs: Map of additional options.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: Optional[NetworkArgs] = None,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Manages a V2 Neutron network resource within OpenStack.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_openstack as openstack

        network1 = openstack.networking.Network("network_1",
            name="network_1",
            admin_state_up=True)
        subnet1 = openstack.networking.Subnet("subnet_1",
            name="subnet_1",
            network_id=network1.id,
            cidr="192.168.199.0/24",
            ip_version=4)
        secgroup1 = openstack.networking.SecGroup("secgroup_1",
            name="secgroup_1",
            description="a security group")
        secgroup_rule1 = openstack.networking.SecGroupRule("secgroup_rule_1",
            direction="ingress",
            ethertype="IPv4",
            protocol="tcp",
            port_range_min=22,
            port_range_max=22,
            remote_ip_prefix="0.0.0.0/0",
            security_group_id=secgroup1.id)
        port1 = openstack.networking.Port("port_1",
            name="port_1",
            network_id=network1.id,
            admin_state_up=True,
            security_group_ids=[secgroup1.id],
            fixed_ips=[{
                "subnet_id": subnet1.id,
                "ip_address": "192.168.199.10",
            }])
        instance1 = openstack.compute.Instance("instance_1",
            name="instance_1",
            security_groups=[secgroup1.name],
            networks=[{
                "port": port1.id,
            }])
        ```

        ## Import

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

        ```sh
        $ pulumi import openstack:networking/network:Network network_1 d90ce693-5ccf-4136-a0ed-152ce412b6b9
        ```


        :param str resource_name: The name of the resource.
        :param NetworkArgs 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(NetworkArgs, 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,
                 admin_state_up: Optional[pulumi.Input[_builtins.bool]] = None,
                 availability_zone_hints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 dns_domain: Optional[pulumi.Input[_builtins.str]] = None,
                 external: Optional[pulumi.Input[_builtins.bool]] = None,
                 mtu: Optional[pulumi.Input[_builtins.int]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 port_security_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 qos_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
                 region: Optional[pulumi.Input[_builtins.str]] = None,
                 segments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['NetworkSegmentArgs', 'NetworkSegmentArgsDict']]]]] = None,
                 shared: Optional[pulumi.Input[_builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
                 tenant_id: Optional[pulumi.Input[_builtins.str]] = None,
                 transparent_vlan: Optional[pulumi.Input[_builtins.bool]] = 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__ = NetworkArgs.__new__(NetworkArgs)

            __props__.__dict__["admin_state_up"] = admin_state_up
            __props__.__dict__["availability_zone_hints"] = availability_zone_hints
            __props__.__dict__["description"] = description
            __props__.__dict__["dns_domain"] = dns_domain
            __props__.__dict__["external"] = external
            __props__.__dict__["mtu"] = mtu
            __props__.__dict__["name"] = name
            __props__.__dict__["port_security_enabled"] = port_security_enabled
            __props__.__dict__["qos_policy_id"] = qos_policy_id
            __props__.__dict__["region"] = region
            __props__.__dict__["segments"] = segments
            __props__.__dict__["shared"] = shared
            __props__.__dict__["tags"] = tags
            __props__.__dict__["tenant_id"] = tenant_id
            __props__.__dict__["transparent_vlan"] = transparent_vlan
            __props__.__dict__["value_specs"] = value_specs
            __props__.__dict__["all_tags"] = None
        super(Network, __self__).__init__(
            'openstack:networking/network:Network',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            admin_state_up: Optional[pulumi.Input[_builtins.bool]] = None,
            all_tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            availability_zone_hints: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            description: Optional[pulumi.Input[_builtins.str]] = None,
            dns_domain: Optional[pulumi.Input[_builtins.str]] = None,
            external: Optional[pulumi.Input[_builtins.bool]] = None,
            mtu: Optional[pulumi.Input[_builtins.int]] = None,
            name: Optional[pulumi.Input[_builtins.str]] = None,
            port_security_enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            qos_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
            region: Optional[pulumi.Input[_builtins.str]] = None,
            segments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['NetworkSegmentArgs', 'NetworkSegmentArgsDict']]]]] = None,
            shared: Optional[pulumi.Input[_builtins.bool]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
            tenant_id: Optional[pulumi.Input[_builtins.str]] = None,
            transparent_vlan: Optional[pulumi.Input[_builtins.bool]] = None,
            value_specs: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None) -> 'Network':
        """
        Get an existing Network 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.bool] admin_state_up: The administrative state of the network.
               Acceptable values are "true" and "false". Changing this value updates the
               state of the existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] all_tags: The collection of tags assigned on the network, which have been
               explicitly and implicitly added.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] availability_zone_hints: An availability zone is used to make
               network resources highly available. Used for resources with high availability
               so that they are scheduled on different availability zones. Changing this
               creates a new network.
        :param pulumi.Input[_builtins.str] description: Human-readable description of the network. Changing this
               updates the name of the existing network.
        :param pulumi.Input[_builtins.str] dns_domain: The network DNS domain. Available, when Neutron DNS
               extension is enabled. The `dns_domain` of a network in conjunction with the
               `dns_name` attribute of its ports will be published in an external DNS
               service when Neutron is configured to integrate with such a service.
        :param pulumi.Input[_builtins.bool] external: Specifies whether the network resource has the
               external routing facility. Valid values are true and false. Defaults to
               false. Changing this updates the external attribute of the existing network.
        :param pulumi.Input[_builtins.int] mtu: The network MTU. Available for read-only, when Neutron
               `net-mtu` extension is enabled. Available for the modification, when
               Neutron `net-mtu-writable` extension is enabled.
        :param pulumi.Input[_builtins.str] name: The name of the network. Changing this updates the name of
               the existing network.
        :param pulumi.Input[_builtins.bool] port_security_enabled: Whether to explicitly enable or disable
               port security on the network. Port Security is usually enabled by default, so
               omitting this argument will usually result in a value of "true". Setting this
               explicitly to `false` will disable port security. Valid values are `true` and
               `false`.
        :param pulumi.Input[_builtins.str] qos_policy_id: Reference to the associated QoS policy.
        :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 network. If omitted, the
               `region` argument of the provider is used. Changing this creates a new
               network.
        :param pulumi.Input[Sequence[pulumi.Input[Union['NetworkSegmentArgs', 'NetworkSegmentArgsDict']]]] segments: An array of one or more provider segment objects.
               Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
               updating any provider related segments attributes. Check your plug-in whether
               it supports updating.
        :param pulumi.Input[_builtins.bool] shared: Specifies whether the network resource can be accessed
               by any tenant or not. Changing this updates the sharing capabilities of the
               existing network.
        :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: A set of string tags for the network.
        :param pulumi.Input[_builtins.str] tenant_id: The owner of the network. Required if admin wants to
               create a network for another tenant. Changing this creates a new network.
        :param pulumi.Input[_builtins.bool] transparent_vlan: Specifies whether the network resource has the
               VLAN transparent attribute set. Valid values are true and false. Defaults to
               false. Changing this updates the `transparent_vlan` attribute of the existing
               network.
        :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__ = _NetworkState.__new__(_NetworkState)

        __props__.__dict__["admin_state_up"] = admin_state_up
        __props__.__dict__["all_tags"] = all_tags
        __props__.__dict__["availability_zone_hints"] = availability_zone_hints
        __props__.__dict__["description"] = description
        __props__.__dict__["dns_domain"] = dns_domain
        __props__.__dict__["external"] = external
        __props__.__dict__["mtu"] = mtu
        __props__.__dict__["name"] = name
        __props__.__dict__["port_security_enabled"] = port_security_enabled
        __props__.__dict__["qos_policy_id"] = qos_policy_id
        __props__.__dict__["region"] = region
        __props__.__dict__["segments"] = segments
        __props__.__dict__["shared"] = shared
        __props__.__dict__["tags"] = tags
        __props__.__dict__["tenant_id"] = tenant_id
        __props__.__dict__["transparent_vlan"] = transparent_vlan
        __props__.__dict__["value_specs"] = value_specs
        return Network(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter(name="adminStateUp")
    def admin_state_up(self) -> pulumi.Output[_builtins.bool]:
        """
        The administrative state of the network.
        Acceptable values are "true" and "false". Changing this value updates the
        state of the existing network.
        """
        return pulumi.get(self, "admin_state_up")

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

    @_builtins.property
    @pulumi.getter(name="availabilityZoneHints")
    def availability_zone_hints(self) -> pulumi.Output[Sequence[_builtins.str]]:
        """
        An availability zone is used to make
        network resources highly available. Used for resources with high availability
        so that they are scheduled on different availability zones. Changing this
        creates a new network.
        """
        return pulumi.get(self, "availability_zone_hints")

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

    @_builtins.property
    @pulumi.getter(name="dnsDomain")
    def dns_domain(self) -> pulumi.Output[_builtins.str]:
        """
        The network DNS domain. Available, when Neutron DNS
        extension is enabled. The `dns_domain` of a network in conjunction with the
        `dns_name` attribute of its ports will be published in an external DNS
        service when Neutron is configured to integrate with such a service.
        """
        return pulumi.get(self, "dns_domain")

    @_builtins.property
    @pulumi.getter
    def external(self) -> pulumi.Output[_builtins.bool]:
        """
        Specifies whether the network resource has the
        external routing facility. Valid values are true and false. Defaults to
        false. Changing this updates the external attribute of the existing network.
        """
        return pulumi.get(self, "external")

    @_builtins.property
    @pulumi.getter
    def mtu(self) -> pulumi.Output[_builtins.int]:
        """
        The network MTU. Available for read-only, when Neutron
        `net-mtu` extension is enabled. Available for the modification, when
        Neutron `net-mtu-writable` extension is enabled.
        """
        return pulumi.get(self, "mtu")

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

    @_builtins.property
    @pulumi.getter(name="portSecurityEnabled")
    def port_security_enabled(self) -> pulumi.Output[_builtins.bool]:
        """
        Whether to explicitly enable or disable
        port security on the network. Port Security is usually enabled by default, so
        omitting this argument will usually result in a value of "true". Setting this
        explicitly to `false` will disable port security. Valid values are `true` and
        `false`.
        """
        return pulumi.get(self, "port_security_enabled")

    @_builtins.property
    @pulumi.getter(name="qosPolicyId")
    def qos_policy_id(self) -> pulumi.Output[_builtins.str]:
        """
        Reference to the associated QoS policy.
        """
        return pulumi.get(self, "qos_policy_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 network. If omitted, the
        `region` argument of the provider is used. Changing this creates a new
        network.
        """
        return pulumi.get(self, "region")

    @_builtins.property
    @pulumi.getter
    def segments(self) -> pulumi.Output[Sequence['outputs.NetworkSegment']]:
        """
        An array of one or more provider segment objects.
        Note: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support
        updating any provider related segments attributes. Check your plug-in whether
        it supports updating.
        """
        return pulumi.get(self, "segments")

    @_builtins.property
    @pulumi.getter
    def shared(self) -> pulumi.Output[_builtins.bool]:
        """
        Specifies whether the network resource can be accessed
        by any tenant or not. Changing this updates the sharing capabilities of the
        existing network.
        """
        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 network.
        """
        return pulumi.get(self, "tags")

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

    @_builtins.property
    @pulumi.getter(name="transparentVlan")
    def transparent_vlan(self) -> pulumi.Output[_builtins.bool]:
        """
        Specifies whether the network resource has the
        VLAN transparent attribute set. Valid values are true and false. Defaults to
        false. Changing this updates the `transparent_vlan` attribute of the existing
        network.
        """
        return pulumi.get(self, "transparent_vlan")

    @_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")

