func (s *generateSuite) TestWriteMetadataMergeDifferentRegion(c *gc.C) { existingImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } dir := c.MkDir() targetStorage, err := filestorage.NewFileStorageWriter(dir) c.Assert(err, jc.ErrorIsNil) err = imagemetadata.MergeAndWriteMetadata("raring", existingImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) newImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "abcd", Arch: "amd64", Version: "13.04", }, { Id: "xyz", Arch: "arm", Version: "13.04", }, } cloudSpec = &simplestreams.CloudSpec{ Region: "region2", Endpoint: "endpoint2", } err = imagemetadata.MergeAndWriteMetadata("raring", newImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) metadata := testing.ParseMetadataFromDir(c, dir) c.Assert(metadata, gc.HasLen, 3) for _, im := range newImageMetadata { im.RegionName = "region2" im.Endpoint = "endpoint2" } existingImageMetadata[0].RegionName = "region" existingImageMetadata[0].Endpoint = "endpoint" newImageMetadata = append(newImageMetadata, existingImageMetadata[0]) imagemetadata.Sort(newImageMetadata) c.Assert(metadata, gc.DeepEquals, newImageMetadata) assertFetch(c, targetStorage, "raring", "amd64", "region", "endpoint", "1234") assertFetch(c, targetStorage, "raring", "amd64", "region2", "endpoint2", "abcd") }
// lp#1600054 func (s *generateSuite) TestWriteMetadataMergeDifferentVirtType(c *gc.C) { existingImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "1234", Arch: "amd64", Version: "13.04", VirtType: "kvm", }, } cloudSpec := &simplestreams.CloudSpec{ Region: "region", Endpoint: "endpoint", } dir := c.MkDir() targetStorage, err := filestorage.NewFileStorageWriter(dir) c.Assert(err, jc.ErrorIsNil) err = imagemetadata.MergeAndWriteMetadata("raring", existingImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) newImageMetadata := []*imagemetadata.ImageMetadata{ { Id: "abcd", Arch: "amd64", Version: "13.04", VirtType: "lxd", }, } err = imagemetadata.MergeAndWriteMetadata("raring", newImageMetadata, cloudSpec, targetStorage) c.Assert(err, jc.ErrorIsNil) foundMetadata := testing.ParseMetadataFromDir(c, dir) expectedMetadata := append(newImageMetadata, existingImageMetadata...) c.Assert(len(foundMetadata), gc.Equals, len(expectedMetadata)) for _, im := range expectedMetadata { im.RegionName = cloudSpec.Region im.Endpoint = cloudSpec.Endpoint } imagemetadata.Sort(expectedMetadata) c.Assert(foundMetadata, gc.DeepEquals, expectedMetadata) assertFetch(c, targetStorage, "raring", "amd64", "region", "endpoint", "1234", "abcd") }