Skip to content

Commit 742fc00

Browse files
committed
More unstructured
1 parent 2fea28b commit 742fc00

File tree

2 files changed

+35
-14
lines changed

2 files changed

+35
-14
lines changed

pkg/patterns/addon/pkg/status/aggregate.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ func (a *aggregator) Reconciled(ctx context.Context, src declarative.Declarative
123123
}
124124

125125
log.WithValues("name", unstruct.GetName()).WithValues("status", status).Info("updating status")
126-
127-
err = a.client.Status().Update(ctx, unstruct)
126+
fmt.Println("here")
127+
err = a.client.Status().Update(ctx, src)
128128
if err != nil {
129129
log.Error(err, "updating status")
130130
return err

pkg/patterns/declarative/reconciler.go

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -290,20 +290,42 @@ func (r *Reconciler) reconcileExists(ctx context.Context, name types.NamespacedN
290290
}
291291

292292
addonObject, ok := instance.(addonsv1alpha1.CommonObject)
293-
if !ok {
294-
return reconcile.Result{}, fmt.Errorf("instance %T was not an addonsv1alpha1.CommonObject", instance)
295-
}
296-
status := addonObject.GetCommonStatus()
297-
if status.Phase != string(aggregateStatus(statusMap)) {
298-
status.Phase = string(aggregateStatus(statusMap))
299-
addonObject.SetCommonStatus(status)
300-
log.WithValues("name", addonObject.GetName()).WithValues("status", status).Info("updating status")
301-
302-
err = r.client.Status().Update(ctx, instance)
293+
unstruct, unstructOk := instance.(*unstructured.Unstructured)
294+
aggregatedStatus := string(aggregateStatus(statusMap))
295+
if ok {
296+
addonStatus := addonObject.GetCommonStatus()
297+
if addonStatus.Phase != aggregatedStatus {
298+
addonStatus.Phase = aggregatedStatus
299+
addonObject.SetCommonStatus(addonStatus)
300+
log.WithValues("name", addonObject.GetName()).WithValues("status", addonStatus).Info("updating status")
301+
err = r.client.Status().Update(ctx, addonObject)
302+
if err != nil {
303+
log.Error(err, "error updating status")
304+
return reconcile.Result{}, err
305+
}
306+
}
307+
} else if unstructOk {
308+
statusPhase, _, err := unstructured.NestedString(unstruct.Object, "status", "phase")
303309
if err != nil {
304-
log.Error(err, "error updating status")
305310
return reconcile.Result{}, err
306311
}
312+
313+
if statusPhase != aggregatedStatus {
314+
err := unstructured.SetNestedField(unstruct.Object, statusPhase, "status", "phase")
315+
if err != nil {
316+
return reconcile.Result{}, err
317+
}
318+
log.WithValues("name", addonObject.GetName()).WithValues("phase", statusPhase).Info("updating status")
319+
err = r.client.Status().Update(ctx, unstruct)
320+
if err != nil {
321+
log.Error(err, "error updating status")
322+
return reconcile.Result{}, err
323+
}
324+
}
325+
} else {
326+
return reconcile.Result{}, fmt.Errorf("instance %T was not an addonsv1alpha1.CommonObject or unstructured." +
327+
"Unstructured",
328+
instance)
307329
}
308330

309331
if r.options.sink != nil {
@@ -312,7 +334,6 @@ func (r *Reconciler) reconcileExists(ctx context.Context, name types.NamespacedN
312334
return reconcile.Result{}, err
313335
}
314336
}
315-
316337
return reconcile.Result{}, nil
317338
}
318339

0 commit comments

Comments
 (0)