Skip to content

Commit af54b2f

Browse files
committed
imageDigest only for ecr
1 parent 4c707b4 commit af54b2f

File tree

2 files changed

+53
-14
lines changed

2 files changed

+53
-14
lines changed

agent/engine/docker_image_manager.go

+18-11
Original file line numberDiff line numberDiff line change
@@ -138,20 +138,27 @@ func (imageManager *dockerImageManager) RecordContainerReference(container *apic
138138
return nil
139139
}
140140

141+
// check whether image pull from ECR
142+
func (imageManager *dockerImageManager) isImagePullFromECR(container *apicontainer.Container) bool {
143+
return container.RegistryAuthentication != nil && container.RegistryAuthentication.ECRAuthData != nil && container.RegistryAuthentication.Type == apicontainer.AuthTypeECR
144+
}
145+
141146
// The helper function to fetch the RepoImageDigest when inspect the image
142147
func (imageManager *dockerImageManager) fetchRepoDigest(imageInspected *types.ImageInspect, container *apicontainer.Container) string {
143-
imageRepoDigests := imageInspected.RepoDigests
144148
resultRepoDigest := ""
145-
imagePrefix := strings.Split(container.Image, ":")[0]
146-
for _, imageRepoDigest := range imageRepoDigests {
147-
if strings.HasPrefix(imageRepoDigest, imagePrefix) {
148-
repoDigestSplitList := strings.Split(imageRepoDigest, "@")
149-
if len(repoDigestSplitList) > 1 {
150-
resultRepoDigest = repoDigestSplitList[1]
151-
return resultRepoDigest
152-
} else {
153-
seelog.Warnf("ImageRepoDigest doesn't have the right format: %v", imageRepoDigest)
154-
return ""
149+
if imageManager.isImagePullFromECR(container) {
150+
imageRepoDigests := imageInspected.RepoDigests
151+
imagePrefix := strings.Split(container.Image, "/")[0]
152+
for _, imageRepoDigest := range imageRepoDigests {
153+
if strings.HasPrefix(imageRepoDigest, imagePrefix) {
154+
repoDigestSplitList := strings.Split(imageRepoDigest, "@")
155+
if len(repoDigestSplitList) > 1 {
156+
resultRepoDigest = repoDigestSplitList[1]
157+
return resultRepoDigest
158+
} else {
159+
seelog.Warnf("ImageRepoDigest doesn't have the right format: %v", imageRepoDigest)
160+
return ""
161+
}
155162
}
156163
}
157164
}

agent/engine/docker_image_manager_test.go

+35-3
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ func TestFetchRepoDigest(t *testing.T) {
286286
container: &apicontainer.Container{
287287
Name: "testContainer1",
288288
Image: "repo1",
289-
ImageDigest: "digest1",
289+
ImageDigest: "",
290290
},
291291
imageInspected: &types.ImageInspect{
292292
RepoDigests: []string{"repo1@digest1", "repo2@digest2", "repo3@digest3"},
@@ -296,7 +296,7 @@ func TestFetchRepoDigest(t *testing.T) {
296296
container: &apicontainer.Container{
297297
Name: "testContainer2",
298298
Image: "repo1:latest",
299-
ImageDigest: "digest1",
299+
ImageDigest: "",
300300
},
301301
imageInspected: &types.ImageInspect{
302302
RepoDigests: []string{"repo1@digest1", "repo2@digest2", "repo3@digest3"},
@@ -306,7 +306,7 @@ func TestFetchRepoDigest(t *testing.T) {
306306
container: &apicontainer.Container{
307307
Name: "testContainer3",
308308
Image: "repo1@sha256:12345",
309-
ImageDigest: "sha256:12345",
309+
ImageDigest: "",
310310
},
311311
imageInspected: &types.ImageInspect{
312312
RepoDigests: []string{"repo1@sha256:12345", "repo2@digest2", "repo3"},
@@ -332,6 +332,38 @@ func TestFetchRepoDigest(t *testing.T) {
332332
RepoDigests: []string{"mysql", "repo2@digest2"},
333333
},
334334
},
335+
{
336+
container: &apicontainer.Container{
337+
Name: "testContainer6",
338+
Image: "123456781234.dkr.ecr.us-west-2.amazonaws.com/test-rci@sha256:d1c14fcf2e9476ed58ebc4251b211f403f271e96b6c3d9ada0f1c5454ca4d230",
339+
ImageDigest: "sha256:d1c14fcf2e9476ed58ebc4251b211f403f271e96b6c3d9ada0f1c5454ca4d230",
340+
RegistryAuthentication: &apicontainer.RegistryAuthenticationData{
341+
Type: "ecr",
342+
ECRAuthData: &apicontainer.ECRAuthData{
343+
RegistryID: "123456781234",
344+
},
345+
},
346+
},
347+
imageInspected: &types.ImageInspect{
348+
RepoDigests: []string{"repo1@digest1", "repo2@digest2", "123456781234.dkr.ecr.us-west-2.amazonaws.com/test-rci@sha256:d1c14fcf2e9476ed58ebc4251b211f403f271e96b6c3d9ada0f1c5454ca4d230"},
349+
},
350+
},
351+
{
352+
container: &apicontainer.Container{
353+
Name: "testContainer7",
354+
Image: "123456781234.dkr.ecr.us-west-2.amazonaws.com/ubuntu:trusty",
355+
ImageDigest: "sha256:2feffff9eeca4e736f9f8e57813a97fe930554f474f7795ffa5a9261adeaaf44",
356+
RegistryAuthentication: &apicontainer.RegistryAuthenticationData{
357+
Type: "ecr",
358+
ECRAuthData: &apicontainer.ECRAuthData{
359+
RegistryID: "123456781234",
360+
},
361+
},
362+
},
363+
imageInspected: &types.ImageInspect{
364+
RepoDigests: []string{"repo1@digest1", "repo2@digest2", "", "123456781234.dkr.ecr.us-west-2.amazonaws.com/ubuntu@sha256:2feffff9eeca4e736f9f8e57813a97fe930554f474f7795ffa5a9261adeaaf44"},
365+
},
366+
},
335367
}
336368

337369
for i, test := range testCases {

0 commit comments

Comments
 (0)