github.com/scaleway/scaleway-cli@v1.11.1/pkg/commands/rmi.go (about) 1 // Copyright (C) 2015 Scaleway. All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE.md file. 4 5 package commands 6 7 import ( 8 "fmt" 9 10 "github.com/Sirupsen/logrus" 11 ) 12 13 // RmiArgs are flags for the `RunRmi` function 14 type RmiArgs struct { 15 Identifier []string // images/volumes/snapshots 16 } 17 18 // RunRmi is the handler for 'scw rmi' 19 func RunRmi(ctx CommandContext, args RmiArgs) error { 20 hasError := false 21 for _, needle := range args.Identifier { 22 if image, err := ctx.API.GetImageID(needle, "*"); err == nil { 23 if err = ctx.API.DeleteImage(image.Identifier); err != nil { 24 logrus.Errorf("failed to delete image %s: %s", image.Identifier, err) 25 hasError = true 26 } else { 27 fmt.Fprintln(ctx.Stdout, needle) 28 } 29 continue 30 } 31 if snapshotID, err := ctx.API.GetSnapshotID(needle); err == nil { 32 if err = ctx.API.DeleteSnapshot(snapshotID); err != nil { 33 logrus.Errorf("failed to delete snapshot %s: %s", snapshotID, err) 34 hasError = true 35 } else { 36 fmt.Fprintln(ctx.Stdout, needle) 37 } 38 continue 39 } 40 if volumeID, err := ctx.API.GetVolumeID(needle); err == nil { 41 if err = ctx.API.DeleteVolume(volumeID); err != nil { 42 logrus.Errorf("failed to delete volume %s: %s", volumeID, err) 43 hasError = true 44 } else { 45 fmt.Fprintln(ctx.Stdout, needle) 46 } 47 continue 48 } 49 hasError = true 50 } 51 if hasError { 52 return fmt.Errorf("at least 1 image/snapshot/volume failed to be removed") 53 } 54 return nil 55 }