# 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__ = ['ProfileArgs', 'Profile']

@pulumi.input_type
class ProfileArgs:
    def __init__(__self__, *,
                 region_id: pulumi.Input[str],
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 fabric_network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 isolated_external_fabric_network_id: Optional[pulumi.Input[str]] = None,
                 isolated_network_cidr_prefix: Optional[pulumi.Input[int]] = None,
                 isolated_network_domain_cidr: Optional[pulumi.Input[str]] = None,
                 isolated_network_domain_id: Optional[pulumi.Input[str]] = None,
                 isolation_type: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['ProfileTagArgs']]]] = None):
        """
        The set of arguments for constructing a Profile resource.
        :param pulumi.Input[str] region_id: The id of the region for which this profile is defined as in vRealize Automation(vRA).
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] fabric_network_ids: A list of fabric network Ids which are assigned to the network profile.
               example:[ "6543" ]
        :param pulumi.Input[str] isolated_external_fabric_network_id: The id of the fabric network used for outbound access.
        :param pulumi.Input[int] isolated_network_cidr_prefix: The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        :param pulumi.Input[str] isolated_network_domain_cidr: CIDR of the isolation network domain.
        :param pulumi.Input[str] isolated_network_domain_id: The id of the network domain used for creating isolated networks.
        :param pulumi.Input[str] isolation_type: Specifies the isolation type e.g. none, subnet or security group
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] security_group_ids: A list of security group Ids which are assigned to the network profile.
               example:[ "6545" ]
        :param pulumi.Input[Sequence[pulumi.Input['ProfileTagArgs']]] tags: A set of tag keys and optional values that were set on this Network Profile.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        pulumi.set(__self__, "region_id", region_id)
        if custom_properties is not None:
            pulumi.set(__self__, "custom_properties", custom_properties)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if fabric_network_ids is not None:
            pulumi.set(__self__, "fabric_network_ids", fabric_network_ids)
        if isolated_external_fabric_network_id is not None:
            pulumi.set(__self__, "isolated_external_fabric_network_id", isolated_external_fabric_network_id)
        if isolated_network_cidr_prefix is not None:
            pulumi.set(__self__, "isolated_network_cidr_prefix", isolated_network_cidr_prefix)
        if isolated_network_domain_cidr is not None:
            pulumi.set(__self__, "isolated_network_domain_cidr", isolated_network_domain_cidr)
        if isolated_network_domain_id is not None:
            pulumi.set(__self__, "isolated_network_domain_id", isolated_network_domain_id)
        if isolation_type is not None:
            pulumi.set(__self__, "isolation_type", isolation_type)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if security_group_ids is not None:
            pulumi.set(__self__, "security_group_ids", security_group_ids)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> pulumi.Input[str]:
        """
        The id of the region for which this profile is defined as in vRealize Automation(vRA).
        """
        return pulumi.get(self, "region_id")

    @region_id.setter
    def region_id(self, value: pulumi.Input[str]):
        pulumi.set(self, "region_id", 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 Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        """
        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
    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="fabricNetworkIds")
    def fabric_network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of fabric network Ids which are assigned to the network profile.
        example:[ "6543" ]
        """
        return pulumi.get(self, "fabric_network_ids")

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

    @property
    @pulumi.getter(name="isolatedExternalFabricNetworkId")
    def isolated_external_fabric_network_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the fabric network used for outbound access.
        """
        return pulumi.get(self, "isolated_external_fabric_network_id")

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

    @property
    @pulumi.getter(name="isolatedNetworkCidrPrefix")
    def isolated_network_cidr_prefix(self) -> Optional[pulumi.Input[int]]:
        """
        The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        """
        return pulumi.get(self, "isolated_network_cidr_prefix")

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

    @property
    @pulumi.getter(name="isolatedNetworkDomainCidr")
    def isolated_network_domain_cidr(self) -> Optional[pulumi.Input[str]]:
        """
        CIDR of the isolation network domain.
        """
        return pulumi.get(self, "isolated_network_domain_cidr")

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

    @property
    @pulumi.getter(name="isolatedNetworkDomainId")
    def isolated_network_domain_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the network domain used for creating isolated networks.
        """
        return pulumi.get(self, "isolated_network_domain_id")

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

    @property
    @pulumi.getter(name="isolationType")
    def isolation_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the isolation type e.g. none, subnet or security group
        """
        return pulumi.get(self, "isolation_type")

    @isolation_type.setter
    def isolation_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "isolation_type", 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="securityGroupIds")
    def security_group_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of security group Ids which are assigned to the network profile.
        example:[ "6545" ]
        """
        return pulumi.get(self, "security_group_ids")

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

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

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


@pulumi.input_type
class _ProfileState:
    def __init__(__self__, *,
                 cloud_account_id: Optional[pulumi.Input[str]] = None,
                 created_at: Optional[pulumi.Input[str]] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 external_region_id: Optional[pulumi.Input[str]] = None,
                 fabric_network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 isolated_external_fabric_network_id: Optional[pulumi.Input[str]] = None,
                 isolated_network_cidr_prefix: Optional[pulumi.Input[int]] = None,
                 isolated_network_domain_cidr: Optional[pulumi.Input[str]] = None,
                 isolated_network_domain_id: Optional[pulumi.Input[str]] = None,
                 isolation_type: Optional[pulumi.Input[str]] = None,
                 links: Optional[pulumi.Input[Sequence[pulumi.Input['ProfileLinkArgs']]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 org_id: Optional[pulumi.Input[str]] = None,
                 organization_id: Optional[pulumi.Input[str]] = None,
                 owner: Optional[pulumi.Input[str]] = None,
                 region_id: Optional[pulumi.Input[str]] = None,
                 security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['ProfileTagArgs']]]] = None,
                 updated_at: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering Profile resources.
        :param pulumi.Input[str] cloud_account_id: The ID of the cloud account this entity belongs to.
        :param pulumi.Input[str] created_at: Date when  entity was created. Date and time format is ISO 8601 and UTC.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[str] external_region_id: The external regionId of the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] fabric_network_ids: A list of fabric network Ids which are assigned to the network profile.
               example:[ "6543" ]
        :param pulumi.Input[str] isolated_external_fabric_network_id: The id of the fabric network used for outbound access.
        :param pulumi.Input[int] isolated_network_cidr_prefix: The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        :param pulumi.Input[str] isolated_network_domain_cidr: CIDR of the isolation network domain.
        :param pulumi.Input[str] isolated_network_domain_id: The id of the network domain used for creating isolated networks.
        :param pulumi.Input[str] isolation_type: Specifies the isolation type e.g. none, subnet or security group
        :param pulumi.Input[Sequence[pulumi.Input['ProfileLinkArgs']]] 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] org_id: ID of organization that entity belongs to.
        :param pulumi.Input[str] organization_id: The id of the organization this entity belongs to. Deprecated, refer to org_id instead.
        :param pulumi.Input[str] owner: Email of the user that owns the entity.
        :param pulumi.Input[str] region_id: The id of the region for which this profile is defined as in vRealize Automation(vRA).
        :param pulumi.Input[Sequence[pulumi.Input[str]]] security_group_ids: A list of security group Ids which are assigned to the network profile.
               example:[ "6545" ]
        :param pulumi.Input[Sequence[pulumi.Input['ProfileTagArgs']]] tags: A set of tag keys and optional values that were set on this Network Profile.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        :param pulumi.Input[str] updated_at: Date when the entity was last updated. The date is ISO 8601 and UTC.
        """
        if cloud_account_id is not None:
            pulumi.set(__self__, "cloud_account_id", cloud_account_id)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if custom_properties is not None:
            pulumi.set(__self__, "custom_properties", custom_properties)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if external_region_id is not None:
            pulumi.set(__self__, "external_region_id", external_region_id)
        if fabric_network_ids is not None:
            pulumi.set(__self__, "fabric_network_ids", fabric_network_ids)
        if isolated_external_fabric_network_id is not None:
            pulumi.set(__self__, "isolated_external_fabric_network_id", isolated_external_fabric_network_id)
        if isolated_network_cidr_prefix is not None:
            pulumi.set(__self__, "isolated_network_cidr_prefix", isolated_network_cidr_prefix)
        if isolated_network_domain_cidr is not None:
            pulumi.set(__self__, "isolated_network_domain_cidr", isolated_network_domain_cidr)
        if isolated_network_domain_id is not None:
            pulumi.set(__self__, "isolated_network_domain_id", isolated_network_domain_id)
        if isolation_type is not None:
            pulumi.set(__self__, "isolation_type", isolation_type)
        if links is not None:
            pulumi.set(__self__, "links", links)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if org_id is not None:
            pulumi.set(__self__, "org_id", org_id)
        if organization_id is not None:
            pulumi.set(__self__, "organization_id", organization_id)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)
        if region_id is not None:
            pulumi.set(__self__, "region_id", region_id)
        if security_group_ids is not None:
            pulumi.set(__self__, "security_group_ids", security_group_ids)
        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(name="cloudAccountId")
    def cloud_account_id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the cloud account this entity belongs to.
        """
        return pulumi.get(self, "cloud_account_id")

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

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[pulumi.Input[str]]:
        """
        Date when  entity was created. Date and time format is ISO 8601 and UTC.
        """
        return pulumi.get(self, "created_at")

    @created_at.setter
    def created_at(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "created_at", 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 Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        """
        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
    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="externalRegionId")
    def external_region_id(self) -> Optional[pulumi.Input[str]]:
        """
        The external regionId of the resource.
        """
        return pulumi.get(self, "external_region_id")

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

    @property
    @pulumi.getter(name="fabricNetworkIds")
    def fabric_network_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of fabric network Ids which are assigned to the network profile.
        example:[ "6543" ]
        """
        return pulumi.get(self, "fabric_network_ids")

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

    @property
    @pulumi.getter(name="isolatedExternalFabricNetworkId")
    def isolated_external_fabric_network_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the fabric network used for outbound access.
        """
        return pulumi.get(self, "isolated_external_fabric_network_id")

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

    @property
    @pulumi.getter(name="isolatedNetworkCidrPrefix")
    def isolated_network_cidr_prefix(self) -> Optional[pulumi.Input[int]]:
        """
        The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        """
        return pulumi.get(self, "isolated_network_cidr_prefix")

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

    @property
    @pulumi.getter(name="isolatedNetworkDomainCidr")
    def isolated_network_domain_cidr(self) -> Optional[pulumi.Input[str]]:
        """
        CIDR of the isolation network domain.
        """
        return pulumi.get(self, "isolated_network_domain_cidr")

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

    @property
    @pulumi.getter(name="isolatedNetworkDomainId")
    def isolated_network_domain_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the network domain used for creating isolated networks.
        """
        return pulumi.get(self, "isolated_network_domain_id")

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

    @property
    @pulumi.getter(name="isolationType")
    def isolation_type(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the isolation type e.g. none, subnet or security group
        """
        return pulumi.get(self, "isolation_type")

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

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

    @links.setter
    def links(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProfileLinkArgs']]]]):
        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="orgId")
    def org_id(self) -> Optional[pulumi.Input[str]]:
        """
        ID of organization that entity belongs to.
        """
        return pulumi.get(self, "org_id")

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

    @property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the organization this entity belongs to. Deprecated, refer to org_id instead.
        """
        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
    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="regionId")
    def region_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the region for which this profile is defined as in vRealize Automation(vRA).
        """
        return pulumi.get(self, "region_id")

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

    @property
    @pulumi.getter(name="securityGroupIds")
    def security_group_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of security group Ids which are assigned to the network profile.
        example:[ "6545" ]
        """
        return pulumi.get(self, "security_group_ids")

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

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

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

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> Optional[pulumi.Input[str]]:
        """
        Date when the entity was last updated. The date is ISO 8601 and UTC.
        """
        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 Profile(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 fabric_network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 isolated_external_fabric_network_id: Optional[pulumi.Input[str]] = None,
                 isolated_network_cidr_prefix: Optional[pulumi.Input[int]] = None,
                 isolated_network_domain_cidr: Optional[pulumi.Input[str]] = None,
                 isolated_network_domain_id: Optional[pulumi.Input[str]] = None,
                 isolation_type: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 region_id: Optional[pulumi.Input[str]] = None,
                 security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileTagArgs']]]]] = None,
                 __props__=None):
        """
        ## Example Usage
        ### S
        This is an example of how to create a network profile resource.

        **Network profile:**

        ```python
        import pulumi
        import pulumiverse_vra as vra

        simple = vra.network.Profile("simple",
            description="Simple Network Profile with no isolation.",
            region_id=data["vra_region"]["this"]["id"],
            fabric_network_ids=[
                data["vra_fabric_network"]["subnet_1"]["id"],
                data["vra_fabric_network"]["subnet_2"]["id"],
            ],
            isolation_type="NONE",
            tags=[vra.network.ProfileTagArgs(
                key="foo",
                value="bar",
            )])
        ```

        A network profile resource supports the following arguments:

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] fabric_network_ids: A list of fabric network Ids which are assigned to the network profile.
               example:[ "6543" ]
        :param pulumi.Input[str] isolated_external_fabric_network_id: The id of the fabric network used for outbound access.
        :param pulumi.Input[int] isolated_network_cidr_prefix: The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        :param pulumi.Input[str] isolated_network_domain_cidr: CIDR of the isolation network domain.
        :param pulumi.Input[str] isolated_network_domain_id: The id of the network domain used for creating isolated networks.
        :param pulumi.Input[str] isolation_type: Specifies the isolation type e.g. none, subnet or security group
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[str] region_id: The id of the region for which this profile is defined as in vRealize Automation(vRA).
        :param pulumi.Input[Sequence[pulumi.Input[str]]] security_group_ids: A list of security group Ids which are assigned to the network profile.
               example:[ "6545" ]
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileTagArgs']]]] tags: A set of tag keys and optional values that were set on this Network Profile.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ProfileArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        ## Example Usage
        ### S
        This is an example of how to create a network profile resource.

        **Network profile:**

        ```python
        import pulumi
        import pulumiverse_vra as vra

        simple = vra.network.Profile("simple",
            description="Simple Network Profile with no isolation.",
            region_id=data["vra_region"]["this"]["id"],
            fabric_network_ids=[
                data["vra_fabric_network"]["subnet_1"]["id"],
                data["vra_fabric_network"]["subnet_2"]["id"],
            ],
            isolation_type="NONE",
            tags=[vra.network.ProfileTagArgs(
                key="foo",
                value="bar",
            )])
        ```

        A network profile resource supports the following arguments:

        :param str resource_name: The name of the resource.
        :param ProfileArgs 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(ProfileArgs, 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,
                 custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 fabric_network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 isolated_external_fabric_network_id: Optional[pulumi.Input[str]] = None,
                 isolated_network_cidr_prefix: Optional[pulumi.Input[int]] = None,
                 isolated_network_domain_cidr: Optional[pulumi.Input[str]] = None,
                 isolated_network_domain_id: Optional[pulumi.Input[str]] = None,
                 isolation_type: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 region_id: Optional[pulumi.Input[str]] = None,
                 security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileTagArgs']]]]] = 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__ = ProfileArgs.__new__(ProfileArgs)

            __props__.__dict__["custom_properties"] = custom_properties
            __props__.__dict__["description"] = description
            __props__.__dict__["fabric_network_ids"] = fabric_network_ids
            __props__.__dict__["isolated_external_fabric_network_id"] = isolated_external_fabric_network_id
            __props__.__dict__["isolated_network_cidr_prefix"] = isolated_network_cidr_prefix
            __props__.__dict__["isolated_network_domain_cidr"] = isolated_network_domain_cidr
            __props__.__dict__["isolated_network_domain_id"] = isolated_network_domain_id
            __props__.__dict__["isolation_type"] = isolation_type
            __props__.__dict__["name"] = name
            if region_id is None and not opts.urn:
                raise TypeError("Missing required property 'region_id'")
            __props__.__dict__["region_id"] = region_id
            __props__.__dict__["security_group_ids"] = security_group_ids
            __props__.__dict__["tags"] = tags
            __props__.__dict__["cloud_account_id"] = None
            __props__.__dict__["created_at"] = None
            __props__.__dict__["external_region_id"] = None
            __props__.__dict__["links"] = None
            __props__.__dict__["org_id"] = None
            __props__.__dict__["organization_id"] = None
            __props__.__dict__["owner"] = None
            __props__.__dict__["updated_at"] = None
        super(Profile, __self__).__init__(
            'vra:network/profile:Profile',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            cloud_account_id: Optional[pulumi.Input[str]] = None,
            created_at: Optional[pulumi.Input[str]] = None,
            custom_properties: Optional[pulumi.Input[Mapping[str, Any]]] = None,
            description: Optional[pulumi.Input[str]] = None,
            external_region_id: Optional[pulumi.Input[str]] = None,
            fabric_network_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            isolated_external_fabric_network_id: Optional[pulumi.Input[str]] = None,
            isolated_network_cidr_prefix: Optional[pulumi.Input[int]] = None,
            isolated_network_domain_cidr: Optional[pulumi.Input[str]] = None,
            isolated_network_domain_id: Optional[pulumi.Input[str]] = None,
            isolation_type: Optional[pulumi.Input[str]] = None,
            links: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileLinkArgs']]]]] = None,
            name: Optional[pulumi.Input[str]] = None,
            org_id: Optional[pulumi.Input[str]] = None,
            organization_id: Optional[pulumi.Input[str]] = None,
            owner: Optional[pulumi.Input[str]] = None,
            region_id: Optional[pulumi.Input[str]] = None,
            security_group_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileTagArgs']]]]] = None,
            updated_at: Optional[pulumi.Input[str]] = None) -> 'Profile':
        """
        Get an existing Profile 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] cloud_account_id: The ID of the cloud account this entity belongs to.
        :param pulumi.Input[str] created_at: Date when  entity was created. Date and time format is ISO 8601 and UTC.
        :param pulumi.Input[Mapping[str, Any]] custom_properties: Additional properties that may be used to extend the Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[str] external_region_id: The external regionId of the resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] fabric_network_ids: A list of fabric network Ids which are assigned to the network profile.
               example:[ "6543" ]
        :param pulumi.Input[str] isolated_external_fabric_network_id: The id of the fabric network used for outbound access.
        :param pulumi.Input[int] isolated_network_cidr_prefix: The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        :param pulumi.Input[str] isolated_network_domain_cidr: CIDR of the isolation network domain.
        :param pulumi.Input[str] isolated_network_domain_id: The id of the network domain used for creating isolated networks.
        :param pulumi.Input[str] isolation_type: Specifies the isolation type e.g. none, subnet or security group
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileLinkArgs']]]] 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] org_id: ID of organization that entity belongs to.
        :param pulumi.Input[str] organization_id: The id of the organization this entity belongs to. Deprecated, refer to org_id instead.
        :param pulumi.Input[str] owner: Email of the user that owns the entity.
        :param pulumi.Input[str] region_id: The id of the region for which this profile is defined as in vRealize Automation(vRA).
        :param pulumi.Input[Sequence[pulumi.Input[str]]] security_group_ids: A list of security group Ids which are assigned to the network profile.
               example:[ "6545" ]
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProfileTagArgs']]]] tags: A set of tag keys and optional values that were set on this Network Profile.
               example:[ { "key" : "ownedBy", "value": "Rainpole" } ]
        :param pulumi.Input[str] updated_at: Date when the entity was last updated. The date is ISO 8601 and UTC.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ProfileState.__new__(_ProfileState)

        __props__.__dict__["cloud_account_id"] = cloud_account_id
        __props__.__dict__["created_at"] = created_at
        __props__.__dict__["custom_properties"] = custom_properties
        __props__.__dict__["description"] = description
        __props__.__dict__["external_region_id"] = external_region_id
        __props__.__dict__["fabric_network_ids"] = fabric_network_ids
        __props__.__dict__["isolated_external_fabric_network_id"] = isolated_external_fabric_network_id
        __props__.__dict__["isolated_network_cidr_prefix"] = isolated_network_cidr_prefix
        __props__.__dict__["isolated_network_domain_cidr"] = isolated_network_domain_cidr
        __props__.__dict__["isolated_network_domain_id"] = isolated_network_domain_id
        __props__.__dict__["isolation_type"] = isolation_type
        __props__.__dict__["links"] = links
        __props__.__dict__["name"] = name
        __props__.__dict__["org_id"] = org_id
        __props__.__dict__["organization_id"] = organization_id
        __props__.__dict__["owner"] = owner
        __props__.__dict__["region_id"] = region_id
        __props__.__dict__["security_group_ids"] = security_group_ids
        __props__.__dict__["tags"] = tags
        __props__.__dict__["updated_at"] = updated_at
        return Profile(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="cloudAccountId")
    def cloud_account_id(self) -> pulumi.Output[str]:
        """
        The ID of the cloud account this entity belongs to.
        """
        return pulumi.get(self, "cloud_account_id")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> pulumi.Output[str]:
        """
        Date when  entity was created. Date and time format is ISO 8601 and UTC.
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter(name="customProperties")
    def custom_properties(self) -> pulumi.Output[Mapping[str, Any]]:
        """
        Additional properties that may be used to extend the Network Profile object that is produced from this specification. For isolationType security group, datastoreId identifies the Compute Resource Edge datastore. computeCluster and resourcePoolId identify the Compute Resource Edge cluster. For isolationType subnet, distributedLogicalRouterStateLink identifies the on-demand network distributed local router. onDemandNetworkIPAssignmentType identifies the on-demand network IP range assignment type static, dynamic, or mixed.
        """
        return pulumi.get(self, "custom_properties")

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

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

    @property
    @pulumi.getter(name="fabricNetworkIds")
    def fabric_network_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of fabric network Ids which are assigned to the network profile.
        example:[ "6543" ]
        """
        return pulumi.get(self, "fabric_network_ids")

    @property
    @pulumi.getter(name="isolatedExternalFabricNetworkId")
    def isolated_external_fabric_network_id(self) -> pulumi.Output[Optional[str]]:
        """
        The id of the fabric network used for outbound access.
        """
        return pulumi.get(self, "isolated_external_fabric_network_id")

    @property
    @pulumi.getter(name="isolatedNetworkCidrPrefix")
    def isolated_network_cidr_prefix(self) -> pulumi.Output[Optional[int]]:
        """
        The CIDR prefix length to be used for the isolated networks that are created with the network profile.
        """
        return pulumi.get(self, "isolated_network_cidr_prefix")

    @property
    @pulumi.getter(name="isolatedNetworkDomainCidr")
    def isolated_network_domain_cidr(self) -> pulumi.Output[Optional[str]]:
        """
        CIDR of the isolation network domain.
        """
        return pulumi.get(self, "isolated_network_domain_cidr")

    @property
    @pulumi.getter(name="isolatedNetworkDomainId")
    def isolated_network_domain_id(self) -> pulumi.Output[Optional[str]]:
        """
        The id of the network domain used for creating isolated networks.
        """
        return pulumi.get(self, "isolated_network_domain_id")

    @property
    @pulumi.getter(name="isolationType")
    def isolation_type(self) -> pulumi.Output[Optional[str]]:
        """
        Specifies the isolation type e.g. none, subnet or security group
        """
        return pulumi.get(self, "isolation_type")

    @property
    @pulumi.getter
    def links(self) -> pulumi.Output[Sequence['outputs.ProfileLink']]:
        """
        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="orgId")
    def org_id(self) -> pulumi.Output[str]:
        """
        ID of organization that entity belongs to.
        """
        return pulumi.get(self, "org_id")

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

    @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="regionId")
    def region_id(self) -> pulumi.Output[str]:
        """
        The id of the region for which this profile is defined as in vRealize Automation(vRA).
        """
        return pulumi.get(self, "region_id")

    @property
    @pulumi.getter(name="securityGroupIds")
    def security_group_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        """
        A list of security group Ids which are assigned to the network profile.
        example:[ "6545" ]
        """
        return pulumi.get(self, "security_group_ids")

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

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> pulumi.Output[str]:
        """
        Date when the entity was last updated. The date is ISO 8601 and UTC.
        """
        return pulumi.get(self, "updated_at")

