ResizeRequest class

Represents a Managed Instance Group Resize Request

Resize Requests are the Managed Instance Group implementation of Dynamic Workload Scheduler Flex Start.

With Dynamic Workload Scheduler in Flex Start mode, you submit a GPU capacity request for your AI/ML jobs by indicating how many you need, a duration, and your preferred zone. Dynamic Workload Scheduler intelligently persists the request; once the capacity becomes available, it automatically provisions your VMs enabling your workloads to run continuously for the entire duration of the capacity allocation.

To get more information about ResizeRequest, see:

Example Usage

Compute Mig Resize Request

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const a3Dws = new gcp.compute.RegionInstanceTemplate("a3_dws", {
    name: "a3-dws",
    region: "us-central1",
    description: "This template is used to create a mig instance that is compatible with DWS resize requests.",
    instanceDescription: "A3 GPU",
    machineType: "a3-highgpu-8g",
    canIpForward: false,
    scheduling: {
        automaticRestart: false,
        onHostMaintenance: "TERMINATE",
    },
    disks: [{
        sourceImage: "cos-cloud/cos-121-lts",
        autoDelete: true,
        boot: true,
        diskType: "pd-ssd",
        diskSizeGb: 960,
        mode: "READ_WRITE",
    }],
    guestAccelerators: [{
        type: "nvidia-h100-80gb",
        count: 8,
    }],
    reservationAffinity: {
        type: "NO_RESERVATION",
    },
    shieldedInstanceConfig: {
        enableVtpm: true,
        enableIntegrityMonitoring: true,
    },
    networkInterfaces: [{
        network: "default",
    }],
});
const a3DwsInstanceGroupManager = new gcp.compute.InstanceGroupManager("a3_dws", {
    name: "a3-dws",
    baseInstanceName: "a3-dws",
    zone: "us-central1-a",
    versions: [{
        instanceTemplate: a3Dws.selfLink,
    }],
    instanceLifecyclePolicy: {
        defaultActionOnFailure: "DO_NOTHING",
    },
    waitForInstances: false,
});
const a3ResizeRequest = new gcp.compute.ResizeRequest("a3_resize_request", {
    name: "a3-dws",
    instanceGroupManager: a3DwsInstanceGroupManager.name,
    zone: "us-central1-a",
    description: "Test resize request resource",
    resizeBy: 2,
    requestedRunDuration: {
        seconds: "14400",
        nanos: 0,
    },
});
import pulumi
import pulumi_gcp as gcp

a3_dws = gcp.compute.RegionInstanceTemplate("a3_dws",
    name="a3-dws",
    region="us-central1",
    description="This template is used to create a mig instance that is compatible with DWS resize requests.",
    instance_description="A3 GPU",
    machine_type="a3-highgpu-8g",
    can_ip_forward=False,
    scheduling={
        "automatic_restart": False,
        "on_host_maintenance": "TERMINATE",
    },
    disks=[{
        "source_image": "cos-cloud/cos-121-lts",
        "auto_delete": True,
        "boot": True,
        "disk_type": "pd-ssd",
        "disk_size_gb": 960,
        "mode": "READ_WRITE",
    }],
    guest_accelerators=[{
        "type": "nvidia-h100-80gb",
        "count": 8,
    }],
    reservation_affinity={
        "type": "NO_RESERVATION",
    },
    shielded_instance_config={
        "enable_vtpm": True,
        "enable_integrity_monitoring": True,
    },
    network_interfaces=[{
        "network": "default",
    }])
a3_dws_instance_group_manager = gcp.compute.InstanceGroupManager("a3_dws",
    name="a3-dws",
    base_instance_name="a3-dws",
    zone="us-central1-a",
    versions=[{
        "instance_template": a3_dws.self_link,
    }],
    instance_lifecycle_policy={
        "default_action_on_failure": "DO_NOTHING",
    },
    wait_for_instances=False)
a3_resize_request = gcp.compute.ResizeRequest("a3_resize_request",
    name="a3-dws",
    instance_group_manager=a3_dws_instance_group_manager.name,
    zone="us-central1-a",
    description="Test resize request resource",
    resize_by=2,
    requested_run_duration={
        "seconds": "14400",
        "nanos": 0,
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var a3Dws = new Gcp.Compute.RegionInstanceTemplate("a3_dws", new()
    {
        Name = "a3-dws",
        Region = "us-central1",
        Description = "This template is used to create a mig instance that is compatible with DWS resize requests.",
        InstanceDescription = "A3 GPU",
        MachineType = "a3-highgpu-8g",
        CanIpForward = false,
        Scheduling = new Gcp.Compute.Inputs.RegionInstanceTemplateSchedulingArgs
        {
            AutomaticRestart = false,
            OnHostMaintenance = "TERMINATE",
        },
        Disks = new[]
        {
            new Gcp.Compute.Inputs.RegionInstanceTemplateDiskArgs
            {
                SourceImage = "cos-cloud/cos-121-lts",
                AutoDelete = true,
                Boot = true,
                DiskType = "pd-ssd",
                DiskSizeGb = 960,
                Mode = "READ_WRITE",
            },
        },
        GuestAccelerators = new[]
        {
            new Gcp.Compute.Inputs.RegionInstanceTemplateGuestAcceleratorArgs
            {
                Type = "nvidia-h100-80gb",
                Count = 8,
            },
        },
        ReservationAffinity = new Gcp.Compute.Inputs.RegionInstanceTemplateReservationAffinityArgs
        {
            Type = "NO_RESERVATION",
        },
        ShieldedInstanceConfig = new Gcp.Compute.Inputs.RegionInstanceTemplateShieldedInstanceConfigArgs
        {
            EnableVtpm = true,
            EnableIntegrityMonitoring = true,
        },
        NetworkInterfaces = new[]
        {
            new Gcp.Compute.Inputs.RegionInstanceTemplateNetworkInterfaceArgs
            {
                Network = "default",
            },
        },
    });

    var a3DwsInstanceGroupManager = new Gcp.Compute.InstanceGroupManager("a3_dws", new()
    {
        Name = "a3-dws",
        BaseInstanceName = "a3-dws",
        Zone = "us-central1-a",
        Versions = new[]
        {
            new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs
            {
                InstanceTemplate = a3Dws.SelfLink,
            },
        },
        InstanceLifecyclePolicy = new Gcp.Compute.Inputs.InstanceGroupManagerInstanceLifecyclePolicyArgs
        {
            DefaultActionOnFailure = "DO_NOTHING",
        },
        WaitForInstances = false,
    });

    var a3ResizeRequest = new Gcp.Compute.ResizeRequest("a3_resize_request", new()
    {
        Name = "a3-dws",
        InstanceGroupManager = a3DwsInstanceGroupManager.Name,
        Zone = "us-central1-a",
        Description = "Test resize request resource",
        ResizeBy = 2,
        RequestedRunDuration = new Gcp.Compute.Inputs.ResizeRequestRequestedRunDurationArgs
        {
            Seconds = "14400",
            Nanos = 0,
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		a3Dws, err := compute.NewRegionInstanceTemplate(ctx, "a3_dws", &compute.RegionInstanceTemplateArgs{
			Name:                pulumi.String("a3-dws"),
			Region:              pulumi.String("us-central1"),
			Description:         pulumi.String("This template is used to create a mig instance that is compatible with DWS resize requests."),
			InstanceDescription: pulumi.String("A3 GPU"),
			MachineType:         pulumi.String("a3-highgpu-8g"),
			CanIpForward:        pulumi.Bool(false),
			Scheduling: &compute.RegionInstanceTemplateSchedulingArgs{
				AutomaticRestart:  pulumi.Bool(false),
				OnHostMaintenance: pulumi.String("TERMINATE"),
			},
			Disks: compute.RegionInstanceTemplateDiskArray{
				&compute.RegionInstanceTemplateDiskArgs{
					SourceImage: pulumi.String("cos-cloud/cos-121-lts"),
					AutoDelete:  pulumi.Bool(true),
					Boot:        pulumi.Bool(true),
					DiskType:    pulumi.String("pd-ssd"),
					DiskSizeGb:  pulumi.Int(960),
					Mode:        pulumi.String("READ_WRITE"),
				},
			},
			GuestAccelerators: compute.RegionInstanceTemplateGuestAcceleratorArray{
				&compute.RegionInstanceTemplateGuestAcceleratorArgs{
					Type:  pulumi.String("nvidia-h100-80gb"),
					Count: pulumi.Int(8),
				},
			},
			ReservationAffinity: &compute.RegionInstanceTemplateReservationAffinityArgs{
				Type: pulumi.String("NO_RESERVATION"),
			},
			ShieldedInstanceConfig: &compute.RegionInstanceTemplateShieldedInstanceConfigArgs{
				EnableVtpm:                pulumi.Bool(true),
				EnableIntegrityMonitoring: pulumi.Bool(true),
			},
			NetworkInterfaces: compute.RegionInstanceTemplateNetworkInterfaceArray{
				&compute.RegionInstanceTemplateNetworkInterfaceArgs{
					Network: pulumi.String("default"),
				},
			},
		})
		if err != nil {
			return err
		}
		a3DwsInstanceGroupManager, err := compute.NewInstanceGroupManager(ctx, "a3_dws", &compute.InstanceGroupManagerArgs{
			Name:             pulumi.String("a3-dws"),
			BaseInstanceName: pulumi.String("a3-dws"),
			Zone:             pulumi.String("us-central1-a"),
			Versions: compute.InstanceGroupManagerVersionArray{
				&compute.InstanceGroupManagerVersionArgs{
					InstanceTemplate: a3Dws.SelfLink,
				},
			},
			InstanceLifecyclePolicy: &compute.InstanceGroupManagerInstanceLifecyclePolicyArgs{
				DefaultActionOnFailure: pulumi.String("DO_NOTHING"),
			},
			WaitForInstances: pulumi.Bool(false),
		})
		if err != nil {
			return err
		}
		_, err = compute.NewResizeRequest(ctx, "a3_resize_request", &compute.ResizeRequestArgs{
			Name:                 pulumi.String("a3-dws"),
			InstanceGroupManager: a3DwsInstanceGroupManager.Name,
			Zone:                 pulumi.String("us-central1-a"),
			Description:          pulumi.String("Test resize request resource"),
			ResizeBy:             pulumi.Int(2),
			RequestedRunDuration: &compute.ResizeRequestRequestedRunDurationArgs{
				Seconds: pulumi.String("14400"),
				Nanos:   pulumi.Int(0),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_compute_regioninstancetemplate" "a3_dws" {
  name                 = "a3-dws"
  region               = "us-central1"
  description          = "This template is used to create a mig instance that is compatible with DWS resize requests."
  instance_description = "A3 GPU"
  machine_type         = "a3-highgpu-8g"
  can_ip_forward       = false
  scheduling = {
    automatic_restart   = false
    on_host_maintenance = "TERMINATE"
  }
  disks {
    source_image = "cos-cloud/cos-121-lts"
    auto_delete  = true
    boot         = true
    disk_type    = "pd-ssd"
    disk_size_gb = "960"
    mode         = "READ_WRITE"
  }
  guest_accelerators {
    type  = "nvidia-h100-80gb"
    count = 8
  }
  reservation_affinity = {
    type = "NO_RESERVATION"
  }
  shielded_instance_config = {
    enable_vtpm                 = true
    enable_integrity_monitoring = true
  }
  network_interfaces {
    network = "default"
  }
}
resource "gcp_compute_instancegroupmanager" "a3_dws" {
  name               = "a3-dws"
  base_instance_name = "a3-dws"
  zone               = "us-central1-a"
  versions {
    instance_template = gcp_compute_regioninstancetemplate.a3_dws.self_link
  }
  instance_lifecycle_policy = {
    default_action_on_failure = "DO_NOTHING"
  }
  wait_for_instances = false
}
resource "gcp_compute_resizerequest" "a3_resize_request" {
  name                   = "a3-dws"
  instance_group_manager = gcp_compute_instancegroupmanager.a3_dws.name
  zone                   = "us-central1-a"
  description            = "Test resize request resource"
  resize_by              = 2
  requested_run_duration = {
    seconds = 14400
    nanos   = 0
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionInstanceTemplate;
import com.pulumi.gcp.compute.RegionInstanceTemplateArgs;
import com.pulumi.gcp.compute.inputs.RegionInstanceTemplateSchedulingArgs;
import com.pulumi.gcp.compute.inputs.RegionInstanceTemplateDiskArgs;
import com.pulumi.gcp.compute.inputs.RegionInstanceTemplateGuestAcceleratorArgs;
import com.pulumi.gcp.compute.inputs.RegionInstanceTemplateReservationAffinityArgs;
import com.pulumi.gcp.compute.inputs.RegionInstanceTemplateShieldedInstanceConfigArgs;
import com.pulumi.gcp.compute.inputs.RegionInstanceTemplateNetworkInterfaceArgs;
import com.pulumi.gcp.compute.InstanceGroupManager;
import com.pulumi.gcp.compute.InstanceGroupManagerArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;
import com.pulumi.gcp.compute.inputs.InstanceGroupManagerInstanceLifecyclePolicyArgs;
import com.pulumi.gcp.compute.ResizeRequest;
import com.pulumi.gcp.compute.ResizeRequestArgs;
import com.pulumi.gcp.compute.inputs.ResizeRequestRequestedRunDurationArgs;
import java.util.ArrayList;
import java.util.Arrays;
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 a3Dws = new RegionInstanceTemplate("a3Dws", RegionInstanceTemplateArgs.builder()
            .name("a3-dws")
            .region("us-central1")
            .description("This template is used to create a mig instance that is compatible with DWS resize requests.")
            .instanceDescription("A3 GPU")
            .machineType("a3-highgpu-8g")
            .canIpForward(false)
            .scheduling(RegionInstanceTemplateSchedulingArgs.builder()
                .automaticRestart(false)
                .onHostMaintenance("TERMINATE")
                .build())
            .disks(RegionInstanceTemplateDiskArgs.builder()
                .sourceImage("cos-cloud/cos-121-lts")
                .autoDelete(true)
                .boot(true)
                .diskType("pd-ssd")
                .diskSizeGb(960)
                .mode("READ_WRITE")
                .build())
            .guestAccelerators(RegionInstanceTemplateGuestAcceleratorArgs.builder()
                .type("nvidia-h100-80gb")
                .count(8)
                .build())
            .reservationAffinity(RegionInstanceTemplateReservationAffinityArgs.builder()
                .type("NO_RESERVATION")
                .build())
            .shieldedInstanceConfig(RegionInstanceTemplateShieldedInstanceConfigArgs.builder()
                .enableVtpm(true)
                .enableIntegrityMonitoring(true)
                .build())
            .networkInterfaces(RegionInstanceTemplateNetworkInterfaceArgs.builder()
                .network("default")
                .build())
            .build());

        var a3DwsInstanceGroupManager = new InstanceGroupManager("a3DwsInstanceGroupManager", InstanceGroupManagerArgs.builder()
            .name("a3-dws")
            .baseInstanceName("a3-dws")
            .zone("us-central1-a")
            .versions(InstanceGroupManagerVersionArgs.builder()
                .instanceTemplate(a3Dws.selfLink())
                .build())
            .instanceLifecyclePolicy(InstanceGroupManagerInstanceLifecyclePolicyArgs.builder()
                .defaultActionOnFailure("DO_NOTHING")
                .build())
            .waitForInstances(false)
            .build());

        var a3ResizeRequest = new ResizeRequest("a3ResizeRequest", ResizeRequestArgs.builder()
            .name("a3-dws")
            .instanceGroupManager(a3DwsInstanceGroupManager.name())
            .zone("us-central1-a")
            .description("Test resize request resource")
            .resizeBy(2)
            .requestedRunDuration(ResizeRequestRequestedRunDurationArgs.builder()
                .seconds("14400")
                .nanos(0)
                .build())
            .build());

    }
}
resources:
  a3Dws:
    type: gcp:compute:RegionInstanceTemplate
    name: a3_dws
    properties:
      name: a3-dws
      region: us-central1
      description: This template is used to create a mig instance that is compatible with DWS resize requests.
      instanceDescription: A3 GPU
      machineType: a3-highgpu-8g
      canIpForward: false
      scheduling:
        automaticRestart: false
        onHostMaintenance: TERMINATE
      disks:
        - sourceImage: cos-cloud/cos-121-lts
          autoDelete: true
          boot: true
          diskType: pd-ssd
          diskSizeGb: '960'
          mode: READ_WRITE
      guestAccelerators:
        - type: nvidia-h100-80gb
          count: 8
      reservationAffinity:
        type: NO_RESERVATION
      shieldedInstanceConfig:
        enableVtpm: true
        enableIntegrityMonitoring: true
      networkInterfaces:
        - network: default
  a3DwsInstanceGroupManager:
    type: gcp:compute:InstanceGroupManager
    name: a3_dws
    properties:
      name: a3-dws
      baseInstanceName: a3-dws
      zone: us-central1-a
      versions:
        - instanceTemplate: ${a3Dws.selfLink}
      instanceLifecyclePolicy:
        defaultActionOnFailure: DO_NOTHING
      waitForInstances: false
  a3ResizeRequest:
    type: gcp:compute:ResizeRequest
    name: a3_resize_request
    properties:
      name: a3-dws
      instanceGroupManager: ${a3DwsInstanceGroupManager.name}
      zone: us-central1-a
      description: Test resize request resource
      resizeBy: 2
      requestedRunDuration:
        seconds: 14400
        nanos: 0

Import

ResizeRequest can be imported using any of these accepted formats:

  • projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}
  • {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}
  • {{zone}}/{{instance_group_manager}}/{{name}}
  • {{instance_group_manager}}/{{name}}

When using the pulumi import command, ResizeRequest can be imported using one of the formats above. For example:

$ pulumi import gcp:compute/resizeRequest:ResizeRequest default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests/{{name}}
$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}
$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{zone}}/{{instance_group_manager}}/{{name}}
$ pulumi import gcp:compute/resizeRequest:ResizeRequest default {{instance_group_manager}}/{{name}}

Constructors

ResizeRequest(String name, {ResizeRequestArgs? args, CustomResourceOptions? options})
Creates a new ResizeRequest. name The Pulumi resource name. args Arguments used to configure this ResizeRequest. The set of arguments for ResizeRequest. options Resource options controlling this resource's behavior.
ResizeRequest.reference(String urn)
Creates a typed reference to an existing ResizeRequest resource.

Properties

childResources → Set<Resource>
finalinherited
completionSources ↔ Map<String, IOutputCompletionSource>
latefinalinherited
creationTimestamp ↔ Output<String>
The creation timestamp for this resize request in RFC3339 text format.
latefinal
deletionPolicy ↔ Output<String>
Whether Terraform will be prevented from destroying the resource. Defaults to DELETE. When a 'terraform destroy' or 'pulumi up' would delete the resource, the command will fail if this field is set to "PREVENT" in Terraform state. When set to "ABANDON", the command will remove the resource from Terraform management without updating or deleting the resource in the API. When set to "DELETE", deleting the resource is allowed.
latefinal
description ↔ Output<String?>
An optional description of this resize-request.
latefinal
hashCode → int
The hash code for this object.
no setterinherited
id ↔ Output<String>
getter/setter pairinherited
instanceGroupManager ↔ Output<String>
The reference of the instance group manager this ResizeRequest is a part of.
latefinal
isCustom → bool
Returns whether this resource is provider-managed.
no setterinherited
isProtected → bool
Returns whether this resource is protected from deletion.
no setterinherited
isRemote → bool
Whether this resource is registered as remote.
no setterinherited
isResourceReference → bool
Whether this instance represents a resource value returned over RPC.
finalinherited
name ↔ Output<String>
The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.
latefinal
project ↔ Output<String>
The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
latefinal
requestedRunDuration ↔ Output<ResizeRequestRequestedRunDuration?>
Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted. Structure is documented below.
latefinal
resizeBy ↔ Output<int>
The number of instances to be created by this resize request. The group's target size will be increased by this number.
latefinal
resourceTransforms → List<ResourceTransform>
Inherited/explicit async transforms.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
state ↔ Output<String>
Current state of the request.
latefinal
statuses ↔ Output<List<ResizeRequestStatus>>
Status of the request. Structure is documented below.
latefinal
transformations → List<ResourceTransformation>
Inherited/explicit legacy transformations.
no setterinherited
urn ↔ Output<String>
latefinalinherited
zone ↔ Output<String>
The reference of the compute zone scoping this request. If it is not provided, the provider zone is used.
latefinal

Methods

failId(Object error) → void
Completes this resource ID with an error when registration fails.
inherited
failOutputs(Object error) → void
Completes all output properties with error.
inherited
failUrn(Object error) → void
Completes this resource URN with an error when registration fails.
inherited
getProvider(String moduleMember) → ProviderResource?
Returns provider for moduleMember's package, if configured.
inherited
getResourceName() → String
Returns this resource's logical name.
inherited
getResourceType() → String
Returns this resource's Pulumi type token.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerOutput<T>(String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output<T>
Registers a dynamic output property for this resource.
inherited
resolveId(String? value, {required bool isKnown}) → void
Resolves the provider-assigned ID for this resource.
inherited
resolveOutputs(Struct outputs) → void
Resolves all output properties from a monitor response payload.
inherited
resolveUrn(String value) → void
Resolves this resource's URN once assigned by the engine.
inherited
serializeProperties(Map<String, dynamic> properties) → Future<Struct>
Serializes resource properties for RPC transmission.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

get(String name, Input<String> id, {ResizeRequestState? state, CustomResourceOptions? options}) → ResizeRequest
Gets an existing ResizeRequest resource's state with the given name and id.