func (s *cloudImageMetadataSuite) TestSaveAndFindAndDeleteMetadata(c *gc.C) { metadata, err := s.client.List("", "", nil, nil, "", "") c.Assert(err, gc.ErrorMatches, "matching cloud image metadata not found") c.Assert(metadata, gc.HasLen, 0) // check db too conn := s.State.MongoSession() coll, closer := mongo.CollectionFromName(conn.DB("juju"), "cloudimagemetadata") defer closer() before, err := coll.Count() c.Assert(err, jc.ErrorIsNil) c.Assert(before == 0, jc.IsTrue) imageId := "1" m := params.CloudImageMetadata{ Source: "custom", Stream: "stream", Region: "region", Series: "trusty", Arch: "arch", VirtType: "virtType", RootStorageType: "rootStorageType", ImageId: imageId, } err = s.client.Save([]params.CloudImageMetadata{m}) c.Assert(err, jc.ErrorIsNil) added, err := s.client.List("", "", nil, nil, "", "") c.Assert(err, jc.ErrorIsNil) // m.Version would be deduced from m.Series m.Version = "14.04" c.Assert(added, jc.DeepEquals, []params.CloudImageMetadata{m}) // make sure it's in db too after, err := coll.Count() c.Assert(err, jc.ErrorIsNil) c.Assert(after == 1, jc.IsTrue) err = s.client.Delete(imageId) c.Assert(err, jc.ErrorIsNil) // make sure it's no longer in db too afterDelete, err := coll.Count() c.Assert(err, jc.ErrorIsNil) c.Assert(afterDelete, gc.Equals, 0) }
// constructMetadataParam returns cloud image metadata as a param. func (c *addImageMetadataCommand) constructMetadataParam() params.CloudImageMetadata { info := params.CloudImageMetadata{ ImageId: c.ImageId, Region: c.Region, Series: c.Series, Arch: c.Arch, VirtType: c.VirtType, RootStorageType: c.RootStorageType, Stream: c.Stream, Source: "custom", } if c.RootStorageSize != 0 { info.RootStorageSize = &c.RootStorageSize } return info }
func (s *addImageSuite) assertValidAddImageMetadata(c *gc.C, m params.CloudImageMetadata) { args := getAddImageMetadataCmdFlags(c, m) _, err := runAddImageMetadata(c, args...) c.Assert(err, jc.ErrorIsNil) // Need to make sure that defaults are populated if m.Arch == "" { m.Arch = "amd64" } if m.Stream == "" { m.Stream = "released" } c.Assert(s.data, gc.DeepEquals, []params.CloudImageMetadata{m}) }