LEFT | RIGHT |
1 // Copyright 2012, 2013 Canonical Ltd. | 1 // Copyright 2012, 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 openstack_test | 4 package openstack_test |
5 | 5 |
6 import ( | 6 import ( |
7 "bytes" | 7 "bytes" |
8 "fmt" | 8 "fmt" |
9 "io/ioutil" | 9 "io/ioutil" |
10 "net/http" | 10 "net/http" |
(...skipping 13 matching lines...) Expand all Loading... |
24 "launchpad.net/juju-core/environs/imagemetadata" | 24 "launchpad.net/juju-core/environs/imagemetadata" |
25 "launchpad.net/juju-core/environs/jujutest" | 25 "launchpad.net/juju-core/environs/jujutest" |
26 "launchpad.net/juju-core/environs/simplestreams" | 26 "launchpad.net/juju-core/environs/simplestreams" |
27 envtesting "launchpad.net/juju-core/environs/testing" | 27 envtesting "launchpad.net/juju-core/environs/testing" |
28 "launchpad.net/juju-core/environs/tools" | 28 "launchpad.net/juju-core/environs/tools" |
29 "launchpad.net/juju-core/instance" | 29 "launchpad.net/juju-core/instance" |
30 "launchpad.net/juju-core/juju/testing" | 30 "launchpad.net/juju-core/juju/testing" |
31 "launchpad.net/juju-core/provider" | 31 "launchpad.net/juju-core/provider" |
32 "launchpad.net/juju-core/provider/openstack" | 32 "launchpad.net/juju-core/provider/openstack" |
33 coretesting "launchpad.net/juju-core/testing" | 33 coretesting "launchpad.net/juju-core/testing" |
| 34 jc "launchpad.net/juju-core/testing/checkers" |
34 "launchpad.net/juju-core/version" | 35 "launchpad.net/juju-core/version" |
35 ) | 36 ) |
36 | 37 |
37 type ProviderSuite struct { | 38 type ProviderSuite struct { |
38 restoreTimeouts func() | 39 restoreTimeouts func() |
39 } | 40 } |
40 | 41 |
41 var _ = gc.Suite(&ProviderSuite{}) | 42 var _ = gc.Suite(&ProviderSuite{}) |
42 | 43 |
43 func (s *ProviderSuite) SetUpTest(c *gc.C) { | 44 func (s *ProviderSuite) SetUpTest(c *gc.C) { |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 inst1, _, err := provider.StartInstance(s.env, "1", "fake_nonce", series
, constraints.Value{}, info, apiInfo) | 470 inst1, _, err := provider.StartInstance(s.env, "1", "fake_nonce", series
, constraints.Value{}, info, apiInfo) |
470 c.Assert(err, gc.IsNil) | 471 c.Assert(err, gc.IsNil) |
471 | 472 |
472 err = s.env.Destroy(append(insts, inst1)) | 473 err = s.env.Destroy(append(insts, inst1)) |
473 c.Assert(err, gc.IsNil) | 474 c.Assert(err, gc.IsNil) |
474 | 475 |
475 _, err = provider.LoadState(s.env.Storage()) | 476 _, err = provider.LoadState(s.env.Storage()) |
476 c.Assert(err, gc.NotNil) | 477 c.Assert(err, gc.NotNil) |
477 } | 478 } |
478 | 479 |
479 func (s *localServerSuite) TestGetImageMetadataURLs(c *gc.C) { | 480 func (s *localServerSuite) TestGetImageMetadataSources(c *gc.C) { |
480 » urls, err := imagemetadata.GetMetadataURLs(s.env) | 481 » sources, err := imagemetadata.GetMetadataSources(s.env) |
481 » c.Assert(err, gc.IsNil) | 482 » c.Assert(err, gc.IsNil) |
482 » c.Assert(len(urls), gc.Equals, 3) | 483 » c.Assert(len(sources), gc.Equals, 4) |
| 484 » var urls = make([]string, len(sources)) |
| 485 » for i, source := range sources { |
| 486 » » url, err := source.URL("") |
| 487 » » c.Assert(err, gc.IsNil) |
| 488 » » urls[i] = url |
| 489 » } |
| 490 » // The control bucket URL contains the bucket name. |
| 491 » c.Check(strings.Contains(urls[0], openstack.ControlBucketName(s.env)), j
c.IsTrue) |
483 // The public bucket URL ends with "/juju-dist/". | 492 // The public bucket URL ends with "/juju-dist/". |
484 » c.Check(strings.HasSuffix(urls[0], "/juju-dist/"), gc.Equals, true) | 493 » c.Check(strings.HasSuffix(urls[1], "/juju-dist/"), jc.IsTrue) |
485 // The product-streams URL ends with "/imagemetadata". | 494 // The product-streams URL ends with "/imagemetadata". |
486 » c.Check(strings.HasSuffix(urls[1], "/imagemetadata"), gc.Equals, true) | 495 » c.Check(strings.HasSuffix(urls[2], "/imagemetadata/"), jc.IsTrue) |
487 » c.Assert(urls[2], gc.Equals, imagemetadata.DefaultBaseURL) | 496 » c.Assert(urls[3], gc.Equals, imagemetadata.DefaultBaseURL+"/") |
488 } | 497 } |
489 | 498 |
490 func (s *localServerSuite) TestGetToolsMetadataURLs(c *gc.C) { | 499 func (s *localServerSuite) TestGetToolsMetadataSources(c *gc.C) { |
491 » urls, err := tools.GetMetadataURLs(s.env) | 500 » sources, err := tools.GetMetadataSources(s.env) |
492 » c.Assert(err, gc.IsNil) | 501 » c.Assert(err, gc.IsNil) |
493 » c.Assert(len(urls), gc.Equals, 1) | 502 » c.Assert(len(sources), gc.Equals, 2) |
494 » _, err = url.Parse(urls[0]) | 503 » var urls = make([]string, len(sources)) |
| 504 » for i, source := range sources { |
| 505 » » url, err := source.URL("") |
| 506 » » c.Assert(err, gc.IsNil) |
| 507 » » urls[i] = url |
| 508 » } |
| 509 » // The control bucket URL contains the bucket name. |
| 510 » c.Check(strings.Contains(urls[0], openstack.ControlBucketName(s.env)+"/t
ools"), jc.IsTrue) |
| 511 » c.Assert(err, gc.IsNil) |
| 512 » // Check that the URL from keytone parses. |
| 513 » _, err = url.Parse(urls[1]) |
495 c.Assert(err, gc.IsNil) | 514 c.Assert(err, gc.IsNil) |
496 } | 515 } |
497 | 516 |
498 func (s *localServerSuite) TestFindImageSpecPublicStorage(c *gc.C) { | 517 func (s *localServerSuite) TestFindImageSpecPublicStorage(c *gc.C) { |
499 spec, err := openstack.FindInstanceSpec(s.Env, "raring", "amd64", "mem=5
12M") | 518 spec, err := openstack.FindInstanceSpec(s.Env, "raring", "amd64", "mem=5
12M") |
500 c.Assert(err, gc.IsNil) | 519 c.Assert(err, gc.IsNil) |
501 c.Assert(spec.Image.Id, gc.Equals, "id-y") | 520 c.Assert(spec.Image.Id, gc.Equals, "id-y") |
502 c.Assert(spec.InstanceType.Name, gc.Equals, "m1.tiny") | 521 c.Assert(spec.InstanceType.Name, gc.Equals, "m1.tiny") |
503 } | 522 } |
504 | 523 |
505 func (s *localServerSuite) TestFindImageBadDefaultImage(c *gc.C) { | 524 func (s *localServerSuite) TestFindImageBadDefaultImage(c *gc.C) { |
506 // An error occurs if no suitable image is found. | 525 // An error occurs if no suitable image is found. |
507 _, err := openstack.FindInstanceSpec(s.Env, "saucy", "amd64", "mem=8G") | 526 _, err := openstack.FindInstanceSpec(s.Env, "saucy", "amd64", "mem=8G") |
508 c.Assert(err, gc.ErrorMatches, `no "saucy" images in some-region with ar
ches \[amd64\]`) | 527 c.Assert(err, gc.ErrorMatches, `no "saucy" images in some-region with ar
ches \[amd64\]`) |
509 } | 528 } |
510 | 529 |
511 func (s *localServerSuite) TestValidateImageMetadata(c *gc.C) { | 530 func (s *localServerSuite) TestValidateImageMetadata(c *gc.C) { |
512 params, err := s.Env.(simplestreams.MetadataValidator).MetadataLookupPar
ams("some-region") | 531 params, err := s.Env.(simplestreams.MetadataValidator).MetadataLookupPar
ams("some-region") |
513 c.Assert(err, gc.IsNil) | 532 c.Assert(err, gc.IsNil) |
514 » params.BaseURLs, err = imagemetadata.GetMetadataURLs(s.Env) | 533 » params.Sources, err = imagemetadata.GetMetadataSources(s.Env) |
515 c.Assert(err, gc.IsNil) | 534 c.Assert(err, gc.IsNil) |
516 params.Series = "raring" | 535 params.Series = "raring" |
517 image_ids, err := imagemetadata.ValidateImageMetadata(params) | 536 image_ids, err := imagemetadata.ValidateImageMetadata(params) |
518 c.Assert(err, gc.IsNil) | 537 c.Assert(err, gc.IsNil) |
519 c.Assert(image_ids, gc.DeepEquals, []string{"id-y"}) | 538 c.Assert(image_ids, gc.DeepEquals, []string{"id-y"}) |
520 } | 539 } |
521 | 540 |
522 func (s *localServerSuite) TestRemoveAll(c *gc.C) { | 541 func (s *localServerSuite) TestRemoveAll(c *gc.C) { |
523 storage := s.Env.Storage() | 542 storage := s.Env.Storage() |
524 for _, a := range []byte("abcdefghijklmnopqrstuvwxyz") { | 543 for _, a := range []byte("abcdefghijklmnopqrstuvwxyz") { |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 config["public-bucket-url"] = "" | 652 config["public-bucket-url"] = "" |
634 var err error | 653 var err error |
635 s.env, err = environs.NewFromAttrs(config) | 654 s.env, err = environs.NewFromAttrs(config) |
636 c.Assert(err, gc.IsNil) | 655 c.Assert(err, gc.IsNil) |
637 url, err := s.env.PublicStorage().URL("") | 656 url, err := s.env.PublicStorage().URL("") |
638 c.Assert(err, gc.IsNil) | 657 c.Assert(err, gc.IsNil) |
639 swiftURL, err := openstack.GetSwiftURL(s.env) | 658 swiftURL, err := openstack.GetSwiftURL(s.env) |
640 c.Assert(err, gc.IsNil) | 659 c.Assert(err, gc.IsNil) |
641 c.Assert(url, gc.Equals, fmt.Sprintf("%s/juju-dist/", swiftURL)) | 660 c.Assert(url, gc.Equals, fmt.Sprintf("%s/juju-dist/", swiftURL)) |
642 } | 661 } |
LEFT | RIGHT |