@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
240 lines • 10.7 kB
JavaScript
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.RegionInstanceGroupManager = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("../utilities");
/**
* The Google Compute Engine Regional Instance Group Manager API creates and manages pools
* of homogeneous Compute Engine virtual machine instances from a common instance
* template.
*
* To get more information about regionInstanceGroupManagers, see:
*
* * [API documentation](https://cloud.google.com/compute/docs/reference/latest/regionInstanceGroupManagers)
* * How-to Guides
* * [Regional Instance Groups Guide](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups)
*
* > **Note:** Use [gcp.compute.InstanceGroupManager](https://www.terraform.io/docs/providers/google/r/compute_instance_group_manager.html) to create a zonal instance group manager.
*
* ## Example Usage
*
* ### With Top Level Instance Template (`Google` Provider)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const autohealing = new gcp.compute.HealthCheck("autohealing", {
* name: "autohealing-health-check",
* checkIntervalSec: 5,
* timeoutSec: 5,
* healthyThreshold: 2,
* unhealthyThreshold: 10,
* httpHealthCheck: {
* requestPath: "/healthz",
* port: 8080,
* },
* });
* const appserver = new gcp.compute.RegionInstanceGroupManager("appserver", {
* name: "appserver-igm",
* baseInstanceName: "app",
* region: "us-central1",
* distributionPolicyZones: [
* "us-central1-a",
* "us-central1-f",
* ],
* versions: [{
* instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,
* }],
* allInstancesConfig: {
* metadata: {
* metadata_key: "metadata_value",
* },
* labels: {
* label_key: "label_value",
* },
* },
* targetPools: [appserverGoogleComputeTargetPool.id],
* targetSize: 2,
* namedPorts: [{
* name: "custom",
* port: 8888,
* }],
* autoHealingPolicies: {
* healthCheck: autohealing.id,
* initialDelaySec: 300,
* },
* });
* ```
*
* ### With Multiple Versions
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const appserver = new gcp.compute.RegionInstanceGroupManager("appserver", {
* name: "appserver-igm",
* baseInstanceName: "app",
* region: "us-central1",
* targetSize: 5,
* versions: [
* {
* instanceTemplate: appserverGoogleComputeInstanceTemplate.selfLinkUnique,
* },
* {
* instanceTemplate: appserver_canary.selfLinkUnique,
* targetSize: {
* fixed: 1,
* },
* },
* ],
* });
* ```
*
* ### With Standby Policy (`Google` Provider)
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const igm_sr = new gcp.compute.RegionInstanceGroupManager("igm-sr", {
* name: "tf-sr-igm",
* baseInstanceName: "tf-sr-igm-instance",
* region: "us-central1",
* targetSize: 5,
* versions: [{
* instanceTemplate: sr_igm.selfLink,
* name: "primary",
* }],
* standbyPolicy: {
* initialDelaySec: 50,
* mode: "SCALE_OUT_POOL",
* },
* targetSuspendedSize: 1,
* targetStoppedSize: 1,
* });
* ```
*
* ## Import
*
* Instance group managers can be imported using any of these accepted formats:
*
* * `{{name}}`
*
* When using the `pulumi import` command, instance group managers can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager default {{name}}
* ```
*/
class RegionInstanceGroupManager extends pulumi.CustomResource {
/**
* Get an existing RegionInstanceGroupManager resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name, id, state, opts) {
return new RegionInstanceGroupManager(name, state, { ...opts, id: id });
}
/**
* Returns true if the given object is an instance of RegionInstanceGroupManager. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === RegionInstanceGroupManager.__pulumiType;
}
constructor(name, argsOrState, opts) {
let resourceInputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState;
resourceInputs["allInstancesConfig"] = state?.allInstancesConfig;
resourceInputs["autoHealingPolicies"] = state?.autoHealingPolicies;
resourceInputs["baseInstanceName"] = state?.baseInstanceName;
resourceInputs["creationTimestamp"] = state?.creationTimestamp;
resourceInputs["description"] = state?.description;
resourceInputs["distributionPolicyTargetShape"] = state?.distributionPolicyTargetShape;
resourceInputs["distributionPolicyZones"] = state?.distributionPolicyZones;
resourceInputs["fingerprint"] = state?.fingerprint;
resourceInputs["instanceFlexibilityPolicy"] = state?.instanceFlexibilityPolicy;
resourceInputs["instanceGroup"] = state?.instanceGroup;
resourceInputs["instanceGroupManagerId"] = state?.instanceGroupManagerId;
resourceInputs["instanceLifecyclePolicy"] = state?.instanceLifecyclePolicy;
resourceInputs["listManagedInstancesResults"] = state?.listManagedInstancesResults;
resourceInputs["name"] = state?.name;
resourceInputs["namedPorts"] = state?.namedPorts;
resourceInputs["params"] = state?.params;
resourceInputs["project"] = state?.project;
resourceInputs["region"] = state?.region;
resourceInputs["selfLink"] = state?.selfLink;
resourceInputs["standbyPolicy"] = state?.standbyPolicy;
resourceInputs["statefulDisks"] = state?.statefulDisks;
resourceInputs["statefulExternalIps"] = state?.statefulExternalIps;
resourceInputs["statefulInternalIps"] = state?.statefulInternalIps;
resourceInputs["statuses"] = state?.statuses;
resourceInputs["targetPools"] = state?.targetPools;
resourceInputs["targetSize"] = state?.targetSize;
resourceInputs["targetStoppedSize"] = state?.targetStoppedSize;
resourceInputs["targetSuspendedSize"] = state?.targetSuspendedSize;
resourceInputs["updatePolicy"] = state?.updatePolicy;
resourceInputs["versions"] = state?.versions;
resourceInputs["waitForInstances"] = state?.waitForInstances;
resourceInputs["waitForInstancesStatus"] = state?.waitForInstancesStatus;
}
else {
const args = argsOrState;
if (args?.baseInstanceName === undefined && !opts.urn) {
throw new Error("Missing required property 'baseInstanceName'");
}
if (args?.versions === undefined && !opts.urn) {
throw new Error("Missing required property 'versions'");
}
resourceInputs["allInstancesConfig"] = args?.allInstancesConfig;
resourceInputs["autoHealingPolicies"] = args?.autoHealingPolicies;
resourceInputs["baseInstanceName"] = args?.baseInstanceName;
resourceInputs["description"] = args?.description;
resourceInputs["distributionPolicyTargetShape"] = args?.distributionPolicyTargetShape;
resourceInputs["distributionPolicyZones"] = args?.distributionPolicyZones;
resourceInputs["instanceFlexibilityPolicy"] = args?.instanceFlexibilityPolicy;
resourceInputs["instanceLifecyclePolicy"] = args?.instanceLifecyclePolicy;
resourceInputs["listManagedInstancesResults"] = args?.listManagedInstancesResults;
resourceInputs["name"] = args?.name;
resourceInputs["namedPorts"] = args?.namedPorts;
resourceInputs["params"] = args?.params;
resourceInputs["project"] = args?.project;
resourceInputs["region"] = args?.region;
resourceInputs["standbyPolicy"] = args?.standbyPolicy;
resourceInputs["statefulDisks"] = args?.statefulDisks;
resourceInputs["statefulExternalIps"] = args?.statefulExternalIps;
resourceInputs["statefulInternalIps"] = args?.statefulInternalIps;
resourceInputs["targetPools"] = args?.targetPools;
resourceInputs["targetSize"] = args?.targetSize;
resourceInputs["targetStoppedSize"] = args?.targetStoppedSize;
resourceInputs["targetSuspendedSize"] = args?.targetSuspendedSize;
resourceInputs["updatePolicy"] = args?.updatePolicy;
resourceInputs["versions"] = args?.versions;
resourceInputs["waitForInstances"] = args?.waitForInstances;
resourceInputs["waitForInstancesStatus"] = args?.waitForInstancesStatus;
resourceInputs["creationTimestamp"] = undefined /*out*/;
resourceInputs["fingerprint"] = undefined /*out*/;
resourceInputs["instanceGroup"] = undefined /*out*/;
resourceInputs["instanceGroupManagerId"] = undefined /*out*/;
resourceInputs["selfLink"] = undefined /*out*/;
resourceInputs["statuses"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(RegionInstanceGroupManager.__pulumiType, name, resourceInputs, opts);
}
}
exports.RegionInstanceGroupManager = RegionInstanceGroupManager;
/** @internal */
RegionInstanceGroupManager.__pulumiType = 'gcp:compute/regionInstanceGroupManager:RegionInstanceGroupManager';
//# sourceMappingURL=regionInstanceGroupManager.js.map
;