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