Skip to content

Commit 1a01b6a

Browse files
Added check for zonal location and code
1 parent e678a3d commit 1a01b6a

File tree

3 files changed

+80
-71
lines changed

3 files changed

+80
-71
lines changed

compute/cloud-client/src/main/java/compute/disks/consistencygroup/AddDiskToConsistencyGroup.java

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,10 @@
1717
package compute.disks.consistencygroup;
1818

1919
// [START compute_consistency_group_add_disk]
20+
import com.google.cloud.compute.v1.AddResourcePoliciesDiskRequest;
2021
import com.google.cloud.compute.v1.AddResourcePoliciesRegionDiskRequest;
21-
import com.google.cloud.compute.v1.Disk;
22-
// If your disk has zonal location uncomment these lines
23-
//import com.google.cloud.compute.v1.AddResourcePoliciesDiskRequest;
24-
//import com.google.cloud.compute.v1.DisksAddResourcePoliciesRequest;
25-
//import com.google.cloud.compute.v1.DisksClient;
22+
import com.google.cloud.compute.v1.DisksAddResourcePoliciesRequest;
23+
import com.google.cloud.compute.v1.DisksClient;
2624
import com.google.cloud.compute.v1.Operation;
2725
import com.google.cloud.compute.v1.RegionDisksAddResourcePoliciesRequest;
2826
import com.google.cloud.compute.v1.RegionDisksClient;
@@ -31,9 +29,8 @@
3129
import java.util.concurrent.ExecutionException;
3230

3331
public class AddDiskToConsistencyGroup {
34-
3532
public static void main(String[] args)
36-
throws IOException, ExecutionException, InterruptedException {
33+
throws IOException, ExecutionException, InterruptedException {
3734
// TODO(developer): Replace these variables before running the sample.
3835
// The project that contains the disk.
3936
String project = "YOUR_PROJECT_ID";
@@ -46,49 +43,53 @@ public static void main(String[] args)
4643
// The region of the consistency group.
4744
String consistencyGroupLocation = "us-central1";
4845
addDiskToConsistencyGroup(
49-
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
46+
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
5047
}
5148

5249
// Adds a disk to a Consistency Group.
53-
public static Disk addDiskToConsistencyGroup(
54-
String project, String location, String diskName,
55-
String consistencyGroupName, String consistencyGroupLocation)
56-
throws IOException, ExecutionException, InterruptedException {
50+
public static Operation.Status addDiskToConsistencyGroup(
51+
String project, String location, String diskName,
52+
String consistencyGroupName, String consistencyGroupLocation)
53+
throws IOException, ExecutionException, InterruptedException {
5754
String consistencyGroupUrl = String.format(
58-
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
59-
project, consistencyGroupLocation, consistencyGroupName);
60-
// If your disk has zonal location uncomment these lines
61-
// try (DisksClient disksClient = DisksClient.create()) {
62-
// AddResourcePoliciesDiskRequest request =
63-
// AddResourcePoliciesDiskRequest.newBuilder()
64-
// .setDisk(diskName)
65-
// .setDisksAddResourcePoliciesRequestResource(
66-
// DisksAddResourcePoliciesRequest.newBuilder()
67-
// .addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
68-
// .build())
69-
// .setProject(project)
70-
// .setZone(location)
71-
// .build();
72-
73-
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
74-
AddResourcePoliciesRegionDiskRequest disksRequest =
75-
AddResourcePoliciesRegionDiskRequest.newBuilder()
76-
.setDisk(diskName)
77-
.setRegion(location)
78-
.setProject(project)
79-
.setRegionDisksAddResourcePoliciesRequestResource(
80-
RegionDisksAddResourcePoliciesRequest.newBuilder()
81-
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
82-
.build())
83-
.build();
84-
85-
Operation response = disksClient.addResourcePoliciesAsync(disksRequest).get();
86-
if (response.hasError()) {
87-
throw new Error("Error attaching disk to consistency group! " + response.getError());
55+
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
56+
project, consistencyGroupLocation, consistencyGroupName);
57+
Operation response;
58+
if (Character.isDigit(location.charAt(location.length() - 1))) {
59+
// Initialize client that will be used to send requests. This client only needs to be created
60+
// once, and can be reused for multiple requests.
61+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
62+
AddResourcePoliciesRegionDiskRequest request =
63+
AddResourcePoliciesRegionDiskRequest.newBuilder()
64+
.setDisk(diskName)
65+
.setRegion(location)
66+
.setProject(project)
67+
.setRegionDisksAddResourcePoliciesRequestResource(
68+
RegionDisksAddResourcePoliciesRequest.newBuilder()
69+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
70+
.build())
71+
.build();
72+
response = disksClient.addResourcePoliciesAsync(request).get();
8873
}
89-
System.out.println(disksClient.get(project, location, diskName).getResourcePoliciesList());
90-
return disksClient.get(project, location, diskName);
74+
} else {
75+
try (DisksClient disksClient = DisksClient.create()) {
76+
AddResourcePoliciesDiskRequest request =
77+
AddResourcePoliciesDiskRequest.newBuilder()
78+
.setDisk(diskName)
79+
.setZone(location)
80+
.setProject(project)
81+
.setDisksAddResourcePoliciesRequestResource(
82+
DisksAddResourcePoliciesRequest.newBuilder()
83+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
84+
.build())
85+
.build();
86+
response = disksClient.addResourcePoliciesAsync(request).get();
87+
}
88+
}
89+
if (response.hasError()) {
90+
throw new Error("Error adding disk to consistency group! " + response.getError());
9191
}
92+
return response.getStatus();
9293
}
9394
}
9495
// [END compute_consistency_group_add_disk]

compute/cloud-client/src/main/java/compute/disks/consistencygroup/ListDisksInConsistencyGroup.java

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@
1717
package compute.disks.consistencygroup;
1818

1919
// [START compute_consistency_group_list_disks]
20-
// If your disk has zonal location uncomment these lines
21-
//import com.google.cloud.compute.v1.ListDisksRequest;
22-
//import com.google.cloud.compute.v1.DisksClient;
2320
import com.google.cloud.compute.v1.Disk;
21+
import com.google.cloud.compute.v1.DisksClient;
22+
import com.google.cloud.compute.v1.ListDisksRequest;
2423
import com.google.cloud.compute.v1.ListRegionDisksRequest;
2524
import com.google.cloud.compute.v1.RegionDisksClient;
2625
import java.io.IOException;
@@ -52,33 +51,44 @@ public static List<Disk> listDisksInConsistencyGroup(String project, String cons
5251
.format("https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
5352
project, consistencyGroupLocation, consistencyGroupName);
5453
List<Disk> disksList = new ArrayList<>();
55-
//If your disk has zonal location uncomment these lines
56-
//try (DisksClient disksClient = DisksClient.create()) {
57-
// ListDisksRequest request =
58-
// ListDisksRequest.newBuilder()
59-
// .setProject(project)
60-
// .setZone(disksLocation)
61-
// .build();
62-
// DisksClient.ListPagedResponse response = disksClient.list(request);
6354

6455
// Filtering must be done manually for now, since list filtering
6556
// inside disksClient.list is not supported yet.
66-
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
67-
ListRegionDisksRequest request =
68-
ListRegionDisksRequest.newBuilder()
69-
.setProject(project)
70-
.setRegion(disksLocation)
71-
.build();
7257

73-
RegionDisksClient.ListPagedResponse response = disksClient.list(request);
58+
if (Character.isDigit(disksLocation.charAt(disksLocation.length() - 1))) {
59+
// Initialize client that will be used to send requests. This client only needs to be created
60+
// once, and can be reused for multiple requests.
61+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
62+
ListRegionDisksRequest request =
63+
ListRegionDisksRequest.newBuilder()
64+
.setProject(project)
65+
.setRegion(disksLocation)
66+
.build();
7467

75-
for (Disk disk : response.iterateAll()) {
76-
if (disk.getResourcePoliciesList().contains(filter)) {
77-
disksList.add(disk);
68+
RegionDisksClient.ListPagedResponse response = disksClient.list(request);
69+
for (Disk disk : response.iterateAll()) {
70+
if (disk.getResourcePoliciesList().contains(filter)) {
71+
disksList.add(disk);
72+
}
73+
}
74+
}
75+
} else {
76+
try (DisksClient disksClient = DisksClient.create()) {
77+
ListDisksRequest request =
78+
ListDisksRequest.newBuilder()
79+
.setProject(project)
80+
.setZone(disksLocation)
81+
.build();
82+
DisksClient.ListPagedResponse response = disksClient.list(request);
83+
84+
for (Disk disk : response.iterateAll()) {
85+
if (disk.getResourcePoliciesList().contains(filter)) {
86+
disksList.add(disk);
87+
}
7888
}
7989
}
80-
return disksList;
8190
}
91+
return disksList;
8292
}
8393
}
8494
// [END compute_consistency_group_list_disks]

compute/cloud-client/src/test/java/compute/disks/ConsistencyGroupIT.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import static com.google.common.truth.Truth.assertThat;
2020
import static com.google.common.truth.Truth.assertWithMessage;
21-
import static org.junit.Assert.assertNotNull;
2221
import static org.junit.Assert.assertTrue;
2322

2423
import com.google.cloud.compute.v1.Disk;
@@ -100,11 +99,10 @@ public void testCreateDiskConsistencyGroupResourcePolicy()
10099
@Order(2)
101100
public void testAddRegionalDiskToConsistencyGroup()
102101
throws IOException, ExecutionException, InterruptedException {
103-
Disk disk = AddDiskToConsistencyGroup.addDiskToConsistencyGroup(
104-
PROJECT_ID, REGION, DISK_NAME, CONSISTENCY_GROUP_NAME, REGION);
102+
Operation.Status status = AddDiskToConsistencyGroup.addDiskToConsistencyGroup(
103+
PROJECT_ID, REGION, DISK_NAME, CONSISTENCY_GROUP_NAME, REGION);
105104

106-
assertNotNull(disk);
107-
assertThat(disk.getResourcePoliciesList().get(0).contains(CONSISTENCY_GROUP_NAME));
105+
assertThat(status).isEqualTo(Operation.Status.DONE);
108106
}
109107

110108
@Test

0 commit comments

Comments
 (0)