github.com/scaleway/scaleway-cli@v1.11.1/pkg/commands/commit.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 11 // CommitArgs are flags for the `RunCommit` function 12 type CommitArgs struct { 13 Volume int 14 Server string 15 Name string 16 } 17 18 // RunCommit is the handler for 'scw commit' 19 func RunCommit(ctx CommandContext, args CommitArgs) error { 20 serverID, err := ctx.API.GetServerID(args.Server) 21 if err != nil { 22 return err 23 } 24 server, err := ctx.API.GetServer(serverID) 25 if err != nil { 26 return fmt.Errorf("Cannot fetch server: %v", err) 27 } 28 var volume = server.Volumes[fmt.Sprintf("%d", args.Volume)] 29 var name string 30 if args.Name != "" { 31 name = args.Name 32 } else { 33 name = volume.Name + "-snapshot" 34 } 35 snapshot, err := ctx.API.PostSnapshot(volume.Identifier, name) 36 if err != nil { 37 return fmt.Errorf("Cannot create snapshot: %v", err) 38 } 39 fmt.Fprintln(ctx.Stdout, snapshot) 40 return nil 41 }