import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * An isolated set of Cloud Spanner resources on which databases can be * hosted. * * To get more information about Instance, see: * * * [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances) * * How-to Guides * * [Official Documentation](https://cloud.google.com/spanner/) * * ## Example Usage * * ### Spanner Instance Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const example = new gcp.spanner.Instance("example", { * config: "regional-us-central1", * displayName: "Test Spanner Instance", * numNodes: 2, * edition: "STANDARD", * defaultBackupScheduleType: "AUTOMATIC", * labels: { * foo: "bar", * }, * }); * ``` * ### Spanner Instance Processing Units * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const example = new gcp.spanner.Instance("example", { * config: "regional-us-central1", * displayName: "Test Spanner Instance", * processingUnits: 200, * labels: { * foo: "bar", * }, * }); * ``` * ### Spanner Instance Multi Regional * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const example = new gcp.spanner.Instance("example", { * config: "nam-eur-asia1", * displayName: "Multi Regional Instance", * numNodes: 2, * labels: { * foo: "bar", * }, * }); * ``` * * ## Import * * Instance can be imported using any of these accepted formats: * * * `projects/{{project}}/instances/{{name}}` * * `{{project}}/{{name}}` * * `{{name}}` * * When using the `pulumi import` command, Instance can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:spanner/instance:Instance default projects/{{project}}/instances/{{name}} * $ pulumi import gcp:spanner/instance:Instance default {{project}}/{{name}} * $ pulumi import gcp:spanner/instance:Instance default {{name}} * ``` */ export declare class Instance extends pulumi.CustomResource { /** * Get an existing Instance 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, state?: InstanceState, opts?: pulumi.CustomResourceOptions): Instance; /** * Returns true if the given object is an instance of Instance. 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 Instance; /** * The autoscaling configuration. Autoscaling is enabled if this field is set. * Exactly one of either num_nodes, processingUnits or autoscalingConfig must be * present in terraform except when instanceType = FREE_INSTANCE. * When autoscaling is enabled, numNodes and processingUnits are treated as, * OUTPUT_ONLY fields and reflect the current compute capacity allocated to * the instance. * Structure is documented below. */ readonly autoscalingConfig: pulumi.Output; /** * The name of the instance's configuration (similar but not * quite the same as a region) which defines the geographic placement and * replication of your databases in this instance. It determines where your data * is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc. * In order to obtain a valid list please consult the * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances). */ readonly config: pulumi.Output; /** * Controls the default backup behavior for new databases within the instance. * Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances. * if unset or NONE, no default backup schedule will be created for new databases within the instance. * Possible values are: `NONE`, `AUTOMATIC`. */ readonly defaultBackupScheduleType: pulumi.Output; /** * The descriptive name for this instance as it appears in UIs. Must be * unique per project and between 4 and 30 characters in length. */ readonly displayName: pulumi.Output; /** * The edition selected for this instance. Different editions provide different capabilities at different price points. * Possible values are: `EDITION_UNSPECIFIED`, `STANDARD`, `ENTERPRISE`, `ENTERPRISE_PLUS`. */ readonly edition: pulumi.Output; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ readonly effectiveLabels: pulumi.Output<{ [key: string]: string; }>; /** * When deleting a spanner instance, this boolean option will delete all backups of this instance. * This must be set to true if you created a backup manually in the console. */ readonly forceDestroy: pulumi.Output; /** * The type of this instance. The type can be used to distinguish product variants, that can affect aspects like: * usage restrictions, quotas and billing. Currently this is used to distinguish FREE_INSTANCE vs PROVISIONED instances. * When configured as FREE_INSTANCE, the field `edition` should not be configured. * Possible values are: `PROVISIONED`, `FREE_INSTANCE`. */ readonly instanceType: pulumi.Output; /** * An object containing a list of "key": value pairs. * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. * * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ readonly labels: pulumi.Output<{ [key: string]: string; } | undefined>; /** * A unique identifier for the instance, which cannot be changed after * the instance is created. The name must be between 6 and 30 characters * in length. * If not provided, a random string starting with `tf-` will be selected. */ readonly name: pulumi.Output; /** * The number of nodes allocated to this instance. Exactly one of either num_nodes, processingUnits or * autoscalingConfig must be present in terraform except when instanceType = FREE_INSTANCE. */ readonly numNodes: pulumi.Output; /** * The number of processing units allocated to this instance. Exactly one of either num_nodes, * processingUnits or autoscalingConfig must be present in terraform except when instanceType = FREE_INSTANCE. */ readonly processingUnits: pulumi.Output; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ readonly project: pulumi.Output; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ readonly pulumiLabels: pulumi.Output<{ [key: string]: string; }>; /** * Instance status: `CREATING` or `READY`. */ readonly state: pulumi.Output; /** * Create a Instance 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: InstanceArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Instance resources. */ export interface InstanceState { /** * The autoscaling configuration. Autoscaling is enabled if this field is set. * Exactly one of either num_nodes, processingUnits or autoscalingConfig must be * present in terraform except when instanceType = FREE_INSTANCE. * When autoscaling is enabled, numNodes and processingUnits are treated as, * OUTPUT_ONLY fields and reflect the current compute capacity allocated to * the instance. * Structure is documented below. */ autoscalingConfig?: pulumi.Input; /** * The name of the instance's configuration (similar but not * quite the same as a region) which defines the geographic placement and * replication of your databases in this instance. It determines where your data * is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc. * In order to obtain a valid list please consult the * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances). */ config?: pulumi.Input; /** * Controls the default backup behavior for new databases within the instance. * Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances. * if unset or NONE, no default backup schedule will be created for new databases within the instance. * Possible values are: `NONE`, `AUTOMATIC`. */ defaultBackupScheduleType?: pulumi.Input; /** * The descriptive name for this instance as it appears in UIs. Must be * unique per project and between 4 and 30 characters in length. */ displayName?: pulumi.Input; /** * The edition selected for this instance. Different editions provide different capabilities at different price points. * Possible values are: `EDITION_UNSPECIFIED`, `STANDARD`, `ENTERPRISE`, `ENTERPRISE_PLUS`. */ edition?: pulumi.Input; /** * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services. */ effectiveLabels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * When deleting a spanner instance, this boolean option will delete all backups of this instance. * This must be set to true if you created a backup manually in the console. */ forceDestroy?: pulumi.Input; /** * The type of this instance. The type can be used to distinguish product variants, that can affect aspects like: * usage restrictions, quotas and billing. Currently this is used to distinguish FREE_INSTANCE vs PROVISIONED instances. * When configured as FREE_INSTANCE, the field `edition` should not be configured. * Possible values are: `PROVISIONED`, `FREE_INSTANCE`. */ instanceType?: pulumi.Input; /** * An object containing a list of "key": value pairs. * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. * * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * A unique identifier for the instance, which cannot be changed after * the instance is created. The name must be between 6 and 30 characters * in length. * If not provided, a random string starting with `tf-` will be selected. */ name?: pulumi.Input; /** * The number of nodes allocated to this instance. Exactly one of either num_nodes, processingUnits or * autoscalingConfig must be present in terraform except when instanceType = FREE_INSTANCE. */ numNodes?: pulumi.Input; /** * The number of processing units allocated to this instance. Exactly one of either num_nodes, * processingUnits or autoscalingConfig must be present in terraform except when instanceType = FREE_INSTANCE. */ processingUnits?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Instance status: `CREATING` or `READY`. */ state?: pulumi.Input; } /** * The set of arguments for constructing a Instance resource. */ export interface InstanceArgs { /** * The autoscaling configuration. Autoscaling is enabled if this field is set. * Exactly one of either num_nodes, processingUnits or autoscalingConfig must be * present in terraform except when instanceType = FREE_INSTANCE. * When autoscaling is enabled, numNodes and processingUnits are treated as, * OUTPUT_ONLY fields and reflect the current compute capacity allocated to * the instance. * Structure is documented below. */ autoscalingConfig?: pulumi.Input; /** * The name of the instance's configuration (similar but not * quite the same as a region) which defines the geographic placement and * replication of your databases in this instance. It determines where your data * is stored. Values are typically of the form `regional-europe-west1` , `us-central` etc. * In order to obtain a valid list please consult the * [Configuration section of the docs](https://cloud.google.com/spanner/docs/instances). */ config: pulumi.Input; /** * Controls the default backup behavior for new databases within the instance. * Note that `AUTOMATIC` is not permitted for free instances, as backups and backup schedules are not allowed for free instances. * if unset or NONE, no default backup schedule will be created for new databases within the instance. * Possible values are: `NONE`, `AUTOMATIC`. */ defaultBackupScheduleType?: pulumi.Input; /** * The descriptive name for this instance as it appears in UIs. Must be * unique per project and between 4 and 30 characters in length. */ displayName: pulumi.Input; /** * The edition selected for this instance. Different editions provide different capabilities at different price points. * Possible values are: `EDITION_UNSPECIFIED`, `STANDARD`, `ENTERPRISE`, `ENTERPRISE_PLUS`. */ edition?: pulumi.Input; /** * When deleting a spanner instance, this boolean option will delete all backups of this instance. * This must be set to true if you created a backup manually in the console. */ forceDestroy?: pulumi.Input; /** * The type of this instance. The type can be used to distinguish product variants, that can affect aspects like: * usage restrictions, quotas and billing. Currently this is used to distinguish FREE_INSTANCE vs PROVISIONED instances. * When configured as FREE_INSTANCE, the field `edition` should not be configured. * Possible values are: `PROVISIONED`, `FREE_INSTANCE`. */ instanceType?: pulumi.Input; /** * An object containing a list of "key": value pairs. * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }. * * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration. * Please refer to the field `effectiveLabels` for all of the labels present on the resource. */ labels?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * A unique identifier for the instance, which cannot be changed after * the instance is created. The name must be between 6 and 30 characters * in length. * If not provided, a random string starting with `tf-` will be selected. */ name?: pulumi.Input; /** * The number of nodes allocated to this instance. Exactly one of either num_nodes, processingUnits or * autoscalingConfig must be present in terraform except when instanceType = FREE_INSTANCE. */ numNodes?: pulumi.Input; /** * The number of processing units allocated to this instance. Exactly one of either num_nodes, * processingUnits or autoscalingConfig must be present in terraform except when instanceType = FREE_INSTANCE. */ processingUnits?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; }