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:
Radostin Stoyanov 2020-12-25 14:15:22 +00:00
parent 17f50fb4bf
commit 2b35876c8d
2 changed files with 7 additions and 6 deletions

View File

@ -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
} }

View File

@ -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: