@@ -88,15 +88,44 @@ func (oc *OperatorContext) ReconcileStatefulset() (reconcile.Result, error) {
8888 oc .Recorder .Event (oc .MarklogicGroup , "Normal" , "StatefulSetCreated" , "MarkLogic statefulSet created successfully" )
8989 return result .Done ().Output ()
9090 }
91- _ , outputErr := result .Error (err ).Output ()
92- if outputErr != nil {
93- logger .Error (outputErr , "Failed to process result error" )
94- }
91+ logger .Error (err , "Cannot get statefulSet for MarkLogic" )
92+ return result .Error (err ).Output ()
9593 }
94+
95+ patchDiff , err := patch .DefaultPatchMaker .Calculate (currentSts , statefulSetDef ,
96+ patch .IgnoreStatusFields (),
97+ patch .IgnoreVolumeClaimTemplateTypeMetaAndStatus (),
98+ patch .IgnoreField ("kind" ))
99+ logger .Info ("Patch Diff:" , "Diff" , patchDiff .String ())
100+ logger .Info ("statefulSetDef Spec:" , "Spec" , statefulSetDef .Spec .Replicas )
96101 if err != nil {
97- logger .Error (err , "Cannot create standalone statefulSet for MarkLogic " )
102+ logger .Error (err , "Error calculating patch " )
98103 return result .Error (err ).Output ()
99104 }
105+
106+ if ! patchDiff .IsEmpty () {
107+ logger .Info ("MarkLogic statefulSet spec is different from the MarkLogicGroup spec, updating the statefulSet" )
108+ currentSts .Spec = statefulSetDef .Spec
109+ currentSts .ObjectMeta .Annotations = statefulSetDef .ObjectMeta .Annotations
110+ currentSts .ObjectMeta .Labels = statefulSetDef .ObjectMeta .Labels
111+ err := oc .Client .Update (oc .Ctx , currentSts )
112+ if err != nil {
113+ logger .Error (err , "Error updating statefulSet" )
114+ return result .Error (err ).Output ()
115+ }
116+ } else {
117+ logger .Info ("MarkLogic statefulSet spec is the same as the current spec, no update needed" )
118+ }
119+ logger .Info ("Operator Status:" , "Stage" , cr .Status .Stage )
120+ if cr .Status .Stage == "STS_CREATED" {
121+ logger .Info ("MarkLogic statefulSet created successfully, waiting for pods to be ready" )
122+ pods , err := GetPodsForStatefulSet (cr .Namespace , cr .Spec .Name )
123+ if err != nil {
124+ logger .Error (err , "Error getting pods for statefulset" )
125+ }
126+ logger .Info ("Pods in statefulSet: " , "Pods" , pods )
127+ }
128+
100129 patchClient := client .MergeFrom (oc .MarklogicGroup .DeepCopy ())
101130 updated := false
102131 if currentSts .Status .ReadyReplicas == 0 || currentSts .Status .ReadyReplicas != currentSts .Status .Replicas {
@@ -132,37 +161,6 @@ func (oc *OperatorContext) ReconcileStatefulset() (reconcile.Result, error) {
132161 }
133162 }
134163
135- patchDiff , err := patch .DefaultPatchMaker .Calculate (currentSts , statefulSetDef ,
136- patch .IgnoreStatusFields (),
137- patch .IgnoreVolumeClaimTemplateTypeMetaAndStatus (),
138- patch .IgnoreField ("kind" ))
139- if err != nil {
140- logger .Error (err , "Error calculating patch" )
141- return result .Error (err ).Output ()
142- }
143- if ! patchDiff .IsEmpty () {
144- logger .Info ("MarkLogic statefulSet spec is different from the MarkLogicGroup spec, updating the statefulSet" )
145- currentSts .Spec = statefulSetDef .Spec
146- currentSts .ObjectMeta .Annotations = statefulSetDef .ObjectMeta .Annotations
147- currentSts .ObjectMeta .Labels = statefulSetDef .ObjectMeta .Labels
148- err := oc .Client .Update (oc .Ctx , currentSts )
149- if err != nil {
150- logger .Error (err , "Error updating statefulSet" )
151- return result .Error (err ).Output ()
152- }
153- } else {
154- logger .Info ("MarkLogic statefulSet spec is the same as the current spec, no update needed" )
155- }
156- logger .Info ("Operator Status:" , "Stage" , cr .Status .Stage )
157- if cr .Status .Stage == "STS_CREATED" {
158- logger .Info ("MarkLogic statefulSet created successfully, waiting for pods to be ready" )
159- pods , err := GetPodsForStatefulSet (cr .Namespace , cr .Spec .Name )
160- if err != nil {
161- logger .Error (err , "Error getting pods for statefulset" )
162- }
163- logger .Info ("Pods in statefulSet: " , "Pods" , pods )
164- }
165-
166164 return result .Done ().Output ()
167165}
168166
0 commit comments