Skip to content

Commit 2c9b306

Browse files
Added check for zonal location and code
1 parent 00d0b60 commit 2c9b306

File tree

4 files changed

+133
-117
lines changed

4 files changed

+133
-117
lines changed

compute/cloud-client/src/main/java/compute/disks/StartDiskReplication.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@
1717
package compute.disks;
1818

1919
// [START compute_disk_start_replication]
20-
// Uncomment this line if your disk has zonal location.
21-
// import com.google.cloud.compute.v1.DisksClient;
22-
// import com.google.cloud.compute.v1.DisksStartAsyncReplicationRequest;
20+
import com.google.cloud.compute.v1.DisksClient;
21+
import com.google.cloud.compute.v1.DisksStartAsyncReplicationRequest;
2322
import com.google.cloud.compute.v1.Operation;
2423
import com.google.cloud.compute.v1.RegionDisksClient;
2524
import com.google.cloud.compute.v1.RegionDisksStartAsyncReplicationRequest;
@@ -57,31 +56,33 @@ public static Operation.Status startDiskAsyncReplication(String primaryProjectId
5756
throws IOException, ExecutionException, InterruptedException {
5857
String secondaryDiskPath = String.format("projects/%s/regions/%s/disks/%s",
5958
secondaryProjectId, secondaryDiskLocation, secondaryDiskName);
59+
Operation response;
60+
if (Character.isDigit(primaryDiskLocation.charAt(primaryDiskLocation.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 regionDisksClient = RegionDisksClient.create()) {
64+
RegionDisksStartAsyncReplicationRequest replicationRequest =
65+
RegionDisksStartAsyncReplicationRequest.newBuilder()
66+
.setAsyncSecondaryDisk(secondaryDiskPath)
67+
.build();
6068

61-
// Uncomment these lines if your disk has zonal location.
62-
// try (DisksClient disksClient = DisksClient.create()) {
63-
// DisksStartAsyncReplicationRequest startAsyncReplicationRequest =
64-
// DisksStartAsyncReplicationRequest.newBuilder()
65-
// .setAsyncSecondaryDisk(secondaryDiskPath)
66-
// .build();
67-
68-
// Initialize client that will be used to send requests. This client only needs to be created
69-
// once, and can be reused for multiple requests.
70-
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
71-
72-
RegionDisksStartAsyncReplicationRequest replicationRequest =
73-
RegionDisksStartAsyncReplicationRequest.newBuilder()
74-
.setAsyncSecondaryDisk(secondaryDiskPath)
75-
.build();
76-
77-
Operation response = disksClient.startAsyncReplicationAsync(
78-
primaryProjectId, primaryDiskLocation, primaryDiskName, replicationRequest).get();
79-
80-
if (response.hasError()) {
81-
throw new Error("Error starting disk replication! " + response.getError());
69+
response = regionDisksClient.startAsyncReplicationAsync(
70+
primaryProjectId, primaryDiskLocation, primaryDiskName, replicationRequest).get();
71+
}
72+
} else {
73+
try (DisksClient disksClient = DisksClient.create()) {
74+
DisksStartAsyncReplicationRequest replicationRequest =
75+
DisksStartAsyncReplicationRequest.newBuilder()
76+
.setAsyncSecondaryDisk(secondaryDiskPath)
77+
.build();
78+
response = disksClient.startAsyncReplicationAsync(
79+
primaryProjectId, primaryDiskLocation, primaryDiskName, replicationRequest).get();
8280
}
83-
return response.getStatus();
8481
}
82+
if (response.hasError()) {
83+
throw new Error("Error starting disk replication! " + response.getError());
84+
}
85+
return response.getStatus();
8586
}
8687
}
8788
// [END compute_disk_start_replication]

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

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +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-
// If your disk has zonal location uncomment these lines
22-
//import com.google.cloud.compute.v1.AddResourcePoliciesDiskRequest;
23-
//import com.google.cloud.compute.v1.DisksAddResourcePoliciesRequest;
24-
//import com.google.cloud.compute.v1.DisksClient;
22+
import com.google.cloud.compute.v1.DisksAddResourcePoliciesRequest;
23+
import com.google.cloud.compute.v1.DisksClient;
2524
import com.google.cloud.compute.v1.Operation;
2625
import com.google.cloud.compute.v1.RegionDisksAddResourcePoliciesRequest;
2726
import com.google.cloud.compute.v1.RegionDisksClient;
@@ -55,39 +54,42 @@ public static Operation.Status addDiskToConsistencyGroup(
5554
String consistencyGroupUrl = String.format(
5655
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
5756
project, consistencyGroupLocation, consistencyGroupName);
58-
// If your disk has zonal location uncomment these lines
59-
// try (DisksClient disksClient = DisksClient.create()) {
60-
// AddResourcePoliciesDiskRequest request =
61-
// AddResourcePoliciesDiskRequest.newBuilder()
62-
// .setDisk(diskName)
63-
// .setZone(location)
64-
// .setProject(project)
65-
// .setDisksAddResourcePoliciesRequestResource(
66-
// DisksAddResourcePoliciesRequest.newBuilder()
67-
// .addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
68-
// .build())
69-
// .build();
70-
71-
// Initialize client that will be used to send requests. This client only needs to be created
72-
// once, and can be reused for multiple requests.
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 adding disk to consistency group! " + response.getError());
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-
return response.getStatus();
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());
9091
}
92+
return response.getStatus();
9193
}
9294
}
9395
// [END compute_consistency_group_add_disk]

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

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

1919
// [START compute_consistency_group_clone]
20-
// If your disk has zonal location uncomment these lines
21-
//import com.google.cloud.compute.v1.DisksClient;
22-
//import com.google.cloud.compute.v1.BulkInsertDiskRequest;
20+
import com.google.cloud.compute.v1.BulkInsertDiskRequest;
2321
import com.google.cloud.compute.v1.BulkInsertDiskResource;
2422
import com.google.cloud.compute.v1.BulkInsertRegionDiskRequest;
23+
import com.google.cloud.compute.v1.DisksClient;
2524
import com.google.cloud.compute.v1.Operation;
2625
import com.google.cloud.compute.v1.RegionDisksClient;
2726
import java.io.IOException;
@@ -54,30 +53,40 @@ public static Operation.Status cloneDisksFromConsistencyGroup(String project,
5453
String sourceConsistencyGroupPolicy = String.format(
5554
"projects/%s/regions/%s/resourcePolicies/%s", project, consistencyGroupLocation,
5655
consistencyGroupName);
57-
// Initialize client that will be used to send requests. This client only needs to be created
58-
// once, and can be reused for multiple requests.
56+
Operation response;
57+
if (Character.isDigit(disksLocation.charAt(disksLocation.length() - 1))) {
58+
// Initialize client that will be used to send requests. This client only needs to be created
59+
// once, and can be reused for multiple requests.
60+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
61+
BulkInsertRegionDiskRequest request = BulkInsertRegionDiskRequest.newBuilder()
62+
.setProject(project)
63+
.setRegion(disksLocation)
64+
.setBulkInsertDiskResourceResource(
65+
BulkInsertDiskResource.newBuilder()
66+
.setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
67+
.build())
68+
.build();
5969

60-
// Use this client if your disk has zonal location.
61-
//try (DisksClient disksClient = DisksClient.create()){
62-
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
63-
BulkInsertRegionDiskRequest request = BulkInsertRegionDiskRequest.newBuilder()
64-
.setProject(project)
65-
.setRegion(disksLocation)
66-
// Set the zone if your disk has zonal location instead of region.
67-
// .setZone(disksLocation)
68-
.setBulkInsertDiskResourceResource(
69-
BulkInsertDiskResource.newBuilder()
70-
.setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
71-
.build())
72-
.build();
73-
74-
Operation response = disksClient.bulkInsertAsync(request).get(3, TimeUnit.MINUTES);
70+
response = disksClient.bulkInsertAsync(request).get(3, TimeUnit.MINUTES);
71+
}
72+
} else {
73+
try (DisksClient disksClient = DisksClient.create()) {
74+
BulkInsertDiskRequest request = BulkInsertDiskRequest.newBuilder()
75+
.setProject(project)
76+
.setZone(disksLocation)
77+
.setBulkInsertDiskResourceResource(
78+
BulkInsertDiskResource.newBuilder()
79+
.setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
80+
.build())
81+
.build();
7582

76-
if (response.hasError()) {
77-
throw new Error("Error cloning disks! " + response.getError());
83+
response = disksClient.bulkInsertAsync(request).get(3, TimeUnit.MINUTES);
7884
}
79-
return response.getStatus();
8085
}
86+
if (response.hasError()) {
87+
throw new Error("Error cloning disks! " + response.getError());
88+
}
89+
return response.getStatus();
8190
}
8291
}
8392
// [END compute_consistency_group_clone]

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

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

1919
// [START compute_consistency_group_remove_disk]
20+
import com.google.cloud.compute.v1.DisksClient;
21+
import com.google.cloud.compute.v1.DisksRemoveResourcePoliciesRequest;
2022
import com.google.cloud.compute.v1.Operation;
2123
import com.google.cloud.compute.v1.RegionDisksClient;
2224
import com.google.cloud.compute.v1.RegionDisksRemoveResourcePoliciesRequest;
25+
import com.google.cloud.compute.v1.RemoveResourcePoliciesDiskRequest;
2326
import com.google.cloud.compute.v1.RemoveResourcePoliciesRegionDiskRequest;
24-
// If your disk has zonal location uncomment these lines
25-
//import com.google.cloud.compute.v1.DisksClient;
26-
//import com.google.cloud.compute.v1.DisksRemoveResourcePoliciesRequest;
27-
//import com.google.cloud.compute.v1.RemoveResourcePoliciesDiskRequest;
2827
import java.io.IOException;
2928
import java.util.Arrays;
3029
import java.util.concurrent.ExecutionException;
@@ -44,6 +43,7 @@ public static void main(String[] args)
4443
String consistencyGroupName = "CONSISTENCY_GROUP";
4544
// The region of the consistency group.
4645
String consistencyGroupLocation = "us-central1";
46+
4747
removeDiskFromConsistencyGroup(
4848
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
4949
}
@@ -56,39 +56,43 @@ public static Operation.Status removeDiskFromConsistencyGroup(
5656
String consistencyGroupUrl = String.format(
5757
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
5858
project, consistencyGroupLocation, consistencyGroupName);
59-
// If your disk has zonal location uncomment these lines
60-
// try (DisksClient disksClient = DisksClient.create()) {
61-
// RemoveResourcePoliciesDiskRequest request =
62-
// RemoveResourcePoliciesDiskRequest.newBuilder()
63-
// .setDisk(diskName)
64-
// .setZone(location)
65-
// .setProject(project)
66-
// .setDisksRemoveResourcePoliciesRequestResource(
67-
// DisksRemoveResourcePoliciesRequest.newBuilder()
68-
// .addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
69-
// .build())
70-
// .build();
71-
72-
// Initialize client that will be used to send requests. This client only needs to be created
73-
// once, and can be reused for multiple requests.
74-
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
75-
RemoveResourcePoliciesRegionDiskRequest disksRequest =
76-
RemoveResourcePoliciesRegionDiskRequest.newBuilder()
77-
.setDisk(diskName)
78-
.setRegion(location)
79-
.setProject(project)
80-
.setRegionDisksRemoveResourcePoliciesRequestResource(
81-
RegionDisksRemoveResourcePoliciesRequest.newBuilder()
82-
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
83-
.build())
84-
.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();
8574

86-
Operation response = disksClient.removeResourcePoliciesAsync(disksRequest).get();
87-
if (response.hasError()) {
88-
throw new Error("Error removing disk from consistency group! " + response.getError());
75+
response = disksClient.removeResourcePoliciesAsync(request).get();
8976
}
90-
return response.getStatus();
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());
9194
}
95+
return response.getStatus();
9296
}
9397
}
9498
// [END compute_consistency_group_remove_disk]

0 commit comments

Comments
 (0)