# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs
from ._inputs import *

__all__ = ['NetworkArgs', 'Network']

@pulumi.input_type
class NetworkArgs:
    def __init__(__self__, *,
                 project_id: pulumi.Input[str],
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkConstraintArgs']]]] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 deployment_id: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 outbound_access: Optional[pulumi.Input[bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkTagArgs']]]] = None):
        """
        The set of arguments for constructing a Network resource.
        :param pulumi.Input[str] project_id: The id of the project this resource belongs to.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkConstraintArgs']]] constraints: List of storage, network and extensibility constraints to be applied when provisioning through this project.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the base resource.
        :param pulumi.Input[str] deployment_id: Deployment id that is associated with this resource.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[bool] outbound_access: Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkTagArgs']]] tags: A set of tag keys and optional values that were set on this resource.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        pulumi.set(__self__, "project_id", project_id)
        if constraints is not None:
            pulumi.set(__self__, "constraints", constraints)
        if custom_properties is not None:
            pulumi.set(__self__, "custom_properties", custom_properties)
        if deployment_id is not None:
            pulumi.set(__self__, "deployment_id", deployment_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if outbound_access is not None:
            pulumi.set(__self__, "outbound_access", outbound_access)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[str]:
        """
        The id of the project this resource belongs to.
        """
        return pulumi.get(self, "project_id")

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

    @property
    @pulumi.getter
    def constraints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkConstraintArgs']]]]:
        """
        List of storage, network and extensibility constraints to be applied when provisioning through this project.
        """
        return pulumi.get(self, "constraints")

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

    @property
    @pulumi.getter(name="customProperties")
    def custom_properties(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Additional properties that may be used to extend the base resource.
        """
        return pulumi.get(self, "custom_properties")

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

    @property
    @pulumi.getter(name="deploymentId")
    def deployment_id(self) -> Optional[pulumi.Input[str]]:
        """
        Deployment id that is associated with this resource.
        """
        return pulumi.get(self, "deployment_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A human-friendly description.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        A human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="outboundAccess")
    def outbound_access(self) -> Optional[pulumi.Input[bool]]:
        """
        Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        """
        return pulumi.get(self, "outbound_access")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkTagArgs']]]]:
        """
        A set of tag keys and optional values that were set on this resource.
        example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        return pulumi.get(self, "tags")

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


@pulumi.input_type
class _NetworkState:
    def __init__(__self__, *,
                 cidr: Optional[pulumi.Input[str]] = None,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkConstraintArgs']]]] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 deployment_id: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 external_id: Optional[pulumi.Input[str]] = None,
                 external_zone_id: Optional[pulumi.Input[str]] = None,
                 links: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkLinkArgs']]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 organization_id: Optional[pulumi.Input[str]] = None,
                 outbound_access: Optional[pulumi.Input[bool]] = None,
                 owner: Optional[pulumi.Input[str]] = None,
                 project_id: Optional[pulumi.Input[str]] = None,
                 self_link: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['NetworkTagArgs']]]] = None,
                 updated_at: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering Network resources.
        :param pulumi.Input[str] cidr: IPv4 address range of the network in CIDR format.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkConstraintArgs']]] constraints: List of storage, network and extensibility constraints to be applied when provisioning through this project.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the base resource.
        :param pulumi.Input[str] deployment_id: Deployment id that is associated with this resource.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[str] external_id: External entity Id on the provider side.
        :param pulumi.Input[str] external_zone_id: The external zoneId of the resource.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkLinkArgs']]] links: HATEOAS of the entity
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[str] organization_id: The id of the organization this entity belongs to.
        :param pulumi.Input[bool] outbound_access: Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        :param pulumi.Input[str] owner: Email of the user that owns the entity.
        :param pulumi.Input[str] project_id: The id of the project this resource belongs to.
        :param pulumi.Input[str] self_link: Self link of this request.
        :param pulumi.Input[Sequence[pulumi.Input['NetworkTagArgs']]] tags: A set of tag keys and optional values that were set on this resource.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        if cidr is not None:
            pulumi.set(__self__, "cidr", cidr)
        if constraints is not None:
            pulumi.set(__self__, "constraints", constraints)
        if custom_properties is not None:
            pulumi.set(__self__, "custom_properties", custom_properties)
        if deployment_id is not None:
            pulumi.set(__self__, "deployment_id", deployment_id)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if external_id is not None:
            pulumi.set(__self__, "external_id", external_id)
        if external_zone_id is not None:
            pulumi.set(__self__, "external_zone_id", external_zone_id)
        if links is not None:
            pulumi.set(__self__, "links", links)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if organization_id is not None:
            pulumi.set(__self__, "organization_id", organization_id)
        if outbound_access is not None:
            pulumi.set(__self__, "outbound_access", outbound_access)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if self_link is not None:
            pulumi.set(__self__, "self_link", self_link)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if updated_at is not None:
            pulumi.set(__self__, "updated_at", updated_at)

    @property
    @pulumi.getter
    def cidr(self) -> Optional[pulumi.Input[str]]:
        """
        IPv4 address range of the network in CIDR format.
        """
        return pulumi.get(self, "cidr")

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

    @property
    @pulumi.getter
    def constraints(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkConstraintArgs']]]]:
        """
        List of storage, network and extensibility constraints to be applied when provisioning through this project.
        """
        return pulumi.get(self, "constraints")

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

    @property
    @pulumi.getter(name="customProperties")
    def custom_properties(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Additional properties that may be used to extend the base resource.
        """
        return pulumi.get(self, "custom_properties")

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

    @property
    @pulumi.getter(name="deploymentId")
    def deployment_id(self) -> Optional[pulumi.Input[str]]:
        """
        Deployment id that is associated with this resource.
        """
        return pulumi.get(self, "deployment_id")

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

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        """
        A human-friendly description.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter(name="externalId")
    def external_id(self) -> Optional[pulumi.Input[str]]:
        """
        External entity Id on the provider side.
        """
        return pulumi.get(self, "external_id")

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

    @property
    @pulumi.getter(name="externalZoneId")
    def external_zone_id(self) -> Optional[pulumi.Input[str]]:
        """
        The external zoneId of the resource.
        """
        return pulumi.get(self, "external_zone_id")

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

    @property
    @pulumi.getter
    def links(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkLinkArgs']]]]:
        """
        HATEOAS of the entity
        """
        return pulumi.get(self, "links")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        A human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the organization this entity belongs to.
        """
        return pulumi.get(self, "organization_id")

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

    @property
    @pulumi.getter(name="outboundAccess")
    def outbound_access(self) -> Optional[pulumi.Input[bool]]:
        """
        Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        """
        return pulumi.get(self, "outbound_access")

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

    @property
    @pulumi.getter
    def owner(self) -> Optional[pulumi.Input[str]]:
        """
        Email of the user that owns the entity.
        """
        return pulumi.get(self, "owner")

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

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the project this resource belongs to.
        """
        return pulumi.get(self, "project_id")

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

    @property
    @pulumi.getter(name="selfLink")
    def self_link(self) -> Optional[pulumi.Input[str]]:
        """
        Self link of this request.
        """
        return pulumi.get(self, "self_link")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NetworkTagArgs']]]]:
        """
        A set of tag keys and optional values that were set on this resource.
        example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        return pulumi.get(self, "tags")

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

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "updated_at")

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


class Network(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkConstraintArgs']]]]] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 deployment_id: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 outbound_access: Optional[pulumi.Input[bool]] = None,
                 project_id: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkTagArgs']]]]] = None,
                 __props__=None):
        """
        ## Example Usage
        ### S

        This is an example of how to create a network resource.

        ```python
        import pulumi
        import pulumiverse_vra as vra

        my_network = vra.network.Network("myNetwork",
            constraints=[vra.network.NetworkConstraintArgs(
                expression="pci",
                mandatory=True,
            )],
            outbound_access=False,
            tags=[vra.network.NetworkTagArgs(
                key="foo",
                value="bar",
            )])
        ```
        A network resource supports the following resource:

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkConstraintArgs']]]] constraints: List of storage, network and extensibility constraints to be applied when provisioning through this project.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the base resource.
        :param pulumi.Input[str] deployment_id: Deployment id that is associated with this resource.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[bool] outbound_access: Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        :param pulumi.Input[str] project_id: The id of the project this resource belongs to.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkTagArgs']]]] tags: A set of tag keys and optional values that were set on this resource.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: NetworkArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        ## Example Usage
        ### S

        This is an example of how to create a network resource.

        ```python
        import pulumi
        import pulumiverse_vra as vra

        my_network = vra.network.Network("myNetwork",
            constraints=[vra.network.NetworkConstraintArgs(
                expression="pci",
                mandatory=True,
            )],
            outbound_access=False,
            tags=[vra.network.NetworkTagArgs(
                key="foo",
                value="bar",
            )])
        ```
        A network resource supports the following resource:

        :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,
                 constraints: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkConstraintArgs']]]]] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 deployment_id: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 outbound_access: Optional[pulumi.Input[bool]] = None,
                 project_id: Optional[pulumi.Input[str]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkTagArgs']]]]] = 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__["constraints"] = constraints
            __props__.__dict__["custom_properties"] = custom_properties
            __props__.__dict__["deployment_id"] = deployment_id
            __props__.__dict__["description"] = description
            __props__.__dict__["name"] = name
            __props__.__dict__["outbound_access"] = outbound_access
            if project_id is None and not opts.urn:
                raise TypeError("Missing required property 'project_id'")
            __props__.__dict__["project_id"] = project_id
            __props__.__dict__["tags"] = tags
            __props__.__dict__["cidr"] = None
            __props__.__dict__["external_id"] = None
            __props__.__dict__["external_zone_id"] = None
            __props__.__dict__["links"] = None
            __props__.__dict__["organization_id"] = None
            __props__.__dict__["owner"] = None
            __props__.__dict__["self_link"] = None
            __props__.__dict__["updated_at"] = None
        super(Network, __self__).__init__(
            'vra:network/network:Network',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            cidr: Optional[pulumi.Input[str]] = None,
            constraints: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkConstraintArgs']]]]] = None,
            custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
            deployment_id: Optional[pulumi.Input[str]] = None,
            description: Optional[pulumi.Input[str]] = None,
            external_id: Optional[pulumi.Input[str]] = None,
            external_zone_id: Optional[pulumi.Input[str]] = None,
            links: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkLinkArgs']]]]] = None,
            name: Optional[pulumi.Input[str]] = None,
            organization_id: Optional[pulumi.Input[str]] = None,
            outbound_access: Optional[pulumi.Input[bool]] = None,
            owner: Optional[pulumi.Input[str]] = None,
            project_id: Optional[pulumi.Input[str]] = None,
            self_link: Optional[pulumi.Input[str]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkTagArgs']]]]] = None,
            updated_at: Optional[pulumi.Input[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[str] cidr: IPv4 address range of the network in CIDR format.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkConstraintArgs']]]] constraints: List of storage, network and extensibility constraints to be applied when provisioning through this project.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the base resource.
        :param pulumi.Input[str] deployment_id: Deployment id that is associated with this resource.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[str] external_id: External entity Id on the provider side.
        :param pulumi.Input[str] external_zone_id: The external zoneId of the resource.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkLinkArgs']]]] links: HATEOAS of the entity
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[str] organization_id: The id of the organization this entity belongs to.
        :param pulumi.Input[bool] outbound_access: Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        :param pulumi.Input[str] owner: Email of the user that owns the entity.
        :param pulumi.Input[str] project_id: The id of the project this resource belongs to.
        :param pulumi.Input[str] self_link: Self link of this request.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['NetworkTagArgs']]]] tags: A set of tag keys and optional values that were set on this resource.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _NetworkState.__new__(_NetworkState)

        __props__.__dict__["cidr"] = cidr
        __props__.__dict__["constraints"] = constraints
        __props__.__dict__["custom_properties"] = custom_properties
        __props__.__dict__["deployment_id"] = deployment_id
        __props__.__dict__["description"] = description
        __props__.__dict__["external_id"] = external_id
        __props__.__dict__["external_zone_id"] = external_zone_id
        __props__.__dict__["links"] = links
        __props__.__dict__["name"] = name
        __props__.__dict__["organization_id"] = organization_id
        __props__.__dict__["outbound_access"] = outbound_access
        __props__.__dict__["owner"] = owner
        __props__.__dict__["project_id"] = project_id
        __props__.__dict__["self_link"] = self_link
        __props__.__dict__["tags"] = tags
        __props__.__dict__["updated_at"] = updated_at
        return Network(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter
    def cidr(self) -> pulumi.Output[str]:
        """
        IPv4 address range of the network in CIDR format.
        """
        return pulumi.get(self, "cidr")

    @property
    @pulumi.getter
    def constraints(self) -> pulumi.Output[Optional[Sequence['outputs.NetworkConstraint']]]:
        """
        List of storage, network and extensibility constraints to be applied when provisioning through this project.
        """
        return pulumi.get(self, "constraints")

    @property
    @pulumi.getter(name="customProperties")
    def custom_properties(self) -> pulumi.Output[Mapping[str, Any]]:
        """
        Additional properties that may be used to extend the base resource.
        """
        return pulumi.get(self, "custom_properties")

    @property
    @pulumi.getter(name="deploymentId")
    def deployment_id(self) -> pulumi.Output[str]:
        """
        Deployment id that is associated with this resource.
        """
        return pulumi.get(self, "deployment_id")

    @property
    @pulumi.getter
    def description(self) -> pulumi.Output[Optional[str]]:
        """
        A human-friendly description.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="externalId")
    def external_id(self) -> pulumi.Output[str]:
        """
        External entity Id on the provider side.
        """
        return pulumi.get(self, "external_id")

    @property
    @pulumi.getter(name="externalZoneId")
    def external_zone_id(self) -> pulumi.Output[str]:
        """
        The external zoneId of the resource.
        """
        return pulumi.get(self, "external_zone_id")

    @property
    @pulumi.getter
    def links(self) -> pulumi.Output[Sequence['outputs.NetworkLink']]:
        """
        HATEOAS of the entity
        """
        return pulumi.get(self, "links")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        A human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> pulumi.Output[str]:
        """
        The id of the organization this entity belongs to.
        """
        return pulumi.get(self, "organization_id")

    @property
    @pulumi.getter(name="outboundAccess")
    def outbound_access(self) -> pulumi.Output[Optional[bool]]:
        """
        Flag to indicate if the network needs to have outbound access or not. Default is true. This field will be ignored if there is proper input for networkType customProperty.
        """
        return pulumi.get(self, "outbound_access")

    @property
    @pulumi.getter
    def owner(self) -> pulumi.Output[str]:
        """
        Email of the user that owns the entity.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Output[str]:
        """
        The id of the project this resource belongs to.
        """
        return pulumi.get(self, "project_id")

    @property
    @pulumi.getter(name="selfLink")
    def self_link(self) -> pulumi.Output[str]:
        """
        Self link of this request.
        """
        return pulumi.get(self, "self_link")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.NetworkTag']]:
        """
        A set of tag keys and optional values that were set on this resource.
        example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> pulumi.Output[str]:
        return pulumi.get(self, "updated_at")

