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  }