Merge pull request #52 from rackspace/ServerDetails

Fix ListServers to yield full details.
diff --git a/acceptance/02-list-servers.go b/acceptance/02-list-servers.go
index 64ec4f6..758c706 100644
--- a/acceptance/02-list-servers.go
+++ b/acceptance/02-list-servers.go
@@ -33,14 +33,47 @@
 		panic(err)
 	}
 
+  tryFullDetails(api)
+  tryLinksOnly(api)
+}
+
+func tryLinksOnly(api gophercloud.CloudServersProvider) {
+	servers, err := api.ListServersLinksOnly()
+	if err != nil {
+		panic(err)
+	}
+
+	if !*quiet {
+    fmt.Println("Id,Name")
+		for _, s := range servers {
+      if s.AccessIPv4 != "" {
+        panic("IPv4 not expected")
+      }
+
+      if s.Status != "" {
+        panic("Status not expected")
+      }
+
+      if s.Progress != 0 {
+        panic("Progress not expected")
+      }
+
+			fmt.Printf("%s,\"%s\"\n", s.Id, s.Name)
+		}
+	}
+}
+
+func tryFullDetails(api gophercloud.CloudServersProvider) {
 	servers, err := api.ListServers()
 	if err != nil {
 		panic(err)
 	}
 
 	if !*quiet {
+    fmt.Println("Id,Name,AccessIPv4,Status,Progress")
 		for _, s := range servers {
-			fmt.Printf("%s\n", s.Id)
+			fmt.Printf("%s,\"%s\",%s,%s,%d\n", s.Id, s.Name, s.AccessIPv4, s.Status, s.Progress)
 		}
 	}
 }
+
diff --git a/interfaces.go b/interfaces.go
index b73a118..4342553 100644
--- a/interfaces.go
+++ b/interfaces.go
@@ -27,6 +27,7 @@
   // Servers
 
 	ListServers() ([]Server, error)
+  ListServersLinksOnly() ([]Server, error)
 	ServerById(id string) (*Server, error)
 	CreateServer(ns NewServer) (*NewServer, error)
 	DeleteServerById(id string) error
diff --git a/servers.go b/servers.go
index f907d84..4f7cc1e 100644
--- a/servers.go
+++ b/servers.go
@@ -23,7 +23,7 @@
 }
 
 // See the CloudServersProvider interface for details.
-func (gcp *genericServersProvider) ListServers() ([]Server, error) {
+func (gcp *genericServersProvider) ListServersLinksOnly() ([]Server, error) {
 	var ss []Server
 
 	err := gcp.context.WithReauth(gcp.access, func() error {
@@ -40,6 +40,23 @@
 }
 
 // See the CloudServersProvider interface for details.
+func (gcp *genericServersProvider) ListServers() ([]Server, error) {
+	var ss []Server
+
+	err := gcp.context.WithReauth(gcp.access, func() error {
+		url := gcp.endpoint + "/servers/detail"
+		return perigee.Get(url, perigee.Options{
+			CustomClient: gcp.context.httpClient,
+			Results:      &struct{ Servers *[]Server }{&ss},
+			MoreHeaders: map[string]string{
+				"X-Auth-Token": gcp.access.AuthToken(),
+			},
+		})
+	})
+	return ss, err
+}
+
+// See the CloudServersProvider interface for details.
 func (gsp *genericServersProvider) ServerById(id string) (*Server, error) {
 	var s *Server