diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/kpod/export.go | 62 | ||||
-rw-r--r-- | cmd/kpod/rm.go | 2 |
2 files changed, 14 insertions, 50 deletions
diff --git a/cmd/kpod/export.go b/cmd/kpod/export.go index 94f05ce10..aaa4b2803 100644 --- a/cmd/kpod/export.go +++ b/cmd/kpod/export.go @@ -1,13 +1,8 @@ package main import ( - "io" "os" - "fmt" - - "github.com/containers/storage" - "github.com/containers/storage/pkg/archive" "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/urfave/cli" @@ -40,25 +35,22 @@ var ( // exportCmd saves a container to a tarball on disk func exportCmd(c *cli.Context) error { - args := c.Args() - if len(args) == 0 { - return errors.Errorf("container id must be specified") - } - if len(args) > 1 { - return errors.Errorf("too many arguments given, need 1 at most.") - } - container := args[0] if err := validateFlags(c, exportFlags); err != nil { return err } - config, err := getConfig(c) + runtime, err := getRuntime(c) if err != nil { - return errors.Wrapf(err, "could not get config") + return errors.Wrapf(err, "could not get runtime") } - store, err := getStore(config) - if err != nil { - return err + defer runtime.Shutdown(false) + + args := c.Args() + if len(args) == 0 { + return errors.Errorf("container id must be specified") + } + if len(args) > 1 { + return errors.Errorf("too many arguments given, need 1 at most.") } output := c.String("output") @@ -69,38 +61,10 @@ func exportCmd(c *cli.Context) error { } } - opts := exportOptions{ - output: output, - container: container, - } - - return exportContainer(store, opts) -} - -// exportContainer exports the contents of a container and saves it as -// a tarball on disk -func exportContainer(store storage.Store, opts exportOptions) error { - mountPoint, err := store.Mount(opts.container, "") - if err != nil { - return errors.Wrapf(err, "error finding container %q", opts.container) - } - defer func() { - if err := store.Unmount(opts.container); err != nil { - fmt.Printf("error unmounting container %q: %v\n", opts.container, err) - } - }() - - input, err := archive.Tar(mountPoint, archive.Uncompressed) - if err != nil { - return errors.Wrapf(err, "error reading container directory %q", opts.container) - } - - outFile, err := os.Create(opts.output) + ctr, err := runtime.LookupContainer(args[0]) if err != nil { - return errors.Wrapf(err, "error creating file %q", opts.output) + return errors.Wrapf(err, "error looking up container %q", args[0]) } - defer outFile.Close() - _, err = io.Copy(outFile, input) - return err + return ctr.Export(output) } diff --git a/cmd/kpod/rm.go b/cmd/kpod/rm.go index c7f5f72b2..86d08f2d3 100644 --- a/cmd/kpod/rm.go +++ b/cmd/kpod/rm.go @@ -34,7 +34,7 @@ func rmCmd(c *cli.Context) error { runtime, err := getRuntime(c) if err != nil { - return errors.Wrapf(err, "Could not get runtime") + return errors.Wrapf(err, "could not get runtime") } defer runtime.Shutdown(false) |