From 5bbc4f76055857b399c0c5594499e34cb516e2cf Mon Sep 17 00:00:00 2001 From: ruiwen-zhao Date: Wed, 16 Aug 2023 23:53:15 +0000 Subject: [PATCH] Pass Pinned field to kubecontainer.Image Signed-off-by: ruiwen-zhao --- pkg/kubelet/kuberuntime/kuberuntime_image.go | 1 + .../kuberuntime/kuberuntime_image_test.go | 24 +++++++++++++++++++ .../pkg/apis/testing/fake_image_service.go | 13 ++++++++++ 3 files changed, 38 insertions(+) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_image.go b/pkg/kubelet/kuberuntime/kuberuntime_image.go index 7ae26947701..bb7795e476a 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_image.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_image.go @@ -111,6 +111,7 @@ func (m *kubeGenericRuntimeManager) ListImages(ctx context.Context) ([]kubeconta RepoTags: img.RepoTags, RepoDigests: img.RepoDigests, Spec: toKubeContainerImageSpec(img), + Pinned: img.Pinned, }) } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_image_test.go b/pkg/kubelet/kuberuntime/kuberuntime_image_test.go index 53e964885bb..2665f84ec2d 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_image_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_image_test.go @@ -101,6 +101,30 @@ func TestListImages(t *testing.T) { assert.Equal(t, expected.List(), actual.List()) } +func TestListImagesPinnedField(t *testing.T) { + ctx := context.Background() + _, fakeImageService, fakeManager, err := createTestRuntimeManager() + assert.NoError(t, err) + + imagesPinned := map[string]bool{ + "1111": false, + "2222": true, + "3333": false, + } + imageList := []string{} + for image, pinned := range imagesPinned { + fakeImageService.SetFakeImagePinned(image, pinned) + imageList = append(imageList, image) + } + fakeImageService.SetFakeImages(imageList) + + actualImages, err := fakeManager.ListImages(ctx) + assert.NoError(t, err) + for _, image := range actualImages { + assert.Equal(t, imagesPinned[image.ID], image.Pinned) + } +} + func TestListImagesWithError(t *testing.T) { ctx := context.Background() _, fakeImageService, fakeManager, err := createTestRuntimeManager() diff --git a/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_image_service.go b/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_image_service.go index 4c16581ba13..3f432bf18b1 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_image_service.go +++ b/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_image_service.go @@ -34,6 +34,7 @@ type FakeImageService struct { Called []string Errors map[string][]error Images map[string]*runtimeapi.Image + Pinned map[string]bool pulledImages []*pulledImage @@ -73,6 +74,17 @@ func (r *FakeImageService) SetFakeImageSize(size uint64) { r.FakeImageSize = size } +// SetFakeImagePinned sets the image Pinned field for one image. +func (r *FakeImageService) SetFakeImagePinned(image string, pinned bool) { + r.Lock() + defer r.Unlock() + + if r.Pinned == nil { + r.Pinned = make(map[string]bool) + } + r.Pinned[image] = pinned +} + // SetFakeFilesystemUsage sets the FilesystemUsage for FakeImageService. func (r *FakeImageService) SetFakeFilesystemUsage(usage []*runtimeapi.FilesystemUsage) { r.Lock() @@ -96,6 +108,7 @@ func (r *FakeImageService) makeFakeImage(image *runtimeapi.ImageSpec) *runtimeap Size_: r.FakeImageSize, Spec: image, RepoTags: []string{image.Image}, + Pinned: r.Pinned[image.Image], } }