Skip to content

Commit 37971ef

Browse files
committed
operator: accept image SHA digests
Signed-off-by: Mikko Ylinen <[email protected]>
1 parent e56e0e6 commit 37971ef

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

pkg/apis/deviceplugin/v1/webhook_common.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,23 @@ package v1
1616

1717
import (
1818
"path/filepath"
19+
"regexp"
1920
"strings"
2021

2122
"github.com/pkg/errors"
2223
"k8s.io/apimachinery/pkg/util/version"
2324
)
2425

26+
const sha256RE = "@sha256:[0-9a-f]{64}$"
27+
2528
// common functions for webhooks
2629

2730
func validatePluginImage(image, expectedImageName string, expectedMinVersion *version.Version) error {
31+
imageRe := regexp.MustCompile(expectedImageName + sha256RE)
32+
if imageRe.MatchString(image) {
33+
return nil
34+
}
35+
2836
// Ignore registry, vendor and extract the image name with the tag
2937
parts := strings.SplitN(filepath.Base(image), ":", 2)
3038
if len(parts) != 2 {
@@ -34,13 +42,14 @@ func validatePluginImage(image, expectedImageName string, expectedMinVersion *ve
3442
imageName := parts[0]
3543
versionStr := parts[1]
3644

37-
if imageName != expectedImageName {
38-
return errors.Errorf("incorrect image name %q. Make sure you use '<vendor>/%s:<version>'", imageName, expectedImageName)
45+
// If user provided faulty SHA digest, the image name may include @sha256 suffix so strip it
46+
if strings.TrimSuffix(imageName, "@sha256") != expectedImageName {
47+
return errors.Errorf("incorrect image name %q. Make sure you use '<vendor>/%s'.", imageName, expectedImageName)
3948
}
4049

4150
ver, err := version.ParseSemantic(versionStr)
4251
if err != nil {
43-
return errors.Wrapf(err, "unable to parse version %q", versionStr)
52+
return errors.Wrapf(err, "unable to parse version %q. Make sure it's either valid SHA digest or semver tag.", versionStr)
4453
}
4554

4655
if !ver.AtLeast(expectedMinVersion) {

0 commit comments

Comments
 (0)