diff --git a/pkg/asset/ignition/bootstrap/bootstrap.go b/pkg/asset/ignition/bootstrap/bootstrap.go index f4e97dac4c7..01211a33308 100644 --- a/pkg/asset/ignition/bootstrap/bootstrap.go +++ b/pkg/asset/ignition/bootstrap/bootstrap.go @@ -45,6 +45,7 @@ type bootstrapTemplateData struct { ReleaseImage string Proxy *configv1.ProxyStatus Registries []sysregistriesv2.Registry + RHCOSBaseURI string } // Bootstrap is an asset that generates the ignition config for bootstrap nodes. @@ -216,12 +217,26 @@ func (a *Bootstrap) getTemplateData(installConfig *types.InstallConfig, releaseI } } + var rhcosImageBaseURI string + if ri, ok := os.LookupEnv("OPENSHIFT_INSTALL_IMAGE_BASE_URI_OVERRIDE"); ok && ri != "" { + logrus.Warn("Found override for rhcosImageBaseURI. Please be warned, this is not advised") + rhcosImageBaseURI = ri + } else { + var err error + rhcosImageBaseURI, err = rhcos.BaseURI() + if err != nil { + return nil, err + } + logrus.Debugf("Using internal constant for release image base URI %s", rhcosImageBaseURI) + } + return &bootstrapTemplateData{ PullSecret: installConfig.PullSecret, ReleaseImage: releaseImage, EtcdCluster: strings.Join(etcdEndpoints, ","), Proxy: &proxy.Status, Registries: registries, + RHCOSBaseURI: rhcosImageBaseURI, }, nil } diff --git a/pkg/rhcos/baseuri.go b/pkg/rhcos/baseuri.go new file mode 100644 index 00000000000..79affcd685e --- /dev/null +++ b/pkg/rhcos/baseuri.go @@ -0,0 +1,23 @@ +package rhcos + +import ( + "context" + "net/url" + + "github.com/pkg/errors" +) + +// BaseURI fetches the BaseURI where images can be downloaded from +func BaseURI() (string, error) { + meta, err := fetchRHCOSBuild(context.TODO()) + if err != nil { + return "", errors.Wrap(err, "failed to fetch RHCOS metadata") + } + + base, err := url.Parse(meta.BaseURI) + if err != nil { + return "", err + } + + return base.String(), nil +}