diff --git a/dev/tools/controllerbuilder/template/controller/controller.go b/dev/tools/controllerbuilder/template/controller/controller.go index 6d2e258193..677042dc34 100644 --- a/dev/tools/controllerbuilder/template/controller/controller.go +++ b/dev/tools/controllerbuilder/template/controller/controller.go @@ -159,8 +159,6 @@ func (a *Adapter) Find(ctx context.Context) (bool, error) { } func (a *Adapter) Create(ctx context.Context, createOp *directbase.CreateOperation) error { - u := createOp.GetUnstructured() - log := klog.FromContext(ctx).WithName(ctrlName) log.V(2).Info("creating {{.ProtoResource}}", "name", a.id.External) mapCtx := &direct.MapContext{} @@ -196,12 +194,10 @@ func (a *Adapter) Create(ctx context.Context, createOp *directbase.CreateOperati return mapCtx.Err() } status.ExternalRef = &a.id.External - return setStatus(u, status) + return createOp.UpdateStatus(ctx, status, nil) } func (a *Adapter) Update(ctx context.Context, updateOp *directbase.UpdateOperation) error { - u := updateOp.GetUnstructured() - log := klog.FromContext(ctx).WithName(ctrlName) log.V(2).Info("updating {{.ProtoResource}}", "name", a.id.External) mapCtx := &direct.MapContext{} @@ -243,7 +239,7 @@ func (a *Adapter) Update(ctx context.Context, updateOp *directbase.UpdateOperati if mapCtx.Err() != nil { return mapCtx.Err() } - return setStatus(u, status) + return updateOp.UpdateStatus(ctx, status, nil) } func (a *Adapter) Export(ctx context.Context) (*unstructured.Unstructured, error) { @@ -290,23 +286,4 @@ func (a *Adapter) Delete(ctx context.Context, deleteOp *directbase.DeleteOperati return false, fmt.Errorf("waiting delete {{.ProtoResource}} %s: %w", a.id.External, err) } return true, nil -} - -func setStatus(u *unstructured.Unstructured, typedStatus any) error { - status, err := runtime.DefaultUnstructuredConverter.ToUnstructured(typedStatus) - if err != nil { - return fmt.Errorf("error converting status to unstructured: %w", err) - } - - old, _, _ := unstructured.NestedMap(u.Object, "status") - if old != nil { - status["conditions"] = old["conditions"] - status["observedGeneration"] = old["observedGeneration"] - status["externalRef"] = old["externalRef"] - } - - u.Object["status"] = status - - return nil -} -` +} \ No newline at end of file diff --git a/pkg/controller/direct/secretmanager/secret_controller.go b/pkg/controller/direct/secretmanager/secret_controller.go index f475789bf6..d7b0e6553b 100644 --- a/pkg/controller/direct/secretmanager/secret_controller.go +++ b/pkg/controller/direct/secretmanager/secret_controller.go @@ -173,9 +173,7 @@ func ComputeAnnotations(secret *krm.SecretManagerSecret) map[string]string { return annotations } -func (a *Adapter) Create(ctx context.Context, createOp *directbase.CreateOperation) error { - u := createOp.GetUnstructured() - +func (a *Adapter) Create(ctx context.Context, op *directbase.CreateOperation) error { log := klog.FromContext(ctx).WithName(ctrlName) log.V(2).Info("creating Secret", "name", a.id.External) mapCtx := &direct.MapContext{} @@ -212,7 +210,8 @@ func (a *Adapter) Create(ctx context.Context, createOp *directbase.CreateOperati } status.ExternalRef = &a.id.External status.Name = created.Name - return setStatus(u, status) + + return op.UpdateStatus(ctx, status, nil) } func topicsEqual(desired []*krm.TopicRef, actual []*secretmanagerpb.Topic) bool { @@ -228,9 +227,7 @@ func topicsEqual(desired []*krm.TopicRef, actual []*secretmanagerpb.Topic) bool return reflect.DeepEqual(sets.List(externalsDesired), sets.List(externalsActual)) } -func (a *Adapter) Update(ctx context.Context, updateOp *directbase.UpdateOperation) error { - u := updateOp.GetUnstructured() - +func (a *Adapter) Update(ctx context.Context, op *directbase.UpdateOperation) error { log := klog.FromContext(ctx).WithName(ctrlName) log.V(2).Info("updating Secret", "name", a.id.External) mapCtx := &direct.MapContext{} @@ -284,7 +281,7 @@ func (a *Adapter) Update(ctx context.Context, updateOp *directbase.UpdateOperati return mapCtx.Err() } status.Name = updated.Name - return setStatus(u, status) + return op.UpdateStatus(ctx, status, nil) } func (a *Adapter) Export(ctx context.Context) (*unstructured.Unstructured, error) { @@ -320,22 +317,3 @@ func (a *Adapter) Delete(ctx context.Context, deleteOp *directbase.DeleteOperati log.V(2).Info("successfully deleted Secret", "name", a.id.External) return true, nil } - -func setStatus(u *unstructured.Unstructured, typedStatus any) error { - status, err := runtime.DefaultUnstructuredConverter.ToUnstructured(typedStatus) - if err != nil { - return fmt.Errorf("error converting status to unstructured: %w", err) - } - - old, _, _ := unstructured.NestedMap(u.Object, "status") - if old != nil { - status["conditions"] = old["conditions"] - status["observedGeneration"] = old["observedGeneration"] - status["externalRef"] = old["externalRef"] - status["name"] = old["name"] - } - - u.Object["status"] = status - - return nil -}