Skip to content

Commit be39309

Browse files
committed
activation condition share event sounrce in DR
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 339520a commit be39309

9 files changed

+191
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
public class MultipleActivationSharingInformerIT {
4+
5+
6+
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
import io.fabric8.kubernetes.api.model.ConfigMap;
4+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
5+
import io.javaoperatorsdk.operator.api.reconciler.Context;
6+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDNoGCKubernetesDependentResource;
7+
8+
import java.util.Map;
9+
10+
public abstract class AbstractConfigMapDependentResource
11+
extends
12+
CRUDNoGCKubernetesDependentResource<ConfigMap, MultipleActivationSharingInformerCustomResource> {
13+
14+
public static final String DATA_KEY = "data";
15+
16+
public AbstractConfigMapDependentResource() {
17+
super(ConfigMap.class);
18+
}
19+
20+
@Override
21+
protected ConfigMap desired(MultipleActivationSharingInformerCustomResource primary,
22+
Context<MultipleActivationSharingInformerCustomResource> context) {
23+
ConfigMap configMap = new ConfigMap();
24+
configMap.setMetadata(new ObjectMetaBuilder()
25+
.withName(primary.getMetadata().getName())
26+
.withNamespace(primary.getMetadata().getNamespace())
27+
.build());
28+
configMap.setData(Map.of(DATA_KEY, value(primary)));
29+
return configMap;
30+
}
31+
32+
abstract String value(MultipleActivationSharingInformerCustomResource primary);
33+
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
import io.fabric8.openshift.api.model.Route;
4+
import io.javaoperatorsdk.operator.api.reconciler.Context;
5+
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
6+
import io.javaoperatorsdk.operator.processing.dependent.workflow.Condition;
7+
8+
public class ActivationCondition
9+
implements Condition<Route, MultipleActivationSharingInformerCustomResource> {
10+
11+
public final static boolean MET = true;
12+
13+
@Override
14+
public boolean isMet(
15+
DependentResource<Route, MultipleActivationSharingInformerCustomResource> dependentResource,
16+
MultipleActivationSharingInformerCustomResource primary,
17+
Context<MultipleActivationSharingInformerCustomResource> context) {
18+
return MET;
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
public class ConfigMapDependentResource1 extends AbstractConfigMapDependentResource {
4+
5+
public static final String VALUE_SUFFIX = "_1";
6+
7+
@Override
8+
String value(MultipleActivationSharingInformerCustomResource primary) {
9+
return primary.getSpec().getValue()+ VALUE_SUFFIX;
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
public class ConfigMapDependentResource2 extends AbstractConfigMapDependentResource {
4+
5+
public static final String VALUE_SUFFIX = "_2";
6+
7+
@Override
8+
String value(MultipleActivationSharingInformerCustomResource primary) {
9+
return primary.getSpec().getValue()+ VALUE_SUFFIX;
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
import io.fabric8.kubernetes.api.model.Namespaced;
4+
import io.fabric8.kubernetes.client.CustomResource;
5+
import io.fabric8.kubernetes.model.annotation.Group;
6+
import io.fabric8.kubernetes.model.annotation.ShortNames;
7+
import io.fabric8.kubernetes.model.annotation.Version;
8+
9+
@Group("sample.javaoperatorsdk")
10+
@Version("v1")
11+
@ShortNames("mwac")
12+
public class MultipleActivationSharingInformerCustomResource
13+
extends CustomResource<MultipleActivationSharingInformerCustomResourceSpec, Void>
14+
implements Namespaced {
15+
16+
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
public class MultipleActivationSharingInformerCustomResourceSpec {
4+
5+
private String value;
6+
7+
public String getValue() {
8+
return value;
9+
}
10+
11+
public void setValue(String value) {
12+
this.value = value;
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
import io.fabric8.kubernetes.api.model.ConfigMap;
4+
import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
5+
import io.javaoperatorsdk.operator.api.reconciler.*;
6+
import io.javaoperatorsdk.operator.api.reconciler.dependent.Dependent;
7+
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
8+
import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource;
9+
10+
import java.util.Map;
11+
import java.util.concurrent.atomic.AtomicInteger;
12+
13+
@ControllerConfiguration(dependents = {
14+
@Dependent(type = ConfigMapDependentResource1.class,
15+
activationCondition = ActivationCondition.class),
16+
@Dependent(type = ConfigMapDependentResource2.class,
17+
activationCondition = ActivationCondition.class),
18+
@Dependent(type = SecretDependentResource.class)
19+
})
20+
public class MultipleActivationSharingInformerReconciler
21+
implements Reconciler<MultipleActivationSharingInformerCustomResource> {
22+
23+
public static final String CONFIG_MAP_INFORMER_NAME = "ConfigMapInformer";
24+
private final AtomicInteger numberOfReconciliationExecution = new AtomicInteger(0);
25+
26+
InformerEventSource<ConfigMap,MultipleActivationSharingInformerCustomResource> configMapES;
27+
28+
29+
public MultipleActivationSharingInformerReconciler() {
30+
}
31+
32+
@Override
33+
public UpdateControl<MultipleActivationSharingInformerCustomResource> reconcile(
34+
MultipleActivationSharingInformerCustomResource resource,
35+
Context<MultipleActivationSharingInformerCustomResource> context) {
36+
37+
numberOfReconciliationExecution.incrementAndGet();
38+
39+
return UpdateControl.noUpdate();
40+
}
41+
42+
public int getNumberOfReconciliationExecution() {
43+
return numberOfReconciliationExecution.get();
44+
}
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.javaoperatorsdk.operator.sample.multipleactivationsharinginformer;
2+
3+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
4+
import io.fabric8.kubernetes.api.model.Secret;
5+
import io.javaoperatorsdk.operator.api.reconciler.Context;
6+
import io.javaoperatorsdk.operator.processing.dependent.kubernetes.CRUDKubernetesDependentResource;
7+
import io.javaoperatorsdk.operator.sample.workflowmultipleactivation.WorkflowMultipleActivationCustomResource;
8+
9+
import java.util.Base64;
10+
import java.util.Map;
11+
12+
public class SecretDependentResource
13+
extends CRUDKubernetesDependentResource<Secret, MultipleActivationSharingInformerCustomResource> {
14+
15+
public SecretDependentResource() {
16+
super(Secret.class);
17+
}
18+
19+
@Override
20+
protected Secret desired(MultipleActivationSharingInformerCustomResource primary,
21+
Context<MultipleActivationSharingInformerCustomResource> context) {
22+
// basically does not matter since this should not be called
23+
Secret secret = new Secret();
24+
secret.setMetadata(new ObjectMetaBuilder()
25+
.withName(primary.getMetadata().getName())
26+
.withNamespace(primary.getMetadata().getNamespace())
27+
.build());
28+
secret.setData(Map.of("data",
29+
Base64.getEncoder().encodeToString(primary.getSpec().getValue().getBytes())));
30+
return secret;
31+
}
32+
}

0 commit comments

Comments
 (0)