mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-30 17:58:14 +00:00 
			
		
		
		
	Rename imageservice.IsImagePresent to GetImageRef
This commit is contained in:
		| @@ -148,8 +148,9 @@ type ImageService interface { | ||||
| 	// PullImage pulls an image from the network to local storage using the supplied | ||||
| 	// secrets if necessary. It returns a reference (digest or ID) to the pulled image. | ||||
| 	PullImage(image ImageSpec, pullSecrets []v1.Secret) (string, error) | ||||
| 	// IsImagePresent checks whether the container image is already in the local storage. | ||||
| 	IsImagePresent(image ImageSpec) (string, error) | ||||
| 	// GetImageRef gets the reference (digest or ID) of the image which has already been in | ||||
| 	// the local storage. It returns ("", nil) if the image isn't in the local storage. | ||||
| 	GetImageRef(image ImageSpec) (string, error) | ||||
| 	// Gets all images currently on the machine. | ||||
| 	ListImages() ([]Image, error) | ||||
| 	// Removes the specified image. | ||||
|   | ||||
| @@ -356,11 +356,11 @@ func (f *FakeRuntime) PullImage(image ImageSpec, pullSecrets []v1.Secret) (strin | ||||
| 	return image.Image, f.Err | ||||
| } | ||||
|  | ||||
| func (f *FakeRuntime) IsImagePresent(image ImageSpec) (string, error) { | ||||
| func (f *FakeRuntime) GetImageRef(image ImageSpec) (string, error) { | ||||
| 	f.Lock() | ||||
| 	defer f.Unlock() | ||||
|  | ||||
| 	f.CalledFunctions = append(f.CalledFunctions, "IsImagePresent") | ||||
| 	f.CalledFunctions = append(f.CalledFunctions, "GetImageRef") | ||||
| 	for _, i := range f.ImageList { | ||||
| 		if i.ID == image.Image { | ||||
| 			return i.ID, nil | ||||
|   | ||||
| @@ -110,7 +110,7 @@ func (r *Mock) PullImage(image ImageSpec, pullSecrets []v1.Secret) (string, erro | ||||
| 	return image.Image, args.Error(0) | ||||
| } | ||||
|  | ||||
| func (r *Mock) IsImagePresent(image ImageSpec) (string, error) { | ||||
| func (r *Mock) GetImageRef(image ImageSpec) (string, error) { | ||||
| 	args := r.Called(image) | ||||
| 	return args.Get(0).(string), args.Error(1) | ||||
| } | ||||
|   | ||||
| @@ -94,7 +94,7 @@ func SetContainerNamePrefix(prefix string) { | ||||
| // DockerPuller is an abstract interface for testability.  It abstracts image pull operations. | ||||
| type DockerPuller interface { | ||||
| 	Pull(image string, secrets []v1.Secret) error | ||||
| 	IsImagePresent(image string) (string, error) | ||||
| 	GetImageRef(image string) (string, error) | ||||
| } | ||||
|  | ||||
| // dockerPuller is the default implementation of DockerPuller. | ||||
| @@ -241,7 +241,7 @@ func (p dockerPuller) Pull(image string, secrets []v1.Secret) error { | ||||
| 		err := p.client.PullImage(image, dockertypes.AuthConfig{}, opts) | ||||
| 		if err == nil { | ||||
| 			// Sometimes PullImage failed with no error returned. | ||||
| 			imageRef, ierr := p.IsImagePresent(image) | ||||
| 			imageRef, ierr := p.GetImageRef(image) | ||||
| 			if ierr != nil { | ||||
| 				glog.Warningf("Failed to inspect image %s: %v", image, ierr) | ||||
| 			} | ||||
| @@ -277,7 +277,7 @@ func (p dockerPuller) Pull(image string, secrets []v1.Secret) error { | ||||
| 	return utilerrors.NewAggregate(pullErrs) | ||||
| } | ||||
|  | ||||
| func (p dockerPuller) IsImagePresent(image string) (string, error) { | ||||
| func (p dockerPuller) GetImageRef(image string) (string, error) { | ||||
| 	resp, err := p.client.InspectImageByRef(image) | ||||
| 	if err == nil { | ||||
| 		if resp == nil { | ||||
|   | ||||
| @@ -992,9 +992,10 @@ func (dm *DockerManager) PullImage(image kubecontainer.ImageSpec, secrets []v1.S | ||||
| 	return GetImageRef(dm.client, image.Image) | ||||
| } | ||||
|  | ||||
| // IsImagePresent checks whether the container image is already in the local storage. | ||||
| func (dm *DockerManager) IsImagePresent(image kubecontainer.ImageSpec) (string, error) { | ||||
| 	return dm.dockerPuller.IsImagePresent(image.Image) | ||||
| // GetImageRef gets the reference (digest or ID) of the image which has already been in | ||||
| // the local storage. It returns ("", nil) if the image isn't in the local storage. | ||||
| func (dm *DockerManager) GetImageRef(image kubecontainer.ImageSpec) (string, error) { | ||||
| 	return dm.dockerPuller.GetImageRef(image.Image) | ||||
| } | ||||
|  | ||||
| // Removes the specified image. | ||||
|   | ||||
| @@ -705,12 +705,12 @@ func (f *imageTrackingDockerClient) InspectImageByRef(name string) (image *docke | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func TestIsImagePresent(t *testing.T) { | ||||
| func TestGetImageRef(t *testing.T) { | ||||
| 	cl := &imageTrackingDockerClient{NewFakeDockerClient(), ""} | ||||
| 	puller := &dockerPuller{ | ||||
| 		client: cl, | ||||
| 	} | ||||
| 	_, _ = puller.IsImagePresent("abc:123") | ||||
| 	_, _ = puller.GetImageRef("abc:123") | ||||
| 	if cl.imageName != "abc:123" { | ||||
| 		t.Errorf("expected inspection of image abc:123, instead inspected image %v", cl.imageName) | ||||
| 	} | ||||
|   | ||||
| @@ -596,7 +596,7 @@ func (f *FakeDockerPuller) Pull(image string, secrets []v1.Secret) (err error) { | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| func (f *FakeDockerPuller) IsImagePresent(name string) (string, error) { | ||||
| func (f *FakeDockerPuller) GetImageRef(name string) (string, error) { | ||||
| 	f.Lock() | ||||
| 	defer f.Unlock() | ||||
| 	if f.HasImages == nil { | ||||
|   | ||||
| @@ -99,7 +99,7 @@ func (m *imageManager) EnsureImageExists(pod *v1.Pod, container *v1.Container, p | ||||
| 	} | ||||
|  | ||||
| 	spec := kubecontainer.ImageSpec{Image: image} | ||||
| 	imageRef, err := m.imageService.IsImagePresent(spec) | ||||
| 	imageRef, err := m.imageService.GetImageRef(spec) | ||||
| 	if err != nil { | ||||
| 		msg := fmt.Sprintf("Failed to inspect image %q: %v", container.Image, err) | ||||
| 		m.logIt(ref, v1.EventTypeWarning, events.FailedToInspectImage, logPrefix, msg, glog.Warning) | ||||
| @@ -128,20 +128,20 @@ func (m *imageManager) EnsureImageExists(pod *v1.Pod, container *v1.Container, p | ||||
| 	m.logIt(ref, v1.EventTypeNormal, events.PullingImage, logPrefix, fmt.Sprintf("pulling image %q", container.Image), glog.Info) | ||||
| 	pullChan := make(chan pullResult) | ||||
| 	m.puller.pullImage(spec, pullSecrets, pullChan) | ||||
| 	imageRefWithErr := <-pullChan | ||||
| 	if imageRefWithErr.err != nil { | ||||
| 		m.logIt(ref, v1.EventTypeWarning, events.FailedToPullImage, logPrefix, fmt.Sprintf("Failed to pull image %q: %v", container.Image, imageRefWithErr.err), glog.Warning) | ||||
| 	imagePullResult := <-pullChan | ||||
| 	if imagePullResult.err != nil { | ||||
| 		m.logIt(ref, v1.EventTypeWarning, events.FailedToPullImage, logPrefix, fmt.Sprintf("Failed to pull image %q: %v", container.Image, imagePullResult.err), glog.Warning) | ||||
| 		m.backOff.Next(backOffKey, m.backOff.Clock.Now()) | ||||
| 		if imageRefWithErr.err == RegistryUnavailable { | ||||
| 		if imagePullResult.err == RegistryUnavailable { | ||||
| 			msg := fmt.Sprintf("image pull failed for %s because the registry is unavailable.", container.Image) | ||||
| 			return "", msg, imageRefWithErr.err | ||||
| 			return "", msg, imagePullResult.err | ||||
| 		} | ||||
|  | ||||
| 		return "", imageRefWithErr.err.Error(), ErrImagePull | ||||
| 		return "", imagePullResult.err.Error(), ErrImagePull | ||||
| 	} | ||||
| 	m.logIt(ref, v1.EventTypeNormal, events.PulledImage, logPrefix, fmt.Sprintf("Successfully pulled image %q", container.Image), glog.Info) | ||||
| 	m.backOff.GC() | ||||
| 	return imageRefWithErr.imageRef, "", nil | ||||
| 	return imagePullResult.imageRef, "", nil | ||||
| } | ||||
|  | ||||
| // applyDefaultImageTag parses a docker image string, if it doesn't contain any tag or digest, | ||||
|   | ||||
| @@ -44,7 +44,7 @@ func pullerTestCases() []pullerTestCase { | ||||
| 		{ // pull missing image | ||||
| 			containerImage:  "missing_image", | ||||
| 			policy:          v1.PullIfNotPresent, | ||||
| 			calledFunctions: []string{"IsImagePresent", "PullImage"}, | ||||
| 			calledFunctions: []string{"GetImageRef", "PullImage"}, | ||||
| 			inspectErr:      nil, | ||||
| 			pullerErr:       nil, | ||||
| 			expectedErr:     []error{nil}}, | ||||
| @@ -52,35 +52,35 @@ func pullerTestCases() []pullerTestCase { | ||||
| 		{ // image present, don't pull | ||||
| 			containerImage:  "present_image", | ||||
| 			policy:          v1.PullIfNotPresent, | ||||
| 			calledFunctions: []string{"IsImagePresent"}, | ||||
| 			calledFunctions: []string{"GetImageRef"}, | ||||
| 			inspectErr:      nil, | ||||
| 			pullerErr:       nil, | ||||
| 			expectedErr:     []error{nil, nil, nil}}, | ||||
| 		// image present, pull it | ||||
| 		{containerImage: "present_image", | ||||
| 			policy:          v1.PullAlways, | ||||
| 			calledFunctions: []string{"IsImagePresent", "PullImage"}, | ||||
| 			calledFunctions: []string{"GetImageRef", "PullImage"}, | ||||
| 			inspectErr:      nil, | ||||
| 			pullerErr:       nil, | ||||
| 			expectedErr:     []error{nil, nil, nil}}, | ||||
| 		// missing image, error PullNever | ||||
| 		{containerImage: "missing_image", | ||||
| 			policy:          v1.PullNever, | ||||
| 			calledFunctions: []string{"IsImagePresent"}, | ||||
| 			calledFunctions: []string{"GetImageRef"}, | ||||
| 			inspectErr:      nil, | ||||
| 			pullerErr:       nil, | ||||
| 			expectedErr:     []error{ErrImageNeverPull, ErrImageNeverPull, ErrImageNeverPull}}, | ||||
| 		// missing image, unable to inspect | ||||
| 		{containerImage: "missing_image", | ||||
| 			policy:          v1.PullIfNotPresent, | ||||
| 			calledFunctions: []string{"IsImagePresent"}, | ||||
| 			calledFunctions: []string{"GetImageRef"}, | ||||
| 			inspectErr:      errors.New("unknown inspectError"), | ||||
| 			pullerErr:       nil, | ||||
| 			expectedErr:     []error{ErrImageInspect, ErrImageInspect, ErrImageInspect}}, | ||||
| 		// missing image, unable to fetch | ||||
| 		{containerImage: "typo_image", | ||||
| 			policy:          v1.PullIfNotPresent, | ||||
| 			calledFunctions: []string{"IsImagePresent", "PullImage"}, | ||||
| 			calledFunctions: []string{"GetImageRef", "PullImage"}, | ||||
| 			inspectErr:      nil, | ||||
| 			pullerErr:       errors.New("404"), | ||||
| 			expectedErr:     []error{ErrImagePull, ErrImagePull, ErrImagePullBackOff, ErrImagePull, ErrImagePullBackOff, ErrImagePullBackOff}}, | ||||
|   | ||||
| @@ -78,8 +78,9 @@ func (m *kubeGenericRuntimeManager) PullImage(image kubecontainer.ImageSpec, pul | ||||
| 	return "", utilerrors.NewAggregate(pullErrs) | ||||
| } | ||||
|  | ||||
| // IsImagePresent checks whether the container image is already in the local storage. | ||||
| func (m *kubeGenericRuntimeManager) IsImagePresent(image kubecontainer.ImageSpec) (string, error) { | ||||
| // GetImageRef gets the reference (digest or ID) of the image which has already been in | ||||
| // the local storage. It returns ("", nil) if the image isn't in the local storage. | ||||
| func (m *kubeGenericRuntimeManager) GetImageRef(image kubecontainer.ImageSpec) (string, error) { | ||||
| 	status, err := m.imageService.ImageStatus(&runtimeapi.ImageSpec{Image: &image.Image}) | ||||
| 	if err != nil { | ||||
| 		glog.Errorf("ImageStatus for image %q failed: %v", image, err) | ||||
|   | ||||
| @@ -56,13 +56,13 @@ func TestListImages(t *testing.T) { | ||||
| 	assert.Equal(t, expected.List(), actual.List()) | ||||
| } | ||||
|  | ||||
| func TestIsImagePresent(t *testing.T) { | ||||
| func TestGetImageRef(t *testing.T) { | ||||
| 	_, fakeImageService, fakeManager, err := createTestRuntimeManager() | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	image := "busybox" | ||||
| 	fakeImageService.SetFakeImages([]string{image}) | ||||
| 	imageRef, err := fakeManager.IsImagePresent(kubecontainer.ImageSpec{Image: image}) | ||||
| 	imageRef, err := fakeManager.GetImageRef(kubecontainer.ImageSpec{Image: image}) | ||||
| 	assert.NoError(t, err) | ||||
| 	assert.Equal(t, image, imageRef) | ||||
| } | ||||
|   | ||||
| @@ -87,7 +87,7 @@ func (r *Runtime) PullImage(image kubecontainer.ImageSpec, pullSecrets []v1.Secr | ||||
| 	return r.getImageID(img) | ||||
| } | ||||
|  | ||||
| func (r *Runtime) IsImagePresent(image kubecontainer.ImageSpec) (string, error) { | ||||
| func (r *Runtime) GetImageRef(image kubecontainer.ImageSpec) (string, error) { | ||||
| 	images, err := r.listImages(image.Image, false) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Pengfei Ni
					Pengfei Ni