diff --git a/bootstrapper-maven-plugin/src/main/java/io/javaoperatorsdk/boostrapper/Bootstrapper.java b/bootstrapper-maven-plugin/src/main/java/io/javaoperatorsdk/boostrapper/Bootstrapper.java index b0dba64c17..1a827a8bae 100644 --- a/bootstrapper-maven-plugin/src/main/java/io/javaoperatorsdk/boostrapper/Bootstrapper.java +++ b/bootstrapper-maven-plugin/src/main/java/io/javaoperatorsdk/boostrapper/Bootstrapper.java @@ -21,7 +21,7 @@ public class Bootstrapper { private static final Logger log = LoggerFactory.getLogger(Bootstrapper.class); - private MustacheFactory mustacheFactory = new DefaultMustacheFactory(); + private final MustacheFactory mustacheFactory = new DefaultMustacheFactory(); private static final List TOP_LEVEL_STATIC_FILES = List.of(".gitignore", "README.md"); diff --git a/docs/documentation/workflows.md b/docs/documentation/workflows.md index ea83016430..8d4434683f 100644 --- a/docs/documentation/workflows.md +++ b/docs/documentation/workflows.md @@ -133,7 +133,7 @@ public class WebPageDependentsWorkflowReconciler private KubernetesDependentResource serviceDR; private KubernetesDependentResource ingressDR; - private Workflow workflow; + private final Workflow workflow; public WebPageDependentsWorkflowReconciler(KubernetesClient kubernetesClient) { initDependentResources(kubernetesClient); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/BuilderUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/BuilderUtils.java index 1cb46bafab..8f33036b74 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/BuilderUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/BuilderUtils.java @@ -10,7 +10,7 @@ public final class BuilderUtils { // prevent instantiation of util class private BuilderUtils() {} - public static final B newBuilder(Class builderType, T item) { + public static B newBuilder(Class builderType, T item) { Class builderTargetType = builderTargetType(builderType); try { Constructor constructor = builderType.getDeclaredConstructor(builderTargetType); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java index fec5c4e61e..c2241e4bbb 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java @@ -9,7 +9,6 @@ import java.util.Objects; import java.util.function.Predicate; import java.util.regex.Pattern; -import java.util.stream.Collectors; import io.fabric8.kubernetes.api.builder.Builder; import io.fabric8.kubernetes.api.model.GenericKubernetesResource; @@ -126,8 +125,7 @@ public static boolean specsEqual(HasMetadata r1, HasMetadata r2) { // will be replaced with: https://github.com/fabric8io/kubernetes-client/issues/3816 public static Object getSpec(HasMetadata resource) { // optimize CustomResource case - if (resource instanceof CustomResource) { - CustomResource cr = (CustomResource) resource; + if (resource instanceof CustomResource cr) { return cr.getSpec(); } @@ -142,8 +140,7 @@ public static Object getSpec(HasMetadata resource) { @SuppressWarnings("unchecked") public static Object setSpec(HasMetadata resource, Object spec) { // optimize CustomResource case - if (resource instanceof CustomResource) { - CustomResource cr = (CustomResource) resource; + if (resource instanceof CustomResource cr) { cr.setSpec(spec); return null; } @@ -191,8 +188,7 @@ public static void handleKubernetesClientException(Exception e, String resourceT throw ((MissingCRDException) e); } - if (e instanceof KubernetesClientException) { - KubernetesClientException ke = (KubernetesClientException) e; + if (e instanceof KubernetesClientException ke) { // only throw MissingCRDException if the 404 error occurs on the target CRD if (404 == ke.getCode() && (resourceTypeName.equals(ke.getFullResourceName()) @@ -217,7 +213,7 @@ private static boolean matchesResourceType(String resourceTypeName, group = group.substring(0, group.length() - 1); } final var segments = Arrays.stream(group.split("/")).filter(Predicate.not(String::isEmpty)) - .collect(Collectors.toUnmodifiableList()); + .toList(); if (segments.size() != 3) { return false; } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java index af9930d00c..488f3dc9ce 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/BaseConfigurationService.java @@ -260,8 +260,7 @@ private static Configurator configuratorFor(Class instanceType, @SuppressWarnings({"unchecked", "rawtypes"}) private static void configureFromAnnotatedReconciler(Object instance, Reconciler reconciler) { - if (instance instanceof AnnotationConfigurable) { - AnnotationConfigurable configurable = (AnnotationConfigurable) instance; + if (instance instanceof AnnotationConfigurable configurable) { final Class configurationClass = (Class) Utils.getFirstTypeArgumentFromSuperClassOrInterface( instance.getClass(), AnnotationConfigurable.class); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java index 9f98214b91..ad66b8b563 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverrider.java @@ -10,7 +10,6 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.client.informers.cache.ItemStore; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; -import io.javaoperatorsdk.operator.api.config.workflow.WorkflowSpec; import io.javaoperatorsdk.operator.processing.event.rate.RateLimiter; import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter; import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter; @@ -39,7 +38,6 @@ public class ControllerConfigurationOverrider { private String name; private String fieldManager; private Long informerListLimit; - private WorkflowSpec workflowSpec; private ControllerConfigurationOverrider(ControllerConfiguration original) { this.finalizer = original.getFinalizerName(); @@ -57,7 +55,6 @@ private ControllerConfigurationOverrider(ControllerConfiguration original) { this.fieldManager = original.fieldManager(); this.informerListLimit = original.getInformerListLimit().orElse(null); this.itemStore = original.getItemStore().orElse(null); - this.workflowSpec = original.getWorkflowSpec().orElse(null); } public ControllerConfigurationOverrider withFinalizer(String finalizer) { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/LeaderElectionConfigurationBuilder.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/LeaderElectionConfigurationBuilder.java index 4b21dd9d2d..494c9d8e66 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/LeaderElectionConfigurationBuilder.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/LeaderElectionConfigurationBuilder.java @@ -6,9 +6,10 @@ import static io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration.*; +@SuppressWarnings("unused") public final class LeaderElectionConfigurationBuilder { - private String leaseName; + private final String leaseName; private String leaseNamespace; private String identity; private Duration leaseDuration = LEASE_DURATION_DEFAULT_VALUE; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java index 9a94d5d667..af96604591 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/ResolvedControllerConfiguration.java @@ -1,7 +1,10 @@ package io.javaoperatorsdk.operator.api.config; import java.time.Duration; -import java.util.*; +import java.util.Collections; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.concurrent.TimeUnit; import io.fabric8.kubernetes.api.model.HasMetadata; @@ -105,7 +108,6 @@ protected ResolvedControllerConfiguration(Class

resourceClass, String name, this.finalizer = ControllerConfiguration.ensureValidFinalizerName(finalizer, getResourceTypeName()); this.fieldManager = fieldManager; - this.workflowSpec = workflowSpec; } protected ResolvedControllerConfiguration(Class

resourceClass, String name, diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolver.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolver.java index ebe8b2ad0e..06ae7ec683 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolver.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolver.java @@ -22,8 +22,7 @@ private DependentResourceConfigurationResolver() {} public static > void configure( DependentResource dependentResource, DependentResourceSpec spec, C parentConfiguration) { - if (dependentResource instanceof DependentResourceConfigurator) { - final var configurator = (DependentResourceConfigurator) dependentResource; + if (dependentResource instanceof DependentResourceConfigurator configurator) { final var config = configurationFor(spec, parentConfiguration); configurator.configureWith(config); } @@ -33,8 +32,7 @@ public static > Object DependentResourceSpec spec, C parentConfiguration) { // first check if the parent configuration has potentially already resolved the configuration - if (parentConfiguration instanceof DependentResourceConfigurationProvider) { - final var provider = (DependentResourceConfigurationProvider) parentConfiguration; + if (parentConfiguration instanceof DependentResourceConfigurationProvider provider) { final var configuration = provider.getConfigurationFor(spec); if (configuration != null) { return configuration; diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java index 540eb983dd..c0bed7acdb 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java @@ -239,8 +239,7 @@ public void initAndRegisterEventSources(EventSourceContext

context) { final var size = dependentResourcesByName.size(); if (size > 0) { dependentResourcesByName.forEach((key, dependentResource) -> { - if (dependentResource instanceof EventSourceProvider) { - final var provider = (EventSourceProvider) dependentResource; + if (dependentResource instanceof EventSourceProvider provider) { final var source = provider.initEventSource(context); eventSourceManager.registerEventSource(key, source); } else { diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java index bcfaa52d1a..f79f12b49f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/SSABasedGenericKubernetesResourceMatcher.java @@ -1,8 +1,17 @@ package io.javaoperatorsdk.operator.processing.dependent.kubernetes; -import java.util.*; +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; -import java.util.stream.Collectors; +import java.util.Optional; +import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,7 +31,7 @@ *

* The basis of algorithm is to extract the fields managed we convert resources to Map/List * composition. The actual resource (from the server) is pruned, all the fields which are not - * mentioed in managedFields of the target manager is removed. Some irrelevant fields are also + * mentioned in managedFields of the target manager is removed. Some irrelevant fields are also * removed from desired. And the two resulted Maps are compared for equality. The implementation is * a bit nasty since have to deal with some specific cases of managedFields format. *

@@ -104,10 +113,8 @@ public boolean matches(R actual, R desired, Context context) { /** * Correct for known issue with SSA */ - @SuppressWarnings("unchecked") private void sanitizeState(R actual, R desired, Map actualMap) { - if (desired instanceof StatefulSet) { - StatefulSet desiredStatefulSet = (StatefulSet) desired; + if (desired instanceof StatefulSet desiredStatefulSet) { StatefulSet actualStatefulSet = (StatefulSet) actual; int claims = desiredStatefulSet.getSpec().getVolumeClaimTemplates().size(); if (claims == actualStatefulSet.getSpec().getVolumeClaimTemplates().size()) { @@ -321,12 +328,12 @@ private static java.util.Map.Entry> selectListEntry } if (possibleTargets.isEmpty()) { throw new IllegalStateException("Cannot find list element for key:" + key + ", in map: " - + values.stream().map(Map::keySet).collect(Collectors.toList())); + + values.stream().map(Map::keySet).toList()); } if (possibleTargets.size() > 1) { throw new IllegalStateException( "More targets found in list element for key:" + key + ", in map: " - + values.stream().map(Map::keySet).collect(Collectors.toList())); + + values.stream().map(Map::keySet).toList()); } final var finalIndex = index; return new AbstractMap.SimpleEntry<>(finalIndex, possibleTargets.get(0)); @@ -339,7 +346,7 @@ private Optional checkIfFieldManagerExists(R actual, String // field manager name. .filter( f -> f.getManager().equals(fieldManager) && f.getOperation().equals(APPLY_OPERATION)) - .collect(Collectors.toList()); + .toList(); if (targetManagedFields.isEmpty()) { log.debug("No field manager exists for resource {} with name: {} and operation Apply ", actual.getKind(), diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventProcessor.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventProcessor.java index 7eff4b1f55..e335364748 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventProcessor.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventProcessor.java @@ -166,8 +166,7 @@ private void submitReconciliationExecution(ResourceState state) { private void handleEventMarking(Event event, ResourceState state) { final var relatedCustomResourceID = event.getRelatedCustomResourceID(); - if (event instanceof ResourceEvent) { - var resourceEvent = (ResourceEvent) event; + if (event instanceof ResourceEvent resourceEvent) { if (resourceEvent.getAction() == ResourceAction.DELETED) { log.debug("Marking delete event received for: {}", relatedCustomResourceID); state.markDeleteEventReceived(); @@ -331,8 +330,8 @@ private void handleRetryOnException( private void retryAwareErrorLogging(RetryExecution retry, boolean eventPresent, Exception exception, ExecutionScope

executionScope) { - if (!eventPresent && !retry.isLastAttempt() && exception instanceof KubernetesClientException) { - KubernetesClientException ex = (KubernetesClientException) exception; + if (!eventPresent && !retry.isLastAttempt() + && exception instanceof KubernetesClientException ex) { if (ex.getCode() == HttpURLConnection.HTTP_CONFLICT) { log.debug("Full client conflict error during event processing {}", executionScope, exception); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java index 9772c9edd5..2b1005af4a 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java @@ -1,6 +1,11 @@ package io.javaoperatorsdk.operator.processing.event; -import java.util.*; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -104,8 +109,7 @@ public synchronized void stop() { @SuppressWarnings("rawtypes") private void logEventSourceEvent(NamedEventSource eventSource, String event) { if (log.isDebugEnabled()) { - if (eventSource.original() instanceof ResourceEventSource) { - ResourceEventSource source = (ResourceEventSource) eventSource.original(); + if (eventSource.original() instanceof ResourceEventSource source) { log.debug("{} event source {} for {}", event, eventSource.isNameSet() ? eventSource.name() : eventSource, source.resourceType()); @@ -152,8 +156,7 @@ public final synchronized void registerEventSource(String name, EventSource even if (name == null || name.isBlank()) { name = EventSourceUtils.generateNameFor(eventSource); } - if (eventSource instanceof ManagedInformerEventSource) { - var managedInformerEventSource = ((ManagedInformerEventSource) eventSource); + if (eventSource instanceof ManagedInformerEventSource managedInformerEventSource) { managedInformerEventSource.setConfigurationService( controller.getConfiguration().getConfigurationService()); } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/NamedEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/NamedEventSource.java index a4e4ead83a..1ad6efa929 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/NamedEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/NamedEventSource.java @@ -49,8 +49,7 @@ public Class type() { @Override @SuppressWarnings({"rawtypes", "unchecked"}) public Optional> resourceType() { - if (original instanceof ResourceEventSource) { - ResourceEventSource resourceEventSource = (ResourceEventSource) original; + if (original instanceof ResourceEventSource resourceEventSource) { return Optional.of(resourceEventSource.resourceType()); } return Optional.empty(); @@ -59,8 +58,7 @@ public Optional> resourceType() { @Override @SuppressWarnings("rawtypes") public Optional configuration() { - if (original instanceof Configurable) { - Configurable configurable = (Configurable) original; + if (original instanceof Configurable configurable) { return Optional.ofNullable(configurable.configuration()); } return Optional.empty(); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/rate/LinearRateLimiter.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/rate/LinearRateLimiter.java index 02a919f547..2692b60bd0 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/rate/LinearRateLimiter.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/rate/LinearRateLimiter.java @@ -36,11 +36,10 @@ public LinearRateLimiter(Duration refreshPeriod, int limitForPeriod) { @Override public Optional isLimited(RateLimitState rateLimitState) { - if (!isActivated() || !(rateLimitState instanceof RateState)) { + if (!isActivated() || !(rateLimitState instanceof RateState actualState)) { return Optional.empty(); } - var actualState = (RateState) rateLimitState; if (actualState.getCount() < limitForPeriod) { actualState.increaseCount(); return Optional.empty(); diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ExternalResourceCachingEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ExternalResourceCachingEventSource.java index 58778edbdf..3ccc41a77d 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ExternalResourceCachingEventSource.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ExternalResourceCachingEventSource.java @@ -1,6 +1,13 @@ package io.javaoperatorsdk.operator.processing.event.source; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -90,8 +97,7 @@ protected synchronized void handleResources(ResourceID primaryID, Set newReso } protected synchronized void handleResources(Map> allNewResources) { - var toDelete = cache.keySet().stream().filter(k -> !allNewResources.containsKey(k)) - .collect(Collectors.toList()); + var toDelete = cache.keySet().stream().filter(k -> !allNewResources.containsKey(k)).toList(); toDelete.forEach(this::handleDelete); allNewResources.forEach(this::handleResources); } @@ -153,21 +159,15 @@ private boolean acceptedByFiler(Map cachedResourceMap, .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); if (onUpdateFilter != null || genericFilter != null) { - var anyUpdated = possibleUpdatedResources.entrySet().stream() + return possibleUpdatedResources.entrySet().stream() .anyMatch( entry -> { var newResource = newResourcesMap.get(entry.getKey()); return acceptedByGenericFiler(newResource) && onUpdateFilter.accept(newResource, entry.getValue()); }); - if (anyUpdated) { - return true; - } - } else if (!possibleUpdatedResources.isEmpty()) { - return true; - } - - return false; + } else + return !possibleUpdatedResources.isEmpty(); } private boolean acceptedByGenericFiler(R resource) { 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 7139395e76..f5efd0a68c 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 @@ -1,6 +1,10 @@ package io.javaoperatorsdk.operator.processing.event.source.informer; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Stream; @@ -25,6 +29,7 @@ import io.javaoperatorsdk.operator.processing.event.source.Configurable; import io.javaoperatorsdk.operator.processing.event.source.IndexerResourceCache; +@SuppressWarnings("rawtypes") public abstract class ManagedInformerEventSource> extends AbstractResourceEventSource implements ResourceEventHandler, Cache, IndexerResourceCache, @@ -36,7 +41,7 @@ public abstract class ManagedInformerEventSource>> indexers = new HashMap<>(); + private final Map>> indexers = new HashMap<>(); protected TemporaryResourceCache temporaryResourceCache; protected MixedOperation client; @@ -75,6 +80,7 @@ public void changeNamespaces(Set namespaces) { } } + @SuppressWarnings("unchecked") @Override public synchronized void start() { if (isRunning()) { @@ -124,6 +130,7 @@ public Optional get(ResourceID resourceID) { } } + @SuppressWarnings("unused") public Optional getCachedValue(ResourceID resourceID) { return get(resourceID); } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/MockKubernetesClient.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/MockKubernetesClient.java index eebf7a72d4..a5cd478ee4 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/MockKubernetesClient.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/MockKubernetesClient.java @@ -1,6 +1,6 @@ package io.javaoperatorsdk.operator; -import java.util.Arrays; +import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executors; import java.util.function.Consumer; @@ -12,22 +12,21 @@ import io.fabric8.kubernetes.api.model.authorization.v1.SubjectRulesReviewStatus; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.V1ApiextensionAPIGroupDSL; -import io.fabric8.kubernetes.client.dsl.*; +import io.fabric8.kubernetes.client.dsl.AnyNamespaceOperation; +import io.fabric8.kubernetes.client.dsl.ApiextensionsAPIGroupDSL; +import io.fabric8.kubernetes.client.dsl.FilterWatchListDeletable; +import io.fabric8.kubernetes.client.dsl.Informable; +import io.fabric8.kubernetes.client.dsl.MixedOperation; +import io.fabric8.kubernetes.client.dsl.NamespaceableResource; +import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; +import io.fabric8.kubernetes.client.dsl.Resource; import io.fabric8.kubernetes.client.extended.leaderelection.LeaderElectorBuilder; import io.fabric8.kubernetes.client.informers.SharedIndexInformer; import io.fabric8.kubernetes.client.informers.cache.Indexer; import io.fabric8.kubernetes.client.utils.KubernetesSerialization; -import static io.javaoperatorsdk.operator.LeaderElectionManager.COORDINATION_GROUP; -import static io.javaoperatorsdk.operator.LeaderElectionManager.LEASES_RESOURCE; -import static io.javaoperatorsdk.operator.LeaderElectionManager.UNIVERSAL_VERB; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyLong; -import static org.mockito.Mockito.anyString; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.nullable; -import static org.mockito.Mockito.when; +import static io.javaoperatorsdk.operator.LeaderElectionManager.*; +import static org.mockito.Mockito.*; public class MockKubernetesClient { @@ -105,10 +104,10 @@ private static Object allowSelfSubjectReview() { SelfSubjectRulesReview review = new SelfSubjectRulesReview(); review.setStatus(new SubjectRulesReviewStatus()); var resourceRule = new ResourceRule(); - resourceRule.setApiGroups(Arrays.asList(COORDINATION_GROUP)); - resourceRule.setResources(Arrays.asList(LEASES_RESOURCE)); - resourceRule.setVerbs(Arrays.asList(UNIVERSAL_VERB)); - review.getStatus().setResourceRules(Arrays.asList(resourceRule)); + resourceRule.setApiGroups(List.of(COORDINATION_GROUP)); + resourceRule.setResources(List.of(LEASES_RESOURCE)); + resourceRule.setVerbs(List.of(UNIVERSAL_VERB)); + review.getStatus().setResourceRules(List.of(resourceRule)); return review; } } diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java index d8caf50868..e280009da2 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/ControllerConfigurationOverriderTest.java @@ -11,8 +11,12 @@ import io.fabric8.kubernetes.client.informers.cache.BasicItemStore; import io.fabric8.kubernetes.client.informers.cache.Cache; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceConfigurationResolver; -import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.Constants; +import io.javaoperatorsdk.operator.api.reconciler.Context; 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.api.reconciler.Workflow; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult; @@ -93,8 +97,7 @@ public MyItemStore() { private static class WatchCurrentReconciler implements Reconciler { @Override - public UpdateControl reconcile(ConfigMap resource, Context context) - throws Exception { + public UpdateControl reconcile(ConfigMap resource, Context context) { return null; } } @@ -265,7 +268,7 @@ void alreadyOverriddenDependentNamespacesShouldNotBePropagated() { assertEquals(Set.of(OverriddenNSDependent.DEP_NS), config.namespaces()); } - @SuppressWarnings({"rawtypes", "unchecked"}) + @SuppressWarnings("rawtypes") @Test void replaceNamedDependentResourceConfigShouldWork() { var configuration = createConfiguration(new OneDepReconciler()); @@ -283,7 +286,7 @@ void replaceNamedDependentResourceConfigShouldWork() { var maybeConfig = DependentResourceConfigurationResolver.configurationFor(dependentSpec, configuration); assertNotNull(maybeConfig); - assertTrue(maybeConfig instanceof KubernetesDependentResourceConfig); + assertInstanceOf(KubernetesDependentResourceConfig.class, maybeConfig); var config = (KubernetesDependentResourceConfig) maybeConfig; // check that the DependentResource inherits the controller's configuration if applicable @@ -311,7 +314,7 @@ void replaceNamedDependentResourceConfigShouldWork() { assertEquals(labelSelector, config.labelSelector()); assertEquals(Set.of(overriddenNS), config.namespaces()); // check that we still have the proper workflow configuration - assertTrue(dependentSpec.getReadyCondition() instanceof TestCondition); + assertInstanceOf(TestCondition.class, dependentSpec.getReadyCondition()); } @Workflow(dependents = @Dependent(type = ReadOnlyDependent.class)) diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolverTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolverTest.java index 0b7dcd53a1..702a12d124 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolverTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/config/dependent/DependentResourceConfigurationResolverTest.java @@ -12,7 +12,11 @@ import io.fabric8.kubernetes.api.model.Service; import io.javaoperatorsdk.operator.api.config.BaseConfigurationService; import io.javaoperatorsdk.operator.api.config.ControllerConfigurationOverrider; -import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.Context; +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.api.reconciler.Workflow; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult; @@ -48,7 +52,7 @@ void controllerConfigurationProvidedShouldBeReturnedIfAvailable() { final var cfg = configFor(new CustomAnnotationReconciler()); final var customConfig = DependentResourceConfigurationResolver .extractConfigurationFromConfigured(CustomAnnotatedDep.class, cfg); - assertTrue(customConfig instanceof CustomConfig); + assertInstanceOf(CustomConfig.class, customConfig); assertEquals(CustomAnnotatedDep.PROVIDED_VALUE, ((CustomConfig) customConfig).getValue()); final var newConfig = new CustomConfig(72); final var overridden = ControllerConfigurationOverrider.override(cfg) @@ -96,7 +100,7 @@ void registerConverterShouldWork() { DependentResourceConfigurationResolver.extractConfigurationFromConfigured(ConfigMapDep.class, cfg); converter = DependentResourceConfigurationResolver.getConverter(ConfigMapDep.class); - assertTrue(converter instanceof KubernetesDependentConverter); + assertInstanceOf(KubernetesDependentConverter.class, converter); final var overriddenConverter = new ConfigurationConverter() { @Override public Object configFrom(Annotation configAnnotation, @@ -110,7 +114,7 @@ public Object configFrom(Annotation configAnnotation, // already resolved converters are kept unchanged converter = DependentResourceConfigurationResolver.getConverter(ConfigMapDep.class); - assertTrue(converter instanceof KubernetesDependentConverter); + assertInstanceOf(KubernetesDependentConverter.class, converter); // but new converters should use the overridden version DependentResourceConfigurationResolver.extractConfigurationFromConfigured(ServiceDep.class, diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java index b56d79e6ed..39a3192d95 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java @@ -107,7 +107,7 @@ void shouldNotBePossibleToAddEventSourcesForSameTypeAndName() { final var exception = assertThrows(OperatorException.class, () -> manager.registerEventSource(name, source)); final var cause = exception.getCause(); - assertTrue(cause instanceof IllegalArgumentException); + assertInstanceOf(IllegalArgumentException.class, cause); assertThat(cause.getMessage()).contains( "is already registered for the (io.javaoperatorsdk.operator.sample.simple.TestCustomResource, " + name + ") class/name combination"); diff --git a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/PrimaryToSecondaryIndexTest.java b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/PrimaryToSecondaryIndexTest.java index 62f395f2d6..6793b09550 100644 --- a/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/PrimaryToSecondaryIndexTest.java +++ b/operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/PrimaryToSecondaryIndexTest.java @@ -23,10 +23,10 @@ class PrimaryToSecondaryIndexTest { private final PrimaryToSecondaryIndex primaryToSecondaryIndex = new DefaultPrimaryToSecondaryIndex<>(secondaryToPrimaryMapperMock); - private ResourceID primaryID1 = new ResourceID("id1", "default"); - private ResourceID primaryID2 = new ResourceID("id2", "default"); - private ConfigMap secondary1 = secondary("secondary1"); - private ConfigMap secondary2 = secondary("secondary2"); + private final ResourceID primaryID1 = new ResourceID("id1", "default"); + private final ResourceID primaryID2 = new ResourceID("id2", "default"); + private final ConfigMap secondary1 = secondary("secondary1"); + private final ConfigMap secondary2 = secondary("secondary2"); @BeforeEach void setup() { diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java index dbb393fec0..de6cc681b6 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/MultiVersionCRDIT.java @@ -60,8 +60,7 @@ public void reset() { @Override @SuppressWarnings("rawtypes") public void onStop(SharedIndexInformer informer, Throwable ex) { - if (ex instanceof WatcherException) { - WatcherException watcherEx = (WatcherException) ex; + if (ex instanceof WatcherException watcherEx) { watcherEx.getRawWatchMessage().ifPresent(raw -> { try { // extract the resource at which the version is attempted to be created (i.e. the stored diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java index 81d69f7596..820ce1589f 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/config/BaseConfigurationServiceTest.java @@ -22,7 +22,12 @@ import io.javaoperatorsdk.operator.api.config.dependent.Configured; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceConfigurationResolver; import io.javaoperatorsdk.operator.api.config.dependent.DependentResourceSpec; -import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.Context; +import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.MaxReconciliationInterval; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import io.javaoperatorsdk.operator.api.reconciler.Workflow; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource; import io.javaoperatorsdk.operator.api.reconciler.dependent.ReconcileResult; @@ -97,7 +102,7 @@ void getDependentResources() { var maybeConfig = DependentResourceConfigurationResolver.configurationFor(dependentSpec, configuration); assertNotNull(maybeConfig); - assertTrue(maybeConfig instanceof KubernetesDependentResourceConfig); + assertInstanceOf(KubernetesDependentResourceConfig.class, maybeConfig); final var config = (KubernetesDependentResourceConfig) maybeConfig; // check that the DependentResource inherits the controller's configuration if applicable assertEquals(1, config.namespaces().size()); @@ -112,7 +117,7 @@ void getDependentResources() { maybeConfig = DependentResourceConfigurationResolver.configurationFor(dependentSpec, configuration); assertNotNull(maybeConfig); - assertTrue(maybeConfig instanceof KubernetesDependentResourceConfig); + assertInstanceOf(KubernetesDependentResourceConfig.class, maybeConfig); } @Test @@ -240,8 +245,7 @@ private static int getValue( private static class MaxIntervalReconciler implements Reconciler { @Override - public UpdateControl reconcile(ConfigMap resource, Context context) - throws Exception { + public UpdateControl reconcile(ConfigMap resource, Context context) { return null; } } @@ -315,8 +319,7 @@ public UpdateControl reconcile(ConfigMap resource, Context private static class SelectorReconciler implements Reconciler { @Override - public UpdateControl reconcile(ConfigMap resource, Context context) - throws Exception { + public UpdateControl reconcile(ConfigMap resource, Context context) { return null; } @@ -371,8 +374,7 @@ public void initFrom(TestRetryConfiguration configuration) { private static class ConfigurableRateLimitAndRetryReconciler implements Reconciler { @Override - public UpdateControl reconcile(ConfigMap resource, Context context) - throws Exception { + public UpdateControl reconcile(ConfigMap resource, Context context) { return UpdateControl.noUpdate(); } } @@ -391,8 +393,7 @@ private static class CheckRetryingGraduallyConfiguration implements Reconciler reconcile(ConfigMap resource, Context context) - throws Exception { + public UpdateControl reconcile(ConfigMap resource, Context context) { return UpdateControl.noUpdate(); } } @@ -440,8 +441,7 @@ public UpdateControl reconcile(ConfigMap resource, Context private static class CustomAnnotationReconciler implements Reconciler { @Override - public UpdateControl reconcile(ConfigMap resource, Context context) - throws Exception { + public UpdateControl reconcile(ConfigMap resource, Context context) { return null; } } 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 d59c87236c..c3ec3b70a1 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 @@ -8,7 +8,12 @@ import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ObjectMeta; 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.api.reconciler.ControllerConfiguration; +import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext; +import io.javaoperatorsdk.operator.api.reconciler.EventSourceUtils; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; 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; @@ -42,8 +47,7 @@ public void setEventSource( public static final String CONFIG_MAP_TEST_DATA_KEY = "key"; private final AtomicInteger numberOfExecutions = new AtomicInteger(0); - private InformerEventSource informerEventSource; - private DirectConfigMapDependentResource configMapDR = + private final DirectConfigMapDependentResource configMapDR = new DirectConfigMapDependentResource(ConfigMap.class); @Override @@ -93,7 +97,9 @@ public Map prepareEventSources( InformerConfiguration.from(ConfigMap.class) .withLabelSelector("integrationtest = " + this.getClass().getSimpleName()) .build(); - informerEventSource = new InformerEventSource<>(informerConfiguration, context.getClient()); + final var informerEventSource = + new InformerEventSource( + informerConfiguration, context.getClient()); this.configMapDR.setEventSource(informerEventSource); return EventSourceUtils.nameEventSources(informerEventSource); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentcustommappingannotation/CustomMappingConfigMapDependentResource.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentcustommappingannotation/CustomMappingConfigMapDependentResource.java index 123d360068..e17fdb8099 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentcustommappingannotation/CustomMappingConfigMapDependentResource.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentcustommappingannotation/CustomMappingConfigMapDependentResource.java @@ -20,7 +20,7 @@ public class CustomMappingConfigMapDependentResource public static final String CUSTOM_NAMESPACE_KEY = "customNamespaceKey"; public static final String KEY = "key"; - private SecondaryToPrimaryMapper mapper = + private final SecondaryToPrimaryMapper mapper = Mappers.fromAnnotation(CUSTOM_NAME_KEY, CUSTOM_NAMESPACE_KEY); public CustomMappingConfigMapDependentResource() { 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 44395ead5e..0973a65157 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,7 +4,12 @@ import java.util.concurrent.atomic.AtomicInteger; import io.fabric8.kubernetes.api.model.ConfigMap; -import io.javaoperatorsdk.operator.api.reconciler.*; +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.EventSourceUtils; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.dependent.kubernetes.KubernetesDependentResourceConfigBuilder; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider; @@ -15,7 +20,7 @@ public class DependentSSAReconciler private final AtomicInteger numberOfExecutions = new AtomicInteger(0); - private SSAConfigMapDependent ssaConfigMapDependent = new SSAConfigMapDependent(); + private final SSAConfigMapDependent ssaConfigMapDependent = new SSAConfigMapDependent(); public DependentSSAReconciler() { this(true); diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentresourcemanaged/GenericKubernetesDependentManagedReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentresourcemanaged/GenericKubernetesDependentManagedReconciler.java index bab120cfac..40d0454eb7 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentresourcemanaged/GenericKubernetesDependentManagedReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentresourcemanaged/GenericKubernetesDependentManagedReconciler.java @@ -1,6 +1,10 @@ package io.javaoperatorsdk.operator.sample.generickubernetesresource.generickubernetesdependentresourcemanaged; -import io.javaoperatorsdk.operator.api.reconciler.*; +import io.javaoperatorsdk.operator.api.reconciler.Context; +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.api.reconciler.Workflow; import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent; @Workflow(dependents = {@Dependent(type = ConfigMapGenericKubernetesDependent.class)}) @@ -13,7 +17,7 @@ public UpdateControl reconcile( GenericKubernetesDependentManagedCustomResource resource, Context context) { - return UpdateControl.noUpdate(); + return UpdateControl.noUpdate(); } } diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentstandalone/GenericKubernetesDependentStandaloneReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentstandalone/GenericKubernetesDependentStandaloneReconciler.java index 1cb1372abe..3f38e12a8d 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentstandalone/GenericKubernetesDependentStandaloneReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/generickubernetesresource/generickubernetesdependentstandalone/GenericKubernetesDependentStandaloneReconciler.java @@ -2,7 +2,12 @@ import java.util.Map; -import io.javaoperatorsdk.operator.api.reconciler.*; +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.EventSourceUtils; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.event.source.EventSource; @ControllerConfiguration @@ -21,7 +26,7 @@ public UpdateControl reconci dependent.reconcile(resource, context); - return UpdateControl.noUpdate(); + return UpdateControl.noUpdate(); } @Override diff --git a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/updatestatusincleanupandreschedule/UpdateStatusInCleanupAndRescheduleReconciler.java b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/updatestatusincleanupandreschedule/UpdateStatusInCleanupAndRescheduleReconciler.java index 9fcceca851..762948d1c1 100644 --- a/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/updatestatusincleanupandreschedule/UpdateStatusInCleanupAndRescheduleReconciler.java +++ b/operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/updatestatusincleanupandreschedule/UpdateStatusInCleanupAndRescheduleReconciler.java @@ -3,7 +3,12 @@ import java.time.LocalTime; import java.time.temporal.ChronoUnit; -import io.javaoperatorsdk.operator.api.reconciler.*; +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.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; @ControllerConfiguration public class UpdateStatusInCleanupAndRescheduleReconciler @@ -38,14 +43,10 @@ public DeleteControl cleanup(UpdateStatusInCleanupAndRescheduleCustomResource re resource.getStatus().setCleanupAttempt(currentAttempt + 1); if (!Boolean.FALSE.equals(rescheduleDelayWorked)) { var diff = ChronoUnit.MILLIS.between(lastCleanupExecution, LocalTime.now()); - if (diff < DELAY) { - rescheduleDelayWorked = false; - } else { - rescheduleDelayWorked = true; - } + rescheduleDelayWorked = diff >= DELAY; } } - var res = context.getClient().resource(resource).updateStatus(); + context.getClient().resource(resource).updateStatus(); if (resource.getStatus().getCleanupAttempt() > 5) { return DeleteControl.defaultDelete(); diff --git a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java index 0329350fdb..2dbddbf286 100644 --- a/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java +++ b/sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/WebappReconciler.java @@ -20,7 +20,14 @@ import io.fabric8.kubernetes.client.dsl.ExecListener; import io.fabric8.kubernetes.client.dsl.ExecWatch; import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration; -import io.javaoperatorsdk.operator.api.reconciler.*; +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.EventSourceUtils; +import io.javaoperatorsdk.operator.api.reconciler.Reconciler; +import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.EventSource; import io.javaoperatorsdk.operator.processing.event.source.SecondaryToPrimaryMapper; @@ -150,14 +157,14 @@ private String[] executeCommandInAllPods( CompletableFuture data = new CompletableFuture<>(); try (ExecWatch execWatch = execCmd(pod, data, command)) { - status[i] = "" + pod.getMetadata().getName() + ":" + data.get(30, TimeUnit.SECONDS); + status[i] = pod.getMetadata().getName() + ":" + data.get(30, TimeUnit.SECONDS); } catch (ExecutionException e) { - status[i] = "" + pod.getMetadata().getName() + ": ExecutionException - " + e.getMessage(); + status[i] = pod.getMetadata().getName() + ": ExecutionException - " + e.getMessage(); } catch (InterruptedException e) { status[i] = - "" + pod.getMetadata().getName() + ": InterruptedException - " + e.getMessage(); + pod.getMetadata().getName() + ": InterruptedException - " + e.getMessage(); } catch (TimeoutException e) { - status[i] = "" + pod.getMetadata().getName() + ": TimeoutException - " + e.getMessage(); + status[i] = pod.getMetadata().getName() + ": TimeoutException - " + e.getMessage(); } } }