blob: 106d9b58537a350ca63cb318816dc1f671b258b3 [file] [log] [blame]
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -08001package servers
2
3import (
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -08004 "encoding/json"
Samuel A. Falvo IIe246ac02014-02-13 23:20:09 -08005 "testing"
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -08006)
7
8// Taken from: http://docs.openstack.org/api/openstack-compute/2/content/List_Servers-d1e2078.html
Ash Wilson12259392014-09-17 10:50:02 -04009const goodListServersResult = `
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -080010{
Ash Wilson12259392014-09-17 10:50:02 -040011 "servers": [
12 {
13 "id": "52415800-8b69-11e0-9b19-734f6af67565",
14 "tenant_id": "1234",
15 "user_id": "5678",
16 "name": "sample-server",
17 "updated": "2010-10-10T12:00:00Z",
18 "created": "2010-08-10T12:00:00Z",
19 "hostId": "e4d909c290d0fb1ca068ffaddf22cbd0",
20 "status": "BUILD",
21 "progress": 60,
22 "accessIPv4": "67.23.10.132",
23 "accessIPv6": "::babe:67.23.10.132",
24 "image": {
25 "id": "52415800-8b69-11e0-9b19-734f6f006e54",
26 "links": [
27 {
28 "rel": "self",
29 "href": "http://servers.api.openstack.org/v2/1234/images/52415800-8b69-11e0-9b19-734f6f006e54"
30 },
31 {
32 "rel": "bookmark",
33 "href": "http://servers.api.openstack.org/1234/images/52415800-8b69-11e0-9b19-734f6f006e54"
34 }
35 ]
36 },
37 "flavor": {
38 "id": "52415800-8b69-11e0-9b19-734f216543fd",
39 "links": [
40 {
41 "rel": "self",
42 "href": "http://servers.api.openstack.org/v2/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
43 },
44 {
45 "rel": "bookmark",
46 "href": "http://servers.api.openstack.org/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
47 }
48 ]
49 },
50 "addresses": {
51 "public": [
52 {
53 "version": 4,
54 "addr": "67.23.10.132"
55 },
56 {
57 "version": 6,
58 "addr": "::babe:67.23.10.132"
59 },
60 {
61 "version": 4,
62 "addr": "67.23.10.131"
63 },
64 {
65 "version": 6,
66 "addr": "::babe:4317:0A83"
67 }
68 ],
69 "private": [
70 {
71 "version": 4,
72 "addr": "10.176.42.16"
73 },
74 {
75 "version": 6,
76 "addr": "::babe:10.176.42.16"
77 }
78 ]
79 },
80 "metadata": {
81 "Server Label": "Web Head 1",
82 "Image Version": "2.1"
83 },
84 "links": [
85 {
86 "rel": "self",
87 "href": "http://servers.api.openstack.org/v2/1234/servers/52415800-8b69-11e0-9b19-734f6af67565"
88 },
89 {
90 "rel": "bookmark",
91 "href": "http://servers.api.openstack.org/1234/servers/52415800-8b69-11e0-9b19-734f6af67565"
92 }
93 ]
94 },
95 {
96 "id": "52415800-8b69-11e0-9b19-734f1f1350e5",
97 "user_id": "5678",
98 "name": "sample-server2",
99 "tenant_id": "1234",
100 "updated": "2010-10-10T12:00:00Z",
101 "created": "2010-08-10T12:00:00Z",
102 "hostId": "9e107d9d372bb6826bd81d3542a419d6",
103 "status": "ACTIVE",
104 "accessIPv4": "67.23.10.133",
105 "accessIPv6": "::babe:67.23.10.133",
106 "image": {
107 "id": "52415800-8b69-11e0-9b19-734f5736d2a2",
108 "links": [
109 {
110 "rel": "self",
111 "href": "http://servers.api.openstack.org/v2/1234/images/52415800-8b69-11e0-9b19-734f5736d2a2"
112 },
113 {
114 "rel": "bookmark",
115 "href": "http://servers.api.openstack.org/1234/images/52415800-8b69-11e0-9b19-734f5736d2a2"
116 }
117 ]
118 },
119 "flavor": {
120 "id": "52415800-8b69-11e0-9b19-734f216543fd",
121 "links": [
122 {
123 "rel": "self",
124 "href": "http://servers.api.openstack.org/v2/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
125 },
126 {
127 "rel": "bookmark",
128 "href": "http://servers.api.openstack.org/1234/flavors/52415800-8b69-11e0-9b19-734f216543fd"
129 }
130 ]
131 },
132 "addresses": {
133 "public": [
134 {
135 "version": 4,
136 "addr": "67.23.10.133"
137 },
138 {
139 "version": 6,
140 "addr": "::babe:67.23.10.133"
141 }
142 ],
143 "private": [
144 {
145 "version": 4,
146 "addr": "10.176.42.17"
147 },
148 {
149 "version": 6,
150 "addr": "::babe:10.176.42.17"
151 }
152 ]
153 },
154 "metadata": {
155 "Server Label": "DB 1"
156 },
157 "links": [
158 {
159 "rel": "self",
160 "href": "http://servers.api.openstack.org/v2/1234/servers/52415800-8b69-11e0-9b19-734f1f1350e5"
161 },
162 {
163 "rel": "bookmark",
164 "href": "http://servers.api.openstack.org/1234/servers/52415800-8b69-11e0-9b19-734f1f1350e5"
165 }
166 ]
167 }
168 ]
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800169}
Ash Wilson12259392014-09-17 10:50:02 -0400170`
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800171
Ash Wilson12259392014-09-17 10:50:02 -0400172func TestExtractServers(t *testing.T) {
173 var listPage ListPage
174 err := json.Unmarshal([]byte(goodListServersResult), &listPage.MarkerPageBase.LastHTTPResponse.Body)
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800175 if err != nil {
Ash Wilson12259392014-09-17 10:50:02 -0400176 t.Fatalf("Error decoding JSON fixture: %v", err)
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800177 }
178
Ash Wilson12259392014-09-17 10:50:02 -0400179 svrs, err := ExtractServers(listPage)
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800180 if err != nil {
Ash Wilson12259392014-09-17 10:50:02 -0400181 t.Fatalf("Error extracting servers: %v", err)
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800182 }
183
184 if len(svrs) != 2 {
Ash Wilson12259392014-09-17 10:50:02 -0400185 t.Fatalf("Expected 2 servers; got %d", len(svrs))
Samuel A. Falvo IIc007c272014-02-10 20:49:26 -0800186 }
187}