Skip to content

Commit 5ec0411

Browse files
Added clean up method for regional disks, added comments
1 parent ba07c6f commit 5ec0411

File tree

3 files changed

+41
-22
lines changed

3 files changed

+41
-22
lines changed

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -55,32 +55,32 @@ public static void cloneDisksFromConsistencyGroup(String project, String disksLo
5555
"projects/%s/regions/%s/resourcePolicies/%s", project, consistencyGroupLocation,
5656
consistencyGroupName);
5757

58+
// If your disk has zonal location uncomment this code
5859
//try (DisksClient disksClient = DisksClient.create()){
5960
// BulkInsertDiskRequest request = BulkInsertDiskRequest.newBuilder()
60-
// .setProject(project)
61-
// .setZone(disksLocation)
62-
// .setBulkInsertDiskResourceResource(
63-
// BulkInsertDiskResource.newBuilder()
64-
// .setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
65-
// .build())
66-
// .build();
61+
// .setProject(project)
62+
// .setZone(disksLocation)
63+
// .setBulkInsertDiskResourceResource(
64+
// BulkInsertDiskResource.newBuilder()
65+
// .setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
66+
// .build())
67+
// .build();
6768
//Operation response = disksClient.bulkInsertAsync(request).get(3, TimeUnit.MINUTES);
6869

69-
7070
try (RegionDisksClient regionDisksClient = RegionDisksClient.create()) {
7171
BulkInsertRegionDiskRequest request = BulkInsertRegionDiskRequest.newBuilder()
72-
.setProject(project)
73-
.setRegion(disksLocation)
74-
.setBulkInsertDiskResourceResource(
75-
BulkInsertDiskResource.newBuilder()
76-
.setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
77-
.build())
78-
.build();
72+
.setProject(project)
73+
.setRegion(disksLocation)
74+
.setBulkInsertDiskResourceResource(
75+
BulkInsertDiskResource.newBuilder()
76+
.setSourceConsistencyGroupPolicy(sourceConsistencyGroupPolicy)
77+
.build())
78+
.build();
7979

8080
Operation response = regionDisksClient.bulkInsertAsync(request).get(3, TimeUnit.MINUTES);
8181

8282
if (response.hasError()) {
83-
System.out.println(String.format("Error cloning disks: %s", response.getError()));
83+
System.out.printf("Error cloning disks: %s%n", response.getError());
8484
return;
8585
}
8686
System.out.printf("Disks cloned from consistency group: %s\n", consistencyGroupName);

compute/cloud-client/src/test/java/compute/Util.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import compute.deleteprotection.SetDeleteProtection;
3838
import compute.disks.DeleteDisk;
3939
import compute.disks.DeleteSnapshot;
40+
import compute.disks.RegionalDelete;
4041
import compute.reservation.DeleteReservation;
4142
import java.io.IOException;
4243
import java.nio.charset.StandardCharsets;
@@ -266,6 +267,22 @@ public static void deleteStoragePool(String project, String zone, String storage
266267
}
267268
}
268269

270+
// Delete disks which starts with the given prefixToDelete and
271+
// has creation timestamp >24 hours.
272+
public static void cleanUpExistingRegionalDisks(
273+
String prefixToDelete, String projectId, String region)
274+
throws IOException, ExecutionException, InterruptedException, TimeoutException {
275+
try (RegionDisksClient disksClient = RegionDisksClient.create()) {
276+
for (Disk disk : disksClient.list(projectId, region).iterateAll()) {
277+
if (disk.getName().contains(prefixToDelete)
278+
&& disk.getRegion().equals(region)
279+
&& isCreatedBeforeThresholdTime(disk.getCreationTimestamp())) {
280+
RegionalDelete.deleteRegionalDisk(projectId, region, disk.getName());
281+
}
282+
}
283+
}
284+
}
285+
269286
public static boolean containPrefixToDeleteAndZone(
270287
Object resource, String prefixToDelete, String zone) {
271288
boolean containPrefixAndZone = false;

compute/cloud-client/src/test/java/compute/disks/ConsistencyGroupIT.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static org.junit.Assert.assertNotNull;
2222

2323
import com.google.cloud.compute.v1.Disk;
24+
import compute.Util;
2425
import compute.disks.consistencygroup.AddDiskToConsistencyGroup;
2526
import compute.disks.consistencygroup.CloneDisksFromConsistencyGroup;
2627
import compute.disks.consistencygroup.CreateDiskConsistencyGroup;
@@ -61,6 +62,9 @@ public class ConsistencyGroupIT {
6162
private static final String SECONDARY_REGIONAL_DISK =
6263
"gcloud-test-disk-secondary-regional-" + randomUUID;
6364
private static final long DISK_SIZE = 10L;
65+
private static final List<String> replicaZones = Arrays.asList(
66+
String.format("projects/%s/zones/%s-a", PROJECT_ID, REGION),
67+
String.format("projects/%s/zones/%s-b", PROJECT_ID, REGION));
6468

6569
// Check if the required environment variables are set.
6670
public static void requireEnvVar(String envVarName) {
@@ -71,9 +75,6 @@ public static void requireEnvVar(String envVarName) {
7175
@BeforeAll
7276
public static void setUp() throws Exception {
7377
requireEnvVar("GOOGLE_CLOUD_PROJECT");
74-
List<String> replicaZones = Arrays.asList(
75-
String.format("projects/%s/zones/%s-a", PROJECT_ID, REGION),
76-
String.format("projects/%s/zones/%s-b", PROJECT_ID, REGION));
7778

7879
RegionalCreateFromSource.createRegionalDisk(PROJECT_ID, REGION, replicaZones,
7980
DISK_NAME, DISK_TYPE, 10, Optional.empty(), Optional.empty());
@@ -88,12 +89,15 @@ public static void cleanUp()
8889

8990
RegionalDelete.deleteRegionalDisk(PROJECT_ID, REGION, DISK_NAME);
9091
RegionalDelete.deleteRegionalDisk(PROJECT_ID, REGION_SECONDARY, SECONDARY_REGIONAL_DISK);
91-
// Delete created consistency group
9292
DeleteDiskConsistencyGroup.deleteDiskConsistencyGroup(
9393
PROJECT_ID, REGION, CONSISTENCY_GROUP_NAME);
9494
DeleteDiskConsistencyGroup.deleteDiskConsistencyGroup(
9595
PROJECT_ID, REGION_SECONDARY, CONSISTENCY_GROUP_SECONDARY);
9696

97+
// Clean up existing stale resources.
98+
Util.cleanUpExistingRegionalDisks("test-disk-for-consistency-", PROJECT_ID, REGION);
99+
Util.cleanUpExistingRegionalDisks(
100+
"gcloud-test-disk-secondary-regional-", PROJECT_ID, REGION_SECONDARY);
97101
}
98102

99103
@Test
@@ -103,7 +107,6 @@ public void testCreateDiskConsistencyGroupResourcePolicy()
103107
String consistencyGroupLink = CreateDiskConsistencyGroup.createDiskConsistencyGroup(
104108
PROJECT_ID, REGION, CONSISTENCY_GROUP_NAME);
105109

106-
// Verify that the consistency group was created
107110
assertNotNull(consistencyGroupLink);
108111
assertThat(consistencyGroupLink.contains(CONSISTENCY_GROUP_NAME));
109112
}
@@ -115,7 +118,6 @@ public void testAddRegionalDiskToConsistencyGroup()
115118
Disk disk = AddDiskToConsistencyGroup.addDiskToConsistencyGroup(
116119
PROJECT_ID, REGION, DISK_NAME, CONSISTENCY_GROUP_NAME, REGION);
117120

118-
// Verify that the disk was added to the consistency group
119121
assertNotNull(disk);
120122
assertThat(disk.getResourcePoliciesList().get(0).contains(CONSISTENCY_GROUP_NAME));
121123
}

0 commit comments

Comments
 (0)