UNPKG

@pulumi/gcp

Version:

A Pulumi package for creating and managing Google Cloud Platform resources.

209 lines • 8.13 kB
"use strict"; // *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMachineTypesOutput = exports.getMachineTypes = void 0; const pulumi = __importStar(require("@pulumi/pulumi")); const utilities = __importStar(require("../utilities")); /** * Provides access to available Google Compute machine types in a zone for a given project. * See more about [machine type availability](https://cloud.google.com/compute/docs/regions-zones#available) in the upstream docs. * * To get more information about machine types, see: * * * [API Documentation](https://cloud.google.com/compute/docs/reference/rest/v1/machineTypes/list) * * [Comparison Guide](https://cloud.google.com/compute/docs/machine-resource) * * ## 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. * * ```typescript * 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, * }], * })); * } * } * ``` * * ### 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`. * * ```typescript * 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-", * }), example, std.startswith({ * input: mt.name, * prefix: "c2-", * }), example, std.startswith({ * input: mt.name, * prefix: "n2-", * })]).then(([example, invoke, example1, invoke1, example2, 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, * }], * }); * ``` */ function getMachineTypes(args, opts) { args = args || {}; opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invoke("gcp:compute/getMachineTypes:getMachineTypes", { "filter": args.filter, "project": args.project, "zone": args.zone, }, opts); } exports.getMachineTypes = getMachineTypes; /** * Provides access to available Google Compute machine types in a zone for a given project. * See more about [machine type availability](https://cloud.google.com/compute/docs/regions-zones#available) in the upstream docs. * * To get more information about machine types, see: * * * [API Documentation](https://cloud.google.com/compute/docs/reference/rest/v1/machineTypes/list) * * [Comparison Guide](https://cloud.google.com/compute/docs/machine-resource) * * ## 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. * * ```typescript * 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, * }], * })); * } * } * ``` * * ### 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`. * * ```typescript * 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-", * }), example, std.startswith({ * input: mt.name, * prefix: "c2-", * }), example, std.startswith({ * input: mt.name, * prefix: "n2-", * })]).then(([example, invoke, example1, invoke1, example2, 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, * }], * }); * ``` */ function getMachineTypesOutput(args, opts) { args = args || {}; opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {}); return pulumi.runtime.invokeOutput("gcp:compute/getMachineTypes:getMachineTypes", { "filter": args.filter, "project": args.project, "zone": args.zone, }, opts); } exports.getMachineTypesOutput = getMachineTypesOutput; //# sourceMappingURL=getMachineTypes.js.map