mirror of https://github.com/apache/jclouds.git
openstack-nova: Wiring AdminActions extension into compute service to implement suspend and resume
This commit is contained in:
parent
7678c6e776
commit
33b4a2d253
|
@ -219,12 +219,20 @@ public class NovaComputeServiceAdapter implements
|
|||
|
||||
@Override
|
||||
public void resumeNode(String id) {
|
||||
throw new UnsupportedOperationException("suspend not supported");
|
||||
ZoneAndId zoneAndId = ZoneAndId.fromSlashEncoded(id);
|
||||
if (novaClient.getAdminActionsExtensionForZone(zoneAndId.getZone()).isPresent()) {
|
||||
novaClient.getAdminActionsExtensionForZone(zoneAndId.getZone()).get().resumeServer(zoneAndId.getId());
|
||||
}
|
||||
throw new UnsupportedOperationException("resume requires installation of the Admin Actions extension");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suspendNode(String id) {
|
||||
throw new UnsupportedOperationException("suspend not supported");
|
||||
ZoneAndId zoneAndId = ZoneAndId.fromSlashEncoded(id);
|
||||
if (novaClient.getAdminActionsExtensionForZone(zoneAndId.getZone()).isPresent()) {
|
||||
novaClient.getAdminActionsExtensionForZone(zoneAndId.getZone()).get().suspendServer(zoneAndId.getId());
|
||||
}
|
||||
throw new UnsupportedOperationException("suspend requires installation of the Admin Actions extension");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package org.jclouds.openstack.nova.v1_1.compute;
|
||||
|
||||
import static java.util.logging.Logger.getAnonymousLogger;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.jclouds.compute.internal.BaseComputeServiceLiveTest;
|
||||
import org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties;
|
||||
import org.jclouds.openstack.nova.v1_1.config.NovaProperties;
|
||||
import org.jclouds.rest.AuthorizationException;
|
||||
import org.jclouds.sshj.config.SshjSshClientModule;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
@ -31,9 +34,16 @@ public class NovaComputeServiceLiveTest extends BaseComputeServiceLiveTest {
|
|||
// start call is blocking anyway.
|
||||
}
|
||||
|
||||
@Test(enabled = true, dependsOnMethods = "testReboot", expectedExceptions = UnsupportedOperationException.class)
|
||||
@Test(enabled = true, dependsOnMethods = "testReboot")
|
||||
public void testSuspendResume() throws Exception {
|
||||
try {
|
||||
// may fail because of lack of AdminActions extension or non-admin user, so log and continue
|
||||
super.testSuspendResume();
|
||||
} catch (AuthorizationException e) {
|
||||
getAnonymousLogger().info("testSuspendResume() threw, probably due to lack of privileges: " + e.getMessage());
|
||||
} catch (UnsupportedOperationException e) {
|
||||
getAnonymousLogger().info("testSuspendResume() threw, probably due to unavailable AdminActions extension: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test(enabled = true, dependsOnMethods = "testSuspendResume")
|
||||
|
|
Loading…
Reference in New Issue