# 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__ = ['DeploymentArgs', 'Deployment']

@pulumi.input_type
class DeploymentArgs:
    def __init__(__self__, *,
                 project_id: pulumi.Input[str],
                 blueprint_content: Optional[pulumi.Input[str]] = None,
                 blueprint_id: Optional[pulumi.Input[str]] = None,
                 blueprint_version: Optional[pulumi.Input[str]] = None,
                 catalog_item_id: Optional[pulumi.Input[str]] = None,
                 catalog_item_version: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 expand_last_request: Optional[pulumi.Input[bool]] = None,
                 expand_project: Optional[pulumi.Input[bool]] = None,
                 expand_resources: Optional[pulumi.Input[bool]] = None,
                 inputs: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 lease_expire_at: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 owner: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a Deployment resource.
        :param pulumi.Input[str] project_id: The id of the project this entity belongs to.
        :param pulumi.Input[str] blueprint_content: vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        :param pulumi.Input[str] blueprint_id: Identifier of the requested blueprint in the form ‘UUID:version’.
        :param pulumi.Input[str] blueprint_version: The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        :param pulumi.Input[str] catalog_item_id: The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        :param pulumi.Input[str] catalog_item_version: The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[bool] expand_project: Flag to indicate whether to expand project information.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] inputs: Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        :param pulumi.Input[str] lease_expire_at: Time at which the deployment lease expires.
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[str] owner: The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        """
        pulumi.set(__self__, "project_id", project_id)
        if blueprint_content is not None:
            pulumi.set(__self__, "blueprint_content", blueprint_content)
        if blueprint_id is not None:
            pulumi.set(__self__, "blueprint_id", blueprint_id)
        if blueprint_version is not None:
            pulumi.set(__self__, "blueprint_version", blueprint_version)
        if catalog_item_id is not None:
            pulumi.set(__self__, "catalog_item_id", catalog_item_id)
        if catalog_item_version is not None:
            pulumi.set(__self__, "catalog_item_version", catalog_item_version)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if expand_last_request is not None:
            warnings.warn("""Deprecated. True by default even if not provided.""", DeprecationWarning)
            pulumi.log.warn("""expand_last_request is deprecated: Deprecated. True by default even if not provided.""")
        if expand_last_request is not None:
            pulumi.set(__self__, "expand_last_request", expand_last_request)
        if expand_project is not None:
            pulumi.set(__self__, "expand_project", expand_project)
        if expand_resources is not None:
            warnings.warn("""Deprecated. True by default even if not provided.""", DeprecationWarning)
            pulumi.log.warn("""expand_resources is deprecated: Deprecated. True by default even if not provided.""")
        if expand_resources is not None:
            pulumi.set(__self__, "expand_resources", expand_resources)
        if inputs is not None:
            pulumi.set(__self__, "inputs", inputs)
        if lease_expire_at is not None:
            pulumi.set(__self__, "lease_expire_at", lease_expire_at)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)

    @property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[str]:
        """
        The id of the project this entity 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(name="blueprintContent")
    def blueprint_content(self) -> Optional[pulumi.Input[str]]:
        """
        vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        """
        return pulumi.get(self, "blueprint_content")

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

    @property
    @pulumi.getter(name="blueprintId")
    def blueprint_id(self) -> Optional[pulumi.Input[str]]:
        """
        Identifier of the requested blueprint in the form ‘UUID:version’.
        """
        return pulumi.get(self, "blueprint_id")

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

    @property
    @pulumi.getter(name="blueprintVersion")
    def blueprint_version(self) -> Optional[pulumi.Input[str]]:
        """
        The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        """
        return pulumi.get(self, "blueprint_version")

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

    @property
    @pulumi.getter(name="catalogItemId")
    def catalog_item_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        """
        return pulumi.get(self, "catalog_item_id")

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

    @property
    @pulumi.getter(name="catalogItemVersion")
    def catalog_item_version(self) -> Optional[pulumi.Input[str]]:
        """
        The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        """
        return pulumi.get(self, "catalog_item_version")

    @catalog_item_version.setter
    def catalog_item_version(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "catalog_item_version", 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="expandLastRequest")
    def expand_last_request(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "expand_last_request")

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

    @property
    @pulumi.getter(name="expandProject")
    def expand_project(self) -> Optional[pulumi.Input[bool]]:
        """
        Flag to indicate whether to expand project information.
        """
        return pulumi.get(self, "expand_project")

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

    @property
    @pulumi.getter(name="expandResources")
    def expand_resources(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "expand_resources")

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

    @property
    @pulumi.getter
    def inputs(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        """
        return pulumi.get(self, "inputs")

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

    @property
    @pulumi.getter(name="leaseExpireAt")
    def lease_expire_at(self) -> Optional[pulumi.Input[str]]:
        """
        Time at which the deployment lease expires.
        """
        return pulumi.get(self, "lease_expire_at")

    @lease_expire_at.setter
    def lease_expire_at(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "lease_expire_at", 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
    def owner(self) -> Optional[pulumi.Input[str]]:
        """
        The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        """
        return pulumi.get(self, "owner")

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


@pulumi.input_type
class _DeploymentState:
    def __init__(__self__, *,
                 blueprint_content: Optional[pulumi.Input[str]] = None,
                 blueprint_id: Optional[pulumi.Input[str]] = None,
                 blueprint_version: Optional[pulumi.Input[str]] = None,
                 catalog_item_id: Optional[pulumi.Input[str]] = None,
                 catalog_item_version: Optional[pulumi.Input[str]] = None,
                 created_at: Optional[pulumi.Input[str]] = None,
                 created_by: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 expand_last_request: Optional[pulumi.Input[bool]] = None,
                 expand_project: Optional[pulumi.Input[bool]] = None,
                 expand_resources: Optional[pulumi.Input[bool]] = None,
                 expenses: Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentExpenseArgs']]]] = None,
                 inputs: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 inputs_including_defaults: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 last_requests: Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentLastRequestArgs']]]] = None,
                 last_updated_at: Optional[pulumi.Input[str]] = None,
                 last_updated_by: Optional[pulumi.Input[str]] = None,
                 lease_expire_at: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 org_id: Optional[pulumi.Input[str]] = None,
                 owner: Optional[pulumi.Input[str]] = None,
                 project_id: Optional[pulumi.Input[str]] = None,
                 projects: Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentProjectArgs']]]] = None,
                 resources: Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentResourceArgs']]]] = None,
                 status: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering Deployment resources.
        :param pulumi.Input[str] blueprint_content: vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        :param pulumi.Input[str] blueprint_id: Identifier of the requested blueprint in the form ‘UUID:version’.
        :param pulumi.Input[str] blueprint_version: The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        :param pulumi.Input[str] catalog_item_id: The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        :param pulumi.Input[str] catalog_item_version: The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        :param pulumi.Input[str] created_at: Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        :param pulumi.Input[str] created_by: The user the entity was created by.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[bool] expand_project: Flag to indicate whether to expand project information.
        :param pulumi.Input[Sequence[pulumi.Input['DeploymentExpenseArgs']]] expenses: Expense incurred for the deployment.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] inputs: Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] inputs_including_defaults: All the inputs applied during last create/update operation, including those with default values. For the list of inputs provided by the user in the configuration, refer to `inputs`.
        :param pulumi.Input[Sequence[pulumi.Input['DeploymentLastRequestArgs']]] last_requests: Represents deployment requests.
        :param pulumi.Input[str] last_updated_at: Time at which the deployment was last updated.
        :param pulumi.Input[str] last_updated_by: The user that last updated the deployment.
        :param pulumi.Input[str] lease_expire_at: Time at which the deployment lease expires.
        :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: The ID of the organization this deployment belongs to.
        :param pulumi.Input[str] owner: The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        :param pulumi.Input[str] project_id: The id of the project this entity belongs to.
        :param pulumi.Input[Sequence[pulumi.Input['DeploymentProjectArgs']]] projects: The project this entity belongs to.
        :param pulumi.Input[Sequence[pulumi.Input['DeploymentResourceArgs']]] resources: Expanded resources for the deployment. Content of this property will not be maintained backward compatible.
        :param pulumi.Input[str] status: Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        """
        if blueprint_content is not None:
            pulumi.set(__self__, "blueprint_content", blueprint_content)
        if blueprint_id is not None:
            pulumi.set(__self__, "blueprint_id", blueprint_id)
        if blueprint_version is not None:
            pulumi.set(__self__, "blueprint_version", blueprint_version)
        if catalog_item_id is not None:
            pulumi.set(__self__, "catalog_item_id", catalog_item_id)
        if catalog_item_version is not None:
            pulumi.set(__self__, "catalog_item_version", catalog_item_version)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if created_by is not None:
            pulumi.set(__self__, "created_by", created_by)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if expand_last_request is not None:
            warnings.warn("""Deprecated. True by default even if not provided.""", DeprecationWarning)
            pulumi.log.warn("""expand_last_request is deprecated: Deprecated. True by default even if not provided.""")
        if expand_last_request is not None:
            pulumi.set(__self__, "expand_last_request", expand_last_request)
        if expand_project is not None:
            pulumi.set(__self__, "expand_project", expand_project)
        if expand_resources is not None:
            warnings.warn("""Deprecated. True by default even if not provided.""", DeprecationWarning)
            pulumi.log.warn("""expand_resources is deprecated: Deprecated. True by default even if not provided.""")
        if expand_resources is not None:
            pulumi.set(__self__, "expand_resources", expand_resources)
        if expenses is not None:
            pulumi.set(__self__, "expenses", expenses)
        if inputs is not None:
            pulumi.set(__self__, "inputs", inputs)
        if inputs_including_defaults is not None:
            pulumi.set(__self__, "inputs_including_defaults", inputs_including_defaults)
        if last_requests is not None:
            pulumi.set(__self__, "last_requests", last_requests)
        if last_updated_at is not None:
            pulumi.set(__self__, "last_updated_at", last_updated_at)
        if last_updated_by is not None:
            pulumi.set(__self__, "last_updated_by", last_updated_by)
        if lease_expire_at is not None:
            pulumi.set(__self__, "lease_expire_at", lease_expire_at)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if org_id is not None:
            pulumi.set(__self__, "org_id", org_id)
        if owner is not None:
            pulumi.set(__self__, "owner", owner)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if projects is not None:
            pulumi.set(__self__, "projects", projects)
        if resources is not None:
            pulumi.set(__self__, "resources", resources)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter(name="blueprintContent")
    def blueprint_content(self) -> Optional[pulumi.Input[str]]:
        """
        vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        """
        return pulumi.get(self, "blueprint_content")

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

    @property
    @pulumi.getter(name="blueprintId")
    def blueprint_id(self) -> Optional[pulumi.Input[str]]:
        """
        Identifier of the requested blueprint in the form ‘UUID:version’.
        """
        return pulumi.get(self, "blueprint_id")

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

    @property
    @pulumi.getter(name="blueprintVersion")
    def blueprint_version(self) -> Optional[pulumi.Input[str]]:
        """
        The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        """
        return pulumi.get(self, "blueprint_version")

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

    @property
    @pulumi.getter(name="catalogItemId")
    def catalog_item_id(self) -> Optional[pulumi.Input[str]]:
        """
        The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        """
        return pulumi.get(self, "catalog_item_id")

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

    @property
    @pulumi.getter(name="catalogItemVersion")
    def catalog_item_version(self) -> Optional[pulumi.Input[str]]:
        """
        The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        """
        return pulumi.get(self, "catalog_item_version")

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

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[pulumi.Input[str]]:
        """
        Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        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="createdBy")
    def created_by(self) -> Optional[pulumi.Input[str]]:
        """
        The user the entity was created by.
        """
        return pulumi.get(self, "created_by")

    @created_by.setter
    def created_by(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "created_by", 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="expandLastRequest")
    def expand_last_request(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "expand_last_request")

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

    @property
    @pulumi.getter(name="expandProject")
    def expand_project(self) -> Optional[pulumi.Input[bool]]:
        """
        Flag to indicate whether to expand project information.
        """
        return pulumi.get(self, "expand_project")

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

    @property
    @pulumi.getter(name="expandResources")
    def expand_resources(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "expand_resources")

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

    @property
    @pulumi.getter
    def expenses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentExpenseArgs']]]]:
        """
        Expense incurred for the deployment.
        """
        return pulumi.get(self, "expenses")

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

    @property
    @pulumi.getter
    def inputs(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        """
        return pulumi.get(self, "inputs")

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

    @property
    @pulumi.getter(name="inputsIncludingDefaults")
    def inputs_including_defaults(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
        """
        All the inputs applied during last create/update operation, including those with default values. For the list of inputs provided by the user in the configuration, refer to `inputs`.
        """
        return pulumi.get(self, "inputs_including_defaults")

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

    @property
    @pulumi.getter(name="lastRequests")
    def last_requests(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentLastRequestArgs']]]]:
        """
        Represents deployment requests.
        """
        return pulumi.get(self, "last_requests")

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

    @property
    @pulumi.getter(name="lastUpdatedAt")
    def last_updated_at(self) -> Optional[pulumi.Input[str]]:
        """
        Time at which the deployment was last updated.
        """
        return pulumi.get(self, "last_updated_at")

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

    @property
    @pulumi.getter(name="lastUpdatedBy")
    def last_updated_by(self) -> Optional[pulumi.Input[str]]:
        """
        The user that last updated the deployment.
        """
        return pulumi.get(self, "last_updated_by")

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

    @property
    @pulumi.getter(name="leaseExpireAt")
    def lease_expire_at(self) -> Optional[pulumi.Input[str]]:
        """
        Time at which the deployment lease expires.
        """
        return pulumi.get(self, "lease_expire_at")

    @lease_expire_at.setter
    def lease_expire_at(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "lease_expire_at", 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]]:
        """
        The ID of the organization this deployment 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
    def owner(self) -> Optional[pulumi.Input[str]]:
        """
        The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        """
        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 entity 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
    def projects(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentProjectArgs']]]]:
        """
        The project this entity belongs to.
        """
        return pulumi.get(self, "projects")

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

    @property
    @pulumi.getter
    def resources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentResourceArgs']]]]:
        """
        Expanded resources for the deployment. Content of this property will not be maintained backward compatible.
        """
        return pulumi.get(self, "resources")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        """
        return pulumi.get(self, "status")

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


class Deployment(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 blueprint_content: Optional[pulumi.Input[str]] = None,
                 blueprint_id: Optional[pulumi.Input[str]] = None,
                 blueprint_version: Optional[pulumi.Input[str]] = None,
                 catalog_item_id: Optional[pulumi.Input[str]] = None,
                 catalog_item_version: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 expand_last_request: Optional[pulumi.Input[bool]] = None,
                 expand_project: Optional[pulumi.Input[bool]] = None,
                 expand_resources: Optional[pulumi.Input[bool]] = None,
                 inputs: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 lease_expire_at: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 owner: Optional[pulumi.Input[str]] = None,
                 project_id: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        This resource provides a way to create a deployment in vRealize Automation(vRA) by either using a blueprint, or catalog item, or an inline blueprint.

        ## Example Usage

        ## Import

        Deployment can be imported using the id, e.g.

        ```sh
         $ pulumi import vra:deployment/deployment:Deployment this 05956583-6488-4e7d-84c9-92a7b7219a15`
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] blueprint_content: vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        :param pulumi.Input[str] blueprint_id: Identifier of the requested blueprint in the form ‘UUID:version’.
        :param pulumi.Input[str] blueprint_version: The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        :param pulumi.Input[str] catalog_item_id: The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        :param pulumi.Input[str] catalog_item_version: The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[bool] expand_project: Flag to indicate whether to expand project information.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] inputs: Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        :param pulumi.Input[str] lease_expire_at: Time at which the deployment lease expires.
        :param pulumi.Input[str] name: A human-friendly name used as an identifier in APIs that support this option.
        :param pulumi.Input[str] owner: The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        :param pulumi.Input[str] project_id: The id of the project this entity belongs to.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: DeploymentArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        This resource provides a way to create a deployment in vRealize Automation(vRA) by either using a blueprint, or catalog item, or an inline blueprint.

        ## Example Usage

        ## Import

        Deployment can be imported using the id, e.g.

        ```sh
         $ pulumi import vra:deployment/deployment:Deployment this 05956583-6488-4e7d-84c9-92a7b7219a15`
        ```

        :param str resource_name: The name of the resource.
        :param DeploymentArgs 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(DeploymentArgs, 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,
                 blueprint_content: Optional[pulumi.Input[str]] = None,
                 blueprint_id: Optional[pulumi.Input[str]] = None,
                 blueprint_version: Optional[pulumi.Input[str]] = None,
                 catalog_item_id: Optional[pulumi.Input[str]] = None,
                 catalog_item_version: Optional[pulumi.Input[str]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 expand_last_request: Optional[pulumi.Input[bool]] = None,
                 expand_project: Optional[pulumi.Input[bool]] = None,
                 expand_resources: Optional[pulumi.Input[bool]] = None,
                 inputs: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                 lease_expire_at: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 owner: Optional[pulumi.Input[str]] = None,
                 project_id: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = DeploymentArgs.__new__(DeploymentArgs)

            __props__.__dict__["blueprint_content"] = blueprint_content
            __props__.__dict__["blueprint_id"] = blueprint_id
            __props__.__dict__["blueprint_version"] = blueprint_version
            __props__.__dict__["catalog_item_id"] = catalog_item_id
            __props__.__dict__["catalog_item_version"] = catalog_item_version
            __props__.__dict__["description"] = description
            if expand_last_request is not None and not opts.urn:
                warnings.warn("""Deprecated. True by default even if not provided.""", DeprecationWarning)
                pulumi.log.warn("""expand_last_request is deprecated: Deprecated. True by default even if not provided.""")
            __props__.__dict__["expand_last_request"] = expand_last_request
            __props__.__dict__["expand_project"] = expand_project
            if expand_resources is not None and not opts.urn:
                warnings.warn("""Deprecated. True by default even if not provided.""", DeprecationWarning)
                pulumi.log.warn("""expand_resources is deprecated: Deprecated. True by default even if not provided.""")
            __props__.__dict__["expand_resources"] = expand_resources
            __props__.__dict__["inputs"] = inputs
            __props__.__dict__["lease_expire_at"] = lease_expire_at
            __props__.__dict__["name"] = name
            __props__.__dict__["owner"] = owner
            if project_id is None and not opts.urn:
                raise TypeError("Missing required property 'project_id'")
            __props__.__dict__["project_id"] = project_id
            __props__.__dict__["created_at"] = None
            __props__.__dict__["created_by"] = None
            __props__.__dict__["expenses"] = None
            __props__.__dict__["inputs_including_defaults"] = None
            __props__.__dict__["last_requests"] = None
            __props__.__dict__["last_updated_at"] = None
            __props__.__dict__["last_updated_by"] = None
            __props__.__dict__["org_id"] = None
            __props__.__dict__["projects"] = None
            __props__.__dict__["resources"] = None
            __props__.__dict__["status"] = None
        super(Deployment, __self__).__init__(
            'vra:deployment/deployment:Deployment',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            blueprint_content: Optional[pulumi.Input[str]] = None,
            blueprint_id: Optional[pulumi.Input[str]] = None,
            blueprint_version: Optional[pulumi.Input[str]] = None,
            catalog_item_id: Optional[pulumi.Input[str]] = None,
            catalog_item_version: Optional[pulumi.Input[str]] = None,
            created_at: Optional[pulumi.Input[str]] = None,
            created_by: Optional[pulumi.Input[str]] = None,
            description: Optional[pulumi.Input[str]] = None,
            expand_last_request: Optional[pulumi.Input[bool]] = None,
            expand_project: Optional[pulumi.Input[bool]] = None,
            expand_resources: Optional[pulumi.Input[bool]] = None,
            expenses: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentExpenseArgs']]]]] = None,
            inputs: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            inputs_including_defaults: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
            last_requests: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentLastRequestArgs']]]]] = None,
            last_updated_at: Optional[pulumi.Input[str]] = None,
            last_updated_by: Optional[pulumi.Input[str]] = None,
            lease_expire_at: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            org_id: Optional[pulumi.Input[str]] = None,
            owner: Optional[pulumi.Input[str]] = None,
            project_id: Optional[pulumi.Input[str]] = None,
            projects: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentProjectArgs']]]]] = None,
            resources: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentResourceArgs']]]]] = None,
            status: Optional[pulumi.Input[str]] = None) -> 'Deployment':
        """
        Get an existing Deployment 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] blueprint_content: vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        :param pulumi.Input[str] blueprint_id: Identifier of the requested blueprint in the form ‘UUID:version’.
        :param pulumi.Input[str] blueprint_version: The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        :param pulumi.Input[str] catalog_item_id: The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        :param pulumi.Input[str] catalog_item_version: The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        :param pulumi.Input[str] created_at: Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        :param pulumi.Input[str] created_by: The user the entity was created by.
        :param pulumi.Input[str] description: A human-friendly description.
        :param pulumi.Input[bool] expand_project: Flag to indicate whether to expand project information.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentExpenseArgs']]]] expenses: Expense incurred for the deployment.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] inputs: Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        :param pulumi.Input[Mapping[str, pulumi.Input[str]]] inputs_including_defaults: All the inputs applied during last create/update operation, including those with default values. For the list of inputs provided by the user in the configuration, refer to `inputs`.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentLastRequestArgs']]]] last_requests: Represents deployment requests.
        :param pulumi.Input[str] last_updated_at: Time at which the deployment was last updated.
        :param pulumi.Input[str] last_updated_by: The user that last updated the deployment.
        :param pulumi.Input[str] lease_expire_at: Time at which the deployment lease expires.
        :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: The ID of the organization this deployment belongs to.
        :param pulumi.Input[str] owner: The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        :param pulumi.Input[str] project_id: The id of the project this entity belongs to.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentProjectArgs']]]] projects: The project this entity belongs to.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['DeploymentResourceArgs']]]] resources: Expanded resources for the deployment. Content of this property will not be maintained backward compatible.
        :param pulumi.Input[str] status: Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _DeploymentState.__new__(_DeploymentState)

        __props__.__dict__["blueprint_content"] = blueprint_content
        __props__.__dict__["blueprint_id"] = blueprint_id
        __props__.__dict__["blueprint_version"] = blueprint_version
        __props__.__dict__["catalog_item_id"] = catalog_item_id
        __props__.__dict__["catalog_item_version"] = catalog_item_version
        __props__.__dict__["created_at"] = created_at
        __props__.__dict__["created_by"] = created_by
        __props__.__dict__["description"] = description
        __props__.__dict__["expand_last_request"] = expand_last_request
        __props__.__dict__["expand_project"] = expand_project
        __props__.__dict__["expand_resources"] = expand_resources
        __props__.__dict__["expenses"] = expenses
        __props__.__dict__["inputs"] = inputs
        __props__.__dict__["inputs_including_defaults"] = inputs_including_defaults
        __props__.__dict__["last_requests"] = last_requests
        __props__.__dict__["last_updated_at"] = last_updated_at
        __props__.__dict__["last_updated_by"] = last_updated_by
        __props__.__dict__["lease_expire_at"] = lease_expire_at
        __props__.__dict__["name"] = name
        __props__.__dict__["org_id"] = org_id
        __props__.__dict__["owner"] = owner
        __props__.__dict__["project_id"] = project_id
        __props__.__dict__["projects"] = projects
        __props__.__dict__["resources"] = resources
        __props__.__dict__["status"] = status
        return Deployment(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="blueprintContent")
    def blueprint_content(self) -> pulumi.Output[Optional[str]]:
        """
        vRA Cloud template content. Conflicts with `blueprint_id` and `catalog_item_id`.
        """
        return pulumi.get(self, "blueprint_content")

    @property
    @pulumi.getter(name="blueprintId")
    def blueprint_id(self) -> pulumi.Output[str]:
        """
        Identifier of the requested blueprint in the form ‘UUID:version’.
        """
        return pulumi.get(self, "blueprint_id")

    @property
    @pulumi.getter(name="blueprintVersion")
    def blueprint_version(self) -> pulumi.Output[str]:
        """
        The version of the vRA cloud template to request the deployment. Used only when `blueprint_id` is provided.
        """
        return pulumi.get(self, "blueprint_version")

    @property
    @pulumi.getter(name="catalogItemId")
    def catalog_item_id(self) -> pulumi.Output[str]:
        """
        The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        """
        return pulumi.get(self, "catalog_item_id")

    @property
    @pulumi.getter(name="catalogItemVersion")
    def catalog_item_version(self) -> pulumi.Output[str]:
        """
        The version of the vRA catalog item to request the deployment. Used only when `catalog_item_id` is provided.
        """
        return pulumi.get(self, "catalog_item_version")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> pulumi.Output[str]:
        """
        Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter(name="createdBy")
    def created_by(self) -> pulumi.Output[str]:
        """
        The user the entity was created by.
        """
        return pulumi.get(self, "created_by")

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

    @property
    @pulumi.getter(name="expandLastRequest")
    def expand_last_request(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "expand_last_request")

    @property
    @pulumi.getter(name="expandProject")
    def expand_project(self) -> pulumi.Output[Optional[bool]]:
        """
        Flag to indicate whether to expand project information.
        """
        return pulumi.get(self, "expand_project")

    @property
    @pulumi.getter(name="expandResources")
    def expand_resources(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "expand_resources")

    @property
    @pulumi.getter
    def expenses(self) -> pulumi.Output[Sequence['outputs.DeploymentExpense']]:
        """
        Expense incurred for the deployment.
        """
        return pulumi.get(self, "expenses")

    @property
    @pulumi.getter
    def inputs(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
        """
        Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        """
        return pulumi.get(self, "inputs")

    @property
    @pulumi.getter(name="inputsIncludingDefaults")
    def inputs_including_defaults(self) -> pulumi.Output[Mapping[str, str]]:
        """
        All the inputs applied during last create/update operation, including those with default values. For the list of inputs provided by the user in the configuration, refer to `inputs`.
        """
        return pulumi.get(self, "inputs_including_defaults")

    @property
    @pulumi.getter(name="lastRequests")
    def last_requests(self) -> pulumi.Output[Sequence['outputs.DeploymentLastRequest']]:
        """
        Represents deployment requests.
        """
        return pulumi.get(self, "last_requests")

    @property
    @pulumi.getter(name="lastUpdatedAt")
    def last_updated_at(self) -> pulumi.Output[str]:
        """
        Time at which the deployment was last updated.
        """
        return pulumi.get(self, "last_updated_at")

    @property
    @pulumi.getter(name="lastUpdatedBy")
    def last_updated_by(self) -> pulumi.Output[str]:
        """
        The user that last updated the deployment.
        """
        return pulumi.get(self, "last_updated_by")

    @property
    @pulumi.getter(name="leaseExpireAt")
    def lease_expire_at(self) -> pulumi.Output[str]:
        """
        Time at which the deployment lease expires.
        """
        return pulumi.get(self, "lease_expire_at")

    @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]:
        """
        The ID of the organization this deployment belongs to.
        """
        return pulumi.get(self, "org_id")

    @property
    @pulumi.getter
    def owner(self) -> pulumi.Output[str]:
        """
        The user this deployment belongs to. At create, the owner is ignored but is used to update during next apply.
        """
        return pulumi.get(self, "owner")

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

    @property
    @pulumi.getter
    def projects(self) -> pulumi.Output[Sequence['outputs.DeploymentProject']]:
        """
        The project this entity belongs to.
        """
        return pulumi.get(self, "projects")

    @property
    @pulumi.getter
    def resources(self) -> pulumi.Output[Sequence['outputs.DeploymentResource']]:
        """
        Expanded resources for the deployment. Content of this property will not be maintained backward compatible.
        """
        return pulumi.get(self, "resources")

    @property
    @pulumi.getter
    def status(self) -> pulumi.Output[str]:
        """
        Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        """
        return pulumi.get(self, "status")

