diff options
author | Brent Baude <bbaude@redhat.com> | 2020-03-31 14:45:19 -0500 |
---|---|---|
committer | Brent Baude <bbaude@redhat.com> | 2020-04-01 15:56:26 -0500 |
commit | 043308198337941a8086113619d6341528c10cd0 (patch) | |
tree | 0d8ce52e6178e464ce5689c4695c42223aeeeae3 /pkg/domain | |
parent | 0f357be5aeaa5dc651659cf0945a58780641e77d (diff) | |
download | podman-043308198337941a8086113619d6341528c10cd0.tar.gz podman-043308198337941a8086113619d6341528c10cd0.tar.bz2 podman-043308198337941a8086113619d6341528c10cd0.zip |
podmanv2 import
add the ability to import a container image from a container export
Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/domain')
-rw-r--r-- | pkg/domain/entities/engine_image.go | 1 | ||||
-rw-r--r-- | pkg/domain/entities/images.go | 13 | ||||
-rw-r--r-- | pkg/domain/infra/abi/images.go | 9 | ||||
-rw-r--r-- | pkg/domain/infra/tunnel/images.go | 17 |
4 files changed, 40 insertions, 0 deletions
diff --git a/pkg/domain/entities/engine_image.go b/pkg/domain/entities/engine_image.go index 4cc2a67b9..ac856c05f 100644 --- a/pkg/domain/entities/engine_image.go +++ b/pkg/domain/entities/engine_image.go @@ -15,4 +15,5 @@ type ImageEngine interface { Tag(ctx context.Context, nameOrId string, tags []string, options ImageTagOptions) error Untag(ctx context.Context, nameOrId string, tags []string, options ImageUntagOptions) error Load(ctx context.Context, opts ImageLoadOptions) (*ImageLoadReport, error) + Import(ctx context.Context, opts ImageImportOptions) (*ImageImportReport, error) } diff --git a/pkg/domain/entities/images.go b/pkg/domain/entities/images.go index a6c7baebd..d136f42fd 100644 --- a/pkg/domain/entities/images.go +++ b/pkg/domain/entities/images.go @@ -184,3 +184,16 @@ type ImageLoadOptions struct { type ImageLoadReport struct { Name string } + +type ImageImportOptions struct { + Changes []string + Message string + Quiet bool + Reference string + Source string + SourceIsURL bool +} + +type ImageImportReport struct { + Id string +} diff --git a/pkg/domain/infra/abi/images.go b/pkg/domain/infra/abi/images.go index c3a2bb288..f8c63730c 100644 --- a/pkg/domain/infra/abi/images.go +++ b/pkg/domain/infra/abi/images.go @@ -303,6 +303,7 @@ func (ir *ImageEngine) Tag(ctx context.Context, nameOrId string, tags []string, } return nil } + func (ir *ImageEngine) Untag(ctx context.Context, nameOrId string, tags []string, options entities.ImageUntagOptions) error { newImage, err := ir.Libpod.ImageRuntime().NewFromLocal(nameOrId) if err != nil { @@ -336,3 +337,11 @@ func (ir *ImageEngine) Load(ctx context.Context, opts entities.ImageLoadOptions) } return &entities.ImageLoadReport{Name: name}, nil } + +func (ir *ImageEngine) Import(ctx context.Context, opts entities.ImageImportOptions) (*entities.ImageImportReport, error) { + id, err := ir.Libpod.Import(ctx, opts.Source, opts.Reference, opts.Changes, opts.Message, opts.Quiet) + if err != nil { + return nil, err + } + return &entities.ImageImportReport{Id: id}, nil +} diff --git a/pkg/domain/infra/tunnel/images.go b/pkg/domain/infra/tunnel/images.go index a4a0fccaf..155f5e4bd 100644 --- a/pkg/domain/infra/tunnel/images.go +++ b/pkg/domain/infra/tunnel/images.go @@ -167,3 +167,20 @@ func (ir *ImageEngine) Load(ctx context.Context, opts entities.ImageLoadOptions) defer f.Close() return images.Load(ir.ClientCxt, f, &opts.Name) } + +func (ir *ImageEngine) Import(ctx context.Context, opts entities.ImageImportOptions) (*entities.ImageImportReport, error) { + var ( + err error + sourceURL *string + f *os.File + ) + if opts.SourceIsURL { + sourceURL = &opts.Source + } else { + f, err = os.Open(opts.Source) + if err != nil { + return nil, err + } + } + return images.Import(ir.ClientCxt, opts.Changes, &opts.Message, &opts.Reference, sourceURL, f) +} |