1111import java .util .concurrent .TimeUnit ;
1212
1313final class IaaSExample {
14+ private static final String REGION = "eu01" ;
1415
1516 private IaaSExample () {}
1617
@@ -49,38 +50,40 @@ public static void main(String[] args) throws IOException {
4950 Network newNetwork =
5051 iaasApi .createNetwork (
5152 projectId ,
53+ REGION ,
5254 new CreateNetworkPayload ()
5355 .name ("java-sdk-example-network-01" )
5456 .dhcp (true )
5557 .routed (false )
5658 .labels (Collections .singletonMap ("some-network-label" , "bar" ))
57- .addressFamily (
58- new CreateNetworkAddressFamily ()
59- .ipv4 (
60- new CreateNetworkIPv4Body ()
61- .addNameserversItem (
62- "8.8.8.8" ))));
63-
59+ .ipv4 (
60+ new CreateNetworkIPv4 (
61+ new CreateNetworkIPv4WithPrefixLength ()
62+ .addNameserversItem ("8.8.8.8" )
63+ .prefixLength (24L ))));
6464 /* update the network we just created */
6565 iaasApi .partialUpdateNetwork (
6666 projectId ,
67- newNetwork .getNetworkId (),
67+ REGION ,
68+ newNetwork .getId (),
6869 new PartialUpdateNetworkPayload ()
6970 .dhcp (false )
7071 .labels (Collections .singletonMap ("some-network-label" , "bar-updated" )));
7172
7273 /* fetch the network we just created */
73- Network fetchedNetwork = iaasApi .getNetwork (projectId , newNetwork .getNetworkId ());
74+ Network fetchedNetwork = iaasApi .getNetwork (projectId , REGION , newNetwork .getId ());
7475 System .out .println ("\n Fetched network: " );
7576 System .out .println ("* Network name: " + fetchedNetwork .getName ());
76- System .out .println ("* Id: " + fetchedNetwork .getNetworkId ());
77+ System .out .println ("* Id: " + fetchedNetwork .getId ());
7778 System .out .println (
7879 "* DHCP: " + (Boolean .TRUE .equals (fetchedNetwork .getDhcp ()) ? "YES" : "NO" ));
79- System .out .println ("* Gateway: " + fetchedNetwork .getGateway ());
80- System .out .println ("* Public IP: " + fetchedNetwork .getPublicIp ());
80+ if (fetchedNetwork .getIpv4 () != null ) {
81+ System .out .println ("* Gateway: " + fetchedNetwork .getIpv4 ().getGateway ());
82+ System .out .println ("* Public IP: " + fetchedNetwork .getIpv4 ().getPublicIp ());
83+ }
8184
8285 /* list all available networks in the project */
83- NetworkListResponse networks = iaasApi .listNetworks (projectId , null );
86+ NetworkListResponse networks = iaasApi .listNetworks (projectId , REGION , null );
8487 System .out .println ("\n Available networks: " );
8588 for (Network network : networks .getItems ()) {
8689 System .out .println ("* " + network .getName ());
@@ -93,7 +96,7 @@ public static void main(String[] args) throws IOException {
9396 * */
9497
9598 /* list all available images */
96- ImageListResponse images = iaasApi .listImages (projectId , false , null );
99+ ImageListResponse images = iaasApi .listImages (projectId , REGION , false , null );
97100 System .out .println ("\n Available images: " );
98101 for (Image image : images .getItems ()) {
99102 System .out .println (image .getId () + " | " + image .getName ());
@@ -104,8 +107,8 @@ public static void main(String[] args) throws IOException {
104107 images .getItems ()
105108 .get (0 )
106109 .getId (); // we just use a random image id in our example
107- assert imageId != null ;
108- Image fetchedImage = iaasApi .getImage (projectId , imageId );
110+ Objects . requireNonNull ( imageId != null ) ;
111+ Image fetchedImage = iaasApi .getImage (projectId , REGION , imageId );
109112 System .out .println ("\n Fetched image:" );
110113 System .out .println ("* Image name: " + fetchedImage .getName ());
111114 System .out .println ("* Image id: " + fetchedImage .getId ());
@@ -137,7 +140,7 @@ public static void main(String[] args) throws IOException {
137140 System .out .println ("\n Keypair created: " + newKeypair .getName ());
138141
139142 /* update the keypair */
140- assert newKeypair .getName () != null ;
143+ Objects . requireNonNull ( newKeypair .getName ()) ;
141144 iaasApi .updateKeyPair (
142145 newKeypair .getName (),
143146 new UpdateKeyPairPayload ()
@@ -160,15 +163,17 @@ public static void main(String[] args) throws IOException {
160163 * */
161164
162165 /* list all available machine types */
163- MachineTypeListResponse machineTypes = iaasApi .listMachineTypes (projectId , null );
166+ MachineTypeListResponse machineTypes =
167+ iaasApi .listMachineTypes (projectId , REGION , null );
164168 System .out .println ("\n Available machine types: " );
165169 for (MachineType machineType : machineTypes .getItems ()) {
166170 System .out .println ("* " + machineType .getName ());
167171 }
168172
169173 /* fetch details about a machine type */
170174 MachineType fetchedMachineType =
171- iaasApi .getMachineType (projectId , machineTypes .getItems ().get (0 ).getName ());
175+ iaasApi .getMachineType (
176+ projectId , REGION , machineTypes .getItems ().get (0 ).getName ());
172177 System .out .println ("\n Fetched machine type: " );
173178 System .out .println ("* Machine type name: " + fetchedMachineType .getName ());
174179 System .out .println ("* Description: " + fetchedMachineType .getDescription ());
@@ -177,102 +182,121 @@ public static void main(String[] args) throws IOException {
177182 System .out .println ("* vCPUs: " + fetchedMachineType .getVcpus ());
178183 System .out .println ("* Extra specs: " + fetchedMachineType .getExtraSpecs ());
179184
180- /*
181- * create a server
182- *
183- * NOTE: see the following link for available machine types
184- * https://docs.stackit.cloud/products/compute-engine/server/basics/machine-types/
185- *
186- * */
187- Server newServer =
188- iaasApi .createServer (
189- projectId ,
190- new CreateServerPayload ()
191- .name ("java-sdk-example-server-01" )
192- .machineType ("t2i.1" )
193- .imageId (imageId )
194- .labels (Collections .singletonMap ("foo" , "bar" ))
195- // add the keypair we created above
196- .keypairName (newKeypair .getName ())
197- // add the server to the network we created above
198- .networking (
199- new CreateServerPayloadNetworking (
200- new CreateServerNetworking ()
201- .networkId (
202- newNetwork .getNetworkId ()))));
203- assert newServer .getId () != null ;
204-
205- /* wait for the server creation to complete */
206- UUID serverId = newServer .getId ();
207- assert serverId != null ;
208- while (Objects .equals (
209- iaasApi .getServer (projectId , serverId , false ).getStatus (), "CREATING" )) {
210- System .out .println ("Waiting for server creation to complete ..." );
211- TimeUnit .SECONDS .sleep (5 );
212- }
185+ UUID serverId = null ;
186+ try {
187+
188+ /*
189+ * create a server
190+ *
191+ * NOTE: see the following link for available machine types
192+ * https://docs.stackit.cloud/products/compute-engine/server/basics/machine-types/
193+ *
194+ * */
195+ Server newServer =
196+ iaasApi .createServer (
197+ projectId ,
198+ REGION ,
199+ new CreateServerPayload ()
200+ .name ("java-sdk-example-server-01" )
201+ .machineType ("t2i.1" )
202+ .bootVolume (
203+ new BootVolume ()
204+ .deleteOnTermination (true )
205+ .size (32L )
206+ .source (
207+ new BootVolumeSource ()
208+ .id (imageId )
209+ .type ("image" )))
210+ .labels (Collections .singletonMap ("foo" , "bar" ))
211+ // add the keypair we created above
212+ .keypairName (newKeypair .getName ())
213+ // add the server to the network we created above
214+ .networking (
215+ new CreateServerPayloadAllOfNetworking (
216+ new CreateServerNetworking ()
217+ .networkId (newNetwork .getId ()))));
218+ Objects .requireNonNull (newServer .getId ());
219+
220+ /* wait for the server creation to complete */
221+ serverId = newServer .getId ();
222+ Objects .requireNonNull (serverId );
223+ while (Objects .equals (
224+ iaasApi .getServer (projectId , REGION , serverId , false ).getStatus (),
225+ "CREATING" )) {
226+ System .out .println ("Waiting for server creation to complete ..." );
227+ TimeUnit .SECONDS .sleep (5 );
228+ }
213229
214- /* update the server we just created */
215- iaasApi .updateServer (
216- projectId ,
217- newServer .getId (),
218- new UpdateServerPayload ()
219- .labels (Collections .singletonMap ("foo" , "bar-updated" )));
220-
221- /* list all servers */
222- ServerListResponse servers = iaasApi .listServers (projectId , false , null );
223- System .out .println ("\n Available servers: " );
224- for (Server server : servers .getItems ()) {
225- System .out .println ("* " + server .getId () + " | " + server .getName ());
226- }
230+ /* update the server we just created */
231+ iaasApi .updateServer (
232+ projectId ,
233+ REGION ,
234+ newServer .getId (),
235+ new UpdateServerPayload ()
236+ .labels (Collections .singletonMap ("foo" , "bar-updated" )));
237+
238+ /* list all servers */
239+ ServerListResponse servers = iaasApi .listServers (projectId , REGION , false , null );
240+ System .out .println ("\n Available servers: " );
241+ for (Server server : servers .getItems ()) {
242+ System .out .println ("* " + server .getId () + " | " + server .getName ());
243+ }
227244
228- /* fetch the server we just created */
229- Server fetchedServer = iaasApi .getServer (projectId , serverId , false );
230- System .out .println ("\n Fetched server:" );
231- System .out .println ("* Name: " + fetchedServer .getName ());
232- System .out .println ("* Id: " + fetchedServer .getId ());
233- if (fetchedServer .getLabels () != null ) {
234- System .out .println ("* Labels: " + fetchedServer .getLabels ().toString ());
235- }
236- System .out .println ("* Machine type: " + fetchedServer .getMachineType ());
237- System .out .println ("* Created at: " + fetchedServer .getCreatedAt ());
238- System .out .println ("* Updated at: " + fetchedServer .getUpdatedAt ());
239- System .out .println ("* Launched at: " + fetchedServer .getLaunchedAt ());
240-
241- /* stop the server we just created */
242- iaasApi .stopServer (projectId , serverId );
243- /* wait for the server to stop */
244- while (!Objects .equals (
245- iaasApi .getServer (projectId , serverId , false ).getPowerStatus (), "STOPPED" )) {
246- System .out .println ("Waiting for server " + serverId + " to stop..." );
247- TimeUnit .SECONDS .sleep (5 );
248- }
245+ /* fetch the server we just created */
246+ Server fetchedServer = iaasApi .getServer (projectId , REGION , serverId , false );
247+ System .out .println ("\n Fetched server:" );
248+ System .out .println ("* Name: " + fetchedServer .getName ());
249+ System .out .println ("* Id: " + fetchedServer .getId ());
250+ if (fetchedServer .getLabels () != null ) {
251+ System .out .println ("* Labels: " + fetchedServer .getLabels ().toString ());
252+ }
253+ System .out .println ("* Machine type: " + fetchedServer .getMachineType ());
254+ System .out .println ("* Created at: " + fetchedServer .getCreatedAt ());
255+ System .out .println ("* Updated at: " + fetchedServer .getUpdatedAt ());
256+ System .out .println ("* Launched at: " + fetchedServer .getLaunchedAt ());
257+
258+ /* stop the server we just created */
259+ iaasApi .stopServer (projectId , REGION , serverId );
260+ /* wait for the server to stop */
261+ while (!Objects .equals (
262+ iaasApi .getServer (projectId , REGION , serverId , false ).getPowerStatus (),
263+ "STOPPED" )) {
264+ System .out .println ("Waiting for server " + serverId + " to stop..." );
265+ TimeUnit .SECONDS .sleep (5 );
266+ }
249267
250- /* boot the server we just created */
251- iaasApi .startServer (projectId , serverId );
252- /* wait for the server to boot */
253- while (!Objects .equals (
254- iaasApi .getServer (projectId , serverId , false ).getPowerStatus (), "RUNNING" )) {
255- System .out .println ("Waiting for server " + serverId + " to boot..." );
256- TimeUnit .SECONDS .sleep (5 );
257- }
268+ /* boot the server we just created */
269+ iaasApi .startServer (projectId , REGION , serverId );
270+ /* wait for the server to boot */
271+ while (!Objects .equals (
272+ iaasApi .getServer (projectId , REGION , serverId , false ).getPowerStatus (),
273+ "RUNNING" )) {
274+ System .out .println ("Waiting for server " + serverId + " to boot..." );
275+ TimeUnit .SECONDS .sleep (5 );
276+ }
258277
259- /* reboot the server we just created */
260- iaasApi .rebootServer (projectId , serverId , null );
278+ /* reboot the server we just created */
279+ iaasApi .rebootServer (projectId , REGION , serverId , null );
261280
281+ } catch (ApiException e ) {
282+ System .out .println ("server creation failed" + e );
283+ }
262284 /*
263285 * ///////////////////////////////////////////////////////
264286 * // D E L E T I O N //
265287 * ///////////////////////////////////////////////////////
266288 * */
267289
268290 /* delete the server we just created */
269- iaasApi .deleteServer (projectId , serverId );
270- System .out .println ("Deleted server: " + serverId );
291+ if (serverId != null ) {
292+ iaasApi .deleteServer (projectId , REGION , serverId );
293+ System .out .println ("Deleted server: " + serverId );
294+ }
271295
272296 /* wait for server deletion to complete */
273297 while (true ) {
274298 try {
275- iaasApi .getServer (projectId , serverId , false );
299+ iaasApi .getServer (projectId , REGION , serverId , false );
276300 System .out .println ("Waiting for server deletion to complete..." );
277301 TimeUnit .SECONDS .sleep (5 );
278302 } catch (ApiException e ) {
@@ -287,8 +311,8 @@ public static void main(String[] args) throws IOException {
287311 System .out .println ("Deleted key pair: " + newKeypair .getName ());
288312
289313 /* delete the network we just created */
290- iaasApi .deleteNetwork (projectId , newNetwork .getNetworkId ());
291- System .out .println ("Deleted network: " + newNetwork .getNetworkId ());
314+ iaasApi .deleteNetwork (projectId , REGION , newNetwork .getId ());
315+ System .out .println ("Deleted network: " + newNetwork .getId ());
292316
293317 } catch (ApiException | InterruptedException e ) {
294318 throw new RuntimeException (e );
0 commit comments