func (s *URLsSuite) assertImageMetadataURLOfficialSource(c *gc.C, baseURL string) { // Released streams. URL, err := imagemetadata.ImageMetadataURL(baseURL, "") c.Assert(err, jc.ErrorIsNil) c.Assert(URL, gc.Equals, fmt.Sprintf("%s/%s", baseURL, "releases")) URL, err = imagemetadata.ImageMetadataURL(baseURL, imagemetadata.ReleasedStream) c.Assert(err, jc.ErrorIsNil) c.Assert(URL, gc.Equals, fmt.Sprintf("%s/%s", baseURL, "releases")) // Non-released streams. URL, err = imagemetadata.ImageMetadataURL(baseURL, "daily") c.Assert(err, jc.ErrorIsNil) c.Assert(URL, gc.Equals, fmt.Sprintf("%s/%s", baseURL, "daily")) }
func (s *URLsSuite) TestImageMetadataURLOfficialSource(c *gc.C) { // Released streams. URL, err := imagemetadata.ImageMetadataURL(imagemetadata.UbuntuCloudImagesURL, "") c.Assert(err, gc.IsNil) c.Assert(URL, gc.Equals, "http://cloud-images.ubuntu.com/releases") URL, err = imagemetadata.ImageMetadataURL(imagemetadata.UbuntuCloudImagesURL, imagemetadata.ReleasedStream) c.Assert(err, gc.IsNil) c.Assert(URL, gc.Equals, "http://cloud-images.ubuntu.com/releases") // Non-released streams. URL, err = imagemetadata.ImageMetadataURL(imagemetadata.UbuntuCloudImagesURL, "daily") c.Assert(err, gc.IsNil) c.Assert(URL, gc.Equals, "http://cloud-images.ubuntu.com/daily") }
func (s *URLsSuite) TestImageMetadataURL(c *gc.C) { var imageTests = []struct { in string expected string expectedErr error }{{ in: "", expected: "", expectedErr: nil, }, { in: "file://foo", expected: "file://foo", expectedErr: nil, }, { in: "http://foo", expected: "http://foo", expectedErr: nil, }, { in: "foo", expected: "", expectedErr: fmt.Errorf("foo is not an absolute path"), }} imageTests = append(imageTests, imageTestsPlatformSpecific...) for i, t := range imageTests { c.Logf("Test %d:", i) out, err := imagemetadata.ImageMetadataURL(t.in, "") c.Assert(err, gc.DeepEquals, t.expectedErr) c.Assert(out, gc.Equals, t.expected) } }
// ImageMetadataSources returns the sources to use when looking for // simplestreams image id metadata for the given stream. func ImageMetadataSources(env Environ) ([]simplestreams.DataSource, error) { config := env.Config() // Add configured and environment-specific datasources. var sources []simplestreams.DataSource if userURL, ok := config.ImageMetadataURL(); ok { verify := utils.VerifySSLHostnames if !config.SSLHostnameVerification() { verify = utils.NoVerifySSLHostnames } sources = append(sources, simplestreams.NewURLDataSource("image-metadata-url", userURL, verify)) } envDataSources, err := environmentDataSources(env) if err != nil { return nil, err } sources = append(sources, envDataSources...) // Add the default, public datasource. defaultURL, err := imagemetadata.ImageMetadataURL(imagemetadata.DefaultBaseURL, config.ImageStream()) if err != nil { return nil, err } if defaultURL != "" { sources = append(sources, simplestreams.NewURLDataSource("default cloud images", defaultURL, utils.VerifySSLHostnames)) } for _, ds := range sources { logger.Debugf("using image datasource %q", ds.Description()) } return sources, nil }
func (s *URLsSuite) TestImageMetadataURL(c *gc.C) { for source, expected := range map[string]string{ "": "", "foo": "file://foo/images", "/home/foo": "file:///home/foo/images", "file://foo": "file://foo", "http://foo": "http://foo", } { URL, err := imagemetadata.ImageMetadataURL(source, "") c.Assert(err, gc.IsNil) c.Assert(URL, gc.Equals, expected) } }