diff options
author | Urvashi Mohnani <umohnani@redhat.com> | 2017-11-21 16:51:17 -0500 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2017-11-22 16:17:06 +0000 |
commit | 2a3934f1dae43589c50df8fa545d20405f64d7af (patch) | |
tree | 57f61f01f7274bdfd733dfb01ecdb514c3f1cbd7 /cmd/kpod/export.go | |
parent | 91b406ea4a175a7b996f8810e1eb2f2653ff335d (diff) | |
download | podman-2a3934f1dae43589c50df8fa545d20405f64d7af.tar.gz podman-2a3934f1dae43589c50df8fa545d20405f64d7af.tar.bz2 podman-2a3934f1dae43589c50df8fa545d20405f64d7af.zip |
Update kpod export to use the new container state and runtime
Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
Closes: #59
Approved by: rhatdan
Diffstat (limited to 'cmd/kpod/export.go')
-rw-r--r-- | cmd/kpod/export.go | 62 |
1 files changed, 13 insertions, 49 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) } |