in oracle/controllers/instancecontroller/utils.go [427:481]
func (r *InstanceReconciler) overrideDefaultImages(config *v1alpha1.Config, images map[string]string, inst *v1alpha1.Instance, log logr.Logger) error {
if config != nil {
log.V(1).Info("customer config loaded", "config", config)
if config.Spec.Platform != "GCP" && config.Spec.Platform != "BareMetal" && config.Spec.Platform != "Minikube" && config.Spec.Platform != "Kind" {
return fmt.Errorf("Unsupported platform: %q", config.Spec.Platform)
}
// Replace the default images from the global Config, if so requested.
log.Info("create instance: prep", "images explicitly requested for this config", config.Spec.Images)
for k, image := range config.Spec.Images {
log.Info("key value is", "k", k, "image", image)
if v2, ok := images[k]; ok {
log.Info("create instance: prep", "replacing", k, "image of", v2, "with global", image)
images[k] = image
}
}
} else {
log.Info("no customer specific config found, assuming all defaults")
}
// Replace final images with those explicitly set for the Instance.
if inst.Spec.Images != nil {
log.Info("create instance: prep", "images explicitly requested for this instance", inst.Spec.Images)
for k, v1 := range inst.Spec.Images {
log.Info("k value is ", "key", k)
if v2, ok := images[k]; ok {
log.Info("create instance: prep", "replacing", k, "image of", v2, "with instance specific", v1)
images[k] = v1
}
}
}
serviceImageDefined := false
if inst.Spec.Images != nil {
if _, ok := inst.Spec.Images["service"]; ok {
serviceImageDefined = true
log.Info("service image requested via instance", "service image:", inst.Spec.Images["service"])
}
}
if config != nil {
if _, ok := config.Spec.Images["service"]; ok {
serviceImageDefined = true
log.Info("service image requested via config", "service image:", config.Spec.Images["service"])
}
}
if inst.Spec.CDBName == "" {
return fmt.Errorf("overrideDefaultImages: CDBName isn't defined in the config")
}
if !serviceImageDefined {
return fmt.Errorf("overrideDefaultImages: Service image isn't defined in the config")
}
return nil
}