diff --git a/Bigtable/metadata/Admin/V2/Table.php b/Bigtable/metadata/Admin/V2/Table.php
index c765dbf15a86..ff6a09730acf 100644
--- a/Bigtable/metadata/Admin/V2/Table.php
+++ b/Bigtable/metadata/Admin/V2/Table.php
@@ -21,7 +21,7 @@ public static function initOnce() {
\GPBMetadata\Google\Protobuf\Timestamp::initOnce();
\GPBMetadata\Google\Rpc\Status::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xAF/\x0A\$google/bigtable/admin/v2/table.proto\x12\x18google.bigtable.admin.v2\x1A\x19google/api/resource.proto\x1A\$google/bigtable/admin/v2/types.proto\x1A\x1Egoogle/protobuf/duration.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x17google/rpc/status.proto\"\x9B\x01\x0A\x0BRestoreInfo\x12@\x0A\x0Bsource_type\x18\x01 \x01(\x0E2+.google.bigtable.admin.v2.RestoreSourceType\x12;\x0A\x0Bbackup_info\x18\x02 \x01(\x0B2\$.google.bigtable.admin.v2.BackupInfoH\x00B\x0D\x0A\x0Bsource_info\"I\x0A\x12ChangeStreamConfig\x123\x0A\x10retention_period\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\"\xE3\x0C\x0A\x05Table\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12O\x0A\x0Ecluster_states\x18\x02 \x03(\x0B22.google.bigtable.admin.v2.Table.ClusterStatesEntryB\x03\xE0A\x03\x12L\x0A\x0Fcolumn_families\x18\x03 \x03(\x0B23.google.bigtable.admin.v2.Table.ColumnFamiliesEntry\x12N\x0A\x0Bgranularity\x18\x04 \x01(\x0E24.google.bigtable.admin.v2.Table.TimestampGranularityB\x03\xE0A\x05\x12@\x0A\x0Crestore_info\x18\x06 \x01(\x0B2%.google.bigtable.admin.v2.RestoreInfoB\x03\xE0A\x03\x12J\x0A\x14change_stream_config\x18\x08 \x01(\x0B2,.google.bigtable.admin.v2.ChangeStreamConfig\x12\x1B\x0A\x13deletion_protection\x18\x09 \x01(\x08\x12X\x0A\x17automated_backup_policy\x18\x0D \x01(\x0B25.google.bigtable.admin.v2.Table.AutomatedBackupPolicyH\x00\x12L\x0A\x15tiered_storage_config\x18\x0E \x01(\x0B2-.google.bigtable.admin.v2.TieredStorageConfig\x12=\x0A\x0Erow_key_schema\x18\x0F \x01(\x0B2%.google.bigtable.admin.v2.Type.Struct\x1A\xC6\x02\x0A\x0CClusterState\x12]\x0A\x11replication_state\x18\x01 \x01(\x0E2=.google.bigtable.admin.v2.Table.ClusterState.ReplicationStateB\x03\xE0A\x03\x12F\x0A\x0Fencryption_info\x18\x02 \x03(\x0B2(.google.bigtable.admin.v2.EncryptionInfoB\x03\xE0A\x03\"\x8E\x01\x0A\x10ReplicationState\x12\x13\x0A\x0FSTATE_NOT_KNOWN\x10\x00\x12\x10\x0A\x0CINITIALIZING\x10\x01\x12\x17\x0A\x13PLANNED_MAINTENANCE\x10\x02\x12\x19\x0A\x15UNPLANNED_MAINTENANCE\x10\x03\x12\x09\x0A\x05READY\x10\x04\x12\x14\x0A\x10READY_OPTIMIZING\x10\x05\x1A\x84\x01\x0A\x15AutomatedBackupPolicy\x128\x0A\x10retention_period\x18\x01 \x01(\x0B2\x19.google.protobuf.DurationB\x03\xE0A\x02\x121\x0A\x09frequency\x18\x02 \x01(\x0B2\x19.google.protobuf.DurationB\x03\xE0A\x02\x1Ab\x0A\x12ClusterStatesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12;\x0A\x05value\x18\x02 \x01(\x0B2,.google.bigtable.admin.v2.Table.ClusterState:\x028\x01\x1A]\x0A\x13ColumnFamiliesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x125\x0A\x05value\x18\x02 \x01(\x0B2&.google.bigtable.admin.v2.ColumnFamily:\x028\x01\"I\x0A\x14TimestampGranularity\x12%\x0A!TIMESTAMP_GRANULARITY_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06MILLIS\x10\x01\"q\x0A\x04View\x12\x14\x0A\x10VIEW_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09NAME_ONLY\x10\x01\x12\x0F\x0A\x0BSCHEMA_VIEW\x10\x02\x12\x14\x0A\x10REPLICATION_VIEW\x10\x03\x12\x13\x0A\x0FENCRYPTION_VIEW\x10\x05\x12\x08\x0A\x04FULL\x10\x04:_\xEAA\\\x0A\"bigtableadmin.googleapis.com/Table\x126projects/{project}/instances/{instance}/tables/{table}B\x19\x0A\x17automated_backup_config\"\xE3\x05\x0A\x0EAuthorizedView\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12J\x0A\x0Bsubset_view\x18\x02 \x01(\x0B23.google.bigtable.admin.v2.AuthorizedView.SubsetViewH\x00\x12\x0C\x0A\x04etag\x18\x03 \x01(\x09\x12\x1B\x0A\x13deletion_protection\x18\x04 \x01(\x08\x1A?\x0A\x0DFamilySubsets\x12\x12\x0A\x0Aqualifiers\x18\x01 \x03(\x0C\x12\x1A\x0A\x12qualifier_prefixes\x18\x02 \x03(\x0C\x1A\xF0\x01\x0A\x0ASubsetView\x12\x14\x0A\x0Crow_prefixes\x18\x01 \x03(\x0C\x12^\x0A\x0Efamily_subsets\x18\x02 \x03(\x0B2F.google.bigtable.admin.v2.AuthorizedView.SubsetView.FamilySubsetsEntry\x1Al\x0A\x12FamilySubsetsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12E\x0A\x05value\x18\x02 \x01(\x0B26.google.bigtable.admin.v2.AuthorizedView.FamilySubsets:\x028\x01\"Q\x0A\x0CResponseView\x12\x1D\x0A\x19RESPONSE_VIEW_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09NAME_ONLY\x10\x01\x12\x09\x0A\x05BASIC\x10\x02\x12\x08\x0A\x04FULL\x10\x03:\xAC\x01\xEAA\xA8\x01\x0A+bigtableadmin.googleapis.com/AuthorizedView\x12Xprojects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}*\x0FauthorizedViews2\x0EauthorizedViewB\x11\x0A\x0Fauthorized_view\"u\x0A\x0CColumnFamily\x121\x0A\x07gc_rule\x18\x01 \x01(\x0B2 .google.bigtable.admin.v2.GcRule\x122\x0A\x0Avalue_type\x18\x03 \x01(\x0B2\x1E.google.bigtable.admin.v2.Type\"\xD5\x02\x0A\x06GcRule\x12\x1A\x0A\x10max_num_versions\x18\x01 \x01(\x05H\x00\x12,\x0A\x07max_age\x18\x02 \x01(\x0B2\x19.google.protobuf.DurationH\x00\x12E\x0A\x0Cintersection\x18\x03 \x01(\x0B2-.google.bigtable.admin.v2.GcRule.IntersectionH\x00\x127\x0A\x05union\x18\x04 \x01(\x0B2&.google.bigtable.admin.v2.GcRule.UnionH\x00\x1A?\x0A\x0CIntersection\x12/\x0A\x05rules\x18\x01 \x03(\x0B2 .google.bigtable.admin.v2.GcRule\x1A8\x0A\x05Union\x12/\x0A\x05rules\x18\x01 \x03(\x0B2 .google.bigtable.admin.v2.GcRuleB\x06\x0A\x04rule\"\xD9\x02\x0A\x0EEncryptionInfo\x12U\x0A\x0Fencryption_type\x18\x03 \x01(\x0E27.google.bigtable.admin.v2.EncryptionInfo.EncryptionTypeB\x03\xE0A\x03\x122\x0A\x11encryption_status\x18\x04 \x01(\x0B2\x12.google.rpc.StatusB\x03\xE0A\x03\x12I\x0A\x0Fkms_key_version\x18\x02 \x01(\x09B0\xE0A\x03\xFAA*\x0A(cloudkms.googleapis.com/CryptoKeyVersion\"q\x0A\x0EEncryptionType\x12\x1F\x0A\x1BENCRYPTION_TYPE_UNSPECIFIED\x10\x00\x12\x1D\x0A\x19GOOGLE_DEFAULT_ENCRYPTION\x10\x01\x12\x1F\x0A\x1BCUSTOMER_MANAGED_ENCRYPTION\x10\x02\"\xE0\x03\x0A\x08Snapshot\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12:\x0A\x0Csource_table\x18\x02 \x01(\x0B2\x1F.google.bigtable.admin.v2.TableB\x03\xE0A\x03\x12\x1C\x0A\x0Fdata_size_bytes\x18\x03 \x01(\x03B\x03\xE0A\x03\x124\x0A\x0Bcreate_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12/\x0A\x0Bdelete_time\x18\x05 \x01(\x0B2\x1A.google.protobuf.Timestamp\x12<\x0A\x05state\x18\x06 \x01(\x0E2(.google.bigtable.admin.v2.Snapshot.StateB\x03\xE0A\x03\x12\x13\x0A\x0Bdescription\x18\x07 \x01(\x09\"5\x0A\x05State\x12\x13\x0A\x0FSTATE_NOT_KNOWN\x10\x00\x12\x09\x0A\x05READY\x10\x01\x12\x0C\x0A\x08CREATING\x10\x02:{\xEAAx\x0A%bigtableadmin.googleapis.com/Snapshot\x12Oprojects/{project}/instances/{instance}/clusters/{cluster}/snapshots/{snapshot}\"\xF9\x05\x0A\x06Backup\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12\x1C\x0A\x0Csource_table\x18\x02 \x01(\x09B\x06\xE0A\x05\xE0A\x02\x12\x1A\x0A\x0Dsource_backup\x18\x0A \x01(\x09B\x03\xE0A\x03\x124\x0A\x0Bexpire_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x02\x123\x0A\x0Astart_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x05 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x17\x0A\x0Asize_bytes\x18\x06 \x01(\x03B\x03\xE0A\x03\x12:\x0A\x05state\x18\x07 \x01(\x0E2&.google.bigtable.admin.v2.Backup.StateB\x03\xE0A\x03\x12F\x0A\x0Fencryption_info\x18\x09 \x01(\x0B2(.google.bigtable.admin.v2.EncryptionInfoB\x03\xE0A\x03\x12@\x0A\x0Bbackup_type\x18\x0B \x01(\x0E2+.google.bigtable.admin.v2.Backup.BackupType\x128\x0A\x14hot_to_standard_time\x18\x0C \x01(\x0B2\x1A.google.protobuf.Timestamp\"7\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08CREATING\x10\x01\x12\x09\x0A\x05READY\x10\x02\"@\x0A\x0ABackupType\x12\x1B\x0A\x17BACKUP_TYPE_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08STANDARD\x10\x01\x12\x07\x0A\x03HOT\x10\x02:u\xEAAr\x0A#bigtableadmin.googleapis.com/Backup\x12Kprojects/{project}/instances/{instance}/clusters/{cluster}/backups/{backup}\"\xC0\x01\x0A\x0ABackupInfo\x12\x13\x0A\x06backup\x18\x01 \x01(\x09B\x03\xE0A\x03\x123\x0A\x0Astart_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x19\x0A\x0Csource_table\x18\x04 \x01(\x09B\x03\xE0A\x03\x12\x1A\x0A\x0Dsource_backup\x18\x0A \x01(\x09B\x03\xE0A\x03\"]\x0A\x13TieredStorageConfig\x12F\x0A\x11infrequent_access\x18\x01 \x01(\x0B2+.google.bigtable.admin.v2.TieredStorageRule\"W\x0A\x11TieredStorageRule\x12:\x0A\x15include_if_older_than\x18\x01 \x01(\x0B2\x19.google.protobuf.DurationH\x00B\x06\x0A\x04rule\"-\x0A\x0BProtoSchema\x12\x1E\x0A\x11proto_descriptors\x18\x02 \x01(\x0CB\x03\xE0A\x02\"\xA0\x02\x0A\x0CSchemaBundle\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12=\x0A\x0Cproto_schema\x18\x02 \x01(\x0B2%.google.bigtable.admin.v2.ProtoSchemaH\x00\x12\x11\x0A\x04etag\x18\x03 \x01(\x09B\x03\xE0A\x01:\xA2\x01\xEAA\x9E\x01\x0A)bigtableadmin.googleapis.com/SchemaBundle\x12Tprojects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}*\x0DschemaBundles2\x0CschemaBundleB\x06\x0A\x04type*D\x0A\x11RestoreSourceType\x12#\x0A\x1FRESTORE_SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06BACKUP\x10\x01B\xF7\x02\x0A\x1Ccom.google.bigtable.admin.v2B\x0ATableProtoP\x01Z8cloud.google.com/go/bigtable/admin/apiv2/adminpb;adminpb\xAA\x02\x1EGoogle.Cloud.Bigtable.Admin.V2\xCA\x02\x1EGoogle\\Cloud\\Bigtable\\Admin\\V2\xEA\x02\"Google::Cloud::Bigtable::Admin::V2\xEAA\xA6\x01\x0A(cloudkms.googleapis.com/CryptoKeyVersion\x12zprojects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}b\x06proto3"
+ "\x0A\xE8/\x0A\$google/bigtable/admin/v2/table.proto\x12\x18google.bigtable.admin.v2\x1A\x19google/api/resource.proto\x1A\$google/bigtable/admin/v2/types.proto\x1A\x1Egoogle/protobuf/duration.proto\x1A\x1Fgoogle/protobuf/timestamp.proto\x1A\x17google/rpc/status.proto\"\x9B\x01\x0A\x0BRestoreInfo\x12@\x0A\x0Bsource_type\x18\x01 \x01(\x0E2+.google.bigtable.admin.v2.RestoreSourceType\x12;\x0A\x0Bbackup_info\x18\x02 \x01(\x0B2\$.google.bigtable.admin.v2.BackupInfoH\x00B\x0D\x0A\x0Bsource_info\"I\x0A\x12ChangeStreamConfig\x123\x0A\x10retention_period\x18\x01 \x01(\x0B2\x19.google.protobuf.Duration\"\x9C\x0D\x0A\x05Table\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12O\x0A\x0Ecluster_states\x18\x02 \x03(\x0B22.google.bigtable.admin.v2.Table.ClusterStatesEntryB\x03\xE0A\x03\x12L\x0A\x0Fcolumn_families\x18\x03 \x03(\x0B23.google.bigtable.admin.v2.Table.ColumnFamiliesEntry\x12N\x0A\x0Bgranularity\x18\x04 \x01(\x0E24.google.bigtable.admin.v2.Table.TimestampGranularityB\x03\xE0A\x05\x12@\x0A\x0Crestore_info\x18\x06 \x01(\x0B2%.google.bigtable.admin.v2.RestoreInfoB\x03\xE0A\x03\x12J\x0A\x14change_stream_config\x18\x08 \x01(\x0B2,.google.bigtable.admin.v2.ChangeStreamConfig\x12\x1B\x0A\x13deletion_protection\x18\x09 \x01(\x08\x12X\x0A\x17automated_backup_policy\x18\x0D \x01(\x0B25.google.bigtable.admin.v2.Table.AutomatedBackupPolicyH\x00\x12L\x0A\x15tiered_storage_config\x18\x0E \x01(\x0B2-.google.bigtable.admin.v2.TieredStorageConfig\x12=\x0A\x0Erow_key_schema\x18\x0F \x01(\x0B2%.google.bigtable.admin.v2.Type.Struct\x1A\xC6\x02\x0A\x0CClusterState\x12]\x0A\x11replication_state\x18\x01 \x01(\x0E2=.google.bigtable.admin.v2.Table.ClusterState.ReplicationStateB\x03\xE0A\x03\x12F\x0A\x0Fencryption_info\x18\x02 \x03(\x0B2(.google.bigtable.admin.v2.EncryptionInfoB\x03\xE0A\x03\"\x8E\x01\x0A\x10ReplicationState\x12\x13\x0A\x0FSTATE_NOT_KNOWN\x10\x00\x12\x10\x0A\x0CINITIALIZING\x10\x01\x12\x17\x0A\x13PLANNED_MAINTENANCE\x10\x02\x12\x19\x0A\x15UNPLANNED_MAINTENANCE\x10\x03\x12\x09\x0A\x05READY\x10\x04\x12\x14\x0A\x10READY_OPTIMIZING\x10\x05\x1A\xBD\x01\x0A\x15AutomatedBackupPolicy\x128\x0A\x10retention_period\x18\x01 \x01(\x0B2\x19.google.protobuf.DurationB\x03\xE0A\x02\x12,\x0A\x09frequency\x18\x02 \x01(\x0B2\x19.google.protobuf.Duration\x12<\x0A\x09locations\x18\x03 \x03(\x09B)\xE0A\x01\xFAA#\x0A!locations.googleapis.com/Location\x1Ab\x0A\x12ClusterStatesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12;\x0A\x05value\x18\x02 \x01(\x0B2,.google.bigtable.admin.v2.Table.ClusterState:\x028\x01\x1A]\x0A\x13ColumnFamiliesEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x125\x0A\x05value\x18\x02 \x01(\x0B2&.google.bigtable.admin.v2.ColumnFamily:\x028\x01\"I\x0A\x14TimestampGranularity\x12%\x0A!TIMESTAMP_GRANULARITY_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06MILLIS\x10\x01\"q\x0A\x04View\x12\x14\x0A\x10VIEW_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09NAME_ONLY\x10\x01\x12\x0F\x0A\x0BSCHEMA_VIEW\x10\x02\x12\x14\x0A\x10REPLICATION_VIEW\x10\x03\x12\x13\x0A\x0FENCRYPTION_VIEW\x10\x05\x12\x08\x0A\x04FULL\x10\x04:_\xEAA\\\x0A\"bigtableadmin.googleapis.com/Table\x126projects/{project}/instances/{instance}/tables/{table}B\x19\x0A\x17automated_backup_config\"\xE3\x05\x0A\x0EAuthorizedView\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12J\x0A\x0Bsubset_view\x18\x02 \x01(\x0B23.google.bigtable.admin.v2.AuthorizedView.SubsetViewH\x00\x12\x0C\x0A\x04etag\x18\x03 \x01(\x09\x12\x1B\x0A\x13deletion_protection\x18\x04 \x01(\x08\x1A?\x0A\x0DFamilySubsets\x12\x12\x0A\x0Aqualifiers\x18\x01 \x03(\x0C\x12\x1A\x0A\x12qualifier_prefixes\x18\x02 \x03(\x0C\x1A\xF0\x01\x0A\x0ASubsetView\x12\x14\x0A\x0Crow_prefixes\x18\x01 \x03(\x0C\x12^\x0A\x0Efamily_subsets\x18\x02 \x03(\x0B2F.google.bigtable.admin.v2.AuthorizedView.SubsetView.FamilySubsetsEntry\x1Al\x0A\x12FamilySubsetsEntry\x12\x0B\x0A\x03key\x18\x01 \x01(\x09\x12E\x0A\x05value\x18\x02 \x01(\x0B26.google.bigtable.admin.v2.AuthorizedView.FamilySubsets:\x028\x01\"Q\x0A\x0CResponseView\x12\x1D\x0A\x19RESPONSE_VIEW_UNSPECIFIED\x10\x00\x12\x0D\x0A\x09NAME_ONLY\x10\x01\x12\x09\x0A\x05BASIC\x10\x02\x12\x08\x0A\x04FULL\x10\x03:\xAC\x01\xEAA\xA8\x01\x0A+bigtableadmin.googleapis.com/AuthorizedView\x12Xprojects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}*\x0FauthorizedViews2\x0EauthorizedViewB\x11\x0A\x0Fauthorized_view\"u\x0A\x0CColumnFamily\x121\x0A\x07gc_rule\x18\x01 \x01(\x0B2 .google.bigtable.admin.v2.GcRule\x122\x0A\x0Avalue_type\x18\x03 \x01(\x0B2\x1E.google.bigtable.admin.v2.Type\"\xD5\x02\x0A\x06GcRule\x12\x1A\x0A\x10max_num_versions\x18\x01 \x01(\x05H\x00\x12,\x0A\x07max_age\x18\x02 \x01(\x0B2\x19.google.protobuf.DurationH\x00\x12E\x0A\x0Cintersection\x18\x03 \x01(\x0B2-.google.bigtable.admin.v2.GcRule.IntersectionH\x00\x127\x0A\x05union\x18\x04 \x01(\x0B2&.google.bigtable.admin.v2.GcRule.UnionH\x00\x1A?\x0A\x0CIntersection\x12/\x0A\x05rules\x18\x01 \x03(\x0B2 .google.bigtable.admin.v2.GcRule\x1A8\x0A\x05Union\x12/\x0A\x05rules\x18\x01 \x03(\x0B2 .google.bigtable.admin.v2.GcRuleB\x06\x0A\x04rule\"\xD9\x02\x0A\x0EEncryptionInfo\x12U\x0A\x0Fencryption_type\x18\x03 \x01(\x0E27.google.bigtable.admin.v2.EncryptionInfo.EncryptionTypeB\x03\xE0A\x03\x122\x0A\x11encryption_status\x18\x04 \x01(\x0B2\x12.google.rpc.StatusB\x03\xE0A\x03\x12I\x0A\x0Fkms_key_version\x18\x02 \x01(\x09B0\xE0A\x03\xFAA*\x0A(cloudkms.googleapis.com/CryptoKeyVersion\"q\x0A\x0EEncryptionType\x12\x1F\x0A\x1BENCRYPTION_TYPE_UNSPECIFIED\x10\x00\x12\x1D\x0A\x19GOOGLE_DEFAULT_ENCRYPTION\x10\x01\x12\x1F\x0A\x1BCUSTOMER_MANAGED_ENCRYPTION\x10\x02\"\xE0\x03\x0A\x08Snapshot\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12:\x0A\x0Csource_table\x18\x02 \x01(\x0B2\x1F.google.bigtable.admin.v2.TableB\x03\xE0A\x03\x12\x1C\x0A\x0Fdata_size_bytes\x18\x03 \x01(\x03B\x03\xE0A\x03\x124\x0A\x0Bcreate_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12/\x0A\x0Bdelete_time\x18\x05 \x01(\x0B2\x1A.google.protobuf.Timestamp\x12<\x0A\x05state\x18\x06 \x01(\x0E2(.google.bigtable.admin.v2.Snapshot.StateB\x03\xE0A\x03\x12\x13\x0A\x0Bdescription\x18\x07 \x01(\x09\"5\x0A\x05State\x12\x13\x0A\x0FSTATE_NOT_KNOWN\x10\x00\x12\x09\x0A\x05READY\x10\x01\x12\x0C\x0A\x08CREATING\x10\x02:{\xEAAx\x0A%bigtableadmin.googleapis.com/Snapshot\x12Oprojects/{project}/instances/{instance}/clusters/{cluster}/snapshots/{snapshot}\"\xF9\x05\x0A\x06Backup\x12\x0C\x0A\x04name\x18\x01 \x01(\x09\x12\x1C\x0A\x0Csource_table\x18\x02 \x01(\x09B\x06\xE0A\x05\xE0A\x02\x12\x1A\x0A\x0Dsource_backup\x18\x0A \x01(\x09B\x03\xE0A\x03\x124\x0A\x0Bexpire_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x02\x123\x0A\x0Astart_time\x18\x04 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x05 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x17\x0A\x0Asize_bytes\x18\x06 \x01(\x03B\x03\xE0A\x03\x12:\x0A\x05state\x18\x07 \x01(\x0E2&.google.bigtable.admin.v2.Backup.StateB\x03\xE0A\x03\x12F\x0A\x0Fencryption_info\x18\x09 \x01(\x0B2(.google.bigtable.admin.v2.EncryptionInfoB\x03\xE0A\x03\x12@\x0A\x0Bbackup_type\x18\x0B \x01(\x0E2+.google.bigtable.admin.v2.Backup.BackupType\x128\x0A\x14hot_to_standard_time\x18\x0C \x01(\x0B2\x1A.google.protobuf.Timestamp\"7\x0A\x05State\x12\x15\x0A\x11STATE_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08CREATING\x10\x01\x12\x09\x0A\x05READY\x10\x02\"@\x0A\x0ABackupType\x12\x1B\x0A\x17BACKUP_TYPE_UNSPECIFIED\x10\x00\x12\x0C\x0A\x08STANDARD\x10\x01\x12\x07\x0A\x03HOT\x10\x02:u\xEAAr\x0A#bigtableadmin.googleapis.com/Backup\x12Kprojects/{project}/instances/{instance}/clusters/{cluster}/backups/{backup}\"\xC0\x01\x0A\x0ABackupInfo\x12\x13\x0A\x06backup\x18\x01 \x01(\x09B\x03\xE0A\x03\x123\x0A\x0Astart_time\x18\x02 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x121\x0A\x08end_time\x18\x03 \x01(\x0B2\x1A.google.protobuf.TimestampB\x03\xE0A\x03\x12\x19\x0A\x0Csource_table\x18\x04 \x01(\x09B\x03\xE0A\x03\x12\x1A\x0A\x0Dsource_backup\x18\x0A \x01(\x09B\x03\xE0A\x03\"]\x0A\x13TieredStorageConfig\x12F\x0A\x11infrequent_access\x18\x01 \x01(\x0B2+.google.bigtable.admin.v2.TieredStorageRule\"W\x0A\x11TieredStorageRule\x12:\x0A\x15include_if_older_than\x18\x01 \x01(\x0B2\x19.google.protobuf.DurationH\x00B\x06\x0A\x04rule\"-\x0A\x0BProtoSchema\x12\x1E\x0A\x11proto_descriptors\x18\x02 \x01(\x0CB\x03\xE0A\x02\"\xA0\x02\x0A\x0CSchemaBundle\x12\x11\x0A\x04name\x18\x01 \x01(\x09B\x03\xE0A\x08\x12=\x0A\x0Cproto_schema\x18\x02 \x01(\x0B2%.google.bigtable.admin.v2.ProtoSchemaH\x00\x12\x11\x0A\x04etag\x18\x03 \x01(\x09B\x03\xE0A\x01:\xA2\x01\xEAA\x9E\x01\x0A)bigtableadmin.googleapis.com/SchemaBundle\x12Tprojects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}*\x0DschemaBundles2\x0CschemaBundleB\x06\x0A\x04type*D\x0A\x11RestoreSourceType\x12#\x0A\x1FRESTORE_SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x0A\x0A\x06BACKUP\x10\x01B\xF7\x02\x0A\x1Ccom.google.bigtable.admin.v2B\x0ATableProtoP\x01Z8cloud.google.com/go/bigtable/admin/apiv2/adminpb;adminpb\xAA\x02\x1EGoogle.Cloud.Bigtable.Admin.V2\xCA\x02\x1EGoogle\\Cloud\\Bigtable\\Admin\\V2\xEA\x02\"Google::Cloud::Bigtable::Admin::V2\xEAA\xA6\x01\x0A(cloudkms.googleapis.com/CryptoKeyVersion\x12zprojects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/Bigtable/src/Admin/V2/Client/BigtableTableAdminClient.php b/Bigtable/src/Admin/V2/Client/BigtableTableAdminClient.php
index 58bba9230522..0cf2d295fe4d 100644
--- a/Bigtable/src/Admin/V2/Client/BigtableTableAdminClient.php
+++ b/Bigtable/src/Admin/V2/Client/BigtableTableAdminClient.php
@@ -343,6 +343,23 @@ public static function instanceName(string $project, string $instance): string
]);
}
+ /**
+ * Formats a string containing the fully-qualified path to represent a location
+ * resource.
+ *
+ * @param string $project
+ * @param string $location
+ *
+ * @return string The formatted location resource.
+ */
+ public static function locationName(string $project, string $location): string
+ {
+ return self::getPathTemplate('location')->render([
+ 'project' => $project,
+ 'location' => $location,
+ ]);
+ }
+
/**
* Formats a string containing the fully-qualified path to represent a
* schema_bundle resource.
@@ -413,6 +430,7 @@ public static function tableName(string $project, string $instance, string $tabl
* - cluster: projects/{project}/instances/{instance}/clusters/{cluster}
* - cryptoKeyVersion: projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}
* - instance: projects/{project}/instances/{instance}
+ * - location: projects/{project}/locations/{location}
* - schemaBundle: projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}
* - snapshot: projects/{project}/instances/{instance}/clusters/{cluster}/snapshots/{snapshot}
* - table: projects/{project}/instances/{instance}/tables/{table}
diff --git a/Bigtable/src/Admin/V2/Table/AutomatedBackupPolicy.php b/Bigtable/src/Admin/V2/Table/AutomatedBackupPolicy.php
index 197cff0389f3..991c00e9a126 100644
--- a/Bigtable/src/Admin/V2/Table/AutomatedBackupPolicy.php
+++ b/Bigtable/src/Admin/V2/Table/AutomatedBackupPolicy.php
@@ -16,19 +16,29 @@
class AutomatedBackupPolicy extends \Google\Protobuf\Internal\Message
{
/**
- * Required. How long the automated backups should be retained. The only
- * supported value at this time is 3 days.
+ * Required. How long the automated backups should be retained. Values must
+ * be at least 3 days and at most 90 days.
*
* Generated from protobuf field .google.protobuf.Duration retention_period = 1 [(.google.api.field_behavior) = REQUIRED];
*/
protected $retention_period = null;
/**
- * Required. How frequently automated backups should occur. The only
- * supported value at this time is 24 hours.
+ * How frequently automated backups should occur. The only supported value
+ * at this time is 24 hours. An undefined frequency is treated as 24 hours.
*
- * Generated from protobuf field .google.protobuf.Duration frequency = 2 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field .google.protobuf.Duration frequency = 2;
*/
protected $frequency = null;
+ /**
+ * Optional. A list of Cloud Bigtable zones where automated backups are
+ * allowed to be created. If empty, automated backups will be created in all
+ * zones of the instance. Locations are in the format
+ * `projects/{project}/locations/{zone}`.
+ * This field can only set for tables in Enterprise Plus instances.
+ *
+ * Generated from protobuf field repeated string locations = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = {
+ */
+ private $locations;
/**
* Constructor.
@@ -37,11 +47,17 @@ class AutomatedBackupPolicy extends \Google\Protobuf\Internal\Message
* Optional. Data for populating the Message object.
*
* @type \Google\Protobuf\Duration $retention_period
- * Required. How long the automated backups should be retained. The only
- * supported value at this time is 3 days.
+ * Required. How long the automated backups should be retained. Values must
+ * be at least 3 days and at most 90 days.
* @type \Google\Protobuf\Duration $frequency
- * Required. How frequently automated backups should occur. The only
- * supported value at this time is 24 hours.
+ * How frequently automated backups should occur. The only supported value
+ * at this time is 24 hours. An undefined frequency is treated as 24 hours.
+ * @type string[] $locations
+ * Optional. A list of Cloud Bigtable zones where automated backups are
+ * allowed to be created. If empty, automated backups will be created in all
+ * zones of the instance. Locations are in the format
+ * `projects/{project}/locations/{zone}`.
+ * This field can only set for tables in Enterprise Plus instances.
* }
*/
public function __construct($data = NULL) {
@@ -50,8 +66,8 @@ public function __construct($data = NULL) {
}
/**
- * Required. How long the automated backups should be retained. The only
- * supported value at this time is 3 days.
+ * Required. How long the automated backups should be retained. Values must
+ * be at least 3 days and at most 90 days.
*
* Generated from protobuf field .google.protobuf.Duration retention_period = 1 [(.google.api.field_behavior) = REQUIRED];
* @return \Google\Protobuf\Duration|null
@@ -72,8 +88,8 @@ public function clearRetentionPeriod()
}
/**
- * Required. How long the automated backups should be retained. The only
- * supported value at this time is 3 days.
+ * Required. How long the automated backups should be retained. Values must
+ * be at least 3 days and at most 90 days.
*
* Generated from protobuf field .google.protobuf.Duration retention_period = 1 [(.google.api.field_behavior) = REQUIRED];
* @param \Google\Protobuf\Duration $var
@@ -88,10 +104,10 @@ public function setRetentionPeriod($var)
}
/**
- * Required. How frequently automated backups should occur. The only
- * supported value at this time is 24 hours.
+ * How frequently automated backups should occur. The only supported value
+ * at this time is 24 hours. An undefined frequency is treated as 24 hours.
*
- * Generated from protobuf field .google.protobuf.Duration frequency = 2 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field .google.protobuf.Duration frequency = 2;
* @return \Google\Protobuf\Duration|null
*/
public function getFrequency()
@@ -110,10 +126,10 @@ public function clearFrequency()
}
/**
- * Required. How frequently automated backups should occur. The only
- * supported value at this time is 24 hours.
+ * How frequently automated backups should occur. The only supported value
+ * at this time is 24 hours. An undefined frequency is treated as 24 hours.
*
- * Generated from protobuf field .google.protobuf.Duration frequency = 2 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field .google.protobuf.Duration frequency = 2;
* @param \Google\Protobuf\Duration $var
* @return $this
*/
@@ -125,5 +141,39 @@ public function setFrequency($var)
return $this;
}
+ /**
+ * Optional. A list of Cloud Bigtable zones where automated backups are
+ * allowed to be created. If empty, automated backups will be created in all
+ * zones of the instance. Locations are in the format
+ * `projects/{project}/locations/{zone}`.
+ * This field can only set for tables in Enterprise Plus instances.
+ *
+ * Generated from protobuf field repeated string locations = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = {
+ * @return RepeatedField
+ */
+ public function getLocations()
+ {
+ return $this->locations;
+ }
+
+ /**
+ * Optional. A list of Cloud Bigtable zones where automated backups are
+ * allowed to be created. If empty, automated backups will be created in all
+ * zones of the instance. Locations are in the format
+ * `projects/{project}/locations/{zone}`.
+ * This field can only set for tables in Enterprise Plus instances.
+ *
+ * Generated from protobuf field repeated string locations = 3 [(.google.api.field_behavior) = OPTIONAL, (.google.api.resource_reference) = {
+ * @param string[] $var
+ * @return $this
+ */
+ public function setLocations($var)
+ {
+ $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
+ $this->locations = $arr;
+
+ return $this;
+ }
+
}
diff --git a/Bigtable/src/Admin/V2/resources/bigtable_table_admin_descriptor_config.php b/Bigtable/src/Admin/V2/resources/bigtable_table_admin_descriptor_config.php
index 6c4b7996ee08..2366687fe984 100644
--- a/Bigtable/src/Admin/V2/resources/bigtable_table_admin_descriptor_config.php
+++ b/Bigtable/src/Admin/V2/resources/bigtable_table_admin_descriptor_config.php
@@ -570,6 +570,7 @@
'cluster' => 'projects/{project}/instances/{instance}/clusters/{cluster}',
'cryptoKeyVersion' => 'projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}',
'instance' => 'projects/{project}/instances/{instance}',
+ 'location' => 'projects/{project}/locations/{location}',
'schemaBundle' => 'projects/{project}/instances/{instance}/tables/{table}/schemaBundles/{schema_bundle}',
'snapshot' => 'projects/{project}/instances/{instance}/clusters/{cluster}/snapshots/{snapshot}',
'table' => 'projects/{project}/instances/{instance}/tables/{table}',