diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceIT.java index 592e40100e..4a32d97252 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceIT.java @@ -131,7 +131,7 @@ private static void assertReconciled( assertThat( reconciler.numberOfResourceReconciliations( resourceInAdditionalTestNamespace)) - .isEqualTo(2)); + .isEqualTo(1)); } private static void assertNotReconciled( diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java index 64a80ff4a8..96bd43c9e2 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/changenamespace/ChangeNamespaceTestReconciler.java @@ -53,15 +53,7 @@ public UpdateControl reconcile( ChangeNamespaceTestCustomResource primary, Context context) { - var actualConfigMap = context.getSecondaryResource(ConfigMap.class); - if (actualConfigMap.isEmpty()) { - context - .getClient() - .configMaps() - .inNamespace(primary.getMetadata().getNamespace()) - .resource(configMap(primary)) - .create(); - } + ReconcileUtils.serverSideApply(context, configMap(primary)); if (primary.getStatus() == null) { primary.setStatus(new ChangeNamespaceTestCustomResourceStatus()); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java index 039faf056c..f76443c103 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/generickubernetesresourcehandling/GenericKubernetesResourceHandlingReconciler.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.io.InputStream; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,36 +40,11 @@ public UpdateControl reconcile( GenericKubernetesResourceHandlingCustomResource primary, Context context) { - var secondary = context.getSecondaryResource(GenericKubernetesResource.class); - - secondary.ifPresentOrElse( - r -> { - var desired = desiredConfigMap(primary, context); - if (!matches(r, desired)) { - context - .getClient() - .genericKubernetesResources(VERSION, KIND) - .resource(desired) - .update(); - } - }, - () -> - context - .getClient() - .genericKubernetesResources(VERSION, KIND) - .resource(desiredConfigMap(primary, context)) - .create()); + ReconcileUtils.serverSideApply(context, desiredConfigMap(primary, context)); return UpdateControl.noUpdate(); } - @SuppressWarnings("unchecked") - private boolean matches(GenericKubernetesResource actual, GenericKubernetesResource desired) { - var actualData = (HashMap) actual.getAdditionalProperties().get("data"); - var desiredData = (HashMap) desired.getAdditionalProperties().get("data"); - return actualData.equals(desiredData); - } - GenericKubernetesResource desiredConfigMap( GenericKubernetesResourceHandlingCustomResource primary, Context context) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java index 7409d5a5e4..aea2dfe0c2 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/baseapi/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java @@ -26,6 +26,7 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; +import io.javaoperatorsdk.operator.api.reconciler.ReconcileUtils; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.event.ResourceID; @@ -53,31 +54,8 @@ public UpdateControl reconcile( Context context) { numberOfExecutions.addAndGet(1); - final var client = context.getClient(); - if (client - .configMaps() - .inNamespace(resource.getMetadata().getNamespace()) - .withName(getName1(resource)) - .get() - == null) { - client - .configMaps() - .inNamespace(resource.getMetadata().getNamespace()) - .resource(configMap(getName1(resource), resource)) - .createOrReplace(); - } - if (client - .configMaps() - .inNamespace(resource.getMetadata().getNamespace()) - .withName(getName2(resource)) - .get() - == null) { - client - .configMaps() - .inNamespace(resource.getMetadata().getNamespace()) - .resource(configMap(getName2(resource), resource)) - .createOrReplace(); - } + ReconcileUtils.serverSideApply(context, configMap(getName1(resource), resource)); + ReconcileUtils.serverSideApply(context, configMap(getName2(resource), resource)); if (numberOfExecutions.get() >= 3) { if (context.getSecondaryResources(ConfigMap.class).size() != 2) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java index 5a9d9a7f06..b97d8ef679 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateReconciler.java @@ -32,6 +32,7 @@ import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.DeleteControl; import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; +import io.javaoperatorsdk.operator.api.reconciler.ReconcileUtils; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.event.ResourceID; @@ -110,7 +111,7 @@ private void createExternalResource( // This is critical in this case, since on next reconciliation if it would not be in the cache // it would be created again. configMapEventSource.eventFilteringUpdateAndCacheResource( - configMap, toCreate -> context.getClient().configMaps().resource(toCreate).create()); + configMap, toCreate -> ReconcileUtils.serverSideApply(context, toCreate)); externalResourceEventSource.handleRecentResourceCreate(primaryID, createdResource); } diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java index 941a159542..13fede9fcc 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageReconciler.java @@ -105,12 +105,7 @@ public UpdateControl reconcile(WebPage webPage, Context contex "Creating or updating ConfigMap {} in {}", desiredHtmlConfigMap.getMetadata().getName(), ns); - context - .getClient() - .configMaps() - .inNamespace(ns) - .resource(desiredHtmlConfigMap) - .serverSideApply(); + ReconcileUtils.serverSideApply(context, desiredHtmlConfigMap); } var existingDeployment = context.getSecondaryResource(Deployment.class).orElse(null); @@ -119,13 +114,7 @@ public UpdateControl reconcile(WebPage webPage, Context contex "Creating or updating Deployment {} in {}", desiredDeployment.getMetadata().getName(), ns); - context - .getClient() - .apps() - .deployments() - .inNamespace(ns) - .resource(desiredDeployment) - .serverSideApply(); + ReconcileUtils.serverSideApply(context, desiredDeployment); } var existingService = context.getSecondaryResource(Service.class).orElse(null); @@ -134,14 +123,14 @@ public UpdateControl reconcile(WebPage webPage, Context contex "Creating or updating Deployment {} in {}", desiredDeployment.getMetadata().getName(), ns); - context.getClient().services().inNamespace(ns).resource(desiredService).serverSideApply(); + ReconcileUtils.serverSideApply(context, desiredService); } var existingIngress = context.getSecondaryResource(Ingress.class); if (Boolean.TRUE.equals(webPage.getSpec().getExposed())) { var desiredIngress = makeDesiredIngress(webPage); if (existingIngress.isEmpty() || !match(desiredIngress, existingIngress.get())) { - context.getClient().resource(desiredIngress).inNamespace(ns).serverSideApply(); + ReconcileUtils.serverSideApply(context, desiredIngress); } } else existingIngress.ifPresent(ingress -> context.getClient().resource(ingress).delete());