1717package compute .disks .consistencygroup ;
1818
1919// [START compute_consistency_group_add_disk]
20+ import com .google .cloud .compute .v1 .AddResourcePoliciesDiskRequest ;
2021import 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 ;
2624import com .google .cloud .compute .v1 .Operation ;
2725import com .google .cloud .compute .v1 .RegionDisksAddResourcePoliciesRequest ;
2826import com .google .cloud .compute .v1 .RegionDisksClient ;
3129import java .util .concurrent .ExecutionException ;
3230
3331public 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]
0 commit comments