func processInstalled()

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
}