From 358da6c8c0375ad41c4669aeef71f9626710c83e Mon Sep 17 00:00:00 2001 From: baude Date: Sun, 10 Feb 2019 16:43:00 -0600 Subject: podman-remote volume create create a volume using the remote client over varlink Signed-off-by: baude --- libpod/adapter/runtime.go | 30 ++++++++++++++++++++++++++++++ libpod/adapter/runtime_remote.go | 17 +++++++++++++++++ 2 files changed, 47 insertions(+) (limited to 'libpod/adapter') diff --git a/libpod/adapter/runtime.go b/libpod/adapter/runtime.go index 46771b5b6..050ea6ed4 100644 --- a/libpod/adapter/runtime.go +++ b/libpod/adapter/runtime.go @@ -155,3 +155,33 @@ func (r *LocalRuntime) Export(name string, path string) error { func (r *LocalRuntime) Import(ctx context.Context, source, reference string, changes []string, history string, quiet bool) (string, error) { return r.Runtime.Import(ctx, source, reference, changes, history, quiet) } + +// CreateVolume is a wrapper to create volumes +func (r *LocalRuntime) CreateVolume(ctx context.Context, c *cliconfig.VolumeCreateValues, labels, opts map[string]string) (string, error) { + var ( + options []libpod.VolumeCreateOption + volName string + ) + + if len(c.InputArgs) > 0 { + volName = c.InputArgs[0] + options = append(options, libpod.WithVolumeName(volName)) + } + + if c.Flag("driver").Changed { + options = append(options, libpod.WithVolumeDriver(c.Driver)) + } + + if len(labels) != 0 { + options = append(options, libpod.WithVolumeLabels(labels)) + } + + if len(options) != 0 { + options = append(options, libpod.WithVolumeOptions(opts)) + } + newVolume, err := r.NewVolume(ctx, options...) + if err != nil { + return "", err + } + return newVolume.Name(), nil +} diff --git a/libpod/adapter/runtime_remote.go b/libpod/adapter/runtime_remote.go index f754aaee6..3df8afc6e 100644 --- a/libpod/adapter/runtime_remote.go +++ b/libpod/adapter/runtime_remote.go @@ -432,3 +432,20 @@ func (r *LocalRuntime) GetContainers(filters ...libpod.ContainerFilter) ([]*libp func (r *LocalRuntime) RemoveContainer(ctx context.Context, c *libpod.Container, force bool) error { return libpod.ErrNotImplemented } + +// CreateVolume creates a volume over a varlink connection for the remote client +func (r *LocalRuntime) CreateVolume(ctx context.Context, c *cliconfig.VolumeCreateValues, labels, opts map[string]string) (string, error) { + cvOpts := iopodman.VolumeCreateOpts{ + Options: opts, + Labels: labels, + } + if len(c.InputArgs) > 0 { + cvOpts.VolumeName = c.InputArgs[0] + } + + if c.Flag("driver").Changed { + cvOpts.Driver = c.Driver + } + + return iopodman.VolumeCreate().Call(r.Conn, cvOpts) +} -- cgit v1.2.3-54-g00ecf