From 2d5410d3496096ed2022a872b413a58ceee9fb98 Mon Sep 17 00:00:00 2001
From: Miloslav Trmač <mitr@redhat.com>
Date: Sat, 28 Jul 2018 06:54:34 +0200
Subject: Move pullImage from Image to Runtime
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

pullImage (now) only uses Image.InputName; it is really used to _create_
an Image object, based on the pull results (as is most visible in the
LoadFromArchive caller), so it should not be a method on it.

This also simplifies a bit the number of different kids of uses of
Image.InputName; still apparently not enough to clearly document
the field, though.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1176
Approved by: rhatdan
---
 libpod/image/image.go |  9 ++-------
 libpod/image/pull.go  | 20 ++++++++++----------
 2 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/libpod/image/image.go b/libpod/image/image.go
index d07412d9c..5b38a7c1d 100644
--- a/libpod/image/image.go
+++ b/libpod/image/image.go
@@ -145,7 +145,7 @@ func (ir *Runtime) New(ctx context.Context, name, signaturePolicyPath, authfile
 	if signaturePolicyPath == "" {
 		signaturePolicyPath = ir.SignaturePolicyPath
 	}
-	imageName, err := newImage.pullImage(ctx, writer, authfile, signaturePolicyPath, signingoptions, dockeroptions, forceSecure)
+	imageName, err := ir.pullImage(ctx, name, writer, authfile, signaturePolicyPath, signingoptions, dockeroptions, forceSecure)
 	if err != nil {
 		return nil, errors.Wrapf(err, "unable to pull %s", name)
 	}
@@ -163,16 +163,11 @@ func (ir *Runtime) New(ctx context.Context, name, signaturePolicyPath, authfile
 // This function is needed because it is possible for a tar archive to have multiple tags for one image
 func (ir *Runtime) LoadFromArchive(ctx context.Context, name, signaturePolicyPath string, writer io.Writer) ([]*Image, error) {
 	var newImages []*Image
-	newImage := Image{
-		InputName:    name,
-		Local:        false,
-		imageruntime: ir,
-	}
 
 	if signaturePolicyPath == "" {
 		signaturePolicyPath = ir.SignaturePolicyPath
 	}
-	imageNames, err := newImage.pullImage(ctx, writer, "", signaturePolicyPath, SigningOptions{}, &DockerRegistryOptions{}, false)
+	imageNames, err := ir.pullImage(ctx, name, writer, "", signaturePolicyPath, SigningOptions{}, &DockerRegistryOptions{}, false)
 	if err != nil {
 		return nil, errors.Wrapf(err, "unable to pull %s", name)
 	}
diff --git a/libpod/image/pull.go b/libpod/image/pull.go
index 1e3ac44b1..11041ad36 100644
--- a/libpod/image/pull.go
+++ b/libpod/image/pull.go
@@ -200,24 +200,24 @@ func (ir *Runtime) pullGoalFromImageReference(ctx context.Context, srcRef types.
 	return ir.pullGoalFromGoalNames(goalNames)
 }
 
-// pullImage pulls an image from configured registries
+// pullImage pulls an image from configured registries based on inputName.
 // By default, only the latest tag (or a specific tag if requested) will be
 // pulled.
-func (i *Image) pullImage(ctx context.Context, writer io.Writer, authfile, signaturePolicyPath string, signingOptions SigningOptions, dockerOptions *DockerRegistryOptions, forceSecure bool) ([]string, error) {
+func (ir *Runtime) pullImage(ctx context.Context, inputName string, writer io.Writer, authfile, signaturePolicyPath string, signingOptions SigningOptions, dockerOptions *DockerRegistryOptions, forceSecure bool) ([]string, error) {
 	// pullImage copies the image from the source to the destination
 	var goal pullGoal
 	sc := GetSystemContext(signaturePolicyPath, authfile, false)
-	srcRef, err := alltransports.ParseImageName(i.InputName)
+	srcRef, err := alltransports.ParseImageName(inputName)
 	if err != nil {
 		// could be trying to pull from registry with short name
-		goal, err = i.pullGoalFromPossiblyUnqualifiedName()
+		goal, err = ir.pullGoalFromPossiblyUnqualifiedName(inputName)
 		if err != nil {
 			return nil, errors.Wrap(err, "error getting default registries to try")
 		}
 	} else {
-		goal, err = i.imageruntime.pullGoalFromImageReference(ctx, srcRef, i.InputName, sc)
+		goal, err = ir.pullGoalFromImageReference(ctx, srcRef, inputName, sc)
 		if err != nil {
-			return nil, errors.Wrapf(err, "error determining pull goal for image %q", i.InputName)
+			return nil, errors.Wrapf(err, "error determining pull goal for image %q", inputName)
 		}
 	}
 	policyContext, err := getPolicyContext(sc)
@@ -338,14 +338,14 @@ func pullGoalNamesFromPossiblyUnqualifiedName(inputName string) (*pullGoalNames,
 	}, nil
 }
 
-// pullGoalFromPossiblyUnqualifiedName looks at a decomposed image and determines the possible
+// pullGoalFromPossiblyUnqualifiedName looks at inputName and determines the possible
 // image references to try pulling in combination with the registries.conf file as well
-func (i *Image) pullGoalFromPossiblyUnqualifiedName() (pullGoal, error) {
-	goalNames, err := pullGoalNamesFromPossiblyUnqualifiedName(i.InputName)
+func (ir *Runtime) pullGoalFromPossiblyUnqualifiedName(inputName string) (pullGoal, error) {
+	goalNames, err := pullGoalNamesFromPossiblyUnqualifiedName(inputName)
 	if err != nil {
 		return pullGoal{}, err
 	}
-	return i.imageruntime.pullGoalFromGoalNames(goalNames)
+	return ir.pullGoalFromGoalNames(goalNames)
 }
 
 // pullGoalFromGoalNames converts a pullGoalNames to a pullGoal
-- 
cgit v1.2.3-54-g00ecf