getMachineTypes function
Future<GetMachineTypesResult>
getMachineTypes(
- GetMachineTypesArgs args, {
- InvokeOptions? options,
Provides access to available Google Compute machine types in a zone for a given project. See more about machine type availability in the upstream docs.
To get more information about machine types, see:
Example Usage
Property-Based Availability
Create a VM instance template for each machine type with 16GB of memory and 8 CPUs available in the provided zone.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as std from "@pulumi/std";
export = async () => {
const example = await gcp.compute.getMachineTypes({
filter: "memoryMb = 16384 AND guestCpus = 8",
zone: zone,
});
const exampleInstanceTemplate: gcp.compute.InstanceTemplate[] = [];
for (const range of std.toset({
input: example.machineTypes.map(__item => __item.name),
}).result.map((v, k) => ({key: k, value: v}))) {
exampleInstanceTemplate.push(new gcp.compute.InstanceTemplate(`example-${range.key}`, {
machineType: range.value,
disks: [{
sourceImage: "debian-cloud/debian-11",
autoDelete: true,
boot: true,
}],
}));
}
}
import pulumi
from typing import Any
import pulumi_gcp as gcp
import pulumi_std as std
example = gcp.compute.get_machine_types(filter="memoryMb = 16384 AND guestCpus = 8",
zone=zone)
example_instance_template: list[gcp.compute.InstanceTemplate] = []
for example_instance_template_range in [{"key": k, "value": v} for [k, v] in enumerate(std.toset(input=[__item.name for __item in example.machine_types]).result)]:
example_instance_template.append(gcp.compute.InstanceTemplate(f"example-{example_instance_template_range['key']}",
machine_type=example_instance_template_range["value"],
disks=[{
"source_image": "debian-cloud/debian-11",
"auto_delete": True,
"boot": True,
}]))
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Std = Pulumi.Std;
return await Deployment.RunAsync(async() =>
{
var example = await Gcp.Compute.GetMachineTypes.InvokeAsync(new()
{
Filter = "memoryMb = 16384 AND guestCpus = 8",
Zone = zone,
});
var exampleInstanceTemplate = new List<Gcp.Compute.InstanceTemplate>();
foreach (var range in )
{
exampleInstanceTemplate.Add(new Gcp.Compute.InstanceTemplate($"example-{range.Key}", new()
{
MachineType = range.Value,
Disks = new[]
{
new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
{
SourceImage = "debian-cloud/debian-11",
AutoDelete = true,
Boot = true,
},
},
}));
}
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := compute.GetMachineTypes(ctx, &compute.GetMachineTypesArgs{
Filter: pulumi.StringRef("memoryMb = 16384 AND guestCpus = 8"),
Zone: pulumi.StringRef(zone),
}, nil);
if err != nil {
return err
}
var exampleInstanceTemplate []*compute.InstanceTemplate
for key0, val0 := range []interface{}(std.Toset(ctx, &std.TosetArgs{
Input: %!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:9,15-43),
}, nil).Result) {
__res, err := compute.NewInstanceTemplate(ctx, fmt.Sprintf("example-%v", key0), &compute.InstanceTemplateArgs{
MachineType: pulumi.Any(val0),
Disks: compute.InstanceTemplateDiskArray{
&compute.InstanceTemplateDiskArgs{
SourceImage: pulumi.String("debian-cloud/debian-11"),
AutoDelete: pulumi.Bool(true),
Boot: pulumi.Bool(true),
},
},
})
if err != nil {
return err
}
exampleInstanceTemplate = append(exampleInstanceTemplate, __res)
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
std = {
source = "pulumi/std"
}
}
}
data "gcp_compute_getmachinetypes" "example" {
filter = "memoryMb = 16384 AND guestCpus = 8"
zone = zone
}
resource "gcp_compute_instancetemplate" "example" {
for_each = toset(data.gcp_compute_getmachinetypes.example.machine_types[*].name)
machine_type = each.value
disks {
source_image = "debian-cloud/debian-11"
auto_delete = true
boot = true
}
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.ComputeFunctions;
import com.pulumi.gcp.compute.inputs.GetMachineTypesArgs;
import com.pulumi.gcp.compute.InstanceTemplate;
import com.pulumi.gcp.compute.InstanceTemplateArgs;
import com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;
import com.pulumi.codegen.internal.KeyedValue;
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) {
final var example = ComputeFunctions.getMachineTypes(GetMachineTypesArgs.builder()
.filter("memoryMb = 16384 AND guestCpus = 8")
.zone(zone)
.build());
for (var range : KeyedValue.of(com.pulumi.std.StdFunctions(com.pulumi.std.inputs.TosetArgs.builder()
.input(example.machineTypes().stream().map(element -> element.name()).collect(toList()))
.build()).result())) {
new InstanceTemplate("exampleInstanceTemplate-" + range.key(), InstanceTemplateArgs.builder()
.machineType(range.value())
.disks(InstanceTemplateDiskArgs.builder()
.sourceImage("debian-cloud/debian-11")
.autoDelete(true)
.boot(true)
.build())
.build());
}
}
}
resources:
exampleInstanceTemplate:
type: gcp:compute:InstanceTemplate
name: example
properties:
machineType: ${range.value}
disks:
- sourceImage: debian-cloud/debian-11
autoDelete: true
boot: true
options: {}
variables:
example:
fn::invoke:
function: gcp:compute:getMachineTypes
arguments:
filter: memoryMb = 16384 AND guestCpus = 8
zone: ${zone}
Machine Family Preference
Create an instance template, preferring c3 machine family if available in the provided zone, otherwise falling back to c2 and finally n2.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as std from "@pulumi/std";
const example = gcp.compute.getMachineTypes({
filter: "memoryMb = 16384 AND guestCpus = 4",
zone: zone,
});
const exampleInstanceTemplate = new gcp.compute.InstanceTemplate("example", {
machineType: output(Promise.all([example, std.startswith({
input: mt.name,
prefix: "c3-",
}), std.startswith({
input: mt.name,
prefix: "c2-",
}), std.startswith({
input: mt.name,
prefix: "n2-",
})]).then(([example, invoke, invoke1, invoke2]) => std.coalescelist({
input: [
.filter(mt => invoke.result).map(mt => (mt.name)),
.filter(mt => invoke1.result).map(mt => (mt.name)),
.filter(mt => invoke2.result).map(mt => (mt.name)),
],
})).then(invoke => invoke.result?.[0])).apply(x =>String(x)),
disks: [{
sourceImage: "debian-cloud/debian-11",
autoDelete: true,
boot: true,
}],
});
import pulumi
import pulumi_gcp as gcp
import pulumi_std as std
example = gcp.compute.get_machine_types(filter="memoryMb = 16384 AND guestCpus = 4",
zone=zone)
example_instance_template = gcp.compute.InstanceTemplate("example",
machine_type=output(std.coalescelist(input=[
[mt.name for mt in example.machine_types if std.startswith(input=mt.name,
prefix="c3-").result],
[mt.name for mt in example.machine_types if std.startswith(input=mt.name,
prefix="c2-").result],
[mt.name for mt in example.machine_types if std.startswith(input=mt.name,
prefix="n2-").result],
]).result[0]).apply(lambda x: str(x)),
disks=[{
"source_image": "debian-cloud/debian-11",
"auto_delete": True,
"boot": True,
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
var example = Gcp.Compute.GetMachineTypes.Invoke(new()
{
Filter = "memoryMb = 16384 AND guestCpus = 4",
Zone = zone,
});
var exampleInstanceTemplate = new Gcp.Compute.InstanceTemplate("example", new()
{
MachineType = Output.Create(Output.Tuple(example, Std.Startswith.Invoke(new()
{
Input = mt.Name,
Prefix = "c3-",
}), Std.Startswith.Invoke(new()
{
Input = mt.Name,
Prefix = "c2-",
}), Std.Startswith.Invoke(new()
{
Input = mt.Name,
Prefix = "n2-",
})).Apply(values =>
{
var example = values.Item1;
var invoke = values.Item2;
var invoke1 = values.Item3;
var invoke2 = values.Item4;
return Std.Coalescelist.Invoke(new()
{
Input = new[]
{
.Where(mt => invoke.Result).Select(mt =>
{
return mt.Name;
}).ToList(),
.Where(mt => invoke1.Result).Select(mt =>
{
return mt.Name;
}).ToList(),
.Where(mt => invoke2.Result).Select(mt =>
{
return mt.Name;
}).ToList(),
},
});
}).Apply(invoke => invoke.Result[0])).Apply(x => x.ToString(System.Globalization.CultureInfo.InvariantCulture)),
Disks = new[]
{
new Gcp.Compute.Inputs.InstanceTemplateDiskArgs
{
SourceImage = "debian-cloud/debian-11",
AutoDelete = true,
Boot = true,
},
},
});
});
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
std = {
source = "pulumi/std"
}
}
}
data "std_coalescelist" "invoke_0" {
input = [[for mt in data.gcp_compute_getmachinetypes.example.machine_types : mt.name if startswith(mt.name, "c3-")], [for mt in data.gcp_compute_getmachinetypes.example.machine_types : mt.name if startswith(mt.name, "c2-")], [for mt in data.gcp_compute_getmachinetypes.example.machine_types : mt.name if startswith(mt.name, "n2-")]]
}
data "gcp_compute_getmachinetypes" "example" {
filter = "memoryMb = 16384 AND guestCpus = 4"
zone = zone
}
resource "gcp_compute_instancetemplate" "example" {
machine_type = data.std_coalescelist.invoke_0.result[0]
disks {
source_image = "debian-cloud/debian-11"
auto_delete = true
boot = true
}
}
args Arguments passed to this invoke. Arguments for getMachineTypes.
options Invoke options controlling this call.
Implementation
Future<GetMachineTypesResult> getMachineTypes(
GetMachineTypesArgs args, {
pulumi.InvokeOptions? options,
}) async {
final deployment = pulumi.Deployment.instance;
final result = await deployment.invoke<Map<String, dynamic>>(
'gcp:compute/getMachineTypes:getMachineTypes',
args.toMap(),
options: pulumi.toDeploymentInvokeOptions(options),
);
return GetMachineTypesResult.fromMap(result);
}