Skip to content

Commit

Permalink
feat: adapt to informer configuration changes
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Laprun <[email protected]>
  • Loading branch information
metacosm committed Jul 4, 2024
1 parent e55d3e7 commit c2de9d9
Show file tree
Hide file tree
Showing 15 changed files with 29 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;
import io.quarkiverse.operatorsdk.annotations.CSVMetadata;
import io.quarkiverse.operatorsdk.annotations.RBACRule;

@CSVMetadata(bundleName = "second-operator")
@RBACRule(apiGroups = SecondReconciler.RBAC_RULE_GROUP, resources = SecondReconciler.RBAC_RULE_RES, verbs = SecondReconciler.RBAC_RULE_VERBS)
@ControllerConfiguration(namespaces = "foo")
@ControllerConfiguration(informerConfig = @InformerConfig(namespaces = "foo"))
public class SecondReconciler implements Reconciler<Second> {
public static final String RBAC_RULE_GROUP = "halkyon.io";
public static final String RBAC_RULE_RES = "SomeResource";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public KubernetesDependentResourceConfig configFrom(KubernetesDependent configAn
// make the configuration bytecode-serializable
return new QuarkusKubernetesDependentResourceConfig(
original.useSSA(), original.createResourceOnlyIfNotExistingWithSSA(),
new QuarkusKubernetesDependentInformerConfig(original.informerConfig()));
new QuarkusInformerConfigHolder(original.informerConfig()));
}
};
static {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;

@ControllerConfiguration(name = WatchAllNamespacesReconciler.NAME, namespaces = WATCH_ALL_NAMESPACES)
@ControllerConfiguration(name = WatchAllNamespacesReconciler.NAME, informerConfig = @InformerConfig(namespaces = WATCH_ALL_NAMESPACES))
public class WatchAllNamespacesReconciler implements Reconciler<SimpleCR> {

public static final String NAME = "all-namespaces-reconciler";
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,25 @@

import io.fabric8.kubernetes.api.model.HasMetadata;
import io.fabric8.kubernetes.client.informers.cache.ItemStore;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentInformerConfig;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder;
import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter;
import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter;
import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter;
import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter;
import io.quarkus.runtime.annotations.RecordableConstructor;

public class QuarkusKubernetesDependentInformerConfig<R extends HasMetadata> extends KubernetesDependentInformerConfig<R> {
public class QuarkusInformerConfigHolder<R extends HasMetadata> extends InformerConfigHolder<R> {

@RecordableConstructor
public QuarkusKubernetesDependentInformerConfig(String name, Set<String> namespaces,
public QuarkusInformerConfigHolder(String name, Set<String> namespaces,
boolean followControllerNamespacesOnChange, String labelSelector, OnAddFilter<? super R> onAddFilter,
OnUpdateFilter<? super R> onUpdateFilter, OnDeleteFilter<? super R> onDeleteFilter,
GenericFilter<? super R> genericFilter, ItemStore<R> itemStore, Long informerListLimit) {
super(name, namespaces, followControllerNamespacesOnChange, labelSelector, onAddFilter, onUpdateFilter, onDeleteFilter,
genericFilter, itemStore, informerListLimit);
}

public QuarkusKubernetesDependentInformerConfig(KubernetesDependentInformerConfig<R> config) {
public QuarkusInformerConfigHolder(InformerConfigHolder<R> config) {
this(config.getName(), config.getNamespaces(), config.isFollowControllerNamespacesOnChange(), config.getLabelSelector(),
config.getOnAddFilter(), config.getOnUpdateFilter(), config.getOnDeleteFilter(), config.getGenericFilter(),
config.getItemStore(), config.getInformerListLimit());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
import java.util.Set;

import io.fabric8.kubernetes.api.model.HasMetadata;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentInformerConfig;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfigHolder;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfig;
import io.quarkus.runtime.annotations.RecordableConstructor;

public class QuarkusKubernetesDependentResourceConfig<R extends HasMetadata> extends KubernetesDependentResourceConfig<R> {

@RecordableConstructor
public QuarkusKubernetesDependentResourceConfig(Boolean useSSA, boolean createResourceOnlyIfNotExistingWithSSA,
QuarkusKubernetesDependentInformerConfig<R> informerConfig) {
QuarkusInformerConfigHolder<R> informerConfig) {
super(useSSA, createResourceOnlyIfNotExistingWithSSA, informerConfig);
}

Expand All @@ -29,7 +29,7 @@ public Boolean isUseSSA() {

// Getter required for Quarkus' RecordableConstructor, must match the associated constructor parameter name
@SuppressWarnings("unused")
public KubernetesDependentInformerConfig<R> getInformerConfig() {
public InformerConfigHolder<R> getInformerConfig() {
return informerConfig();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;
import io.javaoperatorsdk.operator.processing.event.rate.RateLimited;
import io.javaoperatorsdk.operator.processing.retry.GradualRetry;

@ControllerConfiguration(name = ConfiguredReconciler.NAME, namespaces = "foo")
@ControllerConfiguration(name = ConfiguredReconciler.NAME, informerConfig = @InformerConfig(namespaces = "foo"))
@GradualRetry(maxAttempts = ConfiguredReconciler.MAX_ATTEMPTS, initialInterval = 1000)
@RateLimited(maxReconciliations = 1, within = 1, unit = TimeUnit.MINUTES)
public class ConfiguredReconciler implements Reconciler<ChildTestResource2> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;

@ControllerConfiguration(name = CustomRateLimiterReconciler.NAME, rateLimiter = CustomRateLimiter.class, itemStore = NullItemStore.class)
@ControllerConfiguration(name = CustomRateLimiterReconciler.NAME, rateLimiter = CustomRateLimiter.class, informerConfig = @InformerConfig(itemStore = NullItemStore.class))
@CustomRateConfiguration(42)
public class CustomRateLimiterReconciler implements Reconciler<ResourceQuota> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;

@ControllerConfiguration(namespaces = Constants.WATCH_CURRENT_NAMESPACE)
@ControllerConfiguration(informerConfig = @InformerConfig(namespaces = Constants.WATCH_CURRENT_NAMESPACE))
public class KeycloakController implements Reconciler<Keycloak> {

public static final String FROM_ENV = Constants.WATCH_ALL_NAMESPACES;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;

@ControllerConfiguration(name = NamespaceFromEnvReconciler.NAME, namespaces = { "static",
"${" + NamespaceFromEnvReconciler.ENV_VAR_NAME + "}" })
@ControllerConfiguration(name = NamespaceFromEnvReconciler.NAME, informerConfig = @InformerConfig(namespaces = { "static",
"${" + NamespaceFromEnvReconciler.ENV_VAR_NAME + "}" }))
public class NamespaceFromEnvReconciler implements Reconciler<Pod> {
public static final String NAME = "fromenv";
public static final String ENV_VAR_NAME = "NAMESPACE_FROM_ENV";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@
import io.fabric8.kubernetes.api.model.networking.v1.Ingress;
import io.javaoperatorsdk.operator.api.reconciler.*;
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;
import io.quarkiverse.operatorsdk.annotations.CSVMetadata;

@Workflow(dependents = {
@Dependent(type = DeploymentDependent.class),
@Dependent(name = "service", type = ServiceDependent.class),
@Dependent(type = IngressDependent.class, readyPostcondition = IngressDependent.class)
})
@ControllerConfiguration(namespaces = WATCH_CURRENT_NAMESPACE, name = "exposedapp")
@ControllerConfiguration(informerConfig = @InformerConfig(namespaces = WATCH_CURRENT_NAMESPACE), name = "exposedapp")
@CSVMetadata(displayName = "ExposedApp operator", description = "A sample operator that shows how to use JOSDK's main features with the Quarkus extension")
public class ExposedAppReconciler implements Reconciler<ExposedApp>,
ContextInitializer<ExposedApp> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,15 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;
import io.quarkiverse.operatorsdk.annotations.CSVMetadata;
import io.quarkiverse.operatorsdk.annotations.CSVMetadata.Icon;
import io.quarkiverse.operatorsdk.annotations.RBACRule;
import io.quarkiverse.operatorsdk.samples.joke.JokeRequestSpec.ExcludedTopic;
import io.quarkiverse.operatorsdk.samples.joke.JokeRequestStatus.State;

@CSVMetadata(bundleName = "joke-operator", requiredCRDs = @CSVMetadata.RequiredCRD(kind = "Joke", name = Joke.NAME, version = Joke.VERSION), icon = @Icon(fileName = "icon.png", mediatype = "image/png"))
@ControllerConfiguration(namespaces = WATCH_CURRENT_NAMESPACE)
@ControllerConfiguration(informerConfig = @InformerConfig(namespaces = WATCH_CURRENT_NAMESPACE))
@RBACRule(apiGroups = Joke.GROUP, resources = "jokes", verbs = RBACRule.ALL)
@SuppressWarnings("unused")
public class JokeRequestReconciler implements Reconciler<JokeRequest> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.quarkiverse.operatorsdk.annotations.CSVMetadata;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;

@CSVMetadata(bundleName = BUNDLE_NAME)
@ControllerConfiguration(namespaces = WATCH_CURRENT_NAMESPACE)
@ControllerConfiguration(informerConfig = @InformerConfig(namespaces = WATCH_CURRENT_NAMESPACE))
@SuppressWarnings("unused")
public class PingReconciler implements Reconciler<Ping> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.InformerConfig;
import io.quarkiverse.operatorsdk.annotations.CSVMetadata;

@CSVMetadata(bundleName = BUNDLE_NAME)
@ControllerConfiguration(namespaces = WATCH_CURRENT_NAMESPACE)
@SuppressWarnings("unused")
@ControllerConfiguration(informerConfig = @InformerConfig(namespaces = WATCH_CURRENT_NAMESPACE))
public class PongReconciler implements Reconciler<Pong> {

@Override
Expand Down

0 comments on commit c2de9d9

Please sign in to comment.