import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * 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}}
 * ```
 */
export declare 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: string, id: pulumi.Input<pulumi.ID>, state?: RegionInstanceGroupManagerState, opts?: pulumi.CustomResourceOptions): RegionInstanceGroupManager;
    /**
     * 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: any): obj is RegionInstanceGroupManager;
    /**
     * Properties to set on all instances in the group. After setting
     * allInstancesConfig on the group, you must update the group's instances to
     * apply the configuration.
     */
    readonly allInstancesConfig: pulumi.Output<outputs.compute.RegionInstanceGroupManagerAllInstancesConfig | undefined>;
    /**
     * The autohealing policies for this managed instance
     * group. You can specify only one value. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#monitoring_groups).
     */
    readonly autoHealingPolicies: pulumi.Output<outputs.compute.RegionInstanceGroupManagerAutoHealingPolicies | undefined>;
    /**
     * The base instance name to use for
     * instances in this group. The value must be a valid
     * [RFC1035](https://www.ietf.org/rfc/rfc1035.txt) name. Supported characters
     * are lowercase letters, numbers, and hyphens (-). Instances are named by
     * appending a hyphen and a random four-character string to the base instance
     * name.
     */
    readonly baseInstanceName: pulumi.Output<string>;
    /**
     * Creation timestamp in RFC3339 text format.
     */
    readonly creationTimestamp: pulumi.Output<string>;
    /**
     * An optional textual description of the instance
     * group manager.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The shape to which the group converges either proactively or on resize events (depending on the value set in update_policy.0.instance_redistribution_type). For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/regional-mig-distribution-shape).
     */
    readonly distributionPolicyTargetShape: pulumi.Output<string>;
    /**
     * The distribution policy for this managed instance
     * group. You can specify one or more values. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups#selectingzones).
     */
    readonly distributionPolicyZones: pulumi.Output<string[]>;
    /**
     * The fingerprint of the instance group manager.
     */
    readonly fingerprint: pulumi.Output<string>;
    /**
     * The flexibility policy for managed instance group. Instance flexibility allows managed instance group to create VMs from multiple types of machines. Instance flexibility configuration on managed instance group overrides instance template configuration. Structure is documented below.
     * - - -
     */
    readonly instanceFlexibilityPolicy: pulumi.Output<outputs.compute.RegionInstanceGroupManagerInstanceFlexibilityPolicy | undefined>;
    /**
     * The full URL of the instance group created by the manager.
     */
    readonly instanceGroup: pulumi.Output<string>;
    /**
     * The unique identifier number for the resource. This identifier is defined by the server.
     */
    readonly instanceGroupManagerId: pulumi.Output<number>;
    /**
     * The instance lifecycle policy for this managed instance group.
     */
    readonly instanceLifecyclePolicy: pulumi.Output<outputs.compute.RegionInstanceGroupManagerInstanceLifecyclePolicy>;
    /**
     * Pagination behavior of the `listManagedInstances` API
     * method for this managed instance group. Valid values are: `PAGELESS`, `PAGINATED`.
     * If `PAGELESS` (default), Pagination is disabled for the group's `listManagedInstances` API method.
     * `maxResults` and `pageToken` query parameters are ignored and all instances are returned in a single
     * response. If `PAGINATED`, pagination is enabled, `maxResults` and `pageToken` query parameters are
     * respected.
     */
    readonly listManagedInstancesResults: pulumi.Output<string | undefined>;
    /**
     * The name of the instance group manager. Must be 1-63
     * characters long and comply with
     * [RFC1035](https://www.ietf.org/rfc/rfc1035.txt). Supported characters
     * include lowercase letters, numbers, and hyphens.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The named port configuration. See the section below
     * for details on configuration.
     */
    readonly namedPorts: pulumi.Output<outputs.compute.RegionInstanceGroupManagerNamedPort[] | undefined>;
    /**
     * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).
     */
    readonly params: pulumi.Output<outputs.compute.RegionInstanceGroupManagerParams | undefined>;
    /**
     * The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The region where the managed instance group resides. If not provided, the provider region is used.
     *
     * - - -
     */
    readonly region: pulumi.Output<string>;
    /**
     * The URL of the created resource.
     */
    readonly selfLink: pulumi.Output<string>;
    /**
     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
     */
    readonly standbyPolicy: pulumi.Output<outputs.compute.RegionInstanceGroupManagerStandbyPolicy>;
    /**
     * Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`.
     */
    readonly statefulDisks: pulumi.Output<outputs.compute.RegionInstanceGroupManagerStatefulDisk[] | undefined>;
    /**
     * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.
     */
    readonly statefulExternalIps: pulumi.Output<outputs.compute.RegionInstanceGroupManagerStatefulExternalIp[] | undefined>;
    /**
     * Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.
     */
    readonly statefulInternalIps: pulumi.Output<outputs.compute.RegionInstanceGroupManagerStatefulInternalIp[] | undefined>;
    /**
     * The status of this managed instance group.
     */
    readonly statuses: pulumi.Output<outputs.compute.RegionInstanceGroupManagerStatus[]>;
    /**
     * The full URL of all target pools to which new
     * instances in the group are added. Updating the target pools attribute does
     * not affect existing instances.
     */
    readonly targetPools: pulumi.Output<string[] | undefined>;
    /**
     * The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0.
     */
    readonly targetSize: pulumi.Output<number>;
    /**
     * The target number of stopped instances for this managed instance group.
     */
    readonly targetStoppedSize: pulumi.Output<number>;
    /**
     * The target number of suspended instances for this managed instance group.
     */
    readonly targetSuspendedSize: pulumi.Output<number>;
    /**
     * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
     */
    readonly updatePolicy: pulumi.Output<outputs.compute.RegionInstanceGroupManagerUpdatePolicy>;
    /**
     * Application versions managed by this instance group. Each
     * version deals with a specific instance template, allowing canary release scenarios.
     * Structure is documented below.
     */
    readonly versions: pulumi.Output<outputs.compute.RegionInstanceGroupManagerVersion[]>;
    /**
     * Whether to wait for all instances to be created/updated before
     * returning. Note that if this is set to true and the operation does not succeed, the provider will
     * continue trying until it times out.
     */
    readonly waitForInstances: pulumi.Output<boolean | undefined>;
    /**
     * When used with `waitForInstances` it specifies the status to wait for.
     * When `STABLE` is specified this resource will wait until the instances are stable before returning. When `UPDATED` is
     * set, it will wait for the version target to be reached and any per instance configs to be effective as well as all
     * instances to be stable before returning. The possible values are `STABLE` and `UPDATED`
     */
    readonly waitForInstancesStatus: pulumi.Output<string | undefined>;
    /**
     * Create a RegionInstanceGroupManager resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: RegionInstanceGroupManagerArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering RegionInstanceGroupManager resources.
 */
export interface RegionInstanceGroupManagerState {
    /**
     * Properties to set on all instances in the group. After setting
     * allInstancesConfig on the group, you must update the group's instances to
     * apply the configuration.
     */
    allInstancesConfig?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerAllInstancesConfig>;
    /**
     * The autohealing policies for this managed instance
     * group. You can specify only one value. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#monitoring_groups).
     */
    autoHealingPolicies?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerAutoHealingPolicies>;
    /**
     * The base instance name to use for
     * instances in this group. The value must be a valid
     * [RFC1035](https://www.ietf.org/rfc/rfc1035.txt) name. Supported characters
     * are lowercase letters, numbers, and hyphens (-). Instances are named by
     * appending a hyphen and a random four-character string to the base instance
     * name.
     */
    baseInstanceName?: pulumi.Input<string>;
    /**
     * Creation timestamp in RFC3339 text format.
     */
    creationTimestamp?: pulumi.Input<string>;
    /**
     * An optional textual description of the instance
     * group manager.
     */
    description?: pulumi.Input<string>;
    /**
     * The shape to which the group converges either proactively or on resize events (depending on the value set in update_policy.0.instance_redistribution_type). For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/regional-mig-distribution-shape).
     */
    distributionPolicyTargetShape?: pulumi.Input<string>;
    /**
     * The distribution policy for this managed instance
     * group. You can specify one or more values. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups#selectingzones).
     */
    distributionPolicyZones?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The fingerprint of the instance group manager.
     */
    fingerprint?: pulumi.Input<string>;
    /**
     * The flexibility policy for managed instance group. Instance flexibility allows managed instance group to create VMs from multiple types of machines. Instance flexibility configuration on managed instance group overrides instance template configuration. Structure is documented below.
     * - - -
     */
    instanceFlexibilityPolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerInstanceFlexibilityPolicy>;
    /**
     * The full URL of the instance group created by the manager.
     */
    instanceGroup?: pulumi.Input<string>;
    /**
     * The unique identifier number for the resource. This identifier is defined by the server.
     */
    instanceGroupManagerId?: pulumi.Input<number>;
    /**
     * The instance lifecycle policy for this managed instance group.
     */
    instanceLifecyclePolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerInstanceLifecyclePolicy>;
    /**
     * Pagination behavior of the `listManagedInstances` API
     * method for this managed instance group. Valid values are: `PAGELESS`, `PAGINATED`.
     * If `PAGELESS` (default), Pagination is disabled for the group's `listManagedInstances` API method.
     * `maxResults` and `pageToken` query parameters are ignored and all instances are returned in a single
     * response. If `PAGINATED`, pagination is enabled, `maxResults` and `pageToken` query parameters are
     * respected.
     */
    listManagedInstancesResults?: pulumi.Input<string>;
    /**
     * The name of the instance group manager. Must be 1-63
     * characters long and comply with
     * [RFC1035](https://www.ietf.org/rfc/rfc1035.txt). Supported characters
     * include lowercase letters, numbers, and hyphens.
     */
    name?: pulumi.Input<string>;
    /**
     * The named port configuration. See the section below
     * for details on configuration.
     */
    namedPorts?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerNamedPort>[]>;
    /**
     * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).
     */
    params?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerParams>;
    /**
     * The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * The region where the managed instance group resides. If not provided, the provider region is used.
     *
     * - - -
     */
    region?: pulumi.Input<string>;
    /**
     * The URL of the created resource.
     */
    selfLink?: pulumi.Input<string>;
    /**
     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
     */
    standbyPolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerStandbyPolicy>;
    /**
     * Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`.
     */
    statefulDisks?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatefulDisk>[]>;
    /**
     * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.
     */
    statefulExternalIps?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatefulExternalIp>[]>;
    /**
     * Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.
     */
    statefulInternalIps?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatefulInternalIp>[]>;
    /**
     * The status of this managed instance group.
     */
    statuses?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatus>[]>;
    /**
     * The full URL of all target pools to which new
     * instances in the group are added. Updating the target pools attribute does
     * not affect existing instances.
     */
    targetPools?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0.
     */
    targetSize?: pulumi.Input<number>;
    /**
     * The target number of stopped instances for this managed instance group.
     */
    targetStoppedSize?: pulumi.Input<number>;
    /**
     * The target number of suspended instances for this managed instance group.
     */
    targetSuspendedSize?: pulumi.Input<number>;
    /**
     * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
     */
    updatePolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerUpdatePolicy>;
    /**
     * Application versions managed by this instance group. Each
     * version deals with a specific instance template, allowing canary release scenarios.
     * Structure is documented below.
     */
    versions?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerVersion>[]>;
    /**
     * Whether to wait for all instances to be created/updated before
     * returning. Note that if this is set to true and the operation does not succeed, the provider will
     * continue trying until it times out.
     */
    waitForInstances?: pulumi.Input<boolean>;
    /**
     * When used with `waitForInstances` it specifies the status to wait for.
     * When `STABLE` is specified this resource will wait until the instances are stable before returning. When `UPDATED` is
     * set, it will wait for the version target to be reached and any per instance configs to be effective as well as all
     * instances to be stable before returning. The possible values are `STABLE` and `UPDATED`
     */
    waitForInstancesStatus?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a RegionInstanceGroupManager resource.
 */
export interface RegionInstanceGroupManagerArgs {
    /**
     * Properties to set on all instances in the group. After setting
     * allInstancesConfig on the group, you must update the group's instances to
     * apply the configuration.
     */
    allInstancesConfig?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerAllInstancesConfig>;
    /**
     * The autohealing policies for this managed instance
     * group. You can specify only one value. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances#monitoring_groups).
     */
    autoHealingPolicies?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerAutoHealingPolicies>;
    /**
     * The base instance name to use for
     * instances in this group. The value must be a valid
     * [RFC1035](https://www.ietf.org/rfc/rfc1035.txt) name. Supported characters
     * are lowercase letters, numbers, and hyphens (-). Instances are named by
     * appending a hyphen and a random four-character string to the base instance
     * name.
     */
    baseInstanceName: pulumi.Input<string>;
    /**
     * An optional textual description of the instance
     * group manager.
     */
    description?: pulumi.Input<string>;
    /**
     * The shape to which the group converges either proactively or on resize events (depending on the value set in update_policy.0.instance_redistribution_type). For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/regional-mig-distribution-shape).
     */
    distributionPolicyTargetShape?: pulumi.Input<string>;
    /**
     * The distribution policy for this managed instance
     * group. You can specify one or more values. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/distributing-instances-with-regional-instance-groups#selectingzones).
     */
    distributionPolicyZones?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The flexibility policy for managed instance group. Instance flexibility allows managed instance group to create VMs from multiple types of machines. Instance flexibility configuration on managed instance group overrides instance template configuration. Structure is documented below.
     * - - -
     */
    instanceFlexibilityPolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerInstanceFlexibilityPolicy>;
    /**
     * The instance lifecycle policy for this managed instance group.
     */
    instanceLifecyclePolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerInstanceLifecyclePolicy>;
    /**
     * Pagination behavior of the `listManagedInstances` API
     * method for this managed instance group. Valid values are: `PAGELESS`, `PAGINATED`.
     * If `PAGELESS` (default), Pagination is disabled for the group's `listManagedInstances` API method.
     * `maxResults` and `pageToken` query parameters are ignored and all instances are returned in a single
     * response. If `PAGINATED`, pagination is enabled, `maxResults` and `pageToken` query parameters are
     * respected.
     */
    listManagedInstancesResults?: pulumi.Input<string>;
    /**
     * The name of the instance group manager. Must be 1-63
     * characters long and comply with
     * [RFC1035](https://www.ietf.org/rfc/rfc1035.txt). Supported characters
     * include lowercase letters, numbers, and hyphens.
     */
    name?: pulumi.Input<string>;
    /**
     * The named port configuration. See the section below
     * for details on configuration.
     */
    namedPorts?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerNamedPort>[]>;
    /**
     * Input only additional params for instance group manager creation. Structure is documented below. For more information, see [API](https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers/insert).
     */
    params?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerParams>;
    /**
     * The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * The region where the managed instance group resides. If not provided, the provider region is used.
     *
     * - - -
     */
    region?: pulumi.Input<string>;
    /**
     * The standby policy for stopped and suspended instances. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/suspended-and-stopped-vms-in-mig).
     */
    standbyPolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerStandbyPolicy>;
    /**
     * Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-disks-in-migs). Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the `updatePolicy`.
     */
    statefulDisks?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatefulDisk>[]>;
    /**
     * External network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.
     */
    statefulExternalIps?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatefulExternalIp>[]>;
    /**
     * Internal network IPs assigned to the instances that will be preserved on instance delete, update, etc. This map is keyed with the network interface name. Structure is documented below.
     */
    statefulInternalIps?: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerStatefulInternalIp>[]>;
    /**
     * The full URL of all target pools to which new
     * instances in the group are added. Updating the target pools attribute does
     * not affect existing instances.
     */
    targetPools?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0.
     */
    targetSize?: pulumi.Input<number>;
    /**
     * The target number of stopped instances for this managed instance group.
     */
    targetStoppedSize?: pulumi.Input<number>;
    /**
     * The target number of suspended instances for this managed instance group.
     */
    targetSuspendedSize?: pulumi.Input<number>;
    /**
     * The update policy for this managed instance group. Structure is documented below. For more information, see the [official documentation](https://cloud.google.com/compute/docs/instance-groups/updating-managed-instance-groups) and [API](https://cloud.google.com/compute/docs/reference/rest/beta/regionInstanceGroupManagers/patch)
     */
    updatePolicy?: pulumi.Input<inputs.compute.RegionInstanceGroupManagerUpdatePolicy>;
    /**
     * Application versions managed by this instance group. Each
     * version deals with a specific instance template, allowing canary release scenarios.
     * Structure is documented below.
     */
    versions: pulumi.Input<pulumi.Input<inputs.compute.RegionInstanceGroupManagerVersion>[]>;
    /**
     * Whether to wait for all instances to be created/updated before
     * returning. Note that if this is set to true and the operation does not succeed, the provider will
     * continue trying until it times out.
     */
    waitForInstances?: pulumi.Input<boolean>;
    /**
     * When used with `waitForInstances` it specifies the status to wait for.
     * When `STABLE` is specified this resource will wait until the instances are stable before returning. When `UPDATED` is
     * set, it will wait for the version target to be reached and any per instance configs to be effective as well as all
     * instances to be stable before returning. The possible values are `STABLE` and `UPDATED`
     */
    waitForInstancesStatus?: pulumi.Input<string>;
}
