Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
*/
package io.javaoperatorsdk.operator.api.config;

import java.util.Optional;

import io.fabric8.kubernetes.api.model.HasMetadata;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;

public interface Informable<R extends HasMetadata> {
Expand All @@ -29,4 +32,12 @@ default String getResourceTypeName() {
default Class<R> getResourceClass() {
return getInformerConfig().getResourceClass();
}

/**
* Optional, specific kubernetes client, typically to connect to a different cluster than the rest
* of the operator. Note that this is solely for multi cluster support.
*/
Comment on lines +36 to +39
default Optional<KubernetesClient> getKubernetesClient() {
return Optional.empty();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,6 @@ default String name() {
return getInformerConfig().getName();
}

/**
* Optional, specific kubernetes client, typically to connect to a different cluster than the rest
* of the operator. Note that this is solely for multi cluster support.
*/
default Optional<KubernetesClient> getKubernetesClient() {
return Optional.empty();
}

class DefaultInformerEventSourceConfiguration<R extends HasMetadata>
implements InformerEventSourceConfiguration<R> {
private final PrimaryToSecondaryMapper<?> primaryToSecondaryMapper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.config.Informable;
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
import io.javaoperatorsdk.operator.api.config.informer.InformerEventSourceConfiguration;
import io.javaoperatorsdk.operator.health.InformerHealthIndicator;
import io.javaoperatorsdk.operator.processing.event.ResourceID;
import io.javaoperatorsdk.operator.processing.event.source.Cache;
Expand Down Expand Up @@ -179,13 +178,11 @@ private KubernetesClient getTargetClient() {
// to see the very same instance. ConfigurationService#getKubernetesClient is expected to return
// a stable instance, but its default implementation does create a new client on every call.
if (targetClient == null) {
targetClient = controllerConfiguration.getConfigurationService().getKubernetesClient();
if (configuration instanceof InformerEventSourceConfiguration<?> iesc) {
var remoteClient = iesc.getKubernetesClient().orElse(null);
if (remoteClient != null) {
targetClient = remoteClient;
}
}
targetClient =
configuration
.getKubernetesClient()
.orElseGet(
() -> controllerConfiguration.getConfigurationService().getKubernetesClient());
}
return targetClient;
}
Expand Down
Loading