Skip to content

Commit d3212de

Browse files
committed
fixes
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 91079f0 commit d3212de

File tree

7 files changed

+65
-33
lines changed

7 files changed

+65
-33
lines changed

src/main/java/io/javaoperatorsdk/operator/glue/customresource/operator/GlueOperator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
@Version("v1beta1")
1111
@ShortNames("go")
1212
public class GlueOperator
13-
extends CustomResource<GlueOperatorSpec, ResourceFlowOperatorStatus>
13+
extends CustomResource<GlueOperatorSpec, GlueOperatorStatus>
1414
implements Namespaced {
1515
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import io.javaoperatorsdk.operator.glue.customresource.AbstractStatus;
44

5-
public class ResourceFlowOperatorStatus extends AbstractStatus {
5+
public class GlueOperatorStatus extends AbstractStatus {
66

77

88
}

src/main/java/io/javaoperatorsdk/operator/glue/reconciler/ValidationAndErrorHandler.java renamed to src/main/java/io/javaoperatorsdk/operator/glue/reconciler/ValidationAndStatusHandler.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,25 @@
1111

1212
import io.fabric8.kubernetes.client.CustomResource;
1313
import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl;
14+
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
1415
import io.javaoperatorsdk.operator.glue.GlueException;
1516
import io.javaoperatorsdk.operator.glue.customresource.AbstractStatus;
1617
import io.javaoperatorsdk.operator.glue.customresource.glue.DependentResourceSpec;
18+
import io.javaoperatorsdk.operator.glue.customresource.glue.Glue;
1719
import io.javaoperatorsdk.operator.glue.customresource.glue.GlueSpec;
20+
import io.javaoperatorsdk.operator.glue.customresource.glue.GlueStatus;
1821
import io.javaoperatorsdk.operator.glue.customresource.glue.RelatedResourceSpec;
22+
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperator;
23+
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperatorStatus;
1924

2025
import jakarta.inject.Singleton;
2126

2227
@Singleton
23-
public class ValidationAndErrorHandler {
28+
public class ValidationAndStatusHandler {
2429

2530
public static final int MAX_MESSAGE_SIZE = 150;
2631

27-
private static final Logger log = LoggerFactory.getLogger(ValidationAndErrorHandler.class);
32+
private static final Logger log = LoggerFactory.getLogger(ValidationAndStatusHandler.class);
2833

2934
public static final String NON_UNIQUE_NAMES_FOUND_PREFIX = "Non unique names found: ";
3035

@@ -34,7 +39,7 @@ public class ValidationAndErrorHandler {
3439
log.error("Error during reconciliation of resource. Name: {} namespace: {}, Kind: {}",
3540
resource.getMetadata().getName(), resource.getMetadata().getNamespace(), resource.getKind(),
3641
e);
37-
if (e instanceof ValidationAndErrorHandler.NonUniqueNameException ex) {
42+
if (e instanceof ValidationAndStatusHandler.NonUniqueNameException ex) {
3843
resource.getStatus()
3944
.setErrorMessage(NON_UNIQUE_NAMES_FOUND_PREFIX + String.join(",", ex.getDuplicates()));
4045
return ErrorStatusUpdateControl.patchStatus(resource).withNoRetry();
@@ -51,6 +56,43 @@ public class ValidationAndErrorHandler {
5156
}
5257
}
5358

59+
public UpdateControl<GlueOperator> handleStatusUpdate(GlueOperator primary) {
60+
if (primary.getStatus() == null) {
61+
primary.setStatus(new GlueOperatorStatus());
62+
}
63+
return handleGenericStatusUpdate(primary);
64+
}
65+
66+
public UpdateControl<Glue> handleStatusUpdate(Glue primary) {
67+
if (primary.getStatus() == null) {
68+
primary.setStatus(new GlueStatus());
69+
}
70+
return handleGenericStatusUpdate(primary);
71+
}
72+
73+
private <T extends CustomResource<?, ? extends AbstractStatus>> UpdateControl<T> handleGenericStatusUpdate(
74+
T primary) {
75+
boolean patch = false;
76+
77+
if (primary.getStatus().getErrorMessage() != null) {
78+
patch = true;
79+
primary.getStatus().setErrorMessage(null);
80+
}
81+
if (!primary.getMetadata().getGeneration()
82+
.equals(primary.getStatus().getObservedGeneration())) {
83+
patch = true;
84+
primary.getStatus().setObservedGeneration(primary.getMetadata().getGeneration());
85+
}
86+
87+
if (patch) {
88+
primary.getMetadata().setResourceVersion(null);
89+
return UpdateControl.patchStatus(primary);
90+
} else {
91+
return UpdateControl.noUpdate();
92+
}
93+
94+
}
95+
5496
public void checkIfValidGlueSpec(GlueSpec glueSpec) {
5597
checkIfBulkProvidesResourceTemplate(glueSpec);
5698
checkIfNamesAreUnique(glueSpec);

src/main/java/io/javaoperatorsdk/operator/glue/reconciler/glue/GlueReconciler.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import io.javaoperatorsdk.operator.glue.dependent.GCGenericBulkDependentResource;
2525
import io.javaoperatorsdk.operator.glue.dependent.GCGenericDependentResource;
2626
import io.javaoperatorsdk.operator.glue.dependent.GenericDependentResource;
27-
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndErrorHandler;
27+
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndStatusHandler;
2828
import io.javaoperatorsdk.operator.glue.reconciler.operator.GlueOperatorReconciler;
2929
import io.javaoperatorsdk.operator.glue.templating.GenericTemplateHandler;
3030
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
@@ -46,18 +46,18 @@ public class GlueReconciler implements Reconciler<Glue>, Cleaner<Glue> {
4646
public static final String GLUE_RECONCILER_NAME = "glue";
4747

4848

49-
private final ValidationAndErrorHandler validationAndErrorHandler;
49+
private final ValidationAndStatusHandler validationAndStatusHandler;
5050
private final InformerRegister informerRegister;
5151

5252
private final KubernetesResourceDeletedCondition deletePostCondition =
5353
new KubernetesResourceDeletedCondition();
5454

5555
private final GenericTemplateHandler genericTemplateHandler;
5656

57-
public GlueReconciler(ValidationAndErrorHandler validationAndErrorHandler,
57+
public GlueReconciler(ValidationAndStatusHandler validationAndStatusHandler,
5858
InformerRegister informerRegister,
5959
GenericTemplateHandler genericTemplateHandler) {
60-
this.validationAndErrorHandler = validationAndErrorHandler;
60+
this.validationAndStatusHandler = validationAndStatusHandler;
6161
this.informerRegister = informerRegister;
6262
this.genericTemplateHandler = genericTemplateHandler;
6363
}
@@ -78,7 +78,7 @@ public UpdateControl<Glue> reconcile(Glue primary,
7878
log.debug("Reconciling glue. name: {} namespace: {}",
7979
primary.getMetadata().getName(), primary.getMetadata().getNamespace());
8080

81-
validationAndErrorHandler.checkIfValidGlueSpec(primary.getSpec());
81+
validationAndStatusHandler.checkIfValidGlueSpec(primary.getSpec());
8282

8383
registerRelatedResourceInformers(context, primary);
8484
if (deletedGlueIfParentMarkedForDeletion(context, primary)) {
@@ -91,7 +91,7 @@ public UpdateControl<Glue> reconcile(Glue primary,
9191
informerRegister.deRegisterInformerOnResourceFlowChange(context, primary);
9292
result.throwAggregateExceptionIfErrorsPresent();
9393
patchRelatedResourcesStatus(context, primary);
94-
return removeErrorMessageFromGlueStatusIfPresent(primary);
94+
return validationAndStatusHandler.handleStatusUpdate(primary);
9595
}
9696

9797
@Override
@@ -123,7 +123,7 @@ public ErrorStatusUpdateControl<Glue> updateErrorStatus(Glue resource, Context<G
123123
if (resource.getStatus() == null) {
124124
resource.setStatus(new GlueStatus());
125125
}
126-
return validationAndErrorHandler.updateStatusErrorMessage(e, resource);
126+
return validationAndStatusHandler.updateStatusErrorMessage(e, resource);
127127
}
128128

129129
private boolean deletedGlueIfParentMarkedForDeletion(Context<Glue> context, Glue primary) {
@@ -136,16 +136,6 @@ private boolean deletedGlueIfParentMarkedForDeletion(Context<Glue> context, Glue
136136
}
137137
}
138138

139-
private UpdateControl<Glue> removeErrorMessageFromGlueStatusIfPresent(Glue primary) {
140-
if (primary.getStatus() != null && primary.getStatus().getErrorMessage() != null) {
141-
primary.getStatus().setErrorMessage(null);
142-
primary.getMetadata().setResourceVersion(null);
143-
return UpdateControl.patchStatus(primary);
144-
} else {
145-
return UpdateControl.noUpdate();
146-
}
147-
}
148-
149139
private void registerRelatedResourceInformers(Context<Glue> context,
150140
Glue glue) {
151141
glue.getSpec().getRelatedResources()

src/main/java/io/javaoperatorsdk/operator/glue/reconciler/operator/GlueOperatorReconciler.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
import io.javaoperatorsdk.operator.glue.customresource.glue.RelatedResourceSpec;
2020
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperator;
2121
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperatorSpec;
22+
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperatorStatus;
2223
import io.javaoperatorsdk.operator.glue.customresource.operator.Parent;
23-
import io.javaoperatorsdk.operator.glue.customresource.operator.ResourceFlowOperatorStatus;
24-
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndErrorHandler;
24+
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndStatusHandler;
2525
import io.javaoperatorsdk.operator.glue.reconciler.glue.GlueReconciler;
2626
import io.javaoperatorsdk.operator.glue.templating.GenericTemplateHandler;
2727
import io.javaoperatorsdk.operator.processing.GroupVersionKind;
@@ -49,18 +49,18 @@ public class GlueOperatorReconciler
4949
Optional<String> glueLabelSelector;
5050

5151
private final ControllerConfig controllerConfig;
52-
private final ValidationAndErrorHandler validationAndErrorHandler;
52+
private final ValidationAndStatusHandler validationAndErrorHandler;
5353
private final GenericTemplateHandler genericTemplateHandler;
5454

5555
private Map<String, String> defaultGlueLabels;
5656

5757
private InformerEventSource<Glue, GlueOperator> glueEventSource;
5858

5959
public GlueOperatorReconciler(ControllerConfig controllerConfig,
60-
ValidationAndErrorHandler validationAndErrorHandler,
60+
ValidationAndStatusHandler validationAndStatusHandler,
6161
GenericTemplateHandler genericTemplateHandler) {
6262
this.controllerConfig = controllerConfig;
63-
this.validationAndErrorHandler = validationAndErrorHandler;
63+
this.validationAndErrorHandler = validationAndStatusHandler;
6464
this.genericTemplateHandler = genericTemplateHandler;
6565
}
6666

@@ -96,7 +96,7 @@ public UpdateControl<GlueOperator> reconcile(GlueOperator glueOperator,
9696
}
9797
});
9898

99-
return UpdateControl.noUpdate();
99+
return validationAndErrorHandler.handleStatusUpdate(glueOperator);
100100
}
101101

102102
private Glue createGlue(GenericKubernetesResource targetParentResource,
@@ -213,7 +213,7 @@ public List<EventSource<?, GlueOperator>> prepareEventSources(
213213
public ErrorStatusUpdateControl<GlueOperator> updateErrorStatus(GlueOperator resource,
214214
Context<GlueOperator> context, Exception e) {
215215
if (resource.getStatus() == null) {
216-
resource.setStatus(new ResourceFlowOperatorStatus());
216+
resource.setStatus(new GlueOperatorStatus());
217217
}
218218
return validationAndErrorHandler.updateStatusErrorMessage(e, resource);
219219
}

src/test/java/io/javaoperatorsdk/operator/glue/GlueOperatorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperator;
1919
import io.javaoperatorsdk.operator.glue.customresource.operator.GlueOperatorSpec;
2020
import io.javaoperatorsdk.operator.glue.customresource.operator.Parent;
21-
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndErrorHandler;
21+
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndStatusHandler;
2222
import io.javaoperatorsdk.operator.glue.reconciler.operator.GlueOperatorReconciler;
2323
import io.quarkus.test.junit.QuarkusTest;
2424

@@ -162,7 +162,7 @@ void nonUniqueNameTest() {
162162

163163
assertThat(actual.getStatus()).isNotNull();
164164
assertThat(actual.getStatus().getErrorMessage())
165-
.startsWith(ValidationAndErrorHandler.NON_UNIQUE_NAMES_FOUND_PREFIX);
165+
.startsWith(ValidationAndStatusHandler.NON_UNIQUE_NAMES_FOUND_PREFIX);
166166
});
167167
}
168168

src/test/java/io/javaoperatorsdk/operator/glue/GlueTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import io.javaoperatorsdk.operator.glue.customresource.TestCustomResource;
2020
import io.javaoperatorsdk.operator.glue.customresource.glue.DependentResourceSpec;
2121
import io.javaoperatorsdk.operator.glue.customresource.glue.Glue;
22-
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndErrorHandler;
22+
import io.javaoperatorsdk.operator.glue.reconciler.ValidationAndStatusHandler;
2323
import io.quarkus.test.junit.QuarkusTest;
2424

2525
import static io.javaoperatorsdk.operator.glue.TestUtils.INITIAL_RECONCILE_WAIT_TIMEOUT;
@@ -241,7 +241,7 @@ void nonUniqueNameResultsInErrorMessageOnStatus() {
241241

242242
assertThat(actualGlue.getStatus()).isNotNull();
243243
Assertions.assertThat(actualGlue.getStatus().getErrorMessage())
244-
.startsWith(ValidationAndErrorHandler.NON_UNIQUE_NAMES_FOUND_PREFIX);
244+
.startsWith(ValidationAndStatusHandler.NON_UNIQUE_NAMES_FOUND_PREFIX);
245245
});
246246
}
247247

0 commit comments

Comments
 (0)