1. Packages
  2. Cisco Catalyst SD-WAN
  3. API Docs
  4. SlaClassPolicyObject
Cisco Catalyst SD-WAN v0.1.3 published on Tuesday, Sep 24, 2024 by Pulumi

sdwan.SlaClassPolicyObject

Explore with Pulumi AI

sdwan logo
Cisco Catalyst SD-WAN v0.1.3 published on Tuesday, Sep 24, 2024 by Pulumi

    This resource can manage a SLA Class Policy Object .

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as sdwan from "@pulumi/sdwan";
    
    const example = new sdwan.SlaClassPolicyObject("example", {
        name: "Example",
        jitter: 100,
        latency: 10,
        loss: 1,
        fallbackBestTunnelCriteria: "jitter-loss-latency",
        fallbackBestTunnelJitter: 100,
        fallbackBestTunnelLatency: 10,
        fallbackBestTunnelLoss: 1,
    });
    
    import pulumi
    import pulumi_sdwan as sdwan
    
    example = sdwan.SlaClassPolicyObject("example",
        name="Example",
        jitter=100,
        latency=10,
        loss=1,
        fallback_best_tunnel_criteria="jitter-loss-latency",
        fallback_best_tunnel_jitter=100,
        fallback_best_tunnel_latency=10,
        fallback_best_tunnel_loss=1)
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-sdwan/sdk/go/sdwan"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := sdwan.NewSlaClassPolicyObject(ctx, "example", &sdwan.SlaClassPolicyObjectArgs{
    			Name:                       pulumi.String("Example"),
    			Jitter:                     pulumi.Int(100),
    			Latency:                    pulumi.Int(10),
    			Loss:                       pulumi.Int(1),
    			FallbackBestTunnelCriteria: pulumi.String("jitter-loss-latency"),
    			FallbackBestTunnelJitter:   pulumi.Int(100),
    			FallbackBestTunnelLatency:  pulumi.Int(10),
    			FallbackBestTunnelLoss:     pulumi.Int(1),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Sdwan = Pulumi.Sdwan;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new Sdwan.SlaClassPolicyObject("example", new()
        {
            Name = "Example",
            Jitter = 100,
            Latency = 10,
            Loss = 1,
            FallbackBestTunnelCriteria = "jitter-loss-latency",
            FallbackBestTunnelJitter = 100,
            FallbackBestTunnelLatency = 10,
            FallbackBestTunnelLoss = 1,
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.sdwan.SlaClassPolicyObject;
    import com.pulumi.sdwan.SlaClassPolicyObjectArgs;
    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) {
            var example = new SlaClassPolicyObject("example", SlaClassPolicyObjectArgs.builder()
                .name("Example")
                .jitter(100)
                .latency(10)
                .loss(1)
                .fallbackBestTunnelCriteria("jitter-loss-latency")
                .fallbackBestTunnelJitter(100)
                .fallbackBestTunnelLatency(10)
                .fallbackBestTunnelLoss(1)
                .build());
    
        }
    }
    
    resources:
      example:
        type: sdwan:SlaClassPolicyObject
        properties:
          name: Example
          jitter: 100
          latency: 10
          loss: 1
          fallbackBestTunnelCriteria: jitter-loss-latency
          fallbackBestTunnelJitter: 100
          fallbackBestTunnelLatency: 10
          fallbackBestTunnelLoss: 1
    

    Create SlaClassPolicyObject Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new SlaClassPolicyObject(name: string, args?: SlaClassPolicyObjectArgs, opts?: CustomResourceOptions);
    @overload
    def SlaClassPolicyObject(resource_name: str,
                             args: Optional[SlaClassPolicyObjectArgs] = None,
                             opts: Optional[ResourceOptions] = None)
    
    @overload
    def SlaClassPolicyObject(resource_name: str,
                             opts: Optional[ResourceOptions] = None,
                             app_probe_class_id: Optional[str] = None,
                             app_probe_class_version: Optional[int] = None,
                             fallback_best_tunnel_criteria: Optional[str] = None,
                             fallback_best_tunnel_jitter: Optional[int] = None,
                             fallback_best_tunnel_latency: Optional[int] = None,
                             fallback_best_tunnel_loss: Optional[int] = None,
                             jitter: Optional[int] = None,
                             latency: Optional[int] = None,
                             loss: Optional[int] = None,
                             name: Optional[str] = None)
    func NewSlaClassPolicyObject(ctx *Context, name string, args *SlaClassPolicyObjectArgs, opts ...ResourceOption) (*SlaClassPolicyObject, error)
    public SlaClassPolicyObject(string name, SlaClassPolicyObjectArgs? args = null, CustomResourceOptions? opts = null)
    public SlaClassPolicyObject(String name, SlaClassPolicyObjectArgs args)
    public SlaClassPolicyObject(String name, SlaClassPolicyObjectArgs args, CustomResourceOptions options)
    
    type: sdwan:SlaClassPolicyObject
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args SlaClassPolicyObjectArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args SlaClassPolicyObjectArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args SlaClassPolicyObjectArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args SlaClassPolicyObjectArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args SlaClassPolicyObjectArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var slaClassPolicyObjectResource = new Sdwan.SlaClassPolicyObject("slaClassPolicyObjectResource", new()
    {
        AppProbeClassId = "string",
        AppProbeClassVersion = 0,
        FallbackBestTunnelCriteria = "string",
        FallbackBestTunnelJitter = 0,
        FallbackBestTunnelLatency = 0,
        FallbackBestTunnelLoss = 0,
        Jitter = 0,
        Latency = 0,
        Loss = 0,
        Name = "string",
    });
    
    example, err := sdwan.NewSlaClassPolicyObject(ctx, "slaClassPolicyObjectResource", &sdwan.SlaClassPolicyObjectArgs{
    	AppProbeClassId:            pulumi.String("string"),
    	AppProbeClassVersion:       pulumi.Int(0),
    	FallbackBestTunnelCriteria: pulumi.String("string"),
    	FallbackBestTunnelJitter:   pulumi.Int(0),
    	FallbackBestTunnelLatency:  pulumi.Int(0),
    	FallbackBestTunnelLoss:     pulumi.Int(0),
    	Jitter:                     pulumi.Int(0),
    	Latency:                    pulumi.Int(0),
    	Loss:                       pulumi.Int(0),
    	Name:                       pulumi.String("string"),
    })
    
    var slaClassPolicyObjectResource = new SlaClassPolicyObject("slaClassPolicyObjectResource", SlaClassPolicyObjectArgs.builder()
        .appProbeClassId("string")
        .appProbeClassVersion(0)
        .fallbackBestTunnelCriteria("string")
        .fallbackBestTunnelJitter(0)
        .fallbackBestTunnelLatency(0)
        .fallbackBestTunnelLoss(0)
        .jitter(0)
        .latency(0)
        .loss(0)
        .name("string")
        .build());
    
    sla_class_policy_object_resource = sdwan.SlaClassPolicyObject("slaClassPolicyObjectResource",
        app_probe_class_id="string",
        app_probe_class_version=0,
        fallback_best_tunnel_criteria="string",
        fallback_best_tunnel_jitter=0,
        fallback_best_tunnel_latency=0,
        fallback_best_tunnel_loss=0,
        jitter=0,
        latency=0,
        loss=0,
        name="string")
    
    const slaClassPolicyObjectResource = new sdwan.SlaClassPolicyObject("slaClassPolicyObjectResource", {
        appProbeClassId: "string",
        appProbeClassVersion: 0,
        fallbackBestTunnelCriteria: "string",
        fallbackBestTunnelJitter: 0,
        fallbackBestTunnelLatency: 0,
        fallbackBestTunnelLoss: 0,
        jitter: 0,
        latency: 0,
        loss: 0,
        name: "string",
    });
    
    type: sdwan:SlaClassPolicyObject
    properties:
        appProbeClassId: string
        appProbeClassVersion: 0
        fallbackBestTunnelCriteria: string
        fallbackBestTunnelJitter: 0
        fallbackBestTunnelLatency: 0
        fallbackBestTunnelLoss: 0
        jitter: 0
        latency: 0
        loss: 0
        name: string
    

    SlaClassPolicyObject Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The SlaClassPolicyObject resource accepts the following input properties:

    AppProbeClassId string
    App Probe Class Policy Object ID
    AppProbeClassVersion int
    App Probe Class Policy Object version
    FallbackBestTunnelCriteria string
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    FallbackBestTunnelJitter int
    Jitter variance in ms - Range: 1-1000
    FallbackBestTunnelLatency int
    Latency variance in ms - Range: 1-1000
    FallbackBestTunnelLoss int
    Loss variance in percent - Range: 1-100
    Jitter int
    Jitter in ms - Range: 1-1000
    Latency int
    Latency in ms - Range: 1-1000
    Loss int
    Loss in percent - Range: 1-100
    Name string
    The name of the policy object
    AppProbeClassId string
    App Probe Class Policy Object ID
    AppProbeClassVersion int
    App Probe Class Policy Object version
    FallbackBestTunnelCriteria string
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    FallbackBestTunnelJitter int
    Jitter variance in ms - Range: 1-1000
    FallbackBestTunnelLatency int
    Latency variance in ms - Range: 1-1000
    FallbackBestTunnelLoss int
    Loss variance in percent - Range: 1-100
    Jitter int
    Jitter in ms - Range: 1-1000
    Latency int
    Latency in ms - Range: 1-1000
    Loss int
    Loss in percent - Range: 1-100
    Name string
    The name of the policy object
    appProbeClassId String
    App Probe Class Policy Object ID
    appProbeClassVersion Integer
    App Probe Class Policy Object version
    fallbackBestTunnelCriteria String
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallbackBestTunnelJitter Integer
    Jitter variance in ms - Range: 1-1000
    fallbackBestTunnelLatency Integer
    Latency variance in ms - Range: 1-1000
    fallbackBestTunnelLoss Integer
    Loss variance in percent - Range: 1-100
    jitter Integer
    Jitter in ms - Range: 1-1000
    latency Integer
    Latency in ms - Range: 1-1000
    loss Integer
    Loss in percent - Range: 1-100
    name String
    The name of the policy object
    appProbeClassId string
    App Probe Class Policy Object ID
    appProbeClassVersion number
    App Probe Class Policy Object version
    fallbackBestTunnelCriteria string
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallbackBestTunnelJitter number
    Jitter variance in ms - Range: 1-1000
    fallbackBestTunnelLatency number
    Latency variance in ms - Range: 1-1000
    fallbackBestTunnelLoss number
    Loss variance in percent - Range: 1-100
    jitter number
    Jitter in ms - Range: 1-1000
    latency number
    Latency in ms - Range: 1-1000
    loss number
    Loss in percent - Range: 1-100
    name string
    The name of the policy object
    app_probe_class_id str
    App Probe Class Policy Object ID
    app_probe_class_version int
    App Probe Class Policy Object version
    fallback_best_tunnel_criteria str
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallback_best_tunnel_jitter int
    Jitter variance in ms - Range: 1-1000
    fallback_best_tunnel_latency int
    Latency variance in ms - Range: 1-1000
    fallback_best_tunnel_loss int
    Loss variance in percent - Range: 1-100
    jitter int
    Jitter in ms - Range: 1-1000
    latency int
    Latency in ms - Range: 1-1000
    loss int
    Loss in percent - Range: 1-100
    name str
    The name of the policy object
    appProbeClassId String
    App Probe Class Policy Object ID
    appProbeClassVersion Number
    App Probe Class Policy Object version
    fallbackBestTunnelCriteria String
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallbackBestTunnelJitter Number
    Jitter variance in ms - Range: 1-1000
    fallbackBestTunnelLatency Number
    Latency variance in ms - Range: 1-1000
    fallbackBestTunnelLoss Number
    Loss variance in percent - Range: 1-100
    jitter Number
    Jitter in ms - Range: 1-1000
    latency Number
    Latency in ms - Range: 1-1000
    loss Number
    Loss in percent - Range: 1-100
    name String
    The name of the policy object

    Outputs

    All input properties are implicitly available as output properties. Additionally, the SlaClassPolicyObject resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Version int
    The version of the object
    Id string
    The provider-assigned unique ID for this managed resource.
    Version int
    The version of the object
    id String
    The provider-assigned unique ID for this managed resource.
    version Integer
    The version of the object
    id string
    The provider-assigned unique ID for this managed resource.
    version number
    The version of the object
    id str
    The provider-assigned unique ID for this managed resource.
    version int
    The version of the object
    id String
    The provider-assigned unique ID for this managed resource.
    version Number
    The version of the object

    Look up Existing SlaClassPolicyObject Resource

    Get an existing SlaClassPolicyObject resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: SlaClassPolicyObjectState, opts?: CustomResourceOptions): SlaClassPolicyObject
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            app_probe_class_id: Optional[str] = None,
            app_probe_class_version: Optional[int] = None,
            fallback_best_tunnel_criteria: Optional[str] = None,
            fallback_best_tunnel_jitter: Optional[int] = None,
            fallback_best_tunnel_latency: Optional[int] = None,
            fallback_best_tunnel_loss: Optional[int] = None,
            jitter: Optional[int] = None,
            latency: Optional[int] = None,
            loss: Optional[int] = None,
            name: Optional[str] = None,
            version: Optional[int] = None) -> SlaClassPolicyObject
    func GetSlaClassPolicyObject(ctx *Context, name string, id IDInput, state *SlaClassPolicyObjectState, opts ...ResourceOption) (*SlaClassPolicyObject, error)
    public static SlaClassPolicyObject Get(string name, Input<string> id, SlaClassPolicyObjectState? state, CustomResourceOptions? opts = null)
    public static SlaClassPolicyObject get(String name, Output<String> id, SlaClassPolicyObjectState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AppProbeClassId string
    App Probe Class Policy Object ID
    AppProbeClassVersion int
    App Probe Class Policy Object version
    FallbackBestTunnelCriteria string
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    FallbackBestTunnelJitter int
    Jitter variance in ms - Range: 1-1000
    FallbackBestTunnelLatency int
    Latency variance in ms - Range: 1-1000
    FallbackBestTunnelLoss int
    Loss variance in percent - Range: 1-100
    Jitter int
    Jitter in ms - Range: 1-1000
    Latency int
    Latency in ms - Range: 1-1000
    Loss int
    Loss in percent - Range: 1-100
    Name string
    The name of the policy object
    Version int
    The version of the object
    AppProbeClassId string
    App Probe Class Policy Object ID
    AppProbeClassVersion int
    App Probe Class Policy Object version
    FallbackBestTunnelCriteria string
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    FallbackBestTunnelJitter int
    Jitter variance in ms - Range: 1-1000
    FallbackBestTunnelLatency int
    Latency variance in ms - Range: 1-1000
    FallbackBestTunnelLoss int
    Loss variance in percent - Range: 1-100
    Jitter int
    Jitter in ms - Range: 1-1000
    Latency int
    Latency in ms - Range: 1-1000
    Loss int
    Loss in percent - Range: 1-100
    Name string
    The name of the policy object
    Version int
    The version of the object
    appProbeClassId String
    App Probe Class Policy Object ID
    appProbeClassVersion Integer
    App Probe Class Policy Object version
    fallbackBestTunnelCriteria String
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallbackBestTunnelJitter Integer
    Jitter variance in ms - Range: 1-1000
    fallbackBestTunnelLatency Integer
    Latency variance in ms - Range: 1-1000
    fallbackBestTunnelLoss Integer
    Loss variance in percent - Range: 1-100
    jitter Integer
    Jitter in ms - Range: 1-1000
    latency Integer
    Latency in ms - Range: 1-1000
    loss Integer
    Loss in percent - Range: 1-100
    name String
    The name of the policy object
    version Integer
    The version of the object
    appProbeClassId string
    App Probe Class Policy Object ID
    appProbeClassVersion number
    App Probe Class Policy Object version
    fallbackBestTunnelCriteria string
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallbackBestTunnelJitter number
    Jitter variance in ms - Range: 1-1000
    fallbackBestTunnelLatency number
    Latency variance in ms - Range: 1-1000
    fallbackBestTunnelLoss number
    Loss variance in percent - Range: 1-100
    jitter number
    Jitter in ms - Range: 1-1000
    latency number
    Latency in ms - Range: 1-1000
    loss number
    Loss in percent - Range: 1-100
    name string
    The name of the policy object
    version number
    The version of the object
    app_probe_class_id str
    App Probe Class Policy Object ID
    app_probe_class_version int
    App Probe Class Policy Object version
    fallback_best_tunnel_criteria str
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallback_best_tunnel_jitter int
    Jitter variance in ms - Range: 1-1000
    fallback_best_tunnel_latency int
    Latency variance in ms - Range: 1-1000
    fallback_best_tunnel_loss int
    Loss variance in percent - Range: 1-100
    jitter int
    Jitter in ms - Range: 1-1000
    latency int
    Latency in ms - Range: 1-1000
    loss int
    Loss in percent - Range: 1-100
    name str
    The name of the policy object
    version int
    The version of the object
    appProbeClassId String
    App Probe Class Policy Object ID
    appProbeClassVersion Number
    App Probe Class Policy Object version
    fallbackBestTunnelCriteria String
    • Choices: loss, latency, jitter, loss-latency, loss-jitter, latency-loss, latency-jitter, jitter-latency, jitter-loss, loss-latency-jitter, loss-jitter-latency, latency-loss-jitter, latency-jitter-loss, jitter-latency-loss, jitter-loss-latency
    fallbackBestTunnelJitter Number
    Jitter variance in ms - Range: 1-1000
    fallbackBestTunnelLatency Number
    Latency variance in ms - Range: 1-1000
    fallbackBestTunnelLoss Number
    Loss variance in percent - Range: 1-100
    jitter Number
    Jitter in ms - Range: 1-1000
    latency Number
    Latency in ms - Range: 1-1000
    loss Number
    Loss in percent - Range: 1-100
    name String
    The name of the policy object
    version Number
    The version of the object

    Import

    $ pulumi import sdwan:index/slaClassPolicyObject:SlaClassPolicyObject example "f6b2c44c-693c-4763-b010-895aa3d236bd"
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    sdwan pulumi/pulumi-sdwan
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the sdwan Terraform Provider.
    sdwan logo
    Cisco Catalyst SD-WAN v0.1.3 published on Tuesday, Sep 24, 2024 by Pulumi