You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ev...@apache.org on 2014/04/04 01:06:55 UTC
git commit: JCLOUDS-317: Add missing states to Nova v2 Server
Repository: jclouds
Updated Branches:
refs/heads/master e195a5a2b -> 222779bbc
JCLOUDS-317: Add missing states to Nova v2 Server
- Deprecated state: STOPPED
- Add states: MIGRATING, SHUTOFF, RESCUE, SOFT_DELETED,
SHELVED, SHELVED_OFFLOADED
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/222779bb
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/222779bb
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/222779bb
Branch: refs/heads/master
Commit: 222779bbc4052c41a6db0e484cee44b58251abdd
Parents: e195a5a
Author: Jacob Mourelos <ja...@gmail.com>
Authored: Tue Mar 25 08:56:21 2014 +0100
Committer: Everett Toews <ev...@rackspace.com>
Committed: Thu Apr 3 18:06:27 2014 -0500
----------------------------------------------------------------------
.../openstack/nova/v2_0/domain/Server.java | 10 +-
.../nova/v2_0/features/ServerApiExpectTest.java | 37 ++
.../parse/ParseServerDetailsStatesTest.java | 255 ++++++++++++++
.../resources/server_list_details_states.json | 342 +++++++++++++++++++
4 files changed, 643 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/222779bb/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Server.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Server.java b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Server.java
index a7b316a..143131c 100644
--- a/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Server.java
+++ b/apis/openstack-nova/src/main/java/org/jclouds/openstack/nova/v2_0/domain/Server.java
@@ -59,7 +59,15 @@ public class Server extends Resource {
*/
public static enum Status {
- ACTIVE, BUILD, REBUILD, SUSPENDED, PAUSED, RESIZE, VERIFY_RESIZE, REVERT_RESIZE, PASSWORD, REBOOT, HARD_REBOOT, DELETED, UNKNOWN, ERROR, STOPPED, UNRECOGNIZED;
+ ACTIVE, BUILD, REBUILD, SUSPENDED, PAUSED, RESIZE, VERIFY_RESIZE, REVERT_RESIZE, PASSWORD, REBOOT, HARD_REBOOT,
+ DELETED, UNKNOWN, ERROR,
+
+ /**
+ * @deprecated please use {@code Status.SHUTOFF} instead
+ */
+ @Deprecated STOPPED,
+
+ UNRECOGNIZED, MIGRATING, SHUTOFF, RESCUE, SOFT_DELETED, SHELVED, SHELVED_OFFLOADED;
public String value() {
return name();
http://git-wip-us.apache.org/repos/asf/jclouds/blob/222779bb/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java
index 070dcf6..3b2b2d8 100644
--- a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java
+++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/features/ServerApiExpectTest.java
@@ -30,6 +30,7 @@ import org.jclouds.openstack.nova.v2_0.options.RebuildServerOptions;
import org.jclouds.openstack.nova.v2_0.parse.ParseCreatedServerTest;
import org.jclouds.openstack.nova.v2_0.parse.ParseMetadataListTest;
import org.jclouds.openstack.nova.v2_0.parse.ParseMetadataUpdateTest;
+import org.jclouds.openstack.nova.v2_0.parse.ParseServerDetailsStatesTest;
import org.jclouds.openstack.nova.v2_0.parse.ParseServerListTest;
import org.testng.annotations.Test;
@@ -82,6 +83,42 @@ public class ServerApiExpectTest extends BaseNovaApiExpectTest {
assertTrue(apiWhenNoServersExist.getServerApiForZone("az-1.region-a.geo-1").list().concat().isEmpty());
}
+ public void testListInDetailServersWhenResponseIs2xx() throws Exception {
+ HttpRequest listServers = HttpRequest
+ .builder()
+ .method("GET")
+ .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/detail")
+ .addHeader("Accept", "application/json")
+ .addHeader("X-Auth-Token", authToken).build();
+
+ HttpResponse listInDetailServersResponse = HttpResponse.builder().statusCode(200)
+ .payload(payloadFromResource("/server_list_details_states.json")).build();
+
+ NovaApi apiWhenServersExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName,
+ responseWithKeystoneAccess, listServers, listInDetailServersResponse);
+
+ assertEquals(apiWhenServersExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1", "az-2.region-a.geo-1", "az-3.region-a.geo-1"));
+
+ assertEquals(apiWhenServersExist.getServerApiForZone("az-1.region-a.geo-1").listInDetail().concat().toString(),
+ new ParseServerDetailsStatesTest().expected().toString());
+ }
+
+ public void testListInDetailServersWhenReponseIs404IsEmpty() throws Exception {
+ HttpRequest listServers = HttpRequest
+ .builder()
+ .method("GET")
+ .endpoint("https://az-1.region-a.geo-1.compute.hpcloudsvc.com/v1.1/3456/servers/detail")
+ .addHeader("Accept", "application/json")
+ .addHeader("X-Auth-Token", authToken).build();
+
+ HttpResponse listInDetailServersResponse = HttpResponse.builder().statusCode(404).build();
+
+ NovaApi apiWhenNoServersExist = requestsSendResponses(keystoneAuthWithUsernameAndPasswordAndTenantName,
+ responseWithKeystoneAccess, listServers, listInDetailServersResponse);
+
+ assertTrue(apiWhenNoServersExist.getServerApiForZone("az-1.region-a.geo-1").listInDetail().concat().isEmpty());
+ }
+
public void testCreateServerWhenResponseIs202() throws Exception {
HttpRequest createServer = HttpRequest
.builder()
http://git-wip-us.apache.org/repos/asf/jclouds/blob/222779bb/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseServerDetailsStatesTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseServerDetailsStatesTest.java b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseServerDetailsStatesTest.java
new file mode 100644
index 0000000..5386670
--- /dev/null
+++ b/apis/openstack-nova/src/test/java/org/jclouds/openstack/nova/v2_0/parse/ParseServerDetailsStatesTest.java
@@ -0,0 +1,255 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.openstack.nova.v2_0.parse;
+
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import java.net.URI;
+import java.util.Set;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.core.MediaType;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.json.config.GsonModule;
+import org.jclouds.openstack.nova.v2_0.config.NovaParserModule;
+import org.jclouds.openstack.nova.v2_0.domain.Address;
+import org.jclouds.openstack.nova.v2_0.domain.Server;
+import org.jclouds.openstack.nova.v2_0.domain.Server.Status;
+import org.jclouds.openstack.nova.v2_0.domain.ServerExtendedAttributes;
+import org.jclouds.openstack.nova.v2_0.domain.ServerExtendedStatus;
+import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.Link.Relation;
+import org.jclouds.openstack.v2_0.domain.Resource;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+/**
+ * @author Jacob Mourelos
+ */
+@Test(groups = "unit", testName = "ParseServerDetailsStatesTest")
+public class ParseServerDetailsStatesTest extends BaseSetParserTest<Server> {
+
+ @Override
+ public String resource() {
+ return "/server_list_details_states.json";
+ }
+
+ @Override
+ @SelectJson("servers")
+ @Consumes(MediaType.APPLICATION_JSON)
+ public Set<Server> expected() {
+ return ImmutableSet.<Server>of(
+ Server.builder()
+ .links(
+ Link.create(
+ Relation.SELF,
+ URI.create("http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/56d51a88-0066-4976-91b6-d1b453be603f")),
+ Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/56d51a88-0066-4976-91b6-d1b453be603f")))
+ .image(Resource.builder()
+ .id("e3f84189-964e-4dc3-8ac6-832c2b7553d4")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4")))
+ .build())
+ .flavor(Resource.builder()
+ .id("6")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6")))
+ .build())
+ .id("56d51a88-0066-4976-91b6-d1b453be603f")
+ .userId("08ba127f0d6842279f9db8e8bc6977e9")
+ .status(Status.BUILD)
+ .updated(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:54:59Z"))
+ .hostId("0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8")
+ .name("machine_5")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:54:57Z"))
+ .tenantId("4e1900cf21924a098709c23480e157c0")
+ .extendedStatus(ServerExtendedStatus.builder().vmState("building").powerState(0).taskState("spawning")
+ .build())
+ .diskConfig("MANUAL")
+ .extendedAttributes(
+ ServerExtendedAttributes.builder()
+ .instanceName("instance-0000000b")
+ .hostName("rdohavana.localdomain")
+ .hypervisorHostName("rdohavana.localdomain").build()
+ ).build(),
+ Server.builder()
+ .links(
+ Link.create(
+ Relation.SELF,
+ URI.create("http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/3bc8ab03-52e7-4d2b-ba88-73f9ecadf003")),
+ Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/3bc8ab03-52e7-4d2b-ba88-73f9ecadf003")))
+ .image(Resource.builder()
+ .id("e3f84189-964e-4dc3-8ac6-832c2b7553d4")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4")))
+ .build())
+ .flavor(Resource.builder()
+ .id("6")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6")))
+ .build())
+ .id("3bc8ab03-52e7-4d2b-ba88-73f9ecadf003")
+ .userId("08ba127f0d6842279f9db8e8bc6977e9")
+ .status(Status.ACTIVE)
+ .updated(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:52:21Z"))
+ .hostId("0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8")
+ .name("machine_4")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:51:53Z"))
+ .tenantId("4e1900cf21924a098709c23480e157c0")
+ .extendedStatus(ServerExtendedStatus.builder().vmState("active").powerState(1).build())
+ .diskConfig("MANUAL")
+ .extendedAttributes(
+ ServerExtendedAttributes.builder()
+ .instanceName("instance-00000009")
+ .hostName("rdohavana.localdomain")
+ .hypervisorHostName("rdohavana.localdomain").build()
+ )
+ .addresses(ImmutableMultimap.<String, Address>builder()
+ .putAll("public", Address.createV4("172.24.4.232")).build()
+ ).build(),
+ Server.builder()
+ .links(
+ Link.create(
+ Relation.SELF,
+ URI.create("http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/cad76945-8851-489a-99e1-f1049e02c769")),
+ Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/cad76945-8851-489a-99e1-f1049e02c769")))
+ .image(Resource.builder()
+ .id("e3f84189-964e-4dc3-8ac6-832c2b7553d4")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4")))
+ .build())
+ .flavor(Resource.builder()
+ .id("6")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6")))
+ .build())
+ .id("cad76945-8851-489a-99e1-f1049e02c769")
+ .userId("08ba127f0d6842279f9db8e8bc6977e9")
+ .status(Status.SHELVED_OFFLOADED)
+ .updated(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:38:05Z"))
+ .name("machine_3")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:33:27Z"))
+ .tenantId("4e1900cf21924a098709c23480e157c0")
+ .extendedStatus(ServerExtendedStatus.builder().vmState("shelved_offloaded").powerState(4).build())
+ .diskConfig("MANUAL")
+ .extendedAttributes(
+ ServerExtendedAttributes.builder()
+ .instanceName("instance-00000006").build()
+ )
+ .addresses(ImmutableMultimap.<String, Address>builder()
+ .putAll("public", Address.createV4("172.24.4.229")).build()
+ ).build(),
+ Server.builder()
+ .links(
+ Link.create(
+ Relation.SELF,
+ URI.create("http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/89142a4f-f58c-4205-8571-65f4a2be2bc9")),
+ Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/89142a4f-f58c-4205-8571-65f4a2be2bc9")))
+ .image(Resource.builder()
+ .id("e3f84189-964e-4dc3-8ac6-832c2b7553d4")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4")))
+ .build())
+ .flavor(Resource.builder()
+ .id("6")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6")))
+ .build())
+ .id("89142a4f-f58c-4205-8571-65f4a2be2bc9")
+ .userId("08ba127f0d6842279f9db8e8bc6977e9")
+ .status(Status.RESCUE)
+ .updated(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:36:05Z"))
+ .hostId("0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8")
+ .name("machine_2")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:31:19Z"))
+ .tenantId("4e1900cf21924a098709c23480e157c0")
+ .extendedStatus(ServerExtendedStatus.builder().vmState("rescued").powerState(1).build())
+ .diskConfig("MANUAL")
+ .extendedAttributes(
+ ServerExtendedAttributes.builder()
+ .instanceName("instance-00000005")
+ .hostName("rdohavana.localdomain")
+ .hypervisorHostName("rdohavana.localdomain").build()
+ )
+ .addresses(ImmutableMultimap.<String, Address>builder()
+ .putAll("public", Address.createV4("172.24.4.227")).build()
+ ).build(),
+ Server.builder()
+ .links(
+ Link.create(
+ Relation.SELF,
+ URI.create("http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/fac50d26-bb38-455f-ad92-eba790187c00")),
+ Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/fac50d26-bb38-455f-ad92-eba790187c00")))
+ .image(Resource.builder()
+ .id("e3f84189-964e-4dc3-8ac6-832c2b7553d4")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4")))
+ .build())
+ .flavor(Resource.builder()
+ .id("6")
+ .links(Link.create(
+ Relation.BOOKMARK,
+ URI.create("http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6")))
+ .build())
+ .id("fac50d26-bb38-455f-ad92-eba790187c00")
+ .userId("08ba127f0d6842279f9db8e8bc6977e9")
+ .status(Status.SHUTOFF)
+ .updated(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:35:26Z"))
+ .hostId("0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8")
+ .name("machine_1")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2014-03-19T11:28:56Z"))
+ .tenantId("4e1900cf21924a098709c23480e157c0")
+ .extendedStatus(ServerExtendedStatus.builder().vmState("stopped").powerState(4).build())
+ .diskConfig("MANUAL")
+ .extendedAttributes(
+ ServerExtendedAttributes.builder()
+ .instanceName("instance-00000004")
+ .hostName("rdohavana.localdomain")
+ .hypervisorHostName("rdohavana.localdomain").build()
+ )
+ .addresses(ImmutableMultimap.<String, Address>builder()
+ .putAll("public", Address.createV4("172.24.4.228")).build()
+ ).build()
+ );
+ }
+
+
+ protected Injector injector() {
+ return Guice.createInjector(new NovaParserModule(), new GsonModule());
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/222779bb/apis/openstack-nova/src/test/resources/server_list_details_states.json
----------------------------------------------------------------------
diff --git a/apis/openstack-nova/src/test/resources/server_list_details_states.json b/apis/openstack-nova/src/test/resources/server_list_details_states.json
new file mode 100644
index 0000000..6fb28ed
--- /dev/null
+++ b/apis/openstack-nova/src/test/resources/server_list_details_states.json
@@ -0,0 +1,342 @@
+{
+ "servers": [
+ {
+ "OS-DCF:diskConfig": "MANUAL",
+ "OS-EXT-AZ:availability_zone": "nova",
+ "OS-EXT-SRV-ATTR:host": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:hypervisor_hostname": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:instance_name": "instance-0000000b",
+ "OS-EXT-STS:power_state": 0,
+ "OS-EXT-STS:task_state": "spawning",
+ "OS-EXT-STS:vm_state": "building",
+ "OS-SRV-USG:launched_at": null,
+ "OS-SRV-USG:terminated_at": null,
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {},
+ "config_drive": "",
+ "created": "2014-03-19T11:54:57Z",
+ "flavor": {
+ "id": "6",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8",
+ "id": "56d51a88-0066-4976-91b6-d1b453be603f",
+ "image": {
+ "id": "e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "key_name": null,
+ "links": [
+ {
+ "href": "http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/56d51a88-0066-4976-91b6-d1b453be603f",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/56d51a88-0066-4976-91b6-d1b453be603f",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {},
+ "name": "machine_5",
+ "os-extended-volumes:volumes_attached": [],
+ "progress": 0,
+ "security_groups": [
+ {
+ "name": "default"
+ }
+ ],
+ "status": "BUILD",
+ "tenant_id": "4e1900cf21924a098709c23480e157c0",
+ "updated": "2014-03-19T11:54:59Z",
+ "user_id": "08ba127f0d6842279f9db8e8bc6977e9"
+ },
+ {
+ "OS-DCF:diskConfig": "MANUAL",
+ "OS-EXT-AZ:availability_zone": "nova",
+ "OS-EXT-SRV-ATTR:host": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:hypervisor_hostname": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:instance_name": "instance-00000009",
+ "OS-EXT-STS:power_state": 1,
+ "OS-EXT-STS:task_state": null,
+ "OS-EXT-STS:vm_state": "active",
+ "OS-SRV-USG:launched_at": "2014-03-19T11:52:21.000000",
+ "OS-SRV-USG:terminated_at": null,
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {
+ "public": [
+ {
+ "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:df:22:1b",
+ "OS-EXT-IPS:type": "fixed",
+ "addr": "172.24.4.232",
+ "version": 4
+ }
+ ]
+ },
+ "config_drive": "",
+ "created": "2014-03-19T11:51:53Z",
+ "flavor": {
+ "id": "6",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8",
+ "id": "3bc8ab03-52e7-4d2b-ba88-73f9ecadf003",
+ "image": {
+ "id": "e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "key_name": null,
+ "links": [
+ {
+ "href": "http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/3bc8ab03-52e7-4d2b-ba88-73f9ecadf003",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/3bc8ab03-52e7-4d2b-ba88-73f9ecadf003",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {},
+ "name": "machine_4",
+ "os-extended-volumes:volumes_attached": [],
+ "progress": 0,
+ "security_groups": [
+ {
+ "name": "default"
+ }
+ ],
+ "status": "ACTIVE",
+ "tenant_id": "4e1900cf21924a098709c23480e157c0",
+ "updated": "2014-03-19T11:52:21Z",
+ "user_id": "08ba127f0d6842279f9db8e8bc6977e9"
+ },
+ {
+ "OS-DCF:diskConfig": "MANUAL",
+ "OS-EXT-AZ:availability_zone": "nova",
+ "OS-EXT-SRV-ATTR:host": null,
+ "OS-EXT-SRV-ATTR:hypervisor_hostname": null,
+ "OS-EXT-SRV-ATTR:instance_name": "instance-00000006",
+ "OS-EXT-STS:power_state": 4,
+ "OS-EXT-STS:task_state": null,
+ "OS-EXT-STS:vm_state": "shelved_offloaded",
+ "OS-SRV-USG:launched_at": "2014-03-19T11:33:52.000000",
+ "OS-SRV-USG:terminated_at": null,
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {
+ "public": [
+ {
+ "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:cb:56:d6",
+ "OS-EXT-IPS:type": "fixed",
+ "addr": "172.24.4.229",
+ "version": 4
+ }
+ ]
+ },
+ "config_drive": "",
+ "created": "2014-03-19T11:33:27Z",
+ "flavor": {
+ "id": "6",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "",
+ "id": "cad76945-8851-489a-99e1-f1049e02c769",
+ "image": {
+ "id": "e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "key_name": null,
+ "links": [
+ {
+ "href": "http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/cad76945-8851-489a-99e1-f1049e02c769",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/cad76945-8851-489a-99e1-f1049e02c769",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {},
+ "name": "machine_3",
+ "os-extended-volumes:volumes_attached": [],
+ "security_groups": [
+ {
+ "name": "default"
+ }
+ ],
+ "status": "SHELVED_OFFLOADED",
+ "tenant_id": "4e1900cf21924a098709c23480e157c0",
+ "updated": "2014-03-19T11:38:05Z",
+ "user_id": "08ba127f0d6842279f9db8e8bc6977e9"
+ },
+ {
+ "OS-DCF:diskConfig": "MANUAL",
+ "OS-EXT-AZ:availability_zone": "nova",
+ "OS-EXT-SRV-ATTR:host": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:hypervisor_hostname": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:instance_name": "instance-00000005",
+ "OS-EXT-STS:power_state": 1,
+ "OS-EXT-STS:task_state": null,
+ "OS-EXT-STS:vm_state": "rescued",
+ "OS-SRV-USG:launched_at": "2014-03-19T11:36:05.000000",
+ "OS-SRV-USG:terminated_at": null,
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {
+ "public": [
+ {
+ "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:18:fe:c8",
+ "OS-EXT-IPS:type": "fixed",
+ "addr": "172.24.4.227",
+ "version": 4
+ }
+ ]
+ },
+ "config_drive": "",
+ "created": "2014-03-19T11:31:19Z",
+ "flavor": {
+ "id": "6",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8",
+ "id": "89142a4f-f58c-4205-8571-65f4a2be2bc9",
+ "image": {
+ "id": "e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "key_name": null,
+ "links": [
+ {
+ "href": "http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/89142a4f-f58c-4205-8571-65f4a2be2bc9",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/89142a4f-f58c-4205-8571-65f4a2be2bc9",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {},
+ "name": "machine_2",
+ "os-extended-volumes:volumes_attached": [],
+ "security_groups": [
+ {
+ "name": "default"
+ }
+ ],
+ "status": "RESCUE",
+ "tenant_id": "4e1900cf21924a098709c23480e157c0",
+ "updated": "2014-03-19T11:36:05Z",
+ "user_id": "08ba127f0d6842279f9db8e8bc6977e9"
+ },
+ {
+ "OS-DCF:diskConfig": "MANUAL",
+ "OS-EXT-AZ:availability_zone": "nova",
+ "OS-EXT-SRV-ATTR:host": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:hypervisor_hostname": "rdohavana.localdomain",
+ "OS-EXT-SRV-ATTR:instance_name": "instance-00000004",
+ "OS-EXT-STS:power_state": 4,
+ "OS-EXT-STS:task_state": null,
+ "OS-EXT-STS:vm_state": "stopped",
+ "OS-SRV-USG:launched_at": "2014-03-19T11:30:33.000000",
+ "OS-SRV-USG:terminated_at": null,
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {
+ "public": [
+ {
+ "OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:64:1a:d5",
+ "OS-EXT-IPS:type": "fixed",
+ "addr": "172.24.4.228",
+ "version": 4
+ }
+ ]
+ },
+ "config_drive": "",
+ "created": "2014-03-19T11:28:56Z",
+ "flavor": {
+ "id": "6",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/flavors/6",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "0bc453b1c10348e9dc398fed7a5b06f996964ae1643fe460a85a23d8",
+ "id": "fac50d26-bb38-455f-ad92-eba790187c00",
+ "image": {
+ "id": "e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "links": [
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/images/e3f84189-964e-4dc3-8ac6-832c2b7553d4",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "key_name": null,
+ "links": [
+ {
+ "href": "http://openstack:8774/v2/4e1900cf21924a098709c23480e157c0/servers/fac50d26-bb38-455f-ad92-eba790187c00",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack:8774/4e1900cf21924a098709c23480e157c0/servers/fac50d26-bb38-455f-ad92-eba790187c00",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {},
+ "name": "machine_1",
+ "os-extended-volumes:volumes_attached": [],
+ "security_groups": [
+ {
+ "name": "default"
+ }
+ ],
+ "status": "SHUTOFF",
+ "tenant_id": "4e1900cf21924a098709c23480e157c0",
+ "updated": "2014-03-19T11:35:26Z",
+ "user_id": "08ba127f0d6842279f9db8e8bc6977e9"
+ }
+ ]
+}