Skip to content

Commit

Permalink
Merge pull request #7202 from openshift-cherrypick-robot/cherry-pick-…
Browse files Browse the repository at this point in the history
…7007-to-release-4.12

[release-4.12] OCPBUGS-14014: Do not always output warning msg when releaseImage is digest
  • Loading branch information
openshift-merge-robot committed May 24, 2023
2 parents 8864eb7 + 5a3329b commit c491755
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 40 deletions.
20 changes: 1 addition & 19 deletions pkg/asset/agent/image/ignition.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/url"
"path"
"path/filepath"
"regexp"
"strings"

"github.com/coreos/ignition/v2/config/util"
Expand Down Expand Up @@ -135,7 +134,7 @@ func (a *Ignition) Generate(dependencies asset.Parents) error {

publicContainerRegistries := getPublicContainerRegistries(registriesConfig)

releaseImageMirror := getMirrorFromRelease(agentManifests.ClusterImageSet.Spec.ReleaseImage, registriesConfig)
releaseImageMirror := mirror.GetMirrorFromRelease(agentManifests.ClusterImageSet.Spec.ReleaseImage, registriesConfig)

infraEnvID := uuid.New().String()
logrus.Debug("Generated random infra-env id ", infraEnvID)
Expand Down Expand Up @@ -481,23 +480,6 @@ func RetrieveRendezvousIP(agentConfig *agent.Config, nmStateConfigs []*v1beta1.N
return rendezvousIP, err
}

func getMirrorFromRelease(releaseImage string, registriesConfig *mirror.RegistriesConf) string {
source := regexp.MustCompile(`^(.+?)(@sha256)?:(.+)`).FindStringSubmatch(releaseImage)
for _, config := range registriesConfig.MirrorConfig {
if config.Location == source[1] {
// include the tag with the build release image
if len(source) == 4 {
// Has Sha256
return fmt.Sprintf("%s%s:%s", config.Mirror, source[2], source[3])
} else if len(source) == 3 {
return fmt.Sprintf("%s:%s", config.Mirror, source[2])
}
}
}

return ""
}

func getPublicContainerRegistries(registriesConfig *mirror.RegistriesConf) string {

if len(registriesConfig.MirrorConfig) > 0 {
Expand Down
2 changes: 1 addition & 1 deletion pkg/asset/agent/image/ignition_test.go
Expand Up @@ -668,7 +668,7 @@ func TestIgnition_getMirrorFromRelease(t *testing.T) {
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {

mirror := getMirrorFromRelease(tc.release, &tc.registriesConf)
mirror := mirror.GetMirrorFromRelease(tc.release, &tc.registriesConf)

assert.Equal(t, tc.expectedMirror, mirror)

Expand Down
47 changes: 27 additions & 20 deletions pkg/asset/agent/mirror/registriesconf.go
Expand Up @@ -4,7 +4,7 @@ import (
"fmt"
"os"
"path/filepath"
"strings"
"regexp"

"github.com/containers/image/pkg/sysregistriesv2"
"github.com/openshift/installer/pkg/asset"
Expand Down Expand Up @@ -161,9 +161,8 @@ func (i *RegistriesConf) Generate(dependencies asset.Parents) error {
i.Config = registries
i.setMirrorConfig(i.Config)

releaseImagePath := strings.Split(releaseImage.PullSpec, ":")[0]
if found := i.validateReleaseImageIsSameInRegistriesConf(releaseImagePath); !found {
logrus.Warnf(fmt.Sprintf("The ImageContentSources configuration in install-config.yaml should have at-least one source field matching the releaseImage value %s", releaseImagePath))
if !i.releaseImageIsSameInRegistriesConf(releaseImage.PullSpec) {
logrus.Warnf(fmt.Sprintf("The ImageContentSources configuration in install-config.yaml should have at least one source field matching the releaseImage value %s", releaseImage.PullSpec))
}

registriesData, err := toml.Marshal(registries)
Expand Down Expand Up @@ -210,10 +209,9 @@ func (i *RegistriesConf) Load(f asset.FileFetcher) (bool, error) {
i.setMirrorConfig(i.Config)

if string(i.File.Data) != defaultRegistriesConf {
if valid := i.validateRegistriesConf(); valid {
releaseImagePath := strings.Split(releaseImage.PullSpec, ":")[0]
if found := i.validateReleaseImageIsSameInRegistriesConf(releaseImagePath); !found {
logrus.Warnf(fmt.Sprintf("%s should have an entry matching the releaseImage %s", RegistriesConfFilename, releaseImagePath))
if i.validateRegistriesConf() {
if !i.releaseImageIsSameInRegistriesConf(releaseImage.PullSpec) {
logrus.Warnf(fmt.Sprintf("%s should have an entry matching the releaseImage %s", RegistriesConfFilename, releaseImage.PullSpec))
}
}
}
Expand All @@ -231,18 +229,8 @@ func (i *RegistriesConf) validateRegistriesConf() bool {
return true
}

func (i *RegistriesConf) validateReleaseImageIsSameInRegistriesConf(releaseImagePath string) bool {

var found bool

for _, registry := range i.Config.Registries {
source := registry.Endpoint.Location
if source == releaseImagePath {
found = true
break
}
}
return found
func (i *RegistriesConf) releaseImageIsSameInRegistriesConf(releaseImage string) bool {
return GetMirrorFromRelease(releaseImage, i) != ""
}

func (i *RegistriesConf) generateDefaultRegistriesConf() error {
Expand All @@ -268,3 +256,22 @@ func (i *RegistriesConf) setMirrorConfig(registriesConf *sysregistriesv2.V2Regis
}
i.MirrorConfig = mirrorConfig
}

// GetMirrorFromRelease gets the matching mirror configured for the releaseImage.
func GetMirrorFromRelease(releaseImage string, registriesConfig *RegistriesConf) string {
source := regexp.MustCompile(`^(.+?)(@sha256)?:(.+)`).FindStringSubmatch(releaseImage)
for _, config := range registriesConfig.MirrorConfig {
if config.Location == source[1] {
// include the tag with the build release image
switch len(source) {
case 4:
// Has Sha256
return fmt.Sprintf("%s%s:%s", config.Mirror, source[2], source[3])
case 3:
return fmt.Sprintf("%s:%s", config.Mirror, source[2])
}
}
}

return ""
}

0 comments on commit c491755

Please sign in to comment.