func (s *archSuite) setupMetadata(c *gc.C, arches []string) (environs.Environ, simplestreams.CloudSpec) { s.PatchValue(&imagemetadata.DefaultBaseURL, "") stor := newStorage(s, c) env := &mockEnviron{ storage: stor, config: configGetter(c), } var images []*imagemetadata.ImageMetadata for _, arch := range arches { images = append(images, &imagemetadata.ImageMetadata{ Id: "image-id", Arch: arch, RegionName: "Region", Endpoint: "https://endpoint/", }) } // Append an image from another region with some other arch to ensure it is ignored. images = append(images, &imagemetadata.ImageMetadata{ Id: "image-id", Arch: "arch", RegionName: "Region-Two", Endpoint: "https://endpoint/", }) cloudSpec := simplestreams.CloudSpec{ Region: "Region", Endpoint: "https://endpoint/", } err := imagemetadata.MergeAndWriteMetadata("precise", images, &cloudSpec, env.Storage()) c.Assert(err, gc.IsNil) return env, cloudSpec }
func (c *ImageMetadataCommand) Run(context *cmd.Context) error { if err := c.setParams(context); err != nil { return err } out := context.Stdout im := &imagemetadata.ImageMetadata{ Id: c.ImageId, Arch: c.Arch, } cloudSpec := simplestreams.CloudSpec{ Region: c.Region, Endpoint: c.Endpoint, } targetStorage, err := filestorage.NewFileStorageWriter(c.Dir) if err != nil { return err } err = imagemetadata.MergeAndWriteMetadata(c.Series, []*imagemetadata.ImageMetadata{im}, &cloudSpec, targetStorage) if err != nil { return fmt.Errorf("image metadata files could not be created: %v", err) } dir := context.AbsPath(c.Dir) dest := filepath.Join(dir, storage.BaseImagesPath, "streams", "v1") fmt.Fprintf(out, fmt.Sprintf(helpDoc, dest, dir, dir)) return nil }
func createImageMetadata(c *gc.C) (sourceDir string, destDir string, destStor storage.Storage, metadata *imagemetadata.ImageMetadata) { destDir = c.MkDir() var err error destStor, err = filestorage.NewFileStorageWriter(destDir) c.Assert(err, gc.IsNil) // Generate some metadata. sourceDir = c.MkDir() im := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } im[0].RegionName = cloudSpec.Region im[0].Endpoint = cloudSpec.Endpoint var sourceStor storage.Storage sourceStor, err = filestorage.NewFileStorageWriter(sourceDir) c.Assert(err, gc.IsNil) err = imagemetadata.MergeAndWriteMetadata("raring", im, cloudSpec, sourceStor) c.Assert(err, gc.IsNil) return sourceDir, destDir, destStor, im[0] }
func makeTestMetadata(c *gc.C, env environs.Environ, series, location string, im []*imagemetadata.ImageMetadata) { cloudSpec := simplestreams.CloudSpec{ Region: location, Endpoint: "https://management.core.windows.net/", } err := imagemetadata.MergeAndWriteMetadata(series, im, &cloudSpec, env.Storage()) c.Assert(err, gc.IsNil) }
func (s *ValidateSuite) makeLocalMetadata(c *gc.C, id, region, series, endpoint, stream string) error { metadata := []*imagemetadata.ImageMetadata{ { Id: id, Arch: "amd64", Stream: stream, }, } cloudSpec := simplestreams.CloudSpec{ Region: region, Endpoint: endpoint, } targetStorage, err := filestorage.NewFileStorageWriter(s.metadataDir) c.Assert(err, gc.IsNil) err = imagemetadata.MergeAndWriteMetadata(series, metadata, &cloudSpec, targetStorage) if err != nil { return err } return nil }
// createImageMetadata creates some image metadata in a local directory. func createImageMetadata(c *gc.C) (string, []*imagemetadata.ImageMetadata) { // Generate some image metadata. im := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", RegionName: "region", Endpoint: "endpoint", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } sourceDir := c.MkDir() sourceStor, err := filestorage.NewFileStorageWriter(sourceDir) c.Assert(err, gc.IsNil) err = imagemetadata.MergeAndWriteMetadata("raring", im, cloudSpec, sourceStor) c.Assert(err, gc.IsNil) return sourceDir, im }