Skip to content

Commit 06f0bde

Browse files
Resolved merge conflict
2 parents 474cf47 + 0b5e7fd commit 06f0bde

File tree

8 files changed

+410
-207
lines changed

8 files changed

+410
-207
lines changed

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

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,33 @@
2727
import java.io.IOException;
2828
import java.util.Arrays;
2929
import java.util.concurrent.ExecutionException;
30+
import java.util.concurrent.TimeUnit;
31+
import java.util.concurrent.TimeoutException;
3032

3133
public class AddDiskToConsistencyGroup {
3234
public static void main(String[] args)
33-
throws IOException, ExecutionException, InterruptedException {
35+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
3436
// TODO(developer): Replace these variables before running the sample.
35-
// The project that contains the disk.
37+
// Project ID or project number of the Cloud project that contains the disk.
3638
String project = "YOUR_PROJECT_ID";
37-
// The zone or region of the disk.
39+
// Zone or region of the disk.
3840
String location = "us-central1";
39-
// The name of the disk.
41+
// Name of the disk.
4042
String diskName = "DISK_NAME";
41-
// The name of the consistency group.
43+
// Name of the consistency group.
4244
String consistencyGroupName = "CONSISTENCY_GROUP";
43-
// The region of the consistency group.
45+
// Region of the consistency group.
4446
String consistencyGroupLocation = "us-central1";
4547

4648
addDiskToConsistencyGroup(
4749
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
4850
}
4951

50-
// Adds a disk to a Consistency Group.
52+
// Adds a disk to a consistency group.
5153
public static Operation.Status addDiskToConsistencyGroup(
5254
String project, String location, String diskName,
5355
String consistencyGroupName, String consistencyGroupLocation)
54-
throws IOException, ExecutionException, InterruptedException {
56+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
5557
String consistencyGroupUrl = String.format(
5658
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
5759
project, consistencyGroupLocation, consistencyGroupName);
@@ -62,29 +64,29 @@ public static Operation.Status addDiskToConsistencyGroup(
6264
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
6365
AddResourcePoliciesRegionDiskRequest request =
6466
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();
67+
.setDisk(diskName)
68+
.setRegion(location)
69+
.setProject(project)
70+
.setRegionDisksAddResourcePoliciesRequestResource(
71+
RegionDisksAddResourcePoliciesRequest.newBuilder()
72+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
73+
.build())
74+
.build();
75+
response = disksClient.addResourcePoliciesAsync(request).get(1, TimeUnit.MINUTES);
7476
}
7577
} else {
7678
try (DisksClient disksClient = DisksClient.create()) {
7779
AddResourcePoliciesDiskRequest request =
7880
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();
81+
.setDisk(diskName)
82+
.setZone(location)
83+
.setProject(project)
84+
.setDisksAddResourcePoliciesRequestResource(
85+
DisksAddResourcePoliciesRequest.newBuilder()
86+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
87+
.build())
88+
.build();
89+
response = disksClient.addResourcePoliciesAsync(request).get(1, TimeUnit.MINUTES);
8890
}
8991
}
9092
if (response.hasError()) {
Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@
1717
package compute.disks.consistencygroup;
1818

1919
// [START compute_consistency_group_create]
20+
import com.google.cloud.compute.v1.InsertResourcePolicyRequest;
2021
import com.google.cloud.compute.v1.Operation;
2122
import com.google.cloud.compute.v1.ResourcePoliciesClient;
2223
import com.google.cloud.compute.v1.ResourcePolicy;
2324
import java.io.IOException;
2425
import java.util.concurrent.ExecutionException;
26+
import java.util.concurrent.TimeUnit;
27+
import java.util.concurrent.TimeoutException;
2528

26-
public class CreateDiskConsistencyGroup {
29+
public class CreateConsistencyGroup {
2730

2831
public static void main(String[] args)
29-
throws IOException, ExecutionException, InterruptedException {
32+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
3033
// TODO(developer): Replace these variables before running the sample.
3134
// Project ID or project number of the Cloud project you want to use.
3235
String project = "YOUR_PROJECT_ID";
@@ -35,13 +38,13 @@ public static void main(String[] args)
3538
// Name of the consistency group you want to create.
3639
String consistencyGroupName = "YOUR_CONSISTENCY_GROUP_NAME";
3740

38-
createDiskConsistencyGroup(project, region, consistencyGroupName);
41+
createConsistencyGroup(project, region, consistencyGroupName);
3942
}
4043

41-
// Creates a new disk consistency group resource policy in the specified project and region.
42-
public static Operation.Status createDiskConsistencyGroup(
44+
// Creates a new consistency group resource policy in the specified project and region.
45+
public static Operation.Status createConsistencyGroup(
4346
String project, String region, String consistencyGroupName)
44-
throws IOException, ExecutionException, InterruptedException {
47+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
4548
// Initialize client that will be used to send requests. This client only needs to be created
4649
// once, and can be reused for multiple requests.
4750
try (ResourcePoliciesClient regionResourcePoliciesClient = ResourcePoliciesClient.create()) {
@@ -53,8 +56,14 @@ public static Operation.Status createDiskConsistencyGroup(
5356
ResourcePolicy.newBuilder().getDiskConsistencyGroupPolicy())
5457
.build();
5558

59+
InsertResourcePolicyRequest request = InsertResourcePolicyRequest.newBuilder()
60+
.setProject(project)
61+
.setRegion(region)
62+
.setResourcePolicyResource(resourcePolicy)
63+
.build();
64+
5665
Operation response =
57-
regionResourcePoliciesClient.insertAsync(project, region, resourcePolicy).get();
66+
regionResourcePoliciesClient.insertAsync(request).get(1, TimeUnit.MINUTES);
5867

5968
if (response.hasError()) {
6069
throw new Error("Error creating consistency group! " + response.getError());
@@ -63,4 +72,4 @@ public static Operation.Status createDiskConsistencyGroup(
6372
}
6473
}
6574
}
66-
// [END compute_consistency_group_create]
75+
// [END compute_consistency_group_create]
Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,33 @@
2121
import com.google.cloud.compute.v1.ResourcePoliciesClient;
2222
import java.io.IOException;
2323
import java.util.concurrent.ExecutionException;
24+
import java.util.concurrent.TimeUnit;
25+
import java.util.concurrent.TimeoutException;
2426

25-
public class DeleteDiskConsistencyGroup {
27+
public class DeleteConsistencyGroup {
2628

2729
public static void main(String[] args)
28-
throws IOException, ExecutionException, InterruptedException {
30+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
2931
// TODO(developer): Replace these variables before running the sample.
3032
// Project ID or project number of the Cloud project you want to use.
3133
String project = "YOUR_PROJECT_ID";
32-
// Name of the region in which your consistency group is located.
34+
// Region in which your consistency group is located.
3335
String region = "us-central1";
3436
// Name of the consistency group you want to delete.
3537
String consistencyGroupName = "YOUR_CONSISTENCY_GROUP_NAME";
3638

37-
deleteDiskConsistencyGroup(project, region, consistencyGroupName);
39+
deleteConsistencyGroup(project, region, consistencyGroupName);
3840
}
3941

40-
// Deletes a disk consistency group resource policy in the specified project and region.
41-
public static Operation.Status deleteDiskConsistencyGroup(
42+
// Deletes a consistency group resource policy in the specified project and region.
43+
public static Operation.Status deleteConsistencyGroup(
4244
String project, String region, String consistencyGroupName)
43-
throws IOException, ExecutionException, InterruptedException {
45+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
4446
// Initialize client that will be used to send requests. This client only needs to be created
4547
// once, and can be reused for multiple requests.
4648
try (ResourcePoliciesClient resourcePoliciesClient = ResourcePoliciesClient.create()) {
4749
Operation response = resourcePoliciesClient
48-
.deleteAsync(project, region, consistencyGroupName).get();
50+
.deleteAsync(project, region, consistencyGroupName).get(1, TimeUnit.MINUTES);
4951

5052
if (response.hasError()) {
5153
throw new Error("Error deleting disk! " + response.getError());
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*
2+
* Copyright 2024 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package compute.disks.consistencygroup;
18+
19+
// [START compute_consistency_group_remove_disk]
20+
import com.google.cloud.compute.v1.DisksClient;
21+
import com.google.cloud.compute.v1.DisksRemoveResourcePoliciesRequest;
22+
import com.google.cloud.compute.v1.Operation;
23+
import com.google.cloud.compute.v1.RegionDisksClient;
24+
import com.google.cloud.compute.v1.RegionDisksRemoveResourcePoliciesRequest;
25+
import com.google.cloud.compute.v1.RemoveResourcePoliciesDiskRequest;
26+
import com.google.cloud.compute.v1.RemoveResourcePoliciesRegionDiskRequest;
27+
import java.io.IOException;
28+
import java.util.Arrays;
29+
import java.util.concurrent.ExecutionException;
30+
import java.util.concurrent.TimeUnit;
31+
import java.util.concurrent.TimeoutException;
32+
33+
public class RemoveDiskFromConsistencyGroup {
34+
35+
public static void main(String[] args)
36+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
37+
// TODO(developer): Replace these variables before running the sample.
38+
// Project ID or project number of the Cloud project that contains the disk.
39+
String project = "YOUR_PROJECT_ID";
40+
// Zone or region of the disk.
41+
String location = "us-central1";
42+
// Name of the disk.
43+
String diskName = "DISK_NAME";
44+
// Name of the consistency group.
45+
String consistencyGroupName = "CONSISTENCY_GROUP";
46+
// Region of the consistency group.
47+
String consistencyGroupLocation = "us-central1";
48+
49+
removeDiskFromConsistencyGroup(
50+
project, location, diskName, consistencyGroupName, consistencyGroupLocation);
51+
}
52+
53+
// Removes a disk from a consistency group.
54+
public static Operation.Status removeDiskFromConsistencyGroup(
55+
String project, String location, String diskName,
56+
String consistencyGroupName, String consistencyGroupLocation)
57+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
58+
String consistencyGroupUrl = String.format(
59+
"https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s",
60+
project, consistencyGroupLocation, consistencyGroupName);
61+
Operation response;
62+
if (Character.isDigit(location.charAt(location.length() - 1))) {
63+
// Initialize client that will be used to send requests. This client only needs to be created
64+
// once, and can be reused for multiple requests.
65+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
66+
RemoveResourcePoliciesRegionDiskRequest request =
67+
RemoveResourcePoliciesRegionDiskRequest.newBuilder()
68+
.setDisk(diskName)
69+
.setRegion(location)
70+
.setProject(project)
71+
.setRegionDisksRemoveResourcePoliciesRequestResource(
72+
RegionDisksRemoveResourcePoliciesRequest.newBuilder()
73+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
74+
.build())
75+
.build();
76+
77+
response = disksClient.removeResourcePoliciesAsync(request).get(1, TimeUnit.MINUTES);
78+
}
79+
} else {
80+
try (DisksClient disksClient = DisksClient.create()) {
81+
RemoveResourcePoliciesDiskRequest request =
82+
RemoveResourcePoliciesDiskRequest.newBuilder()
83+
.setDisk(diskName)
84+
.setZone(location)
85+
.setProject(project)
86+
.setDisksRemoveResourcePoliciesRequestResource(
87+
DisksRemoveResourcePoliciesRequest.newBuilder()
88+
.addAllResourcePolicies(Arrays.asList(consistencyGroupUrl))
89+
.build())
90+
.build();
91+
response = disksClient.removeResourcePoliciesAsync(request).get(1, TimeUnit.MINUTES);
92+
}
93+
}
94+
if (response.hasError()) {
95+
throw new Error("Error removing disk from consistency group! " + response.getError());
96+
}
97+
return response.getStatus();
98+
}
99+
}
100+
// [END compute_consistency_group_remove_disk]

0 commit comments

Comments
 (0)