Skip to content

Commit d83b9f8

Browse files
committed
feat: condition for bulk resources
1 parent 53a553e commit d83b9f8

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.javaoperatorsdk.operator.bulkdependent;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.RegisterExtension;
5+
6+
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
7+
import io.javaoperatorsdk.operator.sample.bulkdependent.ManagedBulkDependentWithPreconditionReconciler;
8+
9+
import static io.javaoperatorsdk.operator.bulkdependent.BulkDependentTestBase.INITIAL_NUMBER_OF_CONFIG_MAPS;
10+
import static io.javaoperatorsdk.operator.bulkdependent.BulkDependentTestBase.testResource;
11+
import static io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapDeleterBulkDependentResource.LABEL_KEY;
12+
import static io.javaoperatorsdk.operator.sample.bulkdependent.ConfigMapDeleterBulkDependentResource.LABEL_VALUE;
13+
import static org.assertj.core.api.Assertions.*;
14+
import static org.awaitility.Awaitility.await;
15+
16+
class BulkDependentWithPreconditionIT {
17+
18+
@RegisterExtension
19+
LocallyRunOperatorExtension extension =
20+
LocallyRunOperatorExtension.builder()
21+
.withReconciler(new ManagedBulkDependentWithPreconditionReconciler())
22+
.build();
23+
24+
@Test
25+
void handlesBulkDependentWithPrecondition() {
26+
var resource = testResource();
27+
extension.create(resource);
28+
29+
await().untilAsserted(() -> {
30+
var cms = extension.getKubernetesClient().configMaps().inNamespace(extension.getNamespace())
31+
.withLabel(LABEL_KEY, LABEL_VALUE)
32+
.list().getItems();
33+
assertThat(cms).hasSize(INITIAL_NUMBER_OF_CONFIG_MAPS);
34+
});
35+
}
36+
37+
38+
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.javaoperatorsdk.operator.sample.bulkdependent;
2+
3+
import java.util.concurrent.atomic.AtomicInteger;
4+
5+
import io.javaoperatorsdk.operator.api.reconciler.Context;
6+
import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration;
7+
import io.javaoperatorsdk.operator.api.reconciler.Reconciler;
8+
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
9+
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
10+
11+
@ControllerConfiguration(dependents = @Dependent(reconcilePrecondition = SamplePrecondition.class,
12+
type = CRUDConfigMapBulkDependentResource.class))
13+
public class ManagedBulkDependentWithPreconditionReconciler
14+
implements Reconciler<BulkDependentTestCustomResource> {
15+
16+
private final AtomicInteger numberOfExecutions = new AtomicInteger(0);
17+
18+
@Override
19+
public UpdateControl<BulkDependentTestCustomResource> reconcile(
20+
BulkDependentTestCustomResource resource,
21+
Context<BulkDependentTestCustomResource> context) throws Exception {
22+
numberOfExecutions.incrementAndGet();
23+
return UpdateControl.noUpdate();
24+
}
25+
26+
public int getNumberOfExecutions() {
27+
return numberOfExecutions.get();
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.javaoperatorsdk.operator.sample.bulkdependent;
2+
3+
import io.fabric8.kubernetes.api.model.ConfigMap;
4+
import io.javaoperatorsdk.operator.api.reconciler.Context;
5+
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
6+
7+
public class SamplePrecondition implements Condition<ConfigMap, BulkDependentTestCustomResource> {
8+
9+
public static final String SKIP_RESOURCE_DATA = "skipThis";
10+
11+
@Override
12+
public boolean isMet(BulkDependentTestCustomResource primary, ConfigMap secondary,
13+
Context<BulkDependentTestCustomResource> context) {
14+
return !SKIP_RESOURCE_DATA.equals(primary.getSpec().getAdditionalData());
15+
}
16+
}

0 commit comments

Comments
 (0)