mirror of
https://github.com/containers/podman.git
synced 2025-12-05 21:32:22 +08:00
Run integrations test with remote-client
Add the ability to run the integration (ginkgo) suite using the remote client. Only the images_test.go file is run right now; all the rest are isolated with a // +build !remotelinux. As more content is developed for the remote client, we can unblock the files and just block single tests as needed. Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
@@ -3,6 +3,10 @@
|
||||
package adapter
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
|
||||
"github.com/containers/image/types"
|
||||
"github.com/containers/libpod/cmd/podman/libpodruntime"
|
||||
"github.com/containers/libpod/libpod"
|
||||
"github.com/containers/libpod/libpod/image"
|
||||
@@ -53,3 +57,26 @@ func (r *LocalRuntime) NewImageFromLocal(name string) (*ContainerImage, error) {
|
||||
}
|
||||
return &ContainerImage{img}, nil
|
||||
}
|
||||
|
||||
// LoadFromArchiveReference calls into local storage to load an image from an archive
|
||||
func (r *LocalRuntime) LoadFromArchiveReference(ctx context.Context, srcRef types.ImageReference, signaturePolicyPath string, writer io.Writer) ([]*ContainerImage, error) {
|
||||
var containerImages []*ContainerImage
|
||||
imgs, err := r.Runtime.ImageRuntime().LoadFromArchiveReference(ctx, srcRef, signaturePolicyPath, writer)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, i := range imgs {
|
||||
ci := ContainerImage{i}
|
||||
containerImages = append(containerImages, &ci)
|
||||
}
|
||||
return containerImages, nil
|
||||
}
|
||||
|
||||
// New calls into local storage to look for an image in local storage or to pull it
|
||||
func (r *LocalRuntime) New(ctx context.Context, name, signaturePolicyPath, authfile string, writer io.Writer, dockeroptions *image.DockerRegistryOptions, signingoptions image.SigningOptions, forcePull bool) (*ContainerImage, error) {
|
||||
img, err := r.Runtime.ImageRuntime().New(ctx, name, signaturePolicyPath, authfile, writer, dockeroptions, signingoptions, forcePull)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &ContainerImage{img}, nil
|
||||
}
|
||||
|
||||
@@ -5,10 +5,13 @@ package adapter
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/containers/image/types"
|
||||
iopodman "github.com/containers/libpod/cmd/podman/varlink"
|
||||
"github.com/containers/libpod/libpod/image"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
"github.com/urfave/cli"
|
||||
"github.com/varlink/go/varlink"
|
||||
@@ -119,6 +122,42 @@ func (r *LocalRuntime) NewImageFromLocal(name string) (*ContainerImage, error) {
|
||||
|
||||
}
|
||||
|
||||
// LoadFromArchiveReference creates an image from a local archive
|
||||
func (r *LocalRuntime) LoadFromArchiveReference(ctx context.Context, srcRef types.ImageReference, signaturePolicyPath string, writer io.Writer) ([]*ContainerImage, error) {
|
||||
// TODO We need to find a way to leak certDir, creds, and the tlsverify into this function, normally this would
|
||||
// come from cli options but we don't want want those in here either.
|
||||
imageID, err := iopodman.PullImage().Call(r.Conn, srcRef.DockerReference().String(), "", "", signaturePolicyPath, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
newImage, err := r.NewImageFromLocal(imageID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return []*ContainerImage{newImage}, nil
|
||||
}
|
||||
|
||||
// New calls into local storage to look for an image in local storage or to pull it
|
||||
func (r *LocalRuntime) New(ctx context.Context, name, signaturePolicyPath, authfile string, writer io.Writer, dockeroptions *image.DockerRegistryOptions, signingoptions image.SigningOptions, forcePull bool) (*ContainerImage, error) {
|
||||
// TODO Creds needs to be figured out here too, like above
|
||||
tlsBool := dockeroptions.DockerInsecureSkipTLSVerify
|
||||
// Remember SkipTlsVerify is the opposite of tlsverify
|
||||
// If tlsBook is true or undefined, we do not skip
|
||||
SkipTlsVerify := false
|
||||
if tlsBool == types.OptionalBoolFalse {
|
||||
SkipTlsVerify = true
|
||||
}
|
||||
imageID, err := iopodman.PullImage().Call(r.Conn, name, dockeroptions.DockerCertPath, "", signaturePolicyPath, SkipTlsVerify)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
newImage, err := r.NewImageFromLocal(imageID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return newImage, nil
|
||||
}
|
||||
|
||||
func splitStringDate(d string) (time.Time, error) {
|
||||
fields := strings.Fields(d)
|
||||
t := fmt.Sprintf("%sT%sZ", fields[0], fields[1])
|
||||
|
||||
Reference in New Issue
Block a user