# 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__ = [
    'GetNetworkResult',
    'AwaitableGetNetworkResult',
    'get_network',
    'get_network_output',
]

@pulumi.output_type
class GetNetworkResult:
    """
    A collection of values returned by getNetwork.
    """
    def __init__(__self__, cidr=None, constraints=None, custom_properties=None, deployment_id=None, description=None, external_id=None, external_zone_id=None, id=None, links=None, name=None, organization_id=None, outbound_access=None, owner=None, project_id=None, self_link=None, tags=None, updated_at=None):
        if cidr and not isinstance(cidr, str):
            raise TypeError("Expected argument 'cidr' to be a str")
        pulumi.set(__self__, "cidr", cidr)
        if constraints and not isinstance(constraints, list):
            raise TypeError("Expected argument 'constraints' to be a list")
        pulumi.set(__self__, "constraints", constraints)
        if custom_properties and not isinstance(custom_properties, dict):
            raise TypeError("Expected argument 'custom_properties' to be a dict")
        pulumi.set(__self__, "custom_properties", custom_properties)
        if deployment_id and not isinstance(deployment_id, str):
            raise TypeError("Expected argument 'deployment_id' to be a str")
        pulumi.set(__self__, "deployment_id", deployment_id)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if external_id and not isinstance(external_id, str):
            raise TypeError("Expected argument 'external_id' to be a str")
        pulumi.set(__self__, "external_id", external_id)
        if external_zone_id and not isinstance(external_zone_id, str):
            raise TypeError("Expected argument 'external_zone_id' to be a str")
        pulumi.set(__self__, "external_zone_id", external_zone_id)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if links and not isinstance(links, list):
            raise TypeError("Expected argument 'links' to be a list")
        pulumi.set(__self__, "links", links)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if organization_id and not isinstance(organization_id, str):
            raise TypeError("Expected argument 'organization_id' to be a str")
        pulumi.set(__self__, "organization_id", organization_id)
        if outbound_access and not isinstance(outbound_access, bool):
            raise TypeError("Expected argument 'outbound_access' to be a bool")
        pulumi.set(__self__, "outbound_access", outbound_access)
        if owner and not isinstance(owner, str):
            raise TypeError("Expected argument 'owner' to be a str")
        pulumi.set(__self__, "owner", owner)
        if project_id and not isinstance(project_id, str):
            raise TypeError("Expected argument 'project_id' to be a str")
        pulumi.set(__self__, "project_id", project_id)
        if self_link and not isinstance(self_link, str):
            raise TypeError("Expected argument 'self_link' to be a str")
        pulumi.set(__self__, "self_link", self_link)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if updated_at and not isinstance(updated_at, str):
            raise TypeError("Expected argument 'updated_at' to be a str")
        pulumi.set(__self__, "updated_at", updated_at)

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

    @property
    @pulumi.getter
    def constraints(self) -> Optional[Sequence['outputs.GetNetworkConstraintResult']]:
        """
        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) -> 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) -> str:
        """
        Deployment id that is associated with this resource.
        """
        return pulumi.get(self, "deployment_id")

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

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

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

    @property
    @pulumi.getter
    def id(self) -> str:
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> 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) -> 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) -> str:
        """
        Email of the user that owns the entity.
        """
        return pulumi.get(self, "owner")

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> 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) -> str:
        """
        Self link of this request.
        """
        return pulumi.get(self, "self_link")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetNetworkTagResult']:
        """
        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) -> str:
        return pulumi.get(self, "updated_at")


class AwaitableGetNetworkResult(GetNetworkResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetNetworkResult(
            cidr=self.cidr,
            constraints=self.constraints,
            custom_properties=self.custom_properties,
            deployment_id=self.deployment_id,
            description=self.description,
            external_id=self.external_id,
            external_zone_id=self.external_zone_id,
            id=self.id,
            links=self.links,
            name=self.name,
            organization_id=self.organization_id,
            outbound_access=self.outbound_access,
            owner=self.owner,
            project_id=self.project_id,
            self_link=self.self_link,
            tags=self.tags,
            updated_at=self.updated_at)


def get_network(constraints: Optional[Sequence[pulumi.InputType['GetNetworkConstraintArgs']]] = None,
                id: Optional[str] = None,
                name: Optional[str] = None,
                tags: Optional[Sequence[pulumi.InputType['GetNetworkTagArgs']]] = None,
                opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetNetworkResult:
    """
    ## ---layout: "vra"

    page_title: "VMware vRealize Automation: network.Network"
    description: |-
      Provides a data lookup for vra_network.
    ---

    # Data Source: network.Network
    ## Example Usage
    ### S

    This is an example of how to read a network data source.

    ```python
    import pulumi
    import pulumi_vra as vra

    test_network = vra.network.get_network(name=var["network_name"])
    ```


    :param Sequence[pulumi.InputType['GetNetworkConstraintArgs']] constraints: List of storage, network and extensibility constraints to be applied when provisioning through this project.
    :param str id: The id of the image profile instance.
    :param str name: A human-friendly name used as an identifier in APIs that support this option.
    :param Sequence[pulumi.InputType['GetNetworkTagArgs']] tags: A set of tag keys and optional values that were set on this resource.
           example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
    """
    __args__ = dict()
    __args__['constraints'] = constraints
    __args__['id'] = id
    __args__['name'] = name
    __args__['tags'] = tags
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('vra:network/getNetwork:getNetwork', __args__, opts=opts, typ=GetNetworkResult).value

    return AwaitableGetNetworkResult(
        cidr=__ret__.cidr,
        constraints=__ret__.constraints,
        custom_properties=__ret__.custom_properties,
        deployment_id=__ret__.deployment_id,
        description=__ret__.description,
        external_id=__ret__.external_id,
        external_zone_id=__ret__.external_zone_id,
        id=__ret__.id,
        links=__ret__.links,
        name=__ret__.name,
        organization_id=__ret__.organization_id,
        outbound_access=__ret__.outbound_access,
        owner=__ret__.owner,
        project_id=__ret__.project_id,
        self_link=__ret__.self_link,
        tags=__ret__.tags,
        updated_at=__ret__.updated_at)


@_utilities.lift_output_func(get_network)
def get_network_output(constraints: Optional[pulumi.Input[Optional[Sequence[pulumi.InputType['GetNetworkConstraintArgs']]]]] = None,
                       id: Optional[pulumi.Input[Optional[str]]] = None,
                       name: Optional[pulumi.Input[Optional[str]]] = None,
                       tags: Optional[pulumi.Input[Optional[Sequence[pulumi.InputType['GetNetworkTagArgs']]]]] = None,
                       opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNetworkResult]:
    """
    ## ---layout: "vra"

    page_title: "VMware vRealize Automation: network.Network"
    description: |-
      Provides a data lookup for vra_network.
    ---

    # Data Source: network.Network
    ## Example Usage
    ### S

    This is an example of how to read a network data source.

    ```python
    import pulumi
    import pulumi_vra as vra

    test_network = vra.network.get_network(name=var["network_name"])
    ```


    :param Sequence[pulumi.InputType['GetNetworkConstraintArgs']] constraints: List of storage, network and extensibility constraints to be applied when provisioning through this project.
    :param str id: The id of the image profile instance.
    :param str name: A human-friendly name used as an identifier in APIs that support this option.
    :param Sequence[pulumi.InputType['GetNetworkTagArgs']] tags: A set of tag keys and optional values that were set on this resource.
           example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
    """
    ...
