diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketAutoclass.java b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketAutoclass.java index f59e383af5..2df9d89254 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketAutoclass.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/SetBucketAutoclass.java @@ -21,32 +21,54 @@ import com.google.cloud.storage.Bucket; import com.google.cloud.storage.BucketInfo.Autoclass; import com.google.cloud.storage.Storage; +import com.google.cloud.storage.Storage.BucketTargetOption; +import com.google.cloud.storage.StorageClass; import com.google.cloud.storage.StorageOptions; public class SetBucketAutoclass { - public static void setBucketAutoclass(String projectId, String bucketName) { + public static void setBucketAutoclass( + String projectId, String bucketName, StorageClass storageClass) throws Exception { // The ID of your GCP project // String projectId = "your-project-id"; // The ID of your GCS bucket // String bucketName = "your-unique-bucket-name"; - // Whether to set Autoclass to on or off. - // Note: Only update requests that disable qutoclass are currently supported. - // To enable autoclass, you must enable it at bucket creation time. + // The storage class that objects in an Autoclass bucket eventually transition to if not read + // for a certain length of time + // StorageClass storageClass = StorageClass.NEARLINE; + + // Configure the Autoclass setting for a bucket. + + // Note: terminal_storage_class field is optional and defaults to NEARLINE if not otherwise + // specified. Valid terminal_storage_class values are NEARLINE and ARCHIVE. boolean enabled = false; - Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); - Bucket bucket = storage.get(bucketName); + try (Storage storage = + StorageOptions.newBuilder().setProjectId(projectId).build().getService()) { + Bucket bucket = storage.get(bucketName); + + Bucket toUpdate = + bucket + .toBuilder() + .setAutoclass( + Autoclass.newBuilder() + .setEnabled(enabled) + .setTerminalStorageClass(storageClass) + .build()) + .build(); - bucket - .toBuilder() - .setAutoclass(Autoclass.newBuilder().setEnabled(enabled).build()) - .build() - .update(); + Bucket updated = storage.update(toUpdate, BucketTargetOption.metagenerationMatch()); - System.out.println( - "Autoclass for bucket " + bucketName + " was " + (enabled ? "enabled." : "disabled.")); + System.out.println( + "Autoclass for bucket " + + bucketName + + " was " + + (updated.getAutoclass().getEnabled() ? "enabled." : "disabled.")); + System.out.println( + "Autoclass terminal storage class is " + + updated.getAutoclass().getTerminalStorageClass().toString()); + } } } // [END storage_set_autoclass]