Skip to content

Instantly share code, notes, and snippets.

@yaronp68
Created March 15, 2012 08:50
Show Gist options
  • Select an option

  • Save yaronp68/2043033 to your computer and use it in GitHub Desktop.

Select an option

Save yaronp68/2043033 to your computer and use it in GitHub Desktop.
private String createServer(final String token, final CloudTemplate serverTemplate)
throws OpenstackException {
final String serverName = this.serverNamePrefix + System.currentTimeMillis();
final String securityGroup = getCustomTemplateValue(
serverTemplate, OPENSTACK_SECURITYGROUP, null, false);
final String keyPairName = getCustomTemplateValue(
serverTemplate, OPENSTACK_KEY_PAIR, null, false);
// Start the machine!
final String json =
"{\"server\":{ \"name\":\"" + serverName + "\",\"imageRef\":\"" + serverTemplate.getImageId()
+ "\",\"flavorRef\":\"" + serverTemplate.getHardwareId() + "\",\"key_name\":\"" + keyPairName
+ "\",\"security_groups\":[{\"name\":\"" + securityGroup + "\"}]}}";
String serverBootResponse = null;
try {
serverBootResponse = service.path(
this.pathPrefix + "servers").header(
"Content-Type", "application/json").header(
"X-Auth-Token", token).accept(
MediaType.APPLICATION_XML).post(
String.class, json);
} catch (final UniformInterfaceException e) {
throw new OpenstackException(e);
}
try {
// if we are here, the machine started!
final Document doc = documentBuilder.parse(new InputSource(new StringReader(serverBootResponse)));
final String status = xpath.evaluate(
"/server/@status", doc);
if (!status.startsWith("BUILD")) {
throw new IllegalStateException("Expected server status of BUILD(*), got: " + status);
}
final String serverId = xpath.evaluate(
"/server/@id", doc);
return serverId;
} catch (XPathExpressionException e) {
throw new OpenstackException("Failed to parse XML Response from server. Response was: "
+ serverBootResponse + ", Error was: " + e.getMessage(), e);
} catch (SAXException e) {
throw new OpenstackException("Failed to parse XML Response from server. Response was: "
+ serverBootResponse + ", Error was: " + e.getMessage(), e);
} catch (IOException e) {
throw new OpenstackException("Failed to send request to server. Response was: " + serverBootResponse
+ ", Error was: " + e.getMessage(), e);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment