diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/CreateInstanceRequest.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/CreateInstanceRequest.java
index 685e52d555..69c75f9011 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/CreateInstanceRequest.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/CreateInstanceRequest.java
@@ -118,6 +118,22 @@ public CreateInstanceRequest addLabel(@Nonnull String key, @Nonnull String value
return this;
}
+ /**
+ * Adds a tag to the instance.
+ *
+ *
Tags are a way to organize and govern resources across Google Cloud. Unlike labels, Tags are
+ * standalone resources created and managed through the Resource Manager API.
+ *
+ * @see For more details
+ */
+ @SuppressWarnings("WeakerAccess")
+ public CreateInstanceRequest addTag(@Nonnull String key, @Nonnull String value) {
+ Preconditions.checkNotNull(key, "Key can't be null");
+ Preconditions.checkNotNull(value, "Value can't be null");
+ builder.getInstanceBuilder().putTags(key, value);
+ return this;
+ }
+
/**
* Adds a cluster to the instance request with manual scaling enabled.
*
diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/Instance.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/Instance.java
index c3a0c43bca..df163b0e0d 100644
--- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/Instance.java
+++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/models/Instance.java
@@ -150,6 +150,12 @@ public String getDisplayName() {
return proto.getDisplayName();
}
+ /** Gets the instance's tags. */
+ @SuppressWarnings("WeakerAccess")
+ public Map getTags() {
+ return proto.getTagsMap();
+ }
+
/** Gets the instance's current type. Can be DEVELOPMENT or PRODUCTION. */
@SuppressWarnings("WeakerAccess")
public Type getType() {
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/CreateClusterRequestTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/CreateClusterRequestTest.java
index 566641039a..fe28948347 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/CreateClusterRequestTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/CreateClusterRequestTest.java
@@ -128,6 +128,7 @@ public void testOptionalFields() {
.setDisplayName("custom display name")
.addLabel("my label", "with some value")
.addLabel("my other label", "with some value")
+ .addTag("tagKeys/123", "tagValues/456")
.setType(Instance.Type.DEVELOPMENT)
.addCluster("cluster1", "us-east1-c", 1, StorageType.SSD);
@@ -142,6 +143,7 @@ public void testOptionalFields() {
.setDisplayName("custom display name")
.putLabels("my label", "with some value")
.putLabels("my other label", "with some value")
+ .putTags("tagKeys/123", "tagValues/456")
.setType(com.google.bigtable.admin.v2.Instance.Type.DEVELOPMENT))
.putClusters(
"cluster1",
diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/InstanceTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/InstanceTest.java
index 78fdf15b03..35b776fbe4 100644
--- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/InstanceTest.java
+++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/models/InstanceTest.java
@@ -36,6 +36,8 @@ public void testFromProto() {
.setState(com.google.bigtable.admin.v2.Instance.State.READY)
.putLabels("label1", "value1")
.putLabels("label2", "value2")
+ .putTags("tagKeys/123", "tagValues/456")
+ .putTags("tagKeys/234", "tagValues/567")
.build();
Instance result = Instance.fromProto(proto);
@@ -48,6 +50,8 @@ public void testFromProto() {
.containsExactly(
"label1", "value1",
"label2", "value2");
+ assertThat(result.getTags())
+ .containsExactly("tagKeys/123", "tagValues/456", "tagKeys/234", "tagValues/567");
}
@Test
@@ -59,6 +63,7 @@ public void testRequiresName() {
.setState(com.google.bigtable.admin.v2.Instance.State.READY)
.putLabels("label1", "value1")
.putLabels("label2", "value2")
+ .putTags("tagKeys/123", "tagValues/456")
.build();
Exception actualException = null;