@Override public void resumeNode(String id) { ZoneAndId zoneAndId = ZoneAndId.fromSlashEncoded(id); if (novaApi.getServerAdminExtensionForZone(zoneAndId.getZone()).isPresent()) { novaApi.getServerAdminExtensionForZone(zoneAndId.getZone()).get().resume(zoneAndId.getId()); } throw new UnsupportedOperationException("resume requires installation of the Admin Actions extension"); }
@Override public void suspendNode(String id) { RegionAndId regionAndId = RegionAndId.fromSlashEncoded(id); if (novaApi.getServerAdminApi(regionAndId.getRegion()).isPresent()) { novaApi.getServerAdminApi(regionAndId.getRegion()).get().suspend(regionAndId.getId()); } else { throw new UnsupportedOperationException("suspend requires installation of the Admin Actions extension"); } }
public void testResetNetworkAndInjectNetworkInfo() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); api.resetNetwork(testServerId); api.injectNetworkInfo(testServerId); }
public void testLockAndUnlock() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); // TODO should we be able to double-lock (as it were) api.unlock(testServerId); api.unlock(testServerId); api.lock(testServerId); api.lock(testServerId); api.unlock(testServerId); api.unlock(testServerId); }
@Test public void testPauseAndUnpause() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); // Unlock and lock (double-checking error contitions too) try { api.unpause(testServerId); fail("Unpaused active server!"); } catch (HttpResponseException e) { } assertTrue(api.pause(testServerId)); blockUntilServerInState(testServerId, serverApi, Status.PAUSED); try { api.pause(testServerId); fail("paused a paused server!"); } catch (HttpResponseException e) { } assertTrue(api.unpause(testServerId)); blockUntilServerInState(testServerId, serverApi, Status.ACTIVE); try { api.unpause(testServerId); fail("Unpaused a server we just unpaused!"); } catch (HttpResponseException e) { } }
public void testSuspendAndResume() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); // Suspend-resume try { api.resume(testServerId); fail("Resumed an active server!"); } catch (HttpResponseException e) { } assertTrue(api.suspend(testServerId)); blockUntilServerInState(testServerId, serverApi, Status.SUSPENDED); try { api.suspend(testServerId); fail("Suspended an already suspended server!"); } catch (HttpResponseException e) { } assertTrue(api.resume(testServerId)); blockUntilServerInState(testServerId, serverApi, Status.ACTIVE); try { api.resume(testServerId); fail("Resumed an already resumed server!"); } catch (HttpResponseException e) { } }
@Test public void testCreateBackupOfServer() throws InterruptedException { skipOnAdminExtensionAbsent(); backupImageId = apiOption.get().createBackup(testServerId, "jclouds-test-backup", BackupType.DAILY, 0, CreateBackupOfServerOptions.Builder.metadata(ImmutableMap.of("test", "metadata"))); assertNotNull(backupImageId); // If we don't have extended task status, we'll have to wait here! if (extensionApi.get("OS-EXT-STS") == null) { Thread.sleep(30000); } blockUntilServerInState(testServerId, serverApi, Status.ACTIVE); Image backupImage = imageApi.get(backupImageId); assertEquals(backupImage.getId(), backupImageId); } }
public void testMigrateServer() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "migrate").build(), HttpResponse.builder().statusCode(202).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertTrue(api.migrate("1")); }
public void testInjectNetworkInfoIntoServer() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "injectNetworkInfo").build(), HttpResponse.builder().statusCode(202).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertTrue(api.injectNetworkInfo("1")); }
public void testResetNetworkOfServer() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "resetNetwork").build(), HttpResponse.builder().statusCode(202).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertTrue(api.resetNetwork("1")); }
public void testLock() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "lock").build(), HttpResponse.builder().statusCode(202).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertTrue(api.lock("1")); }
public void testPauseFailsNotFound() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "pause").build(), HttpResponse.builder().statusCode(404).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertFalse(api.pause("1")); }
public void testLiveMigrateServer() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "GONNAOVERWRITE") .payload(payloadFromStringWithContentType("{\"os-migrateLive\":{\"host\":\"bighost\",\"block_migration\":true,\"disk_over_commit\":false}}", MediaType.APPLICATION_JSON)).build(), HttpResponse.builder().statusCode(202).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertTrue(api.liveMigrate("1", "bighost", true, false)); }
public void testSuspendAndResume() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); // Suspend-resume try { api.resume(testServerId); fail("Resumed an active server!"); } catch (HttpResponseException e) { } api.suspend(testServerId); blockUntilServerInState(testServerId, serverApi, Status.SUSPENDED); try { api.suspend(testServerId); fail("Suspended an already suspended server!"); } catch (HttpResponseException e) { } api.resume(testServerId); blockUntilServerInState(testServerId, serverApi, Status.ACTIVE); try { api.resume(testServerId); fail("Resumed an already resumed server!"); } catch (HttpResponseException e) { } }
public void testLockAndUnlock() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); // TODO should we be able to double-lock (as it were) assertTrue(api.unlock(testServerId)); assertTrue(api.unlock(testServerId)); assertTrue(api.lock(testServerId)); assertTrue(api.lock(testServerId)); assertTrue(api.unlock(testServerId)); assertTrue(api.unlock(testServerId)); }
@Test public void testPauseAndUnpause() { skipOnAdminExtensionAbsent(); ServerAdminApi api = apiOption.get(); // Unlock and lock (double-checking error contitions too) try { api.unpause(testServerId); fail("Unpaused active server!"); } catch (HttpResponseException e) { } api.pause(testServerId); blockUntilServerInState(testServerId, serverApi, Status.PAUSED); try { api.pause(testServerId); fail("paused a paused server!"); } catch (HttpResponseException e) { } api.unpause(testServerId); blockUntilServerInState(testServerId, serverApi, Status.ACTIVE); try { api.unpause(testServerId); fail("Unpaused a server we just unpaused!"); } catch (HttpResponseException e) { } }
@Test public void testCreateBackupOfServer() throws InterruptedException { skipOnAdminExtensionAbsent(); backupImageId = apiOption.get().createBackup(testServerId, "jclouds-test-backup", BackupType.DAILY, 0, CreateBackupOfServerOptions.Builder.metadata(ImmutableMap.of("test", "metadata"))); assertNotNull(backupImageId); // If we don't have extended task status, we'll have to wait here! if (extensionApi.get("OS-EXT-STS") == null) { Thread.sleep(30000); } blockUntilServerInState(testServerId, serverApi, Status.ACTIVE); Image backupImage = imageApi.get(backupImageId); assertEquals(backupImage.getId(), backupImageId); } }
public void testMigrateServerFailsNotFound() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "migrate").build(), HttpResponse.builder().statusCode(404).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertFalse(api.migrate("1")); }
public void testInjectNetworkInfoIntoServerFailsNotFound() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "injectNetworkInfo").build(), HttpResponse.builder().statusCode(404).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertFalse(api.injectNetworkInfo("1")); }
public void testResetNetworkOfServerFailsNotFound() { URI endpoint = URI.create("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/1/action"); ServerAdminApi api = requestsSendResponses( keystoneAuthWithUsernameAndPasswordAndTenantName, responseWithKeystoneAccess, extensionsOfNovaRequest, extensionsOfNovaResponse, standardActionRequestBuilderVoidResponse(endpoint, "resetNetwork").build(), HttpResponse.builder().statusCode(404).build() ).getServerAdminExtensionForZone("az-1.region-a.geo-1").get(); assertFalse(api.resetNetwork("1")); }