Reconciler: Reconcile dodo Apps as well
Fix service-account assignment.
Change-Id: Ic66c46ae5b728e09ee9118f61e31ab860623bce0
diff --git a/core/installer/tasks/env.go b/core/installer/tasks/env.go
index 20528a3..bc104cc 100644
--- a/core/installer/tasks/env.go
+++ b/core/installer/tasks/env.go
@@ -72,12 +72,12 @@
t.OnDone(func(_ error) {
done()
})
- pr := NewFluxcdReconciler( // TODO(gio): make reconciler address a flag
- "http://fluxcd-reconciler.dodo-fluxcd-reconciler.svc.cluster.local",
+ pr := NewFixedReconciler(
+ fmt.Sprintf("%s-flux", env.InfraName),
fmt.Sprintf("%s-flux", env.InfraName),
)
- er := NewFluxcdReconciler(
- "http://fluxcd-reconciler.dodo-fluxcd-reconciler.svc.cluster.local",
+ er := NewFixedReconciler(
+ env.Id,
env.Id,
)
go pr.Reconcile(rctx)
diff --git a/core/installer/tasks/reconciler.go b/core/installer/tasks/reconciler.go
index 0e8133e..9f8a004 100644
--- a/core/installer/tasks/reconciler.go
+++ b/core/installer/tasks/reconciler.go
@@ -4,35 +4,62 @@
"context"
"fmt"
"net/http"
- "time"
)
+// TODO(gio): make reconciler address a flag
+const baseURL = "http://fluxcd-reconciler.dodo-fluxcd-reconciler.svc.cluster.local"
+
type Reconciler interface {
- Reconcile(ctx context.Context)
+ Reconcile(ctx context.Context, namespace, name string)
}
-type fluxcdReconciler struct {
- resources []string
+type SequentialReconciler struct {
+ Reconcilers []Reconciler
}
-func NewFluxcdReconciler(addr, name string) Reconciler {
- return fluxcdReconciler{
- resources: []string{
- fmt.Sprintf("%s/source/git/%s/%s/reconcile", addr, name, name),
- fmt.Sprintf("%s/kustomization/%s/%s/reconcile", addr, name, name),
- },
+func (r *SequentialReconciler) Reconcile(ctx context.Context, namespace, name string) {
+ for _, rec := range r.Reconcilers {
+ rec.Reconcile(ctx, namespace, name)
}
}
-func (r fluxcdReconciler) Reconcile(ctx context.Context) {
- for {
- select {
- case <-time.After(3 * time.Second):
- for _, res := range r.resources {
- http.Get(res)
- }
- case <-ctx.Done():
- return
- }
+type SourceGitReconciler struct{}
+
+func (c SourceGitReconciler) Reconcile(ctx context.Context, namespace, name string) {
+ addr := fmt.Sprintf("%s/source/git/%s/%s/reconcile", baseURL, namespace, name)
+ http.Get(addr)
+}
+
+type KustomizationReconciler struct{}
+
+func (c KustomizationReconciler) Reconcile(ctx context.Context, namespace, name string) {
+ addr := fmt.Sprintf("%s/kustomization/%s/%s/reconcile", baseURL, namespace, name)
+ http.Get(addr)
+}
+
+type namespaceNamePair struct {
+ namespace string
+ name string
+}
+
+type FixedReconciler struct {
+ namespace string
+ name string
+ reconciler Reconciler
+}
+
+func NewFixedReconciler(namespace, name string) *FixedReconciler {
+ return &FixedReconciler{
+ namespace,
+ name,
+ &SequentialReconciler{[]Reconciler{
+ SourceGitReconciler{},
+ // NOTE(gio): synchronizing git repository auto-syncs root kustomization as well
+ // KustomizationReconciler{},
+ }},
}
}
+
+func (r *FixedReconciler) Reconcile(ctx context.Context) {
+ r.reconciler.Reconcile(ctx, r.namespace, r.name)
+}