1. Packages
  2. Oracle Cloud Infrastructure
  3. API Docs
  4. DataIntegration
  5. getWorkspaces
Oracle Cloud Infrastructure v1.41.0 published on Wednesday, Jun 19, 2024 by Pulumi

oci.DataIntegration.getWorkspaces

Explore with Pulumi AI

oci logo
Oracle Cloud Infrastructure v1.41.0 published on Wednesday, Jun 19, 2024 by Pulumi

    This data source provides the list of Workspaces in Oracle Cloud Infrastructure Data Integration service.

    Retrieves a list of Data Integration workspaces.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as oci from "@pulumi/oci";
    
    const testWorkspaces = oci.DataIntegration.getWorkspaces({
        compartmentId: compartmentId,
        name: workspaceName,
        state: workspaceState,
    });
    
    import pulumi
    import pulumi_oci as oci
    
    test_workspaces = oci.DataIntegration.get_workspaces(compartment_id=compartment_id,
        name=workspace_name,
        state=workspace_state)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-oci/sdk/go/oci/DataIntegration"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := DataIntegration.GetWorkspaces(ctx, &dataintegration.GetWorkspacesArgs{
    			CompartmentId: compartmentId,
    			Name:          pulumi.StringRef(workspaceName),
    			State:         pulumi.StringRef(workspaceState),
    		}, nil)
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Oci = Pulumi.Oci;
    
    return await Deployment.RunAsync(() => 
    {
        var testWorkspaces = Oci.DataIntegration.GetWorkspaces.Invoke(new()
        {
            CompartmentId = compartmentId,
            Name = workspaceName,
            State = workspaceState,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.oci.DataIntegration.DataIntegrationFunctions;
    import com.pulumi.oci.DataIntegration.inputs.GetWorkspacesArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var testWorkspaces = DataIntegrationFunctions.getWorkspaces(GetWorkspacesArgs.builder()
                .compartmentId(compartmentId)
                .name(workspaceName)
                .state(workspaceState)
                .build());
    
        }
    }
    
    variables:
      testWorkspaces:
        fn::invoke:
          Function: oci:DataIntegration:getWorkspaces
          Arguments:
            compartmentId: ${compartmentId}
            name: ${workspaceName}
            state: ${workspaceState}
    

    Using getWorkspaces

    Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.

    function getWorkspaces(args: GetWorkspacesArgs, opts?: InvokeOptions): Promise<GetWorkspacesResult>
    function getWorkspacesOutput(args: GetWorkspacesOutputArgs, opts?: InvokeOptions): Output<GetWorkspacesResult>
    def get_workspaces(compartment_id: Optional[str] = None,
                       filters: Optional[Sequence[_dataintegration.GetWorkspacesFilter]] = None,
                       name: Optional[str] = None,
                       state: Optional[str] = None,
                       opts: Optional[InvokeOptions] = None) -> GetWorkspacesResult
    def get_workspaces_output(compartment_id: Optional[pulumi.Input[str]] = None,
                       filters: Optional[pulumi.Input[Sequence[pulumi.Input[_dataintegration.GetWorkspacesFilterArgs]]]] = None,
                       name: Optional[pulumi.Input[str]] = None,
                       state: Optional[pulumi.Input[str]] = None,
                       opts: Optional[InvokeOptions] = None) -> Output[GetWorkspacesResult]
    func GetWorkspaces(ctx *Context, args *GetWorkspacesArgs, opts ...InvokeOption) (*GetWorkspacesResult, error)
    func GetWorkspacesOutput(ctx *Context, args *GetWorkspacesOutputArgs, opts ...InvokeOption) GetWorkspacesResultOutput

    > Note: This function is named GetWorkspaces in the Go SDK.

    public static class GetWorkspaces 
    {
        public static Task<GetWorkspacesResult> InvokeAsync(GetWorkspacesArgs args, InvokeOptions? opts = null)
        public static Output<GetWorkspacesResult> Invoke(GetWorkspacesInvokeArgs args, InvokeOptions? opts = null)
    }
    public static CompletableFuture<GetWorkspacesResult> getWorkspaces(GetWorkspacesArgs args, InvokeOptions options)
    // Output-based functions aren't available in Java yet
    
    fn::invoke:
      function: oci:DataIntegration/getWorkspaces:getWorkspaces
      arguments:
        # arguments dictionary

    The following arguments are supported:

    CompartmentId string
    The OCID of the compartment containing the resources you want to list.
    Filters List<GetWorkspacesFilter>
    Name string
    Used to filter by the name of the object.
    State string
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    CompartmentId string
    The OCID of the compartment containing the resources you want to list.
    Filters []GetWorkspacesFilter
    Name string
    Used to filter by the name of the object.
    State string
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    compartmentId String
    The OCID of the compartment containing the resources you want to list.
    filters List<GetWorkspacesFilter>
    name String
    Used to filter by the name of the object.
    state String
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    compartmentId string
    The OCID of the compartment containing the resources you want to list.
    filters GetWorkspacesFilter[]
    name string
    Used to filter by the name of the object.
    state string
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    compartment_id str
    The OCID of the compartment containing the resources you want to list.
    filters Sequence[dataintegration.GetWorkspacesFilter]
    name str
    Used to filter by the name of the object.
    state str
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    compartmentId String
    The OCID of the compartment containing the resources you want to list.
    filters List<Property Map>
    name String
    Used to filter by the name of the object.
    state String
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.

    getWorkspaces Result

    The following output properties are available:

    CompartmentId string
    The OCID of the compartment that contains the workspace.
    Id string
    The provider-assigned unique ID for this managed resource.
    Workspaces List<GetWorkspacesWorkspace>
    The list of workspaces.
    Filters List<GetWorkspacesFilter>
    Name string
    State string
    Lifecycle states for workspaces in Data Integration Service CREATING - The resource is being created and may not be usable until the entire metadata is defined UPDATING - The resource is being updated and may not be usable until all changes are commited DELETING - The resource is being deleted and might require deep cleanup of children. ACTIVE - The resource is valid and available for access INACTIVE - The resource might be incomplete in its definition or might have been made unavailable for administrative reasons DELETED - The resource has been deleted and isn't available FAILED - The resource is in a failed state due to validation or other errors STARTING - The resource is being started and may not be usable until becomes ACTIVE again STOPPING - The resource is in the process of Stopping and may not be usable until it Stops or fails STOPPED - The resource is in Stopped state due to stop operation.
    CompartmentId string
    The OCID of the compartment that contains the workspace.
    Id string
    The provider-assigned unique ID for this managed resource.
    Workspaces []GetWorkspacesWorkspace
    The list of workspaces.
    Filters []GetWorkspacesFilter
    Name string
    State string
    Lifecycle states for workspaces in Data Integration Service CREATING - The resource is being created and may not be usable until the entire metadata is defined UPDATING - The resource is being updated and may not be usable until all changes are commited DELETING - The resource is being deleted and might require deep cleanup of children. ACTIVE - The resource is valid and available for access INACTIVE - The resource might be incomplete in its definition or might have been made unavailable for administrative reasons DELETED - The resource has been deleted and isn't available FAILED - The resource is in a failed state due to validation or other errors STARTING - The resource is being started and may not be usable until becomes ACTIVE again STOPPING - The resource is in the process of Stopping and may not be usable until it Stops or fails STOPPED - The resource is in Stopped state due to stop operation.
    compartmentId String
    The OCID of the compartment that contains the workspace.
    id String
    The provider-assigned unique ID for this managed resource.
    workspaces List<GetWorkspacesWorkspace>
    The list of workspaces.
    filters List<GetWorkspacesFilter>
    name String
    state String
    Lifecycle states for workspaces in Data Integration Service CREATING - The resource is being created and may not be usable until the entire metadata is defined UPDATING - The resource is being updated and may not be usable until all changes are commited DELETING - The resource is being deleted and might require deep cleanup of children. ACTIVE - The resource is valid and available for access INACTIVE - The resource might be incomplete in its definition or might have been made unavailable for administrative reasons DELETED - The resource has been deleted and isn't available FAILED - The resource is in a failed state due to validation or other errors STARTING - The resource is being started and may not be usable until becomes ACTIVE again STOPPING - The resource is in the process of Stopping and may not be usable until it Stops or fails STOPPED - The resource is in Stopped state due to stop operation.
    compartmentId string
    The OCID of the compartment that contains the workspace.
    id string
    The provider-assigned unique ID for this managed resource.
    workspaces GetWorkspacesWorkspace[]
    The list of workspaces.
    filters GetWorkspacesFilter[]
    name string
    state string
    Lifecycle states for workspaces in Data Integration Service CREATING - The resource is being created and may not be usable until the entire metadata is defined UPDATING - The resource is being updated and may not be usable until all changes are commited DELETING - The resource is being deleted and might require deep cleanup of children. ACTIVE - The resource is valid and available for access INACTIVE - The resource might be incomplete in its definition or might have been made unavailable for administrative reasons DELETED - The resource has been deleted and isn't available FAILED - The resource is in a failed state due to validation or other errors STARTING - The resource is being started and may not be usable until becomes ACTIVE again STOPPING - The resource is in the process of Stopping and may not be usable until it Stops or fails STOPPED - The resource is in Stopped state due to stop operation.
    compartment_id str
    The OCID of the compartment that contains the workspace.
    id str
    The provider-assigned unique ID for this managed resource.
    workspaces Sequence[dataintegration.GetWorkspacesWorkspace]
    The list of workspaces.
    filters Sequence[dataintegration.GetWorkspacesFilter]
    name str
    state str
    Lifecycle states for workspaces in Data Integration Service CREATING - The resource is being created and may not be usable until the entire metadata is defined UPDATING - The resource is being updated and may not be usable until all changes are commited DELETING - The resource is being deleted and might require deep cleanup of children. ACTIVE - The resource is valid and available for access INACTIVE - The resource might be incomplete in its definition or might have been made unavailable for administrative reasons DELETED - The resource has been deleted and isn't available FAILED - The resource is in a failed state due to validation or other errors STARTING - The resource is being started and may not be usable until becomes ACTIVE again STOPPING - The resource is in the process of Stopping and may not be usable until it Stops or fails STOPPED - The resource is in Stopped state due to stop operation.
    compartmentId String
    The OCID of the compartment that contains the workspace.
    id String
    The provider-assigned unique ID for this managed resource.
    workspaces List<Property Map>
    The list of workspaces.
    filters List<Property Map>
    name String
    state String
    Lifecycle states for workspaces in Data Integration Service CREATING - The resource is being created and may not be usable until the entire metadata is defined UPDATING - The resource is being updated and may not be usable until all changes are commited DELETING - The resource is being deleted and might require deep cleanup of children. ACTIVE - The resource is valid and available for access INACTIVE - The resource might be incomplete in its definition or might have been made unavailable for administrative reasons DELETED - The resource has been deleted and isn't available FAILED - The resource is in a failed state due to validation or other errors STARTING - The resource is being started and may not be usable until becomes ACTIVE again STOPPING - The resource is in the process of Stopping and may not be usable until it Stops or fails STOPPED - The resource is in Stopped state due to stop operation.

    Supporting Types

    GetWorkspacesFilter

    Name string
    Used to filter by the name of the object.
    Values List<string>
    Regex bool
    Name string
    Used to filter by the name of the object.
    Values []string
    Regex bool
    name String
    Used to filter by the name of the object.
    values List<String>
    regex Boolean
    name string
    Used to filter by the name of the object.
    values string[]
    regex boolean
    name str
    Used to filter by the name of the object.
    values Sequence[str]
    regex bool
    name String
    Used to filter by the name of the object.
    values List<String>
    regex Boolean

    GetWorkspacesWorkspace

    CompartmentId string
    The OCID of the compartment containing the resources you want to list.
    DefinedTags Dictionary<string, object>
    Defined tags for this resource. Each key is predefined and scoped to a namespace. See Resource Tags. Example: {"Operations.CostCenter": "42"}
    Description string
    A user defined description for the workspace.
    DisplayName string
    A user-friendly display name for the workspace. Does not have to be unique, and can be modified. Avoid entering confidential information.
    DnsServerIp string
    The IP of the custom DNS.
    DnsServerZone string
    The DNS zone of the custom DNS to use to resolve names.
    EndpointCompartmentId string
    EndpointId string
    DCMS endpoint associated with the container/workspace. Returns null if there is none.
    EndpointName string
    Name of the private endpoint associated with the container/workspace. Returns null if there is none.
    FreeformTags Dictionary<string, object>
    Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. See Resource Tags. Example: {"Department": "Finance"}
    Id string
    A system-generated and immutable identifier assigned to the workspace upon creation.
    IsForceOperation bool
    IsPrivateNetworkEnabled bool
    Specifies whether the private network connection is enabled or disabled.
    QuiesceTimeout int
    RegistryCompartmentId string
    RegistryId string
    DCMS registry associated with the container/workspace. Returns null if there is none.
    RegistryName string
    State string
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    StateMessage string
    A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in failed state.
    SubnetId string
    The OCID of the subnet for customer connected databases.
    TimeCreated string
    The date and time the workspace was created, in the timestamp format defined by RFC3339.
    TimeUpdated string
    The date and time the workspace was updated, in the timestamp format defined by RFC3339.
    VcnId string
    The OCID of the VCN the subnet is in.
    CompartmentId string
    The OCID of the compartment containing the resources you want to list.
    DefinedTags map[string]interface{}
    Defined tags for this resource. Each key is predefined and scoped to a namespace. See Resource Tags. Example: {"Operations.CostCenter": "42"}
    Description string
    A user defined description for the workspace.
    DisplayName string
    A user-friendly display name for the workspace. Does not have to be unique, and can be modified. Avoid entering confidential information.
    DnsServerIp string
    The IP of the custom DNS.
    DnsServerZone string
    The DNS zone of the custom DNS to use to resolve names.
    EndpointCompartmentId string
    EndpointId string
    DCMS endpoint associated with the container/workspace. Returns null if there is none.
    EndpointName string
    Name of the private endpoint associated with the container/workspace. Returns null if there is none.
    FreeformTags map[string]interface{}
    Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. See Resource Tags. Example: {"Department": "Finance"}
    Id string
    A system-generated and immutable identifier assigned to the workspace upon creation.
    IsForceOperation bool
    IsPrivateNetworkEnabled bool
    Specifies whether the private network connection is enabled or disabled.
    QuiesceTimeout int
    RegistryCompartmentId string
    RegistryId string
    DCMS registry associated with the container/workspace. Returns null if there is none.
    RegistryName string
    State string
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    StateMessage string
    A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in failed state.
    SubnetId string
    The OCID of the subnet for customer connected databases.
    TimeCreated string
    The date and time the workspace was created, in the timestamp format defined by RFC3339.
    TimeUpdated string
    The date and time the workspace was updated, in the timestamp format defined by RFC3339.
    VcnId string
    The OCID of the VCN the subnet is in.
    compartmentId String
    The OCID of the compartment containing the resources you want to list.
    definedTags Map<String,Object>
    Defined tags for this resource. Each key is predefined and scoped to a namespace. See Resource Tags. Example: {"Operations.CostCenter": "42"}
    description String
    A user defined description for the workspace.
    displayName String
    A user-friendly display name for the workspace. Does not have to be unique, and can be modified. Avoid entering confidential information.
    dnsServerIp String
    The IP of the custom DNS.
    dnsServerZone String
    The DNS zone of the custom DNS to use to resolve names.
    endpointCompartmentId String
    endpointId String
    DCMS endpoint associated with the container/workspace. Returns null if there is none.
    endpointName String
    Name of the private endpoint associated with the container/workspace. Returns null if there is none.
    freeformTags Map<String,Object>
    Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. See Resource Tags. Example: {"Department": "Finance"}
    id String
    A system-generated and immutable identifier assigned to the workspace upon creation.
    isForceOperation Boolean
    isPrivateNetworkEnabled Boolean
    Specifies whether the private network connection is enabled or disabled.
    quiesceTimeout Integer
    registryCompartmentId String
    registryId String
    DCMS registry associated with the container/workspace. Returns null if there is none.
    registryName String
    state String
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    stateMessage String
    A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in failed state.
    subnetId String
    The OCID of the subnet for customer connected databases.
    timeCreated String
    The date and time the workspace was created, in the timestamp format defined by RFC3339.
    timeUpdated String
    The date and time the workspace was updated, in the timestamp format defined by RFC3339.
    vcnId String
    The OCID of the VCN the subnet is in.
    compartmentId string
    The OCID of the compartment containing the resources you want to list.
    definedTags {[key: string]: any}
    Defined tags for this resource. Each key is predefined and scoped to a namespace. See Resource Tags. Example: {"Operations.CostCenter": "42"}
    description string
    A user defined description for the workspace.
    displayName string
    A user-friendly display name for the workspace. Does not have to be unique, and can be modified. Avoid entering confidential information.
    dnsServerIp string
    The IP of the custom DNS.
    dnsServerZone string
    The DNS zone of the custom DNS to use to resolve names.
    endpointCompartmentId string
    endpointId string
    DCMS endpoint associated with the container/workspace. Returns null if there is none.
    endpointName string
    Name of the private endpoint associated with the container/workspace. Returns null if there is none.
    freeformTags {[key: string]: any}
    Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. See Resource Tags. Example: {"Department": "Finance"}
    id string
    A system-generated and immutable identifier assigned to the workspace upon creation.
    isForceOperation boolean
    isPrivateNetworkEnabled boolean
    Specifies whether the private network connection is enabled or disabled.
    quiesceTimeout number
    registryCompartmentId string
    registryId string
    DCMS registry associated with the container/workspace. Returns null if there is none.
    registryName string
    state string
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    stateMessage string
    A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in failed state.
    subnetId string
    The OCID of the subnet for customer connected databases.
    timeCreated string
    The date and time the workspace was created, in the timestamp format defined by RFC3339.
    timeUpdated string
    The date and time the workspace was updated, in the timestamp format defined by RFC3339.
    vcnId string
    The OCID of the VCN the subnet is in.
    compartment_id str
    The OCID of the compartment containing the resources you want to list.
    defined_tags Mapping[str, Any]
    Defined tags for this resource. Each key is predefined and scoped to a namespace. See Resource Tags. Example: {"Operations.CostCenter": "42"}
    description str
    A user defined description for the workspace.
    display_name str
    A user-friendly display name for the workspace. Does not have to be unique, and can be modified. Avoid entering confidential information.
    dns_server_ip str
    The IP of the custom DNS.
    dns_server_zone str
    The DNS zone of the custom DNS to use to resolve names.
    endpoint_compartment_id str
    endpoint_id str
    DCMS endpoint associated with the container/workspace. Returns null if there is none.
    endpoint_name str
    Name of the private endpoint associated with the container/workspace. Returns null if there is none.
    freeform_tags Mapping[str, Any]
    Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. See Resource Tags. Example: {"Department": "Finance"}
    id str
    A system-generated and immutable identifier assigned to the workspace upon creation.
    is_force_operation bool
    is_private_network_enabled bool
    Specifies whether the private network connection is enabled or disabled.
    quiesce_timeout int
    registry_compartment_id str
    registry_id str
    DCMS registry associated with the container/workspace. Returns null if there is none.
    registry_name str
    state str
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    state_message str
    A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in failed state.
    subnet_id str
    The OCID of the subnet for customer connected databases.
    time_created str
    The date and time the workspace was created, in the timestamp format defined by RFC3339.
    time_updated str
    The date and time the workspace was updated, in the timestamp format defined by RFC3339.
    vcn_id str
    The OCID of the VCN the subnet is in.
    compartmentId String
    The OCID of the compartment containing the resources you want to list.
    definedTags Map<Any>
    Defined tags for this resource. Each key is predefined and scoped to a namespace. See Resource Tags. Example: {"Operations.CostCenter": "42"}
    description String
    A user defined description for the workspace.
    displayName String
    A user-friendly display name for the workspace. Does not have to be unique, and can be modified. Avoid entering confidential information.
    dnsServerIp String
    The IP of the custom DNS.
    dnsServerZone String
    The DNS zone of the custom DNS to use to resolve names.
    endpointCompartmentId String
    endpointId String
    DCMS endpoint associated with the container/workspace. Returns null if there is none.
    endpointName String
    Name of the private endpoint associated with the container/workspace. Returns null if there is none.
    freeformTags Map<Any>
    Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. See Resource Tags. Example: {"Department": "Finance"}
    id String
    A system-generated and immutable identifier assigned to the workspace upon creation.
    isForceOperation Boolean
    isPrivateNetworkEnabled Boolean
    Specifies whether the private network connection is enabled or disabled.
    quiesceTimeout Number
    registryCompartmentId String
    registryId String
    DCMS registry associated with the container/workspace. Returns null if there is none.
    registryName String
    state String
    The lifecycle state of a resource. When specified, the operation only returns resources that match the given lifecycle state. When not specified, all lifecycle states are processed as a match.
    stateMessage String
    A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in failed state.
    subnetId String
    The OCID of the subnet for customer connected databases.
    timeCreated String
    The date and time the workspace was created, in the timestamp format defined by RFC3339.
    timeUpdated String
    The date and time the workspace was updated, in the timestamp format defined by RFC3339.
    vcnId String
    The OCID of the VCN the subnet is in.

    Package Details

    Repository
    oci pulumi/pulumi-oci
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the oci Terraform Provider.
    oci logo
    Oracle Cloud Infrastructure v1.41.0 published on Wednesday, Jun 19, 2024 by Pulumi