func aptlySnapshotRename(cmd *commander.Command, args []string) error { var ( err error snapshot *deb.Snapshot ) if len(args) != 2 { cmd.Usage() return commander.ErrCommandError } oldName, newName := args[0], args[1] snapshot, err = context.CollectionFactory().SnapshotCollection().ByName(oldName) if err != nil { return fmt.Errorf("unable to rename: %s", err) } _, err = context.CollectionFactory().SnapshotCollection().ByName(newName) if err == nil { return fmt.Errorf("unable to rename: snapshot %s already exists", newName) } snapshot.Name = newName err = context.CollectionFactory().SnapshotCollection().Update(snapshot) if err != nil { return fmt.Errorf("unable to rename: %s", err) } fmt.Printf("\nSnapshot %s -> %s has been successfully renamed.\n", oldName, newName) return err }
// PUT /api/snapshots/:name func apiSnapshotsUpdate(c *gin.Context) { var ( err error snapshot *deb.Snapshot ) var b struct { Name string Description string } if !c.Bind(&b) { return } collection := context.CollectionFactory().SnapshotCollection() collection.Lock() defer collection.Unlock() snapshot, err = collection.ByName(c.Params.ByName("name")) if err != nil { c.Fail(404, err) return } _, err = collection.ByName(b.Name) if err == nil { c.Fail(409, fmt.Errorf("unable to rename: snapshot %s already exists", b.Name)) return } if b.Name != "" { snapshot.Name = b.Name } if b.Description != "" { snapshot.Description = b.Description } err = context.CollectionFactory().SnapshotCollection().Update(snapshot) if err != nil { c.Fail(500, err) return } c.JSON(200, snapshot) }