Use Options as CRImportCheckpoint() argument
Instead of specifying restore option arguments individually from RestoreOptions, provide the 'options' object to the CRImportCheckpoint method. This change makes the code in CRImportCheckpoint easier to extend as it doesn't require excessive number of function parameters. Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
This commit is contained in:
parent
17f50fb4bf
commit
2b35876c8d
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/containers/podman/v2/libpod"
|
"github.com/containers/podman/v2/libpod"
|
||||||
"github.com/containers/podman/v2/libpod/image"
|
"github.com/containers/podman/v2/libpod/image"
|
||||||
|
"github.com/containers/podman/v2/pkg/domain/entities"
|
||||||
"github.com/containers/podman/v2/pkg/errorhandling"
|
"github.com/containers/podman/v2/pkg/errorhandling"
|
||||||
"github.com/containers/podman/v2/pkg/util"
|
"github.com/containers/podman/v2/pkg/util"
|
||||||
"github.com/containers/storage/pkg/archive"
|
"github.com/containers/storage/pkg/archive"
|
||||||
|
@ -36,10 +37,10 @@ func crImportFromJSON(filePath string, v interface{}) error {
|
||||||
|
|
||||||
// CRImportCheckpoint it the function which imports the information
|
// CRImportCheckpoint it the function which imports the information
|
||||||
// from checkpoint tarball and re-creates the container from that information
|
// from checkpoint tarball and re-creates the container from that information
|
||||||
func CRImportCheckpoint(ctx context.Context, runtime *libpod.Runtime, input string, name string) ([]*libpod.Container, error) {
|
func CRImportCheckpoint(ctx context.Context, runtime *libpod.Runtime, restoreOptions entities.RestoreOptions) ([]*libpod.Container, error) {
|
||||||
// First get the container definition from the
|
// First get the container definition from the
|
||||||
// tarball to a temporary directory
|
// tarball to a temporary directory
|
||||||
archiveFile, err := os.Open(input)
|
archiveFile, err := os.Open(restoreOptions.Import)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "failed to open checkpoint archive for import")
|
return nil, errors.Wrap(err, "failed to open checkpoint archive for import")
|
||||||
}
|
}
|
||||||
|
@ -66,7 +67,7 @@ func CRImportCheckpoint(ctx context.Context, runtime *libpod.Runtime, input stri
|
||||||
}()
|
}()
|
||||||
err = archive.Untar(archiveFile, dir, options)
|
err = archive.Untar(archiveFile, dir, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrapf(err, "Unpacking of checkpoint archive %s failed", input)
|
return nil, errors.Wrapf(err, "Unpacking of checkpoint archive %s failed", restoreOptions.Import)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load spec.dump from temporary directory
|
// Load spec.dump from temporary directory
|
||||||
|
@ -90,9 +91,9 @@ func CRImportCheckpoint(ctx context.Context, runtime *libpod.Runtime, input stri
|
||||||
newName := false
|
newName := false
|
||||||
|
|
||||||
// Check if the restored container gets a new name
|
// Check if the restored container gets a new name
|
||||||
if name != "" {
|
if restoreOptions.Name != "" {
|
||||||
config.ID = ""
|
config.ID = ""
|
||||||
config.Name = name
|
config.Name = restoreOptions.Name
|
||||||
newName = true
|
newName = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -538,7 +538,7 @@ func (ic *ContainerEngine) ContainerRestore(ctx context.Context, namesOrIds []st
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case options.Import != "":
|
case options.Import != "":
|
||||||
cons, err = checkpoint.CRImportCheckpoint(ctx, ic.Libpod, options.Import, options.Name)
|
cons, err = checkpoint.CRImportCheckpoint(ctx, ic.Libpod, options)
|
||||||
case options.All:
|
case options.All:
|
||||||
cons, err = ic.Libpod.GetContainers(filterFuncs...)
|
cons, err = ic.Libpod.GetContainers(filterFuncs...)
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue