1+ package compute .disks .consistencygroup ;
2+
3+ // [START compute_consistency_group_add_disk]
4+ import com .google .cloud .compute .v1 .Disk ;
5+ import com .google .cloud .compute .v1 .DisksAddResourcePoliciesRequest ;
6+ import com .google .cloud .compute .v1 .DisksClient ;
7+ import com .google .cloud .compute .v1 .Operation ;
8+ import com .google .cloud .compute .v1 .RegionDisksAddResourcePoliciesRequest ;
9+ import com .google .cloud .compute .v1 .RegionDisksClient ;
10+ import java .io .IOException ;
11+ import java .util .Arrays ;
12+ import java .util .concurrent .ExecutionException ;
13+
14+ public class AddDiskToConsistencyGroup {
15+
16+ public static void main (String [] args )
17+ throws IOException , ExecutionException , InterruptedException {
18+ // TODO(developer): Replace these variables before running the sample.
19+ String project = "tyaho-softserve-project" ;//"YOUR_PROJECT_ID";
20+ String locationFlag = "zone" ;
21+ String location = "us-central1-a" ;
22+ String diskName = "disk-name" ;//"DISK_NAME";
23+ String consistencyGroup = "my-group" ;//"CONSISTENCY_GROUP";
24+
25+ addResourcePoliciesToDisk (project , locationFlag , location , diskName , consistencyGroup );
26+ }
27+
28+ // Adds a resource policy to a disk.
29+ public static Disk addResourcePoliciesToDisk (
30+ String project , String locationFlag , String location , String diskName ,
31+ String consistencyGroup )
32+ throws IOException , ExecutionException , InterruptedException {
33+ String consistencyGroupUrl = String .format (
34+ "https://www.googleapis.com/compute/v1/projects/%s/regions/%s/resourcePolicies/%s" ,
35+ project , location , consistencyGroup );
36+ if (locationFlag .equals ("zone" )) {
37+ try (DisksClient disksClient = DisksClient .create ()) {
38+ DisksAddResourcePoliciesRequest disksRequest =
39+ DisksAddResourcePoliciesRequest .newBuilder ()
40+ .addAllResourcePolicies (Arrays .asList (consistencyGroupUrl ))
41+ .build ();
42+
43+ Operation response = disksClient .addResourcePoliciesAsync (
44+ project , location , diskName ,disksRequest ).get ();
45+ if (response .hasError ()) {
46+ return null ;
47+ }
48+ return disksClient .get (project , location , diskName );
49+ }
50+ } else if (locationFlag .equals ("region" )) {
51+ try (RegionDisksClient regionDisksClient = RegionDisksClient .create ()) {
52+ RegionDisksAddResourcePoliciesRequest disksRequest =
53+ RegionDisksAddResourcePoliciesRequest .newBuilder ()
54+ .addAllResourcePolicies (Arrays .asList (consistencyGroupUrl ))
55+ .build ();
56+ Operation response = regionDisksClient .addResourcePoliciesAsync (
57+ project , location , diskName ,disksRequest ).get ();
58+ if (response .hasError ()) {
59+ return null ;
60+ }
61+ return regionDisksClient .get (project , location , diskName );
62+ }
63+ } else {
64+ System .out .println ("Invalid location flag. Use 'zone' or 'region'." );
65+ }
66+ return null ;
67+ }
68+ }
69+ // [END compute_consistency_group_add_disk]
0 commit comments