blob: d44140bcb66107a4dfbd441fcabd82dfb89679d7 [file] [log] [blame]
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -08001package openstack
2
3import (
4 "testing"
5 "fmt"
6 "github.com/rackspace/gophercloud/openstack/compute/servers"
7 "github.com/rackspace/gophercloud/openstack/compute/images"
8 "github.com/rackspace/gophercloud/openstack/identity"
9 "github.com/rackspace/gophercloud/openstack/utils"
10 "os"
11 "text/tabwriter"
12)
13
14func TestListServers(t *testing.T) {
15 ao, err := utils.AuthOptions()
16 if err != nil {
17 t.Error(err)
18 return
19 }
20
21 a, err := identity.Authenticate(ao)
22 if err != nil {
23 t.Error(err)
24 return
25 }
26
27 sc, err := identity.GetServiceCatalog(a)
28 if err != nil {
29 t.Error(err)
30 return
31 }
32
33 eps, err := findAllComputeEndpoints(sc)
34 if err != nil {
35 t.Error(err)
36 return
37 }
38
39 w := new(tabwriter.Writer)
40 w.Init(os.Stdout, 2, 8, 2, ' ', 0)
41 fmt.Fprintln(w, "ID\tRegion\tName\tIPv4\tIPv6\t")
42
43 region := os.Getenv("OS_REGION_NAME")
44 n := 0
45 for _, ep := range eps {
46 if (region != "") && (region != ep.Region) {
47 continue
48 }
49
50 client := servers.NewClient(ep.PublicURL, a, ao)
51
52 listResults, err := servers.List(client)
53 if err != nil {
54 t.Error(err)
55 return
56 }
57
58 svrs, err := servers.GetServers(listResults)
59 if err != nil {
60 t.Error(err)
61 return
62 }
63
64 n = n + len(svrs)
65
66 for _, s := range svrs {
67 fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t\n", s.Id, s.Name, ep.Region, s.AccessIPv4, s.AccessIPv6)
68 }
69 }
70 w.Flush()
71 fmt.Printf("--------\n%d servers listed.\n", n)
72}
73
74func findAllComputeEndpoints(sc *identity.ServiceCatalog) ([]identity.Endpoint, error) {
75 ces, err := sc.CatalogEntries()
76 if err != nil {
77 return nil, err
78 }
79
80 for _, ce := range ces {
81 if ce.Type == "compute" {
82 return ce.Endpoints, nil
83 }
84 }
85
86 return nil, fmt.Errorf("Compute endpoint not found.")
87}
88
89func TestListImages(t *testing.T) {
90 ao, err := utils.AuthOptions()
91 if err != nil {
92 t.Error(err)
93 return
94 }
95
96 a, err := identity.Authenticate(ao)
97 if err != nil {
98 t.Error(err)
99 return
100 }
101
102 sc, err := identity.GetServiceCatalog(a)
103 if err != nil {
104 t.Error(err)
105 return
106 }
107
108 eps, err := findAllComputeEndpoints(sc)
109 if err != nil {
110 t.Error(err)
111 return
112 }
113
114 w := new(tabwriter.Writer)
115 w.Init(os.Stdout, 2, 8, 2, ' ', 0)
116 fmt.Fprintln(w, "ID\tRegion\tName\tStatus\tCreated\t")
117
118 region := os.Getenv("OS_REGION_NAME")
119 n := 0
120 for _, ep := range eps {
121 if (region != "") && (region != ep.Region) {
122 continue
123 }
124
125 client := images.NewClient(ep.PublicURL, a, ao)
126
127 listResults, err := images.List(client)
128 if err != nil {
129 t.Error(err)
130 return
131 }
132
133 imgs, err := images.GetImages(listResults)
134 if err != nil {
135 t.Error(err)
136 return
137 }
138
139 n = n + len(imgs)
140
141 for _, i := range imgs {
142 fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t\n", i.Id, ep.Region, i.Name, i.Status, i.Created)
143 }
144 }
145 w.Flush()
146 fmt.Printf("--------\n%d images listed.\n", n)
147}
148