-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmerge_stage.go
26 lines (23 loc) · 1008 Bytes
/
merge_stage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package kernel
import (
"github.com/imdario/mergo"
"github.com/kuberator/api/core"
)
func MergeStage(reconcile *ReconcileContext, resource *core.ResourcesLine) error {
// make k8s build-in resource
// get observed resource
observed, _ := reconcile.GetIfExists(reconcile.Context, reconcile.Namespace, resource.ResourceMeta)
target, err := reconcile.GetIfExists(reconcile.Context, reconcile.Namespace, resource.ResourceMeta)
if err != nil {
reconcile.Log.Error(err, "state finger stage get observer resource cause an error", "category", resource.ResourceMeta.GetCategory(), "name", resource.ResourceMeta.GetName())
}
resource.Observed = observed
if target != nil && resource.Desired != nil {
err = mergo.Merge(target, resource.Desired, mergo.WithOverride)
if err != nil {
reconcile.Log.Error(err, "state finger stage merge resource cause an error", "category", resource.ResourceMeta.GetCategory(), "name", resource.ResourceMeta.GetName())
}
resource.Desired = target
}
return nil
}