Newer
Older
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package reconciler
import (
"context"
"github.com/presslabs/controller-util/syncer"
"k8s.libre.sh/application"
interfaces "k8s.libre.sh/interfaces"
"k8s.libre.sh/objects"
"k8s.libre.sh/status"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
)
type ComponentReconciler struct {
ReconcilerBase *ReconcilerBase
Component application.Component
Status status.ComponentStatus
experiments map[string]chan struct{}
Owner interfaces.Object
}
func (r *ComponentReconciler) Reconcile(request reconcile.Request) (reconcile.Result, error) {
for _, o := range r.Component.GetObjects() {
reconciler := NewResourceReconciler(r.ReconcilerBase, o, r.Owner, context.TODO())
res, err := reconciler.Reconcile(request)
if err != nil {
return res, err
}
r.Status.Resources.Objects = append(r.Status.Resources.Objects, reconciler.Status)
}
return ctrl.Result{}, nil
}
func SyncComponent(ctx context.Context, r interfaces.Reconcile, m application.ComponentMutate, owner interfaces.Object) (resources status.Resources, err error) {
keys := []int{}
syncers := make(map[int]syncer.Interface, len(m.GetObjects()))
for k, o := range m.GetObjects() {
keys = append(keys, k)
syncers[k] = objects.NewObjectSyncer(o, owner, r)
}
resources, err = SyncObjects(context.TODO(), r, syncers)
if err != nil {
return resources, err