Class CreateInstanceRequest

java.lang.Object
com.google.cloud.bigtable.admin.v2.models.CreateInstanceRequest

public final class CreateInstanceRequest extends Object
Parameters for creating a new Bigtable Instance.

A Cloud Bigtable instance is mostly just a container for your clusters and nodes, which do all of the real work. Instances come in 2 flavors:

Production
A standard instance with either 1 or 2 clusters, as well as 3 or more nodes in each cluster. You cannot downgrade a production instance to a development instance.
Development
A low-cost instance for development and testing, with performance limited to the equivalent of a 1-node cluster. Development instances only support a single 1 node cluster. At any point this can be upgraded to a production instance.
When creating an Instance, you must create at least one cluster in it.

Examples:


 // Small production instance:
 CreateInstanceRequest smallProdInstanceRequest = CreateInstanceRequest.of("my-small-instance")
   .addCluster("cluster1", "us-east1-c", 3, StorageType.SSD);

 // Development instance:
 CreateInstanceRequest smallProdInstanceRequest = CreateInstanceRequest.of("my-dev-instance")
   .setType(Type.DEVELOPMENT)
   .addDevelopmentCluster("cluster1", "us-east1-c", StorageType.SSD);

 
See Also:
  • Method Details

    • of

      public static CreateInstanceRequest of(@Nonnull String instanceId)
      Builds a new request to create a new instance with the specified id.
    • setDisplayName

      public CreateInstanceRequest setDisplayName(@Nonnull String displayName)
      Sets the friendly display name of the instance. If left unspecified, it will default to the id
    • setType

      Sets the type of instance.

      Can be either DEVELOPMENT or PRODUCTION. Defaults to PRODUCTION. Please see class javadoc for details.

    • addLabel

      public CreateInstanceRequest addLabel(@Nonnull String key, @Nonnull String value)
      Adds an arbitrary label to the instance.

      Labels are key-value pairs that you can use to group related instances and store metadata about an instance.

      See Also:
    • addCluster

      public CreateInstanceRequest addCluster(@Nonnull String clusterId, @Nonnull String zone, int serveNodes, @Nonnull StorageType storageType)
      Adds a cluster to the instance request with manual scaling enabled.

      All new instances must have at least one cluster. DEVELOPMENT instances must have exactly one cluster.

      Parameters:
      clusterId - the name of the cluster.
      zone - the zone where the cluster will be created.
      serveNodes - the number of nodes that cluster will contain. DEVELOPMENT instance clusters must have exactly one node.
      storageType - the type of storage used by this cluster to serve its parent instance's tables.
    • addCluster

      public CreateInstanceRequest addCluster(@Nonnull String clusterId, @Nonnull String zone, @Nonnull ClusterAutoscalingConfig clusterAutoscalingConfig, @Nonnull StorageType storageType)
      Adds a cluster to the instance request with autoscaling enabled.

      All new instances must have at least one cluster. DEVELOPMENT instances must have exactly one cluster.

      Parameters:
      clusterId - the name of the cluster.
      zone - the zone where the cluster will be created.
      clusterAutoscalingConfig - the autoscaling config that sets the min serve nodes, max serve nodes, and CPU utilization percentage
      storageType - the type of storage used by this cluster to serve its parent instance's tables.
    • addCmekCluster

      public CreateInstanceRequest addCmekCluster(@Nonnull String clusterId, @Nonnull String zone, int serveNodes, @Nonnull StorageType storageType, @Nonnull String kmsKeyName)
      Adds a CMEK protected cluster using the specified KMS key name.
      Parameters:
      clusterId - the name of the cluster.
      zone - the zone where the cluster will be created.
      serveNodes - the number of nodes that cluster will contain. DEVELOPMENT instance clusters must have exactly one node.
      storageType - the type of storage used by this cluster to serve its parent instance's tables.
      kmsKeyName - the full name of the KMS key name to use in the format `projects/{key_project_id}/locations/{location}/keyRings/{ring_name}/cryptoKeys/{key_name}`
    • addDevelopmentCluster

      public CreateInstanceRequest addDevelopmentCluster(@Nonnull String clusterId, @Nonnull String zone, @Nonnull StorageType storageType)
      Adds a DEVELOPMENT cluster to the instance request.

      This instance will have exactly one node cluster.

      Parameters:
      clusterId - the name of the cluster.
      zone - the zone where the cluster will be created.
      storageType - the type of storage used by this cluster to serve its parent instance's tables.
    • toProto

      @InternalApi public CreateInstanceRequest toProto(String projectId)
      Creates the request protobuf. This method is considered an internal implementation detail and not meant to be used by applications.