blob: 3cccbc1a1e4faaf699e4913c73f83b7d011f3282 [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"
Samuel A. Falvo II10decf92014-02-13 17:05:35 -08008 "github.com/rackspace/gophercloud/openstack/compute/flavors"
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -08009 "os"
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080010)
11
12func TestListServers(t *testing.T) {
Samuel A. Falvo IIce000732014-02-13 18:53:53 -080013 ts, err := setupForList()
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080014 if err != nil {
15 t.Error(err)
16 return
17 }
18
Samuel A. Falvo IIce000732014-02-13 18:53:53 -080019 fmt.Fprintln(ts.w, "ID\tRegion\tName\tStatus\tIPv4\tIPv6\t")
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080020
21 region := os.Getenv("OS_REGION_NAME")
22 n := 0
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080023 for _, ep := range ts.eps {
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080024 if (region != "") && (region != ep.Region) {
25 continue
26 }
27
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080028 client := servers.NewClient(ep.PublicURL, ts.a, ts.o)
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080029
30 listResults, err := servers.List(client)
31 if err != nil {
32 t.Error(err)
33 return
34 }
35
36 svrs, err := servers.GetServers(listResults)
37 if err != nil {
38 t.Error(err)
39 return
40 }
41
42 n = n + len(svrs)
43
44 for _, s := range svrs {
Samuel A. Falvo IIce000732014-02-13 18:53:53 -080045 fmt.Fprintf(ts.w, "%s\t%s\t%s\t%s\t%s\t%s\t\n", s.Id, s.Name, ep.Region, s.Status, s.AccessIPv4, s.AccessIPv6)
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080046 }
47 }
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080048 ts.w.Flush()
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080049 fmt.Printf("--------\n%d servers listed.\n", n)
50}
51
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080052func TestListImages(t *testing.T) {
Samuel A. Falvo IIce000732014-02-13 18:53:53 -080053 ts, err := setupForList()
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080054 if err != nil {
55 t.Error(err)
56 return
57 }
58
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080059 fmt.Fprintln(ts.w, "ID\tRegion\tName\tStatus\tCreated\t")
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080060
61 region := os.Getenv("OS_REGION_NAME")
62 n := 0
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080063 for _, ep := range ts.eps {
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080064 if (region != "") && (region != ep.Region) {
65 continue
66 }
67
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080068 client := images.NewClient(ep.PublicURL, ts.a, ts.o)
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080069
70 listResults, err := images.List(client)
71 if err != nil {
72 t.Error(err)
73 return
74 }
75
76 imgs, err := images.GetImages(listResults)
77 if err != nil {
78 t.Error(err)
79 return
80 }
81
82 n = n + len(imgs)
83
84 for _, i := range imgs {
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080085 fmt.Fprintf(ts.w, "%s\t%s\t%s\t%s\t%s\t\n", i.Id, ep.Region, i.Name, i.Status, i.Created)
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080086 }
87 }
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080088 ts.w.Flush()
Samuel A. Falvo IIf370dc72014-02-13 15:05:34 -080089 fmt.Printf("--------\n%d images listed.\n", n)
90}
91
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080092func TestListFlavors(t *testing.T) {
Samuel A. Falvo IIce000732014-02-13 18:53:53 -080093 ts, err := setupForList()
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -080094 if err != nil {
95 t.Error(err)
96 return
97 }
98
Samuel A. Falvo II10decf92014-02-13 17:05:35 -080099 fmt.Fprintln(ts.w, "ID\tRegion\tName\tRAM\tDisk\tVCPUs\t")
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -0800100
101 region := os.Getenv("OS_REGION_NAME")
102 n := 0
103 for _, ep := range ts.eps {
104 if (region != "") && (region != ep.Region) {
105 continue
106 }
107
108 client := flavors.NewClient(ep.PublicURL, ts.a, ts.o)
109
110 listResults, err := flavors.List(client)
111 if err != nil {
112 t.Error(err)
113 return
114 }
115
116 flavs, err := flavors.GetFlavors(listResults)
117 if err != nil {
118 t.Error(err)
119 return
120 }
121
122 n = n + len(flavs)
123
124 for _, f := range flavs {
Samuel A. Falvo II10decf92014-02-13 17:05:35 -0800125 fmt.Fprintf(ts.w, "%s\t%s\t%s\t%d\t%d\t%d\t\n", f.Id, ep.Region, f.Name, f.Ram, f.Disk, f.VCpus)
Samuel A. Falvo IIdb020882014-02-13 15:37:57 -0800126 }
127 }
128 ts.w.Flush()
129 fmt.Printf("--------\n%d images listed.\n", n)
130}
131
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800132func TestCreateDestroyServer(t *testing.T) {
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800133 ts, err := setupForCRUD()
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800134 if err != nil {
135 t.Error(err)
136 return
137 }
138
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800139 err = createServer(ts)
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800140 if err != nil {
141 t.Error(err)
142 return
143 }
144
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800145 // We put this in a defer so that it gets executed even in the face of errors or panics.
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800146 defer func() {
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800147 servers.Delete(ts.client, ts.createdServer.Id)
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800148 }()
149
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800150 err = waitForStatus(ts, "ACTIVE")
151 if err != nil {
152 t.Error(err)
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800153 }
154}
155
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800156func TestUpdateServer(t *testing.T) {
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800157 ts, err := setupForCRUD()
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800158 if err != nil {
159 t.Error(err)
160 return
161 }
162
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800163 err = createServer(ts)
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800164 if err != nil {
165 t.Error(err)
166 return
167 }
168
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800169 defer func() {
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800170 servers.Delete(ts.client, ts.createdServer.Id)
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800171 }()
172
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800173 err = waitForStatus(ts, "ACTIVE")
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800174 if err != nil {
175 t.Error(err)
176 return
177 }
178
Samuel A. Falvo II0abdb102014-02-13 23:19:26 -0800179 err = changeServerName(ts)
Samuel A. Falvo II22d3b772014-02-13 19:27:05 -0800180 if err != nil {
181 t.Error(err)
182 return
183 }
Samuel A. Falvo IIce000732014-02-13 18:53:53 -0800184}
185