summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-03-29 07:59:04 -0700
committerGitHub <noreply@github.com>2019-03-29 07:59:04 -0700
commit8b5f101726408c6d1d0649b68ba1e47d61765ce2 (patch)
treeead1ab571b6c9133f180d46700315d4509db7edf
parent284dea453d77f524c400e6c26812828d8a7439c7 (diff)
parent6b0ac2301beb3c9cfbb8af89e9964465a890fd22 (diff)
downloadpodman-8b5f101726408c6d1d0649b68ba1e47d61765ce2.tar.gz
podman-8b5f101726408c6d1d0649b68ba1e47d61765ce2.tar.bz2
podman-8b5f101726408c6d1d0649b68ba1e47d61765ce2.zip
Merge pull request #2635 from rhatdan/cache
Set blob cache directory based on GraphDriver
-rw-r--r--cmd/podman/login.go4
-rw-r--r--cmd/podman/logout.go4
-rw-r--r--cmd/podman/play_kube.go8
-rw-r--r--cmd/podman/pull.go27
-rw-r--r--libpod/common/common.go15
-rw-r--r--libpod/image/image.go5
-rw-r--r--libpod/image/pull.go2
-rw-r--r--libpod/image/search.go3
8 files changed, 27 insertions, 41 deletions
diff --git a/cmd/podman/login.go b/cmd/podman/login.go
index 4e96b43cb..8a1687278 100644
--- a/cmd/podman/login.go
+++ b/cmd/podman/login.go
@@ -10,7 +10,7 @@ import (
"github.com/containers/image/pkg/docker/config"
"github.com/containers/image/types"
"github.com/containers/libpod/cmd/podman/cliconfig"
- "github.com/containers/libpod/libpod/common"
+ "github.com/containers/libpod/libpod/image"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"golang.org/x/crypto/ssh/terminal"
@@ -64,7 +64,7 @@ func loginCmd(c *cliconfig.LoginValues) error {
server := registryFromFullName(scrubServer(args[0]))
authfile := getAuthFile(c.Authfile)
- sc := common.GetSystemContext("", authfile, false)
+ sc := image.GetSystemContext("", authfile, false)
if c.Flag("tls-verify").Changed {
sc.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!c.TlsVerify)
}
diff --git a/cmd/podman/logout.go b/cmd/podman/logout.go
index 268e6b44c..069153e0b 100644
--- a/cmd/podman/logout.go
+++ b/cmd/podman/logout.go
@@ -5,7 +5,7 @@ import (
"github.com/containers/image/pkg/docker/config"
"github.com/containers/libpod/cmd/podman/cliconfig"
- "github.com/containers/libpod/libpod/common"
+ "github.com/containers/libpod/libpod/image"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)
@@ -54,7 +54,7 @@ func logoutCmd(c *cliconfig.LogoutValues) error {
}
authfile := getAuthFile(c.Authfile)
- sc := common.GetSystemContext("", authfile, false)
+ sc := image.GetSystemContext("", authfile, false)
if c.All {
if err := config.RemoveAllAuthentication(sc); err != nil {
diff --git a/cmd/podman/play_kube.go b/cmd/podman/play_kube.go
index 0429a40eb..b468a7a89 100644
--- a/cmd/podman/play_kube.go
+++ b/cmd/podman/play_kube.go
@@ -13,7 +13,7 @@ import (
"github.com/containers/libpod/cmd/podman/libpodruntime"
"github.com/containers/libpod/cmd/podman/shared"
"github.com/containers/libpod/libpod"
- image2 "github.com/containers/libpod/libpod/image"
+ "github.com/containers/libpod/libpod/image"
ns "github.com/containers/libpod/pkg/namespaces"
"github.com/containers/libpod/pkg/rootless"
"github.com/containers/libpod/pkg/spec"
@@ -145,7 +145,7 @@ func playKubeYAMLCmd(c *cliconfig.KubePlayValues) error {
writer = os.Stderr
}
- dockerRegistryOptions := image2.DockerRegistryOptions{
+ dockerRegistryOptions := image.DockerRegistryOptions{
DockerRegistryCreds: registryCreds,
DockerCertPath: c.CertDir,
}
@@ -188,7 +188,7 @@ func playKubeYAMLCmd(c *cliconfig.KubePlayValues) error {
}
for _, container := range podYAML.Spec.Containers {
- newImage, err := runtime.ImageRuntime().New(ctx, container.Image, c.SignaturePolicy, c.Authfile, writer, &dockerRegistryOptions, image2.SigningOptions{}, false, nil)
+ newImage, err := runtime.ImageRuntime().New(ctx, container.Image, c.SignaturePolicy, c.Authfile, writer, &dockerRegistryOptions, image.SigningOptions{}, false, nil)
if err != nil {
return err
}
@@ -237,7 +237,7 @@ func getPodPorts(containers []v1.Container) []ocicni.PortMapping {
}
// kubeContainerToCreateConfig takes a v1.Container and returns a createconfig describing a container
-func kubeContainerToCreateConfig(ctx context.Context, containerYAML v1.Container, runtime *libpod.Runtime, newImage *image2.Image, namespaces map[string]string, volumes map[string]string) (*createconfig.CreateConfig, error) {
+func kubeContainerToCreateConfig(ctx context.Context, containerYAML v1.Container, runtime *libpod.Runtime, newImage *image.Image, namespaces map[string]string, volumes map[string]string) (*createconfig.CreateConfig, error) {
var (
containerConfig createconfig.CreateConfig
envs map[string]string
diff --git a/cmd/podman/pull.go b/cmd/podman/pull.go
index 8888c5e28..2aac28642 100644
--- a/cmd/podman/pull.go
+++ b/cmd/podman/pull.go
@@ -11,8 +11,7 @@ import (
"github.com/containers/image/transports/alltransports"
"github.com/containers/image/types"
"github.com/containers/libpod/cmd/podman/cliconfig"
- "github.com/containers/libpod/libpod/common"
- image2 "github.com/containers/libpod/libpod/image"
+ "github.com/containers/libpod/libpod/image"
"github.com/containers/libpod/pkg/adapter"
"github.com/containers/libpod/pkg/util"
opentracing "github.com/opentracing/opentracing-go"
@@ -86,7 +85,7 @@ func pullCmd(c *cliconfig.PullValues) error {
}
}
ctx := getContext()
- image := args[0]
+ img := args[0]
var registryCreds *types.DockerAuthConfig
@@ -105,7 +104,7 @@ func pullCmd(c *cliconfig.PullValues) error {
writer = os.Stderr
}
- dockerRegistryOptions := image2.DockerRegistryOptions{
+ dockerRegistryOptions := image.DockerRegistryOptions{
DockerRegistryCreds: registryCreds,
DockerCertPath: c.CertDir,
}
@@ -114,20 +113,20 @@ func pullCmd(c *cliconfig.PullValues) error {
}
// Possible for docker-archive to have multiple tags, so use LoadFromArchiveReference instead
- if strings.HasPrefix(image, dockerarchive.Transport.Name()+":") {
- srcRef, err := alltransports.ParseImageName(image)
+ if strings.HasPrefix(img, dockerarchive.Transport.Name()+":") {
+ srcRef, err := alltransports.ParseImageName(img)
if err != nil {
- return errors.Wrapf(err, "error parsing %q", image)
+ return errors.Wrapf(err, "error parsing %q", img)
}
newImage, err := runtime.LoadFromArchiveReference(getContext(), srcRef, c.SignaturePolicy, writer)
if err != nil {
- return errors.Wrapf(err, "error pulling image from %q", image)
+ return errors.Wrapf(err, "error pulling image from %q", img)
}
fmt.Println(newImage[0].ID())
} else {
authfile := getAuthFile(c.String("authfile"))
- spec := image
- systemContext := common.GetSystemContext("", authfile, false)
+ spec := img
+ systemContext := image.GetSystemContext("", authfile, false)
srcRef, err := alltransports.ParseImageName(spec)
if err != nil {
dockerTransport := "docker://"
@@ -135,7 +134,7 @@ func pullCmd(c *cliconfig.PullValues) error {
spec = dockerTransport + spec
srcRef2, err2 := alltransports.ParseImageName(spec)
if err2 != nil {
- return errors.Wrapf(err2, "error parsing image name %q", image)
+ return errors.Wrapf(err2, "error parsing image name %q", img)
}
srcRef = srcRef2
}
@@ -158,7 +157,7 @@ func pullCmd(c *cliconfig.PullValues) error {
var foundIDs []string
foundImage := true
for _, name := range names {
- newImage, err := runtime.New(getContext(), name, c.String("signature-policy"), authfile, writer, &dockerRegistryOptions, image2.SigningOptions{}, true, nil)
+ newImage, err := runtime.New(getContext(), name, c.String("signature-policy"), authfile, writer, &dockerRegistryOptions, image.SigningOptions{}, true, nil)
if err != nil {
println(errors.Wrapf(err, "error pulling image %q", name))
foundImage = false
@@ -167,7 +166,7 @@ func pullCmd(c *cliconfig.PullValues) error {
foundIDs = append(foundIDs, newImage.ID())
}
if len(names) == 1 && !foundImage {
- return errors.Wrapf(err, "error pulling image %q", image)
+ return errors.Wrapf(err, "error pulling image %q", img)
}
if len(names) > 1 {
fmt.Println("Pulled Images:")
@@ -175,6 +174,6 @@ func pullCmd(c *cliconfig.PullValues) error {
for _, id := range foundIDs {
fmt.Println(id)
}
- } // end else if strings.HasPrefix(image, dockerarchive.Transport.Name()+":")
+ } // end else if strings.HasPrefix(img, dockerarchive.Transport.Name()+":")
return nil
}
diff --git a/libpod/common/common.go b/libpod/common/common.go
index 5d10bee36..93a736af2 100644
--- a/libpod/common/common.go
+++ b/libpod/common/common.go
@@ -1,20 +1,5 @@
package common
-import (
- "github.com/containers/image/types"
-)
-
-// GetSystemContext Constructs a new containers/image/types.SystemContext{} struct from the given signaturePolicy path
-func GetSystemContext(signaturePolicyPath, authFilePath string, forceCompress bool) *types.SystemContext {
- sc := &types.SystemContext{}
- if signaturePolicyPath != "" {
- sc.SignaturePolicyPath = signaturePolicyPath
- }
- sc.AuthFilePath = authFilePath
- sc.DirForceCompress = forceCompress
- return sc
-}
-
// IsTrue determines whether the given string equals "true"
func IsTrue(str string) bool {
return str == "true"
diff --git a/libpod/image/image.go b/libpod/image/image.go
index f79bc3dc2..4862bf1d6 100644
--- a/libpod/image/image.go
+++ b/libpod/image/image.go
@@ -6,6 +6,7 @@ import (
"fmt"
"io"
"os"
+ "path/filepath"
"strings"
"syscall"
"time"
@@ -22,7 +23,6 @@ import (
"github.com/containers/image/transports"
"github.com/containers/image/transports/alltransports"
"github.com/containers/image/types"
- "github.com/containers/libpod/libpod/common"
"github.com/containers/libpod/libpod/driver"
"github.com/containers/libpod/libpod/events"
"github.com/containers/libpod/pkg/inspect"
@@ -548,6 +548,7 @@ func (i *Image) PushImageToHeuristicDestination(ctx context.Context, destination
// PushImageToReference pushes the given image to a location described by the given path
func (i *Image) PushImageToReference(ctx context.Context, dest types.ImageReference, manifestMIMEType, authFile, signaturePolicyPath string, writer io.Writer, forceCompress bool, signingOptions SigningOptions, dockerRegistryOptions *DockerRegistryOptions, additionalDockerArchiveTags []reference.NamedTagged) error {
sc := GetSystemContext(signaturePolicyPath, authFile, forceCompress)
+ sc.BlobInfoCacheDir = filepath.Join(i.imageruntime.store.GraphRoot(), "cache")
policyContext, err := getPolicyContext(sc)
if err != nil {
@@ -909,7 +910,7 @@ func (ir *Runtime) Import(ctx context.Context, path, reference string, writer io
return nil, errors.Wrapf(err, "error updating image config")
}
- sc := common.GetSystemContext("", "", false)
+ sc := GetSystemContext("", "", false)
// if reference not given, get the image digest
if reference == "" {
diff --git a/libpod/image/pull.go b/libpod/image/pull.go
index a3b716e65..5a0706b07 100644
--- a/libpod/image/pull.go
+++ b/libpod/image/pull.go
@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"io"
+ "path/filepath"
"strings"
cp "github.com/containers/image/copy"
@@ -204,6 +205,7 @@ func (ir *Runtime) pullImageFromHeuristicSource(ctx context.Context, inputName s
var goal *pullGoal
sc := GetSystemContext(signaturePolicyPath, authfile, false)
+ sc.BlobInfoCacheDir = filepath.Join(ir.store.GraphRoot(), "cache")
srcRef, err := alltransports.ParseImageName(inputName)
if err != nil {
// could be trying to pull from registry with short name
diff --git a/libpod/image/search.go b/libpod/image/search.go
index 212eff00b..2c66ce284 100644
--- a/libpod/image/search.go
+++ b/libpod/image/search.go
@@ -9,7 +9,6 @@ import (
"github.com/containers/image/docker"
"github.com/containers/image/types"
- "github.com/containers/libpod/libpod/common"
sysreg "github.com/containers/libpod/pkg/registries"
"github.com/fatih/camelcase"
"github.com/pkg/errors"
@@ -157,7 +156,7 @@ func searchImageInRegistry(term string, registry string, options SearchOptions)
limit = options.Limit
}
- sc := common.GetSystemContext("", options.Authfile, false)
+ sc := GetSystemContext("", options.Authfile, false)
sc.DockerInsecureSkipTLSVerify = options.InsecureSkipTLSVerify
// FIXME: Set this more globally. Probably no reason not to have it in
// every types.SystemContext, and to compute the value just once in one