Skip to content

Commit 604a8c7

Browse files
Fixed code, created test with mocked client
1 parent 6f219bb commit 604a8c7

File tree

5 files changed

+178
-160
lines changed

5 files changed

+178
-160
lines changed

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

Lines changed: 39 additions & 36 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,7 +29,6 @@
3129
import java.util.concurrent.ExecutionException;
3230

3331
public class AddDiskToConsistencyGroup {
34-
3532
public static void main(String[] args)
3633
throws IOException, ExecutionException, InterruptedException {
3734
// TODO(developer): Replace these variables before running the sample.
@@ -45,49 +42,55 @@ public static void main(String[] args)
4542
String consistencyGroupName = "CONSISTENCY_GROUP";
4643
// The region of the consistency group.
4744
String consistencyGroupLocation = "us-central1";
45+
4846
addDiskToConsistencyGroup(
4947
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
5048
}
5149

5250
// Adds a disk to a Consistency Group.
53-
public static Disk addDiskToConsistencyGroup(
51+
public static Operation.Status addDiskToConsistencyGroup(
5452
String project, String location, String diskName,
5553
String consistencyGroupName, String consistencyGroupLocation)
5654
throws IOException, ExecutionException, InterruptedException {
5755
String consistencyGroupUrl = String.format(
5856
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
5957
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-
return null;
58+
Operation response;
59+
if (Character.isDigit(location.charAt(location.length() - 1))) {
60+
// Initialize client that will be used to send requests. This client only needs to be created
61+
// once, and can be reused for multiple requests.
62+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
63+
AddResourcePoliciesRegionDiskRequest request =
64+
AddResourcePoliciesRegionDiskRequest.newBuilder()
65+
.setDisk(diskName)
66+
.setRegion(location)
67+
.setProject(project)
68+
.setRegionDisksAddResourcePoliciesRequestResource(
69+
RegionDisksAddResourcePoliciesRequest.newBuilder()
70+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
71+
.build())
72+
.build();
73+
response = disksClient.addResourcePoliciesAsync(request).get();
74+
}
75+
} else {
76+
try (DisksClient disksClient = DisksClient.create()) {
77+
AddResourcePoliciesDiskRequest request =
78+
AddResourcePoliciesDiskRequest.newBuilder()
79+
.setDisk(diskName)
80+
.setZone(location)
81+
.setProject(project)
82+
.setDisksAddResourcePoliciesRequestResource(
83+
DisksAddResourcePoliciesRequest.newBuilder()
84+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
85+
.build())
86+
.build();
87+
response = disksClient.addResourcePoliciesAsync(request).get();
8888
}
89-
return disksClient.get(project, location, diskName);
9089
}
90+
if (response.hasError()) {
91+
throw new Error("Error adding disk to consistency group! " + response.getError());
92+
}
93+
return response.getStatus();
9194
}
9295
}
9396
// [END compute_consistency_group_add_disk]

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ public static void main(String[] args)
3939
}
4040

4141
// Creates a new disk consistency group resource policy in the specified project and region.
42-
// Return a link to the consistency group.
43-
public static String createDiskConsistencyGroup(
42+
public static Operation.Status createDiskConsistencyGroup(
4443
String project, String region, String consistencyGroupName)
4544
throws IOException, ExecutionException, InterruptedException {
4645
// Initialize client that will be used to send requests. This client only needs to be created
@@ -58,9 +57,9 @@ public static String createDiskConsistencyGroup(
5857
regionResourcePoliciesClient.insertAsync(project, region, resourcePolicy).get();
5958

6059
if (response.hasError()) {
61-
return null;
60+
throw new Error("Error creating consistency group! " + response.getError());
6261
}
63-
return regionResourcePoliciesClient.get(project, region, consistencyGroupName).getSelfLink();
62+
return response.getStatus();
6463
}
6564
}
6665
}

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,20 @@ public static void main(String[] args)
3838
}
3939

4040
// Deletes a disk consistency group resource policy in the specified project and region.
41-
public static void deleteDiskConsistencyGroup(
41+
public static Operation.Status deleteDiskConsistencyGroup(
4242
String project, String region, String consistencyGroupName)
4343
throws IOException, ExecutionException, InterruptedException {
4444
// Initialize client that will be used to send requests. This client only needs to be created
4545
// once, and can be reused for multiple requests.
46-
try (ResourcePoliciesClient regionResourcePoliciesClient = ResourcePoliciesClient.create()) {
47-
Operation response = regionResourcePoliciesClient
46+
try (ResourcePoliciesClient resourcePoliciesClient = ResourcePoliciesClient.create()) {
47+
Operation response = resourcePoliciesClient
4848
.deleteAsync(project, region, consistencyGroupName).get();
4949

5050
if (response.hasError()) {
51-
return;
51+
throw new Error("Error deleting disk! " + response.getError());
5252
}
53-
System.out.println(
54-
"Disk consistency group resource policy deleted successfully: "
55-
+ consistencyGroupName);
53+
return response.getStatus();
5654
}
5755
}
5856
}
59-
// [END compute_consistency_group_delete]
57+
// [END compute_consistency_group_delete]

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

Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717
package compute.disks.consistencygroup;
1818

1919
// [START compute_consistency_group_remove_disk]
20-
import com.google.cloud.compute.v1.Disk;
20+
import com.google.cloud.compute.v1.DisksClient;
21+
import com.google.cloud.compute.v1.DisksRemoveResourcePoliciesRequest;
2122
import com.google.cloud.compute.v1.Operation;
2223
import com.google.cloud.compute.v1.RegionDisksClient;
2324
import com.google.cloud.compute.v1.RegionDisksRemoveResourcePoliciesRequest;
25+
import com.google.cloud.compute.v1.RemoveResourcePoliciesDiskRequest;
2426
import com.google.cloud.compute.v1.RemoveResourcePoliciesRegionDiskRequest;
25-
// If your disk has zonal location uncomment these lines
26-
//import com.google.cloud.compute.v1.DisksClient;
27-
//import com.google.cloud.compute.v1.DisksRemoveResourcePoliciesRequest;
28-
//import com.google.cloud.compute.v1.RemoveResourcePoliciesDiskRequest;
2927
import java.io.IOException;
3028
import java.util.Arrays;
3129
import java.util.concurrent.ExecutionException;
@@ -45,49 +43,56 @@ public static void main(String[] args)
4543
String consistencyGroupName = "CONSISTENCY_GROUP";
4644
// The region of the consistency group.
4745
String consistencyGroupLocation = "us-central1";
46+
4847
removeDiskFromConsistencyGroup(
4948
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
5049
}
5150

5251
// Removes a disk from a Consistency Group.
53-
public static Disk removeDiskFromConsistencyGroup(
52+
public static Operation.Status removeDiskFromConsistencyGroup(
5453
String project, String location, String diskName,
5554
String consistencyGroupName, String consistencyGroupLocation)
5655
throws IOException, ExecutionException, InterruptedException {
5756
String consistencyGroupUrl = String.format(
5857
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
5958
project, consistencyGroupLocation, consistencyGroupName);
60-
// If your disk has zonal location uncomment these lines
61-
// try (DisksClient disksClient = DisksClient.create()) {
62-
// RemoveResourcePoliciesDiskRequest request =
63-
// RemoveResourcePoliciesDiskRequest.newBuilder()
64-
// .setDisk(diskName)
65-
// .setDisksRemoveResourcePoliciesRequestResource(
66-
// DisksRemoveResourcePoliciesRequest.newBuilder()
67-
// .addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
68-
// .build())
69-
// .setProject(project)
70-
// .setZone(location)
71-
// .build();
72-
73-
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
74-
RemoveResourcePoliciesRegionDiskRequest disksRequest =
75-
RemoveResourcePoliciesRegionDiskRequest.newBuilder()
76-
.setDisk(diskName)
77-
.setRegion(location)
78-
.setProject(project)
79-
.setRegionDisksRemoveResourcePoliciesRequestResource(
80-
RegionDisksRemoveResourcePoliciesRequest.newBuilder()
81-
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
82-
.build())
83-
.build();
59+
Operation response;
60+
if (Character.isDigit(location.charAt(location.length() - 1))) {
61+
// Initialize client that will be used to send requests. This client only needs to be created
62+
// once, and can be reused for multiple requests.
63+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
64+
RemoveResourcePoliciesRegionDiskRequest request =
65+
RemoveResourcePoliciesRegionDiskRequest.newBuilder()
66+
.setDisk(diskName)
67+
.setRegion(location)
68+
.setProject(project)
69+
.setRegionDisksRemoveResourcePoliciesRequestResource(
70+
RegionDisksRemoveResourcePoliciesRequest.newBuilder()
71+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
72+
.build())
73+
.build();
8474

85-
Operation response = disksClient.removeResourcePoliciesAsync(disksRequest).get();
86-
if (response.hasError()) {
87-
return null;
75+
response = disksClient.removeResourcePoliciesAsync(request).get();
8876
}
89-
return disksClient.get(project, location, diskName);
77+
} else {
78+
try (DisksClient disksClient = DisksClient.create()) {
79+
RemoveResourcePoliciesDiskRequest request =
80+
RemoveResourcePoliciesDiskRequest.newBuilder()
81+
.setDisk(diskName)
82+
.setZone(location)
83+
.setProject(project)
84+
.setDisksRemoveResourcePoliciesRequestResource(
85+
DisksRemoveResourcePoliciesRequest.newBuilder()
86+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
87+
.build())
88+
.build();
89+
response = disksClient.removeResourcePoliciesAsync(request).get();
90+
}
91+
}
92+
if (response.hasError()) {
93+
throw new Error("Error removing disk from consistency group! " + response.getError());
9094
}
95+
return response.getStatus();
9196
}
9297
}
93-
// [END compute_consistency_group_remove_disk]
98+
// [END compute_consistency_group_remove_disk]

0 commit comments

Comments
 (0)