@@ -18,6 +18,7 @@ package controller
1818
1919import (
2020 "context"
21+ "time"
2122
2223 "k8s.io/apimachinery/pkg/runtime"
2324 "k8s.io/apimachinery/pkg/types"
@@ -64,6 +65,17 @@ func (r *ModelReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
6465
6566 logger .V (10 ).Info ("reconcile Model" , "Model" , klog .KObj (model ))
6667
68+ shouldUpdate , newModel := needsUpdated (model )
69+ if shouldUpdate {
70+ if err := r .Update (ctx , newModel ); err != nil {
71+ logger .Error (err , "failed to update OpenModel with default values" )
72+ return ctrl.Result {}, err
73+ }
74+ logger .Info ("Updated OpenModel with default spec fields" ,
75+ "OwnedBy" , * newModel .Spec .OwnedBy ,
76+ "CreatedAt" , newModel .Spec .CreatedAt .Time .UTC ().Format (time .RFC3339 ))
77+ }
78+
6779 return ctrl.Result {}, nil
6880}
6981
@@ -73,3 +85,22 @@ func (r *ModelReconciler) SetupWithManager(mgr ctrl.Manager) error {
7385 For (& coreapi.OpenModel {}).
7486 Complete (r )
7587}
88+
89+ // needsUpdated checks if the model needs to be updated.
90+ func needsUpdated (model * coreapi.OpenModel ) (bool , * coreapi.OpenModel ) {
91+ needsUpdate := false
92+ newModel := model .DeepCopy ()
93+
94+ if newModel .Spec .OwnedBy == nil {
95+ defaultOwner := coreapi .DefaultOwnedBy
96+ newModel .Spec .OwnedBy = & defaultOwner
97+ needsUpdate = true
98+ }
99+
100+ if newModel .Spec .CreatedAt == nil {
101+ newModel .Spec .CreatedAt = & model .CreationTimestamp
102+ needsUpdate = true
103+ }
104+
105+ return needsUpdate , newModel
106+ }
0 commit comments