diff --git a/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java b/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java index 835fcef91a..b6e3ba2c8f 100644 --- a/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java +++ b/caffeine-bounded-cache-support/src/test/java/io/javaoperatorsdk/operator/processing/event/source/cache/sample/AbstractTestReconciler.java @@ -6,14 +6,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import io.fabric8.kubernetes.api.model.*; +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.api.model.ConfigMapBuilder; +import io.fabric8.kubernetes.api.model.HasMetadata; +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.cache.BoundedItemStore; import io.javaoperatorsdk.operator.processing.event.source.cache.CaffeineBoundedItemStores; @@ -27,38 +28,35 @@ import com.github.benmanes.caffeine.cache.Caffeine; public abstract class AbstractTestReconciler

> - implements KubernetesClientAware, Reconciler

, - EventSourceInitializer

{ + implements Reconciler

, EventSourceInitializer

{ private static final Logger log = LoggerFactory.getLogger(BoundedCacheClusterScopeTestReconciler.class); public static final String DATA_KEY = "dataKey"; - protected KubernetesClient client; - @Override public UpdateControl

reconcile( P resource, Context

context) { var maybeConfigMap = context.getSecondaryResource(ConfigMap.class); maybeConfigMap.ifPresentOrElse( - cm -> updateConfigMapIfNeeded(cm, resource), - () -> createConfigMap(resource)); + cm -> updateConfigMapIfNeeded(cm, resource, context), + () -> createConfigMap(resource, context)); ensureStatus(resource); log.info("Reconciled: {}", resource.getMetadata().getName()); return UpdateControl.patchStatus(resource); } - protected void updateConfigMapIfNeeded(ConfigMap cm, P resource) { + protected void updateConfigMapIfNeeded(ConfigMap cm, P resource, Context

context) { var data = cm.getData().get(DATA_KEY); if (data == null || data.equals(resource.getSpec().getData())) { cm.setData(Map.of(DATA_KEY, resource.getSpec().getData())); - client.configMaps().resource(cm).replace(); + context.getClient().configMaps().resource(cm).replace(); } } - protected void createConfigMap(P resource) { + protected void createConfigMap(P resource, Context

context) { var cm = new ConfigMapBuilder() .withMetadata(new ObjectMetaBuilder() .withName(resource.getMetadata().getName()) @@ -67,17 +65,7 @@ protected void createConfigMap(P resource) { .withData(Map.of(DATA_KEY, resource.getSpec().getData())) .build(); cm.addOwnerReference(resource); - client.configMaps().resource(cm).create(); - } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; + context.getClient().configMaps().resource(cm).create(); } @Override diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/managed/KubernetesClientAware.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/managed/KubernetesClientAware.java index 2a28813c35..d6c743f22b 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/managed/KubernetesClientAware.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/managed/KubernetesClientAware.java @@ -1,7 +1,13 @@ package io.javaoperatorsdk.operator.api.reconciler.dependent.managed; import io.fabric8.kubernetes.client.KubernetesClient; +import io.javaoperatorsdk.operator.api.reconciler.Context; +/** + * @deprecated It shouldn't be needed to pass a {@link KubernetesClient} instance anymore as the + * client should be accessed via {@link Context#getClient()} instead. + */ +@Deprecated(since = "4.5.0", forRemoval = true) public interface KubernetesClientAware { void setKubernetesClient(KubernetesClient kubernetesClient); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractExternalDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractExternalDependentResource.java index 18e6f41a92..4fb4c9bcd6 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractExternalDependentResource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractExternalDependentResource.java @@ -1,7 +1,6 @@ package io.javaoperatorsdk.operator.processing.dependent; import io.fabric8.kubernetes.api.model.HasMetadata; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.dependent.RecentOperationCacheFiller; import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever; @@ -18,7 +17,6 @@ public abstract class AbstractExternalDependentResource externalStateEventSource; - private KubernetesClient kubernetesClient; @SuppressWarnings("unchecked") protected AbstractExternalDependentResource(Class resourceType) { @@ -65,14 +63,13 @@ public void delete(P primary, Context

context) { @SuppressWarnings({"unchecked", "unused"}) private void handleExplicitStateDelete(P primary, R secondary, Context

context) { var res = dependentResourceWithExplicitState.stateResource(primary, secondary); - dependentResourceWithExplicitState.getKubernetesClient().resource(res).delete(); + context.getClient().resource(res).delete(); } @SuppressWarnings({"rawtypes", "unchecked", "unused"}) protected void handleExplicitStateCreation(P primary, R created, Context

context) { var resource = dependentResourceWithExplicitState.stateResource(primary, created); - var stateResource = - dependentResourceWithExplicitState.getKubernetesClient().resource(resource).create(); + var stateResource = context.getClient().resource(resource).create(); if (externalStateEventSource != null) { ((RecentOperationCacheFiller) externalStateEventSource) .handleRecentResourceCreate(ResourceID.fromResource(primary), stateResource); @@ -84,7 +81,7 @@ protected void handleExplicitStateCreation(P primary, R created, Context

cont public void deleteTargetResource(P primary, R resource, String key, Context

context) { if (isDependentResourceWithExplicitState) { - getKubernetesClient() + context.getClient() .resource(dependentResourceWithExplicitState.stateResource(primary, resource)) .delete(); } @@ -100,18 +97,4 @@ public void handleDeleteTargetResource(P primary, R resource, String key, protected InformerEventSource getExternalStateEventSource() { return externalStateEventSource; } - - /** - * It's here just to manage the explicit state resource in case the dependent resource implements - * {@link RecentOperationCacheFiller}. - * - * @return kubernetes client. - */ - public KubernetesClient getKubernetesClient() { - return kubernetesClient; - } - - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.kubernetesClient = kubernetesClient; - } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/DependentResourceWithExplicitState.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/DependentResourceWithExplicitState.java index 284b215679..05206731db 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/DependentResourceWithExplicitState.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/DependentResourceWithExplicitState.java @@ -4,7 +4,6 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.javaoperatorsdk.operator.api.reconciler.dependent.Deleter; -import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.KubernetesClientAware; /** * Handles external resources where in order to address the resource additional information or @@ -14,7 +13,7 @@ * for a resource that extends {@link AbstractExternalDependentResource}. */ public interface DependentResourceWithExplicitState - extends Creator, Deleter

, KubernetesClientAware { + extends Creator, Deleter

{ /** * Only needs to be implemented if multiple event sources are present for the target resource diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java index 912d876aba..b587c72327 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java @@ -8,7 +8,6 @@ import org.slf4j.LoggerFactory; import io.fabric8.kubernetes.api.model.HasMetadata; -import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.Resource; import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.config.dependent.Configured; @@ -19,7 +18,6 @@ import io.javaoperatorsdk.operator.api.reconciler.Ignore; import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected; import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.DependentResourceConfigurator; -import io.javaoperatorsdk.operator.api.reconciler.dependent.managed.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.dependent.AbstractEventSourceHolderDependentResource; import io.javaoperatorsdk.operator.processing.dependent.Matcher.Result; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.updatermatcher.GenericResourceUpdaterMatcher; @@ -33,17 +31,14 @@ converter = KubernetesDependentConverter.class) public abstract class KubernetesDependentResource extends AbstractEventSourceHolderDependentResource> - implements KubernetesClientAware, - DependentResourceConfigurator> { + implements DependentResourceConfigurator> { private static final Logger log = LoggerFactory.getLogger(KubernetesDependentResource.class); - - protected KubernetesClient client; private final ResourceUpdaterMatcher updaterMatcher; private final boolean garbageCollected = this instanceof GarbageCollected; private KubernetesDependentResourceConfig kubernetesDependentResourceConfig; - private boolean usingCustomResourceUpdateMatcher; + private final boolean usingCustomResourceUpdateMatcher; @SuppressWarnings("unchecked") public KubernetesDependentResource(Class resourceType) { @@ -117,7 +112,7 @@ public R create(R desired, P primary, Context

context) { } } addMetadata(false, null, desired, primary, context); - final var resource = prepare(desired, primary, "Creating"); + final var resource = prepare(context, desired, primary, "Creating"); return useSSA(context) ? resource .fieldManager(context.getControllerConfiguration().fieldManager()) @@ -134,12 +129,12 @@ public R update(R actual, R desired, P primary, Context

context) { R updatedResource; addMetadata(false, actual, desired, primary, context); if (useSSA(context)) { - updatedResource = prepare(desired, primary, "Updating") + updatedResource = prepare(context, desired, primary, "Updating") .fieldManager(context.getControllerConfiguration().fieldManager()) .forceConflicts().serverSideApply(); } else { var updatedActual = updaterMatcher.updateResource(actual, desired, context); - updatedResource = prepare(updatedActual, primary, "Updating").update(); + updatedResource = prepare(context, updatedActual, primary, "Updating").update(); } log.debug("Resource version after update: {}", updatedResource.getMetadata().getResourceVersion()); @@ -216,23 +211,23 @@ private boolean usePreviousAnnotation(Context

context) { @Override protected void handleDelete(P primary, R secondary, Context

context) { if (secondary != null) { - client.resource(secondary).delete(); + context.getClient().resource(secondary).delete(); } } @SuppressWarnings("unused") public void deleteTargetResource(P primary, R resource, String key, Context

context) { - client.resource(resource).delete(); + context.getClient().resource(resource).delete(); } @SuppressWarnings("unused") - protected Resource prepare(R desired, P primary, String actionName) { + protected Resource prepare(Context

context, R desired, P primary, String actionName) { log.debug("{} target resource with type: {}, with id: {}", actionName, desired.getClass(), ResourceID.fromResource(desired)); - return client.resource(desired); + return context.getClient().resource(desired); } protected void addReferenceHandlingMetadata(R desired, P primary) { @@ -292,16 +287,6 @@ protected boolean addOwnerReference() { return garbageCollected; } - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - @Override protected R desired(P primary, Context

context) { return super.desired(primary, context); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java index 5dff2be51b..d030e7a8f4 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java @@ -37,7 +37,6 @@ public abstract class ManagedInformerEventSource cache; - protected TemporaryResourceCache temporaryResourceCache; protected MixedOperation, Resource> client; diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/KubernetesClientAware.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/KubernetesClientAware.java index 8a1a702074..8e94e71b53 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/KubernetesClientAware.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/KubernetesClientAware.java @@ -1,7 +1,13 @@ package io.javaoperatorsdk.operator.junit; import io.fabric8.kubernetes.client.KubernetesClient; +import io.javaoperatorsdk.operator.api.reconciler.Context; +/** + * @deprecated It shouldn't be needed to pass a {@link KubernetesClient} instance to the reconciler + * anymore as the client should be accessed via {@link Context#getClient()} instead. + */ +@Deprecated(since = "4.5.0", forRemoval = true) public interface KubernetesClientAware extends HasKubernetesClient { void setKubernetesClient(KubernetesClient kubernetesClient); } diff --git a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java index 6b276b43d9..7f7cb64b28 100644 --- a/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java +++ b/operator-framework-junit5/src/main/java/io/javaoperatorsdk/operator/junit/LocallyRunOperatorExtension.java @@ -152,10 +152,6 @@ protected void before(ExtensionContext context) { applyCrd(config.getResourceTypeName()); } - if (ref.reconciler instanceof KubernetesClientAware) { - ((KubernetesClientAware) ref.reconciler).setKubernetesClient(kubernetesClient); - } - var registeredController = this.operator.register(ref.reconciler, oconfig.build()); registeredControllers.put(ref.reconciler, registeredController); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentReInitializationIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentReInitializationIT.java index 19edc1af61..73b7bd20d9 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentReInitializationIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentReInitializationIT.java @@ -31,7 +31,7 @@ private static void startEndStopOperator(KubernetesClient client, Operator o1 = new Operator(o -> o .withCloseClientOnStop(false) .withKubernetesClient(client)); - o1.register(new DependentReInitializationReconciler(dependent, client)); + o1.register(new DependentReInitializationReconciler(dependent)); o1.start(); o1.stop(); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentSSAMigrationIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentSSAMigrationIT.java index 0eabc07c97..c4217bff25 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentSSAMigrationIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/DependentSSAMigrationIT.java @@ -143,10 +143,9 @@ private DependnetSSACustomResource reconcileWithLegacyOperator(Operator legacyOp private Operator createOperator(KubernetesClient client, boolean legacyDependentHandling, String fieldManager) { - Operator operator = new Operator(client, - o -> o.withCloseClientOnStop(false)); + Operator operator = + new Operator(o -> o.withKubernetesClient(client).withCloseClientOnStop(false)); var reconciler = new DependentSSAReconciler(!legacyDependentHandling); - reconciler.setKubernetesClient(client); operator.register(reconciler, o -> { o.settingNamespace(namespace); if (fieldManager != null) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/OperatorRestartIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/OperatorRestartIT.java index 45b88a126b..9f506cc927 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/OperatorRestartIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/OperatorRestartIT.java @@ -1,14 +1,8 @@ package io.javaoperatorsdk.operator; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.*; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientBuilder; import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension; import io.javaoperatorsdk.operator.sample.restart.RestartTestCustomResource; import io.javaoperatorsdk.operator.sample.restart.RestartTestReconciler; @@ -17,14 +11,15 @@ import static org.awaitility.Awaitility.await; class OperatorRestartIT { - private final static KubernetesClient client = new KubernetesClientBuilder().build(); + private final static Operator operator = new Operator(o -> o.withCloseClientOnStop(false)); private final static RestartTestReconciler reconciler = new RestartTestReconciler(); private static int reconcileNumberBeforeStop = 0; @BeforeAll static void registerReconciler() { - LocallyRunOperatorExtension.applyCrd(RestartTestCustomResource.class, client); + LocallyRunOperatorExtension.applyCrd(RestartTestCustomResource.class, + operator.getKubernetesClient()); operator.register(reconciler); } @@ -41,7 +36,7 @@ void stopOperator() { @Test @Order(1) void createResource() { - client.resource(testCustomResource()).createOrReplace(); + operator.getKubernetesClient().resource(testCustomResource()).createOrReplace(); await().untilAsserted(() -> assertThat(reconciler.getNumberOfExecutions()).isGreaterThan(0)); reconcileNumberBeforeStop = reconciler.getNumberOfExecutions(); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/ConfigMapDeleterBulkDependentResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/ConfigMapDeleterBulkDependentResource.java index 28bb358d5a..29a9af89e7 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/ConfigMapDeleterBulkDependentResource.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/ConfigMapDeleterBulkDependentResource.java @@ -55,7 +55,7 @@ public ConfigMap desired(BulkDependentTestCustomResource primary, String key, .withLabels(Map.of(LABEL_KEY, LABEL_VALUE)) .build()); configMap.setData( - Map.of("number", "" + key, ADDITIONAL_DATA_KEY, primary.getSpec().getAdditionalData())); + Map.of("number", key, ADDITIONAL_DATA_KEY, primary.getSpec().getAdditionalData())); return configMap; } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/StandaloneBulkDependentReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/StandaloneBulkDependentReconciler.java index ad799116a0..6af93232b4 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/StandaloneBulkDependentReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/bulkdependent/StandaloneBulkDependentReconciler.java @@ -3,21 +3,18 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @ControllerConfiguration public class StandaloneBulkDependentReconciler implements Reconciler, TestExecutionInfoProvider, - EventSourceInitializer, KubernetesClientAware { + EventSourceInitializer { private final AtomicInteger numberOfExecutions = new AtomicInteger(0); private final ConfigMapDeleterBulkDependentResource dependent; - private KubernetesClient kubernetesClient; public StandaloneBulkDependentReconciler() { dependent = new CRUDConfigMapBulkDependentResource(); @@ -44,15 +41,4 @@ public Map prepareEventSources( return EventSourceInitializer .nameEventSources(dependent.initEventSource(context)); } - - @Override - public KubernetesClient getKubernetesClient() { - return kubernetesClient; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.kubernetesClient = kubernetesClient; - dependent.setKubernetesClient(kubernetesClient); - } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/changenamespace/ChangeNamespaceTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/changenamespace/ChangeNamespaceTestReconciler.java index f891eac525..7d51f311e1 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/changenamespace/ChangeNamespaceTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/changenamespace/ChangeNamespaceTestReconciler.java @@ -5,10 +5,8 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -16,11 +14,10 @@ @ControllerConfiguration public class ChangeNamespaceTestReconciler implements Reconciler, - EventSourceInitializer, KubernetesClientAware { + EventSourceInitializer { private final ConcurrentHashMap numberOfResourceReconciliations = new ConcurrentHashMap<>(); - private KubernetesClient client; @Override public Map prepareEventSources( @@ -40,7 +37,7 @@ public UpdateControl reconcile( var actualConfigMap = context.getSecondaryResource(ConfigMap.class); if (actualConfigMap.isEmpty()) { - client.configMaps().inNamespace(primary.getMetadata().getNamespace()) + context.getClient().configMaps().inNamespace(primary.getMetadata().getNamespace()) .resource(configMap(primary)) .create(); } @@ -73,14 +70,4 @@ private ConfigMap configMap(ChangeNamespaceTestCustomResource primary) { configMap.addOwnerReference(primary); return configMap; } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/clusterscopedresource/ClusterScopedCustomResourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/clusterscopedresource/ClusterScopedCustomResourceReconciler.java index 9d4a4fbd74..a6f5e00c96 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/clusterscopedresource/ClusterScopedCustomResourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/clusterscopedresource/ClusterScopedCustomResourceReconciler.java @@ -5,10 +5,8 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.Mappers; @@ -16,21 +14,20 @@ @ControllerConfiguration public class ClusterScopedCustomResourceReconciler implements Reconciler, - KubernetesClientAware, EventSourceInitializer { + EventSourceInitializer { public static final String DATA_KEY = "data-key"; public static final String TEST_LABEL_VALUE = "clusterscopecrtest"; public static final String TEST_LABEL_KEY = "test"; - private KubernetesClient client; - @Override public UpdateControl reconcile( ClusterScopedCustomResource resource, Context context) { var optionalConfigMap = context.getSecondaryResource(ConfigMap.class); + final var client = context.getClient(); optionalConfigMap.ifPresentOrElse(cm -> { if (!resource.getSpec().getData().equals(cm.getData().get(DATA_KEY))) { client.configMaps().resource(desired(resource)).replace(); @@ -55,16 +52,6 @@ private ConfigMap desired(ClusterScopedCustomResource resource) { return cm; } - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } - @Override public Map prepareEventSources( EventSourceContext context) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java index 6c38b2dd09..ab0369d998 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/createupdateeventfilter/CreateUpdateEventFilterTestReconciler.java @@ -7,15 +7,8 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; -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.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; +import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -23,8 +16,7 @@ @ControllerConfiguration public class CreateUpdateEventFilterTestReconciler implements Reconciler, - EventSourceInitializer, - KubernetesClientAware { + EventSourceInitializer { private static final class DirectConfigMapDependentResource extends @@ -50,7 +42,6 @@ public void setEventSource( } public static final String CONFIG_MAP_TEST_DATA_KEY = "key"; - private KubernetesClient client; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); private InformerEventSource informerEventSource; private DirectConfigMapDependentResource configMapDR = @@ -63,7 +54,7 @@ public UpdateControl reconcile( numberOfExecutions.incrementAndGet(); ConfigMap configMap = - client + context.getClient() .configMaps() .inNamespace(resource.getMetadata().getNamespace()) .withName(resource.getMetadata().getName()) @@ -103,25 +94,12 @@ public Map prepareEventSources( InformerConfiguration.from(ConfigMap.class) .withLabelSelector("integrationtest = " + this.getClass().getSimpleName()) .build(); - informerEventSource = - new InformerEventSource<>(informerConfiguration, client); - - this.configMapDR.setKubernetesClient(context.getClient()); + informerEventSource = new InformerEventSource<>(informerConfiguration, context.getClient()); this.configMapDR.setEventSource(informerEventSource); return EventSourceInitializer.nameEventSources(informerEventSource); } - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } - public int getNumberOfExecutions() { return numberOfExecutions.get(); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentreinitialization/DependentReInitializationReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentreinitialization/DependentReInitializationReconciler.java index e247ddb6df..a8e6a48e6b 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentreinitialization/DependentReInitializationReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentreinitialization/DependentReInitializationReconciler.java @@ -2,7 +2,6 @@ import java.util.Map; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -13,10 +12,8 @@ public class DependentReInitializationReconciler private final ConfigMapDependentResource configMapDependentResource; - public DependentReInitializationReconciler(ConfigMapDependentResource dependentResource, - KubernetesClient client) { + public DependentReInitializationReconciler(ConfigMapDependentResource dependentResource) { this.configMapDependentResource = dependentResource; - this.configMapDependentResource.setKubernetesClient(client); } @Override diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentssa/DependentSSAReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentssa/DependentSSAReconciler.java index f84dfe4597..f1c11dea6d 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentssa/DependentSSAReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentssa/DependentSSAReconciler.java @@ -4,9 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @@ -14,13 +12,11 @@ @ControllerConfiguration public class DependentSSAReconciler implements Reconciler, TestExecutionInfoProvider, - KubernetesClientAware, EventSourceInitializer { private final AtomicInteger numberOfExecutions = new AtomicInteger(0); private SSAConfigMapDependent ssaConfigMapDependent = new SSAConfigMapDependent(); - private KubernetesClient kubernetesClient; public DependentSSAReconciler() { this(true); @@ -46,17 +42,6 @@ public int getNumberOfExecutions() { return numberOfExecutions.get(); } - @Override - public KubernetesClient getKubernetesClient() { - return kubernetesClient; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.kubernetesClient = kubernetesClient; - ssaConfigMapDependent.setKubernetesClient(kubernetesClient); - } - @Override public Map prepareEventSources( EventSourceContext context) { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/ExternalStateReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/ExternalStateReconciler.java index 804906e3c1..66c53c3971 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/ExternalStateReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/externalstate/ExternalStateReconciler.java @@ -9,17 +9,8 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.Cleaner; -import io.javaoperatorsdk.operator.api.reconciler.Context; -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.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; +import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.EventSourceStartPriority; @@ -32,14 +23,13 @@ @ControllerConfiguration() public class ExternalStateReconciler implements Reconciler, Cleaner, - EventSourceInitializer, KubernetesClientAware, + EventSourceInitializer, TestExecutionInfoProvider { public static final String ID_KEY = "id"; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); private final ExternalIDGenServiceMock externalService = ExternalIDGenServiceMock.getInstance(); - private KubernetesClient client; InformerEventSource configMapEventSource; PerResourcePollingEventSource externalResourceEventSource; @@ -52,11 +42,11 @@ public UpdateControl reconcile( var externalResource = context.getSecondaryResource(ExternalResource.class); externalResource.ifPresentOrElse(r -> { if (!r.getData().equals(resource.getSpec().getData())) { - updateExternalResource(resource, r); + updateExternalResource(resource, r, context); } }, () -> { if (externalResource.isEmpty()) { - createExternalResource(resource); + createExternalResource(resource, context); } }); @@ -65,14 +55,15 @@ public UpdateControl reconcile( } private void updateExternalResource(ExternalStateCustomResource resource, - ExternalResource externalResource) { + ExternalResource externalResource, Context context) { var newResource = new ExternalResource(externalResource.getId(), resource.getSpec().getData()); externalService.update(newResource); externalResourceEventSource.handleRecentResourceUpdate(ResourceID.fromResource(resource), newResource, externalResource); } - private void createExternalResource(ExternalStateCustomResource resource) { + private void createExternalResource(ExternalStateCustomResource resource, + Context context) { var createdResource = externalService.create(new ExternalResource(resource.getSpec().getData())); var configMap = new ConfigMapBuilder() @@ -83,7 +74,7 @@ private void createExternalResource(ExternalStateCustomResource resource) { .withData(Map.of(ID_KEY, createdResource.getId())) .build(); configMap.addOwnerReference(resource); - client.configMaps().resource(configMap).create(); + context.getClient().configMaps().resource(configMap).create(); var primaryID = ResourceID.fromResource(resource); // Making sure that the created resources are in the cache for the next reconciliation. @@ -98,7 +89,7 @@ public DeleteControl cleanup(ExternalStateCustomResource resource, Context context) { var externalResource = context.getSecondaryResource(ExternalResource.class); externalResource.ifPresent(er -> externalService.delete(er.getId())); - client.configMaps().inNamespace(resource.getMetadata().getNamespace()) + context.getClient().configMaps().inNamespace(resource.getMetadata().getNamespace()) .withName(resource.getMetadata().getName()).delete(); return DeleteControl.defaultDelete(); } @@ -128,14 +119,4 @@ public Map prepareEventSources( return EventSourceInitializer.nameEventSources(configMapEventSource, externalResourceEventSource); } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/filter/FilterTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/filter/FilterTestReconciler.java index 776f857bc8..ab5c9b7400 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/filter/FilterTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/filter/FilterTestReconciler.java @@ -5,32 +5,28 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @ControllerConfiguration(onUpdateFilter = UpdateFilter.class) public class FilterTestReconciler implements Reconciler, - EventSourceInitializer, - KubernetesClientAware { + EventSourceInitializer { public static final String CONFIG_MAP_FILTER_VALUE = "config_map_skip_this"; public static final String CUSTOM_RESOURCE_FILTER_VALUE = "custom_resource_skip_this"; public static final String CM_VALUE_KEY = "value"; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); - private KubernetesClient client; @Override public UpdateControl reconcile( FilterTestCustomResource resource, Context context) { numberOfExecutions.addAndGet(1); - client.configMaps().inNamespace(resource.getMetadata().getNamespace()) + context.getClient().configMaps().inNamespace(resource.getMetadata().getNamespace()) .resource(createConfigMap(resource)) .createOrReplace(); return UpdateControl.noUpdate(); @@ -65,14 +61,4 @@ public Map prepareEventSources( return EventSourceInitializer.nameEventSources(configMapES); } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/indexdiscriminator/IndexDiscriminatorTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/indexdiscriminator/IndexDiscriminatorTestReconciler.java index b988c93491..4acda2feee 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/indexdiscriminator/IndexDiscriminatorTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/indexdiscriminator/IndexDiscriminatorTestReconciler.java @@ -6,10 +6,8 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @@ -18,8 +16,7 @@ public class IndexDiscriminatorTestReconciler implements Reconciler, Cleaner, - TestExecutionInfoProvider, EventSourceInitializer, - KubernetesClientAware { + TestExecutionInfoProvider, EventSourceInitializer { public static final String FIRST_CONFIG_MAP_SUFFIX_1 = "-1"; public static final String FIRST_CONFIG_MAP_SUFFIX_2 = "-2"; @@ -30,7 +27,6 @@ public class IndexDiscriminatorTestReconciler private final IndexDiscriminatorTestDRConfigMap firstDependentResourceConfigMap; private final IndexDiscriminatorTestDRConfigMap secondDependentResourceConfigMap; - private KubernetesClient client; public IndexDiscriminatorTestReconciler() { firstDependentResourceConfigMap = @@ -88,18 +84,6 @@ public Map prepareEventSources( return EventSourceInitializer.nameEventSources(eventSource); } - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - firstDependentResourceConfigMap.setKubernetesClient(kubernetesClient); - secondDependentResourceConfigMap.setKubernetesClient(kubernetesClient); - } - public static String configMapKey(ConfigMap configMap) { return configMap.getMetadata().getName() + "#" + configMap.getMetadata().getNamespace(); } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/kubernetesdependentgarbagecollection/DependentGarbageCollectionTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/kubernetesdependentgarbagecollection/DependentGarbageCollectionTestReconciler.java index c20d573a03..fcb2192539 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/kubernetesdependentgarbagecollection/DependentGarbageCollectionTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/kubernetesdependentgarbagecollection/DependentGarbageCollectionTestReconciler.java @@ -8,7 +8,6 @@ import io.fabric8.kubernetes.client.KubernetesClientException; import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.api.reconciler.dependent.GarbageCollected; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.dependent.Creator; import io.javaoperatorsdk.operator.processing.dependent.Updater; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; @@ -18,7 +17,7 @@ public class DependentGarbageCollectionTestReconciler implements Reconciler, EventSourceInitializer, - KubernetesClientAware, ErrorStatusHandler { + ErrorStatusHandler { private KubernetesClient kubernetesClient; private volatile boolean errorOccurred = false; @@ -50,17 +49,6 @@ public UpdateControl reconcile( return UpdateControl.noUpdate(); } - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.kubernetesClient = kubernetesClient; - configMapDependent.setKubernetesClient(kubernetesClient); - } - - @Override - public KubernetesClient getKubernetesClient() { - return this.kubernetesClient; - } - @Override public ErrorStatusUpdateControl updateErrorStatus( DependentGarbageCollectionTestCustomResource resource, diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceReconciler.java index 49f5ee64c1..2dc7f6490f 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceReconciler.java @@ -4,10 +4,8 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -16,8 +14,7 @@ @ControllerConfiguration public class MultipleDependentResourceReconciler implements Reconciler, - TestExecutionInfoProvider, EventSourceInitializer, - KubernetesClientAware { + TestExecutionInfoProvider, EventSourceInitializer { public static final int FIRST_CONFIG_MAP_ID = 1; public static final int SECOND_CONFIG_MAP_ID = 2; @@ -25,7 +22,6 @@ public class MultipleDependentResourceReconciler private final MultipleDependentResourceConfigMap firstDependentResourceConfigMap; private final MultipleDependentResourceConfigMap secondDependentResourceConfigMap; - private KubernetesClient client; public MultipleDependentResourceReconciler() { firstDependentResourceConfigMap = new MultipleDependentResourceConfigMap(FIRST_CONFIG_MAP_ID); @@ -70,16 +66,4 @@ public Map prepareEventSources( return EventSourceInitializer.nameEventSources(eventSource); } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - firstDependentResourceConfigMap.setKubernetesClient(kubernetesClient); - secondDependentResourceConfigMap.setKubernetesClient(kubernetesClient); - } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java index e3cc6e8c63..8f4ed834aa 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multiplesecondaryeventsource/MultipleSecondaryEventSourceReconciler.java @@ -7,10 +7,8 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource; @@ -19,10 +17,9 @@ @ControllerConfiguration public class MultipleSecondaryEventSourceReconciler implements Reconciler, TestExecutionInfoProvider, - EventSourceInitializer, KubernetesClientAware { + EventSourceInitializer { private final AtomicInteger numberOfExecutions = new AtomicInteger(0); - private KubernetesClient client; @Override public UpdateControl reconcile( @@ -30,6 +27,7 @@ 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()) @@ -94,14 +92,4 @@ ConfigMap configMap(String name, MultipleSecondaryEventSourceCustomResource reso configMap.addOwnerReference(resource); return configMap; } - - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/perresourceeventsource/PerResourcePollingEventSourceTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/perresourceeventsource/PerResourcePollingEventSourceTestReconciler.java index f8cb3ffa44..81d8773986 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/perresourceeventsource/PerResourcePollingEventSourceTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/perresourceeventsource/PerResourcePollingEventSourceTestReconciler.java @@ -6,24 +6,19 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.polling.PerResourcePollingEventSource; @ControllerConfiguration public class PerResourcePollingEventSourceTestReconciler implements Reconciler, - EventSourceInitializer, - KubernetesClientAware { + EventSourceInitializer { public static final int POLL_PERIOD = 100; private final Map numberOfExecutions = new ConcurrentHashMap<>(); private final Map numberOfFetchExecutions = new ConcurrentHashMap<>(); - private KubernetesClient client; - @Override public UpdateControl reconcile( PerResourceEventSourceCustomResource resource, @@ -46,16 +41,6 @@ public Map prepareEventSources( return EventSourceInitializer.nameEventSources(eventSource); } - @Override - public KubernetesClient getKubernetesClient() { - return client; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.client = kubernetesClient; - } - public int getNumberOfExecutions(String name) { var num = numberOfExecutions.get(name); return num == null ? 0 : num; diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java index df24cbe38e..fea06bba93 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestReconciler.java @@ -10,17 +10,14 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; -import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.ReconcilerUtils; import io.javaoperatorsdk.operator.api.reconciler.*; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @ControllerConfiguration(generationAwareEventProcessing = false) public class TestReconciler implements Reconciler, Cleaner, - TestExecutionInfoProvider, - KubernetesClientAware { + TestExecutionInfoProvider { private static final Logger log = LoggerFactory.getLogger(TestReconciler.class); @@ -29,7 +26,6 @@ public class TestReconciler private final AtomicInteger numberOfExecutions = new AtomicInteger(0); private final AtomicInteger numberOfCleanupExecutions = new AtomicInteger(0); - private KubernetesClient kubernetesClient; private volatile boolean updateStatus; private volatile boolean patchStatus; @@ -51,22 +47,12 @@ public void setUpdateStatus(boolean updateStatus) { this.updateStatus = updateStatus; } - @Override - public KubernetesClient getKubernetesClient() { - return kubernetesClient; - } - - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.kubernetesClient = kubernetesClient; - } - @Override public DeleteControl cleanup( TestCustomResource resource, Context context) { numberOfCleanupExecutions.incrementAndGet(); - var statusDetail = kubernetesClient + var statusDetail = context.getClient() .configMaps() .inNamespace(resource.getMetadata().getNamespace()) .withName(resource.getSpec().getConfigMapName()) @@ -93,7 +79,7 @@ public UpdateControl reconcile( if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) { throw new IllegalStateException("Finalizer is not present."); } - + final var kubernetesClient = context.getClient(); ConfigMap existingConfigMap = kubernetesClient .configMaps() diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/standalonedependent/StandaloneDependentTestReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/standalonedependent/StandaloneDependentTestReconciler.java index 4b20bdccb3..77fcf0b85d 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/standalonedependent/StandaloneDependentTestReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/standalonedependent/StandaloneDependentTestReconciler.java @@ -4,19 +4,10 @@ import java.util.Optional; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; import io.javaoperatorsdk.operator.ReconcilerUtils; import io.javaoperatorsdk.operator.StandaloneDependentResourceIT; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusHandler; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; -import io.javaoperatorsdk.operator.junit.KubernetesClientAware; +import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @@ -24,9 +15,7 @@ public class StandaloneDependentTestReconciler implements Reconciler, EventSourceInitializer, - KubernetesClientAware, ErrorStatusHandler { - - private KubernetesClient kubernetesClient; + ErrorStatusHandler { private volatile boolean errorOccurred = false; DeploymentDependentResource deploymentDependent; @@ -59,17 +48,6 @@ public UpdateControl reconcile( return UpdateControl.noUpdate(); } - @Override - public void setKubernetesClient(KubernetesClient kubernetesClient) { - this.kubernetesClient = kubernetesClient; - deploymentDependent.setKubernetesClient(kubernetesClient); - } - - @Override - public KubernetesClient getKubernetesClient() { - return this.kubernetesClient; - } - @Override public ErrorStatusUpdateControl updateErrorStatus( StandaloneDependentTestCustomResource resource, diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/workflowallfeature/ConfigMapDependentResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/workflowallfeature/ConfigMapDependentResource.java index 0620d6a753..04876b7959 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/workflowallfeature/ConfigMapDependentResource.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/workflowallfeature/ConfigMapDependentResource.java @@ -52,7 +52,7 @@ public void delete(WorkflowAllFeatureCustomResource primary, optionalConfigMap.ifPresent((configMap -> { if (configMap.getMetadata().getAnnotations() != null && configMap.getMetadata().getAnnotations().get(READY_TO_DELETE_ANNOTATION) != null) { - client.resource(configMap).delete(); + context.getClient().resource(configMap).delete(); } })); } diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java index d21e89a172..8494af5402 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageDependentsWorkflowReconciler.java @@ -8,14 +8,7 @@ import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.api.model.networking.v1.Ingress; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Context; -import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusHandler; -import io.javaoperatorsdk.operator.api.reconciler.ErrorStatusUpdateControl; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; -import io.javaoperatorsdk.operator.api.reconciler.EventSourceInitializer; -import io.javaoperatorsdk.operator.api.reconciler.Reconciler; -import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.*; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResource; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder; import io.javaoperatorsdk.operator.processing.dependent.workflow.Workflow; @@ -24,9 +17,7 @@ import io.javaoperatorsdk.operator.sample.customresource.WebPage; import io.javaoperatorsdk.operator.sample.dependentresource.*; -import static io.javaoperatorsdk.operator.sample.Utils.createStatus; -import static io.javaoperatorsdk.operator.sample.Utils.handleError; -import static io.javaoperatorsdk.operator.sample.Utils.simulateErrorIfRequested; +import static io.javaoperatorsdk.operator.sample.Utils.*; /** * Shows how to implement reconciler using standalone dependent resources. @@ -90,7 +81,6 @@ private void initDependentResources(KubernetesClient client) { this.ingressDR = new IngressDependentResource(); Arrays.asList(configMapDR, deploymentDR, serviceDR, ingressDR).forEach(dr -> { - dr.setKubernetesClient(client); dr.configureWith(new KubernetesDependentResourceConfigBuilder() .withLabelSelector(DEPENDENT_RESOURCE_LABEL_SELECTOR).build()); }); diff --git a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java index c1b3030c9b..34a208f72e 100644 --- a/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java +++ b/sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/WebPageStandaloneDependentsReconciler.java @@ -87,7 +87,6 @@ private void createDependentResources(KubernetesClient client) { this.ingressDR = new IngressDependentResource(); Arrays.asList(configMapDR, deploymentDR, serviceDR, ingressDR).forEach(dr -> { - dr.setKubernetesClient(client); dr.configureWith(new KubernetesDependentResourceConfigBuilder() .withLabelSelector(SELECTOR + "=true").build()); });