in pkg/packages/manager.go [177:219]
func processInstalled(mc *ManagerContext) bool {
if mc.Package.Status.Source != mc.Source {
mc.Package.Status.Source = mc.Source
mc.Package.Status.State = api.StateUpdating
mc.RequeueAfter = retryShort
return true
}
var err error
newValues := make(map[string]interface{})
err = yaml.Unmarshal([]byte(mc.Package.Spec.Config), &newValues)
if err != nil {
mc.Log.Error(err, "unmarshaling current package configuration")
mc.Package.Status.Detail = err.Error()
mc.RequeueAfter = retryShort
return true
}
if err := mc.PackageDriver.Initialize(mc.Ctx, mc.Package.GetClusterName()); err != nil {
mc.Package.Status.Detail = err.Error()
mc.Log.Error(err, "Initialization failed")
return true
}
newValues[sourceRegistry] = mc.getImageRegistry(newValues)
needs, err := mc.PackageDriver.IsConfigChanged(mc.Ctx, mc.Package.Name, newValues)
if err != nil {
mc.Log.Error(err, "checking necessity of reconfiguration")
mc.Package.Status.Detail = err.Error()
mc.RequeueAfter = retryLong
return true
}
if needs {
mc.Log.Info("configuration change detected, upgrading")
mc.Package.Status.State = api.StateUpdating
mc.RequeueAfter = retryShort
mc.Package.Spec.DeepCopyInto(&mc.Package.Status.Spec)
return true
}
mc.RequeueAfter = retryVeryLong
return false
}