-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
ComputeExample.java
144 lines (126 loc) · 6.23 KB
/
ComputeExample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package com.google.cloud.examples.compute.v1;
import com.google.api.core.ApiFuture;
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.Credentials;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.compute.v1.Address;
import com.google.cloud.compute.v1.AddressClient;
import com.google.cloud.compute.v1.AddressSettings;
import com.google.cloud.compute.v1.InsertAddressHttpRequest;
import com.google.cloud.compute.v1.ListAddressesHttpRequest;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.ProjectRegionAddressName;
import com.google.cloud.compute.v1.ProjectRegionName;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
/** Working example code to make live calls on Addresses resources in a GCP Compute project. */
public class ComputeExample {
// Replace the following String values with your Project and Region ids.
private static String PROJECT_NAME = "my-project-id";
private static String REGION = "us-central1";
/**
* List addresses, Insert an address, and then delete the address. Use ResourceNames in the
* request objects.
*/
public static void main(String[] args) throws IOException {
AddressClient client = createCredentialedClient();
System.out.println("Running with Gapic Client.");
AddressClient.ListAddressesPagedResponse listResponse = listAddresses(client);
verifyListAddressWithGets(client, listResponse);
System.out.println("Running with Gapic Client and Resource Name.");
String newAddressName = "new_address_name";
System.out.println("Inserting address:");
insertNewAddressJustClient(client, newAddressName);
listAddresses(client);
System.out.println("Deleting address:");
Operation deleteResponse =
client.deleteAddress(ProjectRegionAddressName.of(newAddressName, PROJECT_NAME, REGION));
System.out.format("Result of delete: %s\n", deleteResponse.toString());
int sleepTimeInSeconds = 3;
System.out.format("Waiting %d seconds for server to update...\n", sleepTimeInSeconds);
// Wait for the delete operation to finish on the server.
try {
TimeUnit.SECONDS.sleep(sleepTimeInSeconds);
} catch (InterruptedException e) {
e.printStackTrace();
}
listAddresses(client);
}
private static AddressClient createCredentialedClient() throws IOException {
Credentials myCredentials = GoogleCredentials.getApplicationDefault();
String myEndpoint = AddressSettings.getDefaultEndpoint();
AddressSettings addressSettings =
AddressSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
.setTransportChannelProvider(
AddressSettings.defaultHttpJsonTransportProviderBuilder()
.setEndpoint(myEndpoint)
.build())
.build();
return AddressClient.create(addressSettings);
}
private static void insertNewAddressJustClient(AddressClient client, String newAddressName) {
// Begin samplegen code for insertAddress().
Address newAddress = Address.newBuilder().setName(newAddressName).build();
ProjectRegionName region = ProjectRegionName.of(PROJECT_NAME, REGION);
Operation response = client.insertAddress(region, newAddress);
// End samplegen code for insertAddress().
System.out.format("Result of insert: %s\n", response.toString());
}
/** Use an InsertAddressHttpRequest object to make an addresses.insert method call. */
private static void insertNewAddressUsingRequest(AddressClient client, String newAddressName)
throws InterruptedException, ExecutionException {
// Begin samplegen code for insertAddress().
ProjectRegionName region = ProjectRegionName.of(PROJECT_NAME, REGION);
Address address = Address.newBuilder().build();
InsertAddressHttpRequest request =
InsertAddressHttpRequest.newBuilder()
.setRegion(region.toString())
.setAddressResource(address)
.build();
// Do something
Operation response = client.insertAddress(request);
// End samplegen code for insertAddress().
System.out.format("Result of insert: %s\n", response.toString());
}
/** Use an callable object to make an addresses.insert method call. */
private static void insertAddressUsingCallable(AddressClient client, String newAddressName)
throws InterruptedException, ExecutionException {
// Begin samplegen code for insertAddress().
ProjectRegionName region = ProjectRegionName.of(PROJECT_NAME, REGION);
Address address = Address.newBuilder().build();
InsertAddressHttpRequest request =
InsertAddressHttpRequest.newBuilder()
.setRegion(region.toString())
.setAddressResource(address)
.build();
ApiFuture<Operation> future = client.insertAddressCallable().futureCall(request);
// Do something
Operation response = future.get();
// End samplegen code for insertAddress().
System.out.format("Result of insert: %s\n", response.toString());
}
/** List Addresses in the under the project PROJECT_NAME and region REGION. */
private static AddressClient.ListAddressesPagedResponse listAddresses(AddressClient client) {
System.out.println("Listing addresses:");
ProjectRegionName regionName =
ProjectRegionName.newBuilder().setRegion(REGION).setProject(PROJECT_NAME).build();
ListAddressesHttpRequest listRequest =
ListAddressesHttpRequest.newBuilder().setRegion(regionName.toString()).build();
AddressClient.ListAddressesPagedResponse response = client.listAddresses(listRequest);
for (Address address : response.iterateAll()) {
System.out.println("\t - " + address.toString());
}
return response;
}
private static void verifyListAddressWithGets(
AddressClient client, AddressClient.ListAddressesPagedResponse listResponse) {
for (Address address : listResponse.iterateAll()) {
System.out.format("Making get request for address \"%s\"...\n", address.getName());
Address fetchedAddress =
client.getAddress(ProjectRegionAddressName.of(address.getName(), PROJECT_NAME, REGION));
System.out.format("addresses.get returns \n\t%s\n\n", fetchedAddress.toString());
}
}
}