70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/containers/libpod/cmd/podman/cliconfig"
 | |
| 	"github.com/containers/libpod/cmd/podman/shared"
 | |
| 	"github.com/containers/libpod/pkg/adapter"
 | |
| 	"github.com/pkg/errors"
 | |
| 	"github.com/spf13/cobra"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	volumeCreateCommand     cliconfig.VolumeCreateValues
 | |
| 	volumeCreateDescription = `If using the default driver, "local", the volume will be created on the host in the volumes directory under container storage.`
 | |
| 
 | |
| 	_volumeCreateCommand = &cobra.Command{
 | |
| 		Use:   "create [flags] [NAME]",
 | |
| 		Short: "Create a new volume",
 | |
| 		Long:  volumeCreateDescription,
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			volumeCreateCommand.InputArgs = args
 | |
| 			volumeCreateCommand.GlobalFlags = MainGlobalOpts
 | |
| 			volumeCreateCommand.Remote = remoteclient
 | |
| 			return volumeCreateCmd(&volumeCreateCommand)
 | |
| 		},
 | |
| 		Example: `podman volume create myvol
 | |
|   podman volume create
 | |
|   podman volume create --label foo=bar myvol`,
 | |
| 	}
 | |
| )
 | |
| 
 | |
| func init() {
 | |
| 	volumeCreateCommand.Command = _volumeCreateCommand
 | |
| 	volumeCommand.SetHelpTemplate(HelpTemplate())
 | |
| 	volumeCreateCommand.SetUsageTemplate(UsageTemplate())
 | |
| 	flags := volumeCreateCommand.Flags()
 | |
| 	flags.StringVar(&volumeCreateCommand.Driver, "driver", "", "Specify volume driver name (default local)")
 | |
| 	flags.StringSliceVarP(&volumeCreateCommand.Label, "label", "l", []string{}, "Set metadata for a volume (default [])")
 | |
| 	flags.StringSliceVarP(&volumeCreateCommand.Opt, "opt", "o", []string{}, "Set driver specific options (default [])")
 | |
| }
 | |
| 
 | |
| func volumeCreateCmd(c *cliconfig.VolumeCreateValues) error {
 | |
| 	runtime, err := adapter.GetRuntime(getContext(), &c.PodmanCommand)
 | |
| 	if err != nil {
 | |
| 		return errors.Wrapf(err, "error creating libpod runtime")
 | |
| 	}
 | |
| 	defer runtime.DeferredShutdown(false)
 | |
| 
 | |
| 	if len(c.InputArgs) > 1 {
 | |
| 		return errors.Errorf("too many arguments, create takes at most 1 argument")
 | |
| 	}
 | |
| 
 | |
| 	labels, err := shared.GetAllLabels([]string{}, c.Label)
 | |
| 	if err != nil {
 | |
| 		return errors.Wrapf(err, "unable to process labels")
 | |
| 	}
 | |
| 
 | |
| 	opts, err := shared.GetAllLabels([]string{}, c.Opt)
 | |
| 	if err != nil {
 | |
| 		return errors.Wrapf(err, "unable to process options")
 | |
| 	}
 | |
| 
 | |
| 	volumeName, err := runtime.CreateVolume(getContext(), c, labels, opts)
 | |
| 	if err == nil {
 | |
| 		fmt.Println(volumeName)
 | |
| 	}
 | |
| 	return err
 | |
| }
 |