LEFT | RIGHT |
1 // Copyright 2013 Canonical Ltd. | 1 // Copyright 2013 Canonical Ltd. |
2 // Licensed under the AGPLv3, see LICENCE file for details. | 2 // Licensed under the AGPLv3, see LICENCE file for details. |
3 | 3 |
4 package azure | 4 package azure |
5 | 5 |
6 import ( | 6 import ( |
| 7 "bytes" |
7 "encoding/base64" | 8 "encoding/base64" |
8 "encoding/xml" | 9 "encoding/xml" |
9 "fmt" | 10 "fmt" |
| 11 "io/ioutil" |
10 "net/http" | 12 "net/http" |
11 "net/url" | 13 "net/url" |
12 "path" | 14 "path" |
13 "regexp" | 15 "regexp" |
14 "strings" | 16 "strings" |
15 "sync" | 17 "sync" |
16 | 18 |
17 gc "launchpad.net/gocheck" | 19 gc "launchpad.net/gocheck" |
18 "launchpad.net/gwacl" | 20 "launchpad.net/gwacl" |
19 | 21 |
20 "launchpad.net/juju-core/constraints" | 22 "launchpad.net/juju-core/constraints" |
21 "launchpad.net/juju-core/environs" | 23 "launchpad.net/juju-core/environs" |
22 "launchpad.net/juju-core/environs/config" | 24 "launchpad.net/juju-core/environs/config" |
23 "launchpad.net/juju-core/environs/imagemetadata" | 25 "launchpad.net/juju-core/environs/imagemetadata" |
24 "launchpad.net/juju-core/environs/localstorage" | 26 "launchpad.net/juju-core/environs/localstorage" |
| 27 "launchpad.net/juju-core/environs/simplestreams" |
| 28 "launchpad.net/juju-core/environs/tools" |
25 "launchpad.net/juju-core/errors" | 29 "launchpad.net/juju-core/errors" |
26 "launchpad.net/juju-core/instance" | 30 "launchpad.net/juju-core/instance" |
27 "launchpad.net/juju-core/provider" | 31 "launchpad.net/juju-core/provider" |
28 "launchpad.net/juju-core/testing" | 32 "launchpad.net/juju-core/testing" |
29 jc "launchpad.net/juju-core/testing/checkers" | 33 jc "launchpad.net/juju-core/testing/checkers" |
30 ) | 34 ) |
31 | 35 |
32 type environSuite struct { | 36 type environSuite struct { |
33 providerSuite | 37 providerSuite |
34 } | 38 } |
(...skipping 1244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 func (*environSuite) TestExtractStorageKeyFallsBackToSecondaryKey(c *gc.C) { | 1283 func (*environSuite) TestExtractStorageKeyFallsBackToSecondaryKey(c *gc.C) { |
1280 keys := gwacl.StorageAccountKeys{ | 1284 keys := gwacl.StorageAccountKeys{ |
1281 Secondary: "sparekey", | 1285 Secondary: "sparekey", |
1282 } | 1286 } |
1283 c.Check(extractStorageKey(&keys), gc.Equals, "sparekey") | 1287 c.Check(extractStorageKey(&keys), gc.Equals, "sparekey") |
1284 } | 1288 } |
1285 | 1289 |
1286 func (*environSuite) TestExtractStorageKeyReturnsBlankIfNoneSet(c *gc.C) { | 1290 func (*environSuite) TestExtractStorageKeyReturnsBlankIfNoneSet(c *gc.C) { |
1287 c.Check(extractStorageKey(&gwacl.StorageAccountKeys{}), gc.Equals, "") | 1291 c.Check(extractStorageKey(&gwacl.StorageAccountKeys{}), gc.Equals, "") |
1288 } | 1292 } |
| 1293 |
| 1294 func assertSourceContents(c *gc.C, source simplestreams.DataSource, filename str
ing, content []byte) { |
| 1295 rc, _, err := source.Fetch(filename) |
| 1296 c.Assert(err, gc.IsNil) |
| 1297 defer rc.Close() |
| 1298 retrieved, err := ioutil.ReadAll(rc) |
| 1299 c.Assert(err, gc.IsNil) |
| 1300 c.Assert(retrieved, gc.DeepEquals, content) |
| 1301 } |
| 1302 |
| 1303 func (*environSuite) TestGetImageMetadataSources(c *gc.C) { |
| 1304 env := makeEnviron(c) |
| 1305 cleanup := setDummyStorage(c, env) |
| 1306 defer cleanup() |
| 1307 |
| 1308 data := []byte{1, 2, 3, 4} |
| 1309 env.Storage().Put("filename", bytes.NewReader(data), int64(len(data))) |
| 1310 |
| 1311 sources, err := imagemetadata.GetMetadataSources(env) |
| 1312 c.Assert(err, gc.IsNil) |
| 1313 c.Assert(len(sources), gc.Equals, 3) |
| 1314 assertSourceContents(c, sources[0], "filename", data) |
| 1315 url, err := sources[1].URL("") |
| 1316 c.Assert(err, gc.IsNil) |
| 1317 c.Assert(url, gc.Equals, "http://cloud-images.ubuntu.com/daily/") |
| 1318 url, err = sources[2].URL("") |
| 1319 c.Assert(err, gc.IsNil) |
| 1320 c.Assert(url, gc.Equals, imagemetadata.DefaultBaseURL+"/") |
| 1321 } |
| 1322 |
| 1323 func (*environSuite) TestGetToolsMetadataSources(c *gc.C) { |
| 1324 env := makeEnviron(c) |
| 1325 cleanup := setDummyStorage(c, env) |
| 1326 defer cleanup() |
| 1327 |
| 1328 data := []byte{1, 2, 3, 4} |
| 1329 env.Storage().Put("tools/filename", bytes.NewReader(data), int64(len(dat
a))) |
| 1330 |
| 1331 sources, err := tools.GetMetadataSources(env) |
| 1332 c.Assert(err, gc.IsNil) |
| 1333 c.Assert(len(sources), gc.Equals, 1) |
| 1334 assertSourceContents(c, sources[0], "filename", data) |
| 1335 } |
LEFT | RIGHT |