blob: 9a729ff6b1271a23b86d288dcbb2dd4b08c6c219 [file] [log] [blame]
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -08001package main
2
3import (
4 "fmt"
5 "github.com/rackspace/gophercloud/openstack/compute/servers"
6 "github.com/rackspace/gophercloud/openstack/identity"
7 "github.com/rackspace/gophercloud/openstack/utils"
8)
9
10func main() {
11 ao, err := utils.AuthOptions()
12 if err != nil {
13 panic(err)
14 }
15
16 a, err := identity.Authenticate(ao)
17 if err != nil {
18 panic(err)
19 }
20
21 sc, err := identity.GetServiceCatalog(a)
22 if err != nil {
23 panic(err)
24 }
25
26 ep, err := findAnyComputeEndpoint(sc)
27 if err != nil {
28 panic(err)
29 }
30
31 client := servers.NewClient(ep, a, ao)
32
33 listResults, err := servers.List(client)
34 if err != nil {
35 panic(err)
36 }
37
38 svrs, err := servers.GetServers(listResults)
39 if err != nil {
40 panic(err)
41 }
42
43 for _, s := range svrs {
44 fmt.Printf("ID(%s)\n", s.Id)
45 fmt.Printf(" Name(%s)\n", s.Name)
46 fmt.Printf(" IPv4(%s)\n IPv6(%s)\n", s.AccessIPv4, s.AccessIPv6)
47 }
48 fmt.Printf("--------\n%d servers listed.\n", len(svrs))
49}
50
51
52func findAnyComputeEndpoint(sc *identity.ServiceCatalog) (string, error) {
53 ces, err := sc.CatalogEntries()
54 if err != nil {
55 return "", err
56 }
57
58 for _, ce := range ces {
59 if ce.Type == "compute" {
60 return ce.Endpoints[0].PublicURL, nil
61 }
62 }
63
64 return "", fmt.Errorf("Compute endpoint not found.")
65}
66