Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(samples): update Autoclass Sample for v2.1 features #2259

Merged
merged 1 commit into from
Oct 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@

import com.google.cloud.storage.BucketInfo.Autoclass;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;
import java.time.OffsetDateTime;

public class GetBucketAutoclass {
public static void getBucketAutoclass(String projectId, String bucketName) {
Expand All @@ -34,14 +36,20 @@ public static void getBucketAutoclass(String projectId, String bucketName) {
Autoclass autoclass = storage.get(bucketName).getAutoclass();
String status = autoclass.getEnabled() ? "enabled" : "disabled";
String toggleTime = autoclass.getToggleTime().toString();
StorageClass terminalStorageClass = autoclass.getTerminalStorageClass();
OffsetDateTime terminalStorageClassUpdateTime = autoclass.getTerminalStorageClassUpdateTime();

System.out.println(
"Autoclass is currently "
+ status
+ " for bucket "
+ bucketName
+ " and was last changed at "
+ toggleTime);
+ toggleTime
+ ". The terminal storage class is set to be "
+ terminalStorageClass.name()
+ " last updated at "
+ terminalStorageClassUpdateTime.toString());
}
}
// [END storage_get_autoclass]
Original file line number Diff line number Diff line change
Expand Up @@ -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.
boolean enabled = false;
// The storage class that objects in an Autoclass bucket eventually transition to if not read
// for a certain length of time
// StorageClass storageClass = StorageClass.ARCHIVE;

Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
Bucket bucket = storage.get(bucketName);
// Configure the Autoclass setting for a bucket.

bucket
.toBuilder()
.setAutoclass(Autoclass.newBuilder().setEnabled(enabled).build())
.build()
.update();
// 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 = true;

System.out.println(
"Autoclass for bucket " + bucketName + " was " + (enabled ? "enabled." : "disabled."));
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 updated = storage.update(toUpdate, BucketTargetOption.metagenerationMatch());

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]
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,25 @@
import com.example.storage.TestBase;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.BucketInfo.Autoclass;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.testing.RemoteStorageHelper;
import org.junit.Assert;
import org.junit.Test;

public class AutoclassTest extends TestBase {

private static final String PROJECT_ID = System.getenv("GOOGLE_CLOUD_PROJECT");

@Test
public void testSetGetBucketAutoclass() {
public void testSetGetBucketAutoclass() throws Exception {
String autoclassBucket = RemoteStorageHelper.generateBucketName();
storage.create(
BucketInfo.newBuilder(autoclassBucket)
.setAutoclass(Autoclass.newBuilder().setEnabled(true).build())
.build());
try {
SetBucketAutoclass.setBucketAutoclass(PROJECT_ID, autoclassBucket);
SetBucketAutoclass.setBucketAutoclass(PROJECT_ID, autoclassBucket, StorageClass.NEARLINE);
Autoclass autoclass = storage.get(autoclassBucket).getAutoclass();
Assert.assertFalse(autoclass.getEnabled());
assertThat(autoclass.getEnabled()).isTrue();

GetBucketAutoclass.getBucketAutoclass(PROJECT_ID, autoclassBucket);
assertThat(stdOut.getCapturedOutputAsUtf8String())
Expand Down