diff options
author | Giuseppe Scrivano <gscrivan@redhat.com> | 2018-04-26 17:21:48 +0200 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-06-15 14:53:18 +0000 |
commit | 7bdfb4f9b361aca4f4f3337907feb3ca414d36e4 (patch) | |
tree | aff63093af49df79820e72a5a68f07e6fe70b863 /libpod/storage.go | |
parent | 4b4de5dc21f034f5f678114dbf6d51f047c96a59 (diff) | |
download | podman-7bdfb4f9b361aca4f4f3337907feb3ca414d36e4.tar.gz podman-7bdfb4f9b361aca4f4f3337907feb3ca414d36e4.tar.bz2 podman-7bdfb4f9b361aca4f4f3337907feb3ca414d36e4.zip |
podman: accept option --rootfs to use exploded images
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Closes: #871
Approved by: mheon
Diffstat (limited to 'libpod/storage.go')
-rw-r--r-- | libpod/storage.go | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/libpod/storage.go b/libpod/storage.go index c0391326c..c5581d53c 100644 --- a/libpod/storage.go +++ b/libpod/storage.go @@ -60,40 +60,40 @@ func (metadata *RuntimeContainerMetadata) SetMountLabel(mountLabel string) { // CreateContainerStorage creates the storage end of things. We already have the container spec created // TO-DO We should be passing in an Image object in the future. func (r *storageService) CreateContainerStorage(ctx context.Context, systemContext *types.SystemContext, imageName, imageID, containerName, containerID, mountLabel string, options *storage.ContainerOptions) (ContainerInfo, error) { - var ref types.ImageReference - if imageName == "" && imageID == "" { - return ContainerInfo{}, ErrEmptyID - } - if containerName == "" { - return ContainerInfo{}, ErrEmptyID - } - // Check if we have the specified image. - ref, err := istorage.Transport.ParseStoreReference(r.store, imageID) - if err != nil { - return ContainerInfo{}, err - } - img, err := istorage.Transport.GetStoreImage(r.store, ref) - if err != nil { - return ContainerInfo{}, err - } - // Pull out a copy of the image's configuration. - image, err := ref.NewImage(ctx, systemContext) - if err != nil { - return ContainerInfo{}, err - } - defer image.Close() + var imageConfig *v1.Image + if imageName != "" { + var ref types.ImageReference + if containerName == "" { + return ContainerInfo{}, ErrEmptyID + } + // Check if we have the specified image. + ref, err := istorage.Transport.ParseStoreReference(r.store, imageID) + if err != nil { + return ContainerInfo{}, err + } + img, err := istorage.Transport.GetStoreImage(r.store, ref) + if err != nil { + return ContainerInfo{}, err + } + // Pull out a copy of the image's configuration. + image, err := ref.NewImage(ctx, systemContext) + if err != nil { + return ContainerInfo{}, err + } + defer image.Close() - // Get OCI configuration of image - imageConfig, err := image.OCIConfig(ctx) - if err != nil { - return ContainerInfo{}, err - } + // Get OCI configuration of image + imageConfig, err = image.OCIConfig(ctx) + if err != nil { + return ContainerInfo{}, err + } - // Update the image name and ID. - if imageName == "" && len(img.Names) > 0 { - imageName = img.Names[0] + // Update the image name and ID. + if imageName == "" && len(img.Names) > 0 { + imageName = img.Names[0] + } + imageID = img.ID } - imageID = img.ID // Build metadata to store with the container. metadata := RuntimeContainerMetadata{ @@ -119,7 +119,7 @@ func (r *storageService) CreateContainerStorage(ctx context.Context, systemConte }, } } - container, err := r.store.CreateContainer(containerID, names, img.ID, "", string(mdata), options) + container, err := r.store.CreateContainer(containerID, names, imageID, "", string(mdata), options) if err != nil { logrus.Debugf("failed to create container %s(%s): %v", metadata.ContainerName, containerID, err) |