diff --git a/operator/pom.xml b/operator/pom.xml
index 0a9793b..2434857 100644
--- a/operator/pom.xml
+++ b/operator/pom.xml
@@ -15,7 +15,67 @@
Operator
Test Operator
+
+ true
+
+
+ io.quarkiverse.operatorsdk
+ quarkus-operator-sdk
+
+
+ io.quarkiverse.operatorsdk
+ quarkus-operator-sdk-bundle-generator
+
+
+ io.quarkus
+ quarkus-openshift
+
+
+ io.quarkiverse.operatorsdk
+ quarkus-operator-sdk-bundle-generator-deployment
+ provided
+
+
+ io.quarkus
+ quarkus-junit5
+ test
+
+
+ io.quarkus
+ quarkus-junit5-mockito
+ test
+
+
+ org.awaitility
+ awaitility
+ test
+
+
+
+
+ io.quarkus
+ quarkus-maven-plugin
+
+
+
+ build
+
+
+
+
+
+
+
+
+
+ native
+
+ native
+
+
+
+
\ No newline at end of file
diff --git a/operator/src/main/java/io/javaoperatorsdk/operator/longevitytest/ConfigMapReconciler.java b/operator/src/main/java/io/javaoperatorsdk/operator/longevitytest/ConfigMapReconciler.java
new file mode 100644
index 0000000..c320b00
--- /dev/null
+++ b/operator/src/main/java/io/javaoperatorsdk/operator/longevitytest/ConfigMapReconciler.java
@@ -0,0 +1,78 @@
+package io.javaoperatorsdk.operator.longevitytest;
+
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.fabric8.kubernetes.api.model.ConfigMap;
+import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
+import io.fabric8.kubernetes.api.model.Secret;
+import io.fabric8.kubernetes.api.model.SecretBuilder;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.javaoperatorsdk.operator.api.config.informer.InformerConfiguration;
+import io.javaoperatorsdk.operator.api.reconciler.*;
+import io.javaoperatorsdk.operator.processing.event.source.EventSource;
+import io.javaoperatorsdk.operator.processing.event.source.informer.InformerEventSource;
+
+@ControllerConfiguration(labelSelector = "app=longevity-test")
+public class ConfigMapReconciler
+ implements Reconciler, EventSourceInitializer {
+
+ private static final Logger log = LoggerFactory.getLogger(ConfigMapReconciler.class);
+
+ private static final String DATA_KEY = "key";
+
+ @Inject
+ private KubernetesClient client;
+
+ @Override
+ public UpdateControl reconcile(ConfigMap configMap, Context context) {
+ log.debug("Reconciling ConfigMap name: {}, namespace: {}",
+ configMap.getMetadata().getName(),
+ configMap.getMetadata().getNamespace());
+
+ var maybeSecret = context.getSecondaryResource(Secret.class);
+ maybeSecret.ifPresentOrElse(secret -> {
+ if (!match(secret, configMap)) {
+ log.debug("Updating Secret, name:{}, namespace:{}", configMap.getMetadata().getName(),
+ configMap.getMetadata().getName());
+ secret.setData(Map.of(DATA_KEY, configMap.getData().get(DATA_KEY)));
+ client.resource(secret).replace();
+ }
+ }, () -> {
+ log.debug("Creating Secret, name:{}, namespace:{}", configMap.getMetadata().getName(),
+ configMap.getMetadata().getName());
+ client.resource(desired(configMap)).create();
+ });
+ return UpdateControl.noUpdate();
+ }
+
+ private boolean match(Secret secret, ConfigMap configMap) {
+ return secret.getData().get(DATA_KEY).equals(configMap.getData().get(DATA_KEY));
+ }
+
+ @Override
+ public Map prepareEventSources(EventSourceContext context) {
+ InformerEventSource secretES =
+ new InformerEventSource<>(InformerConfiguration.from(Secret.class, context)
+ .build(), context);
+ return EventSourceInitializer.nameEventSources(secretES);
+ }
+
+ private Secret desired(ConfigMap configMap) {
+ var secret = new SecretBuilder()
+ .withMetadata(new ObjectMetaBuilder()
+ .withName(configMap.getMetadata().getName())
+ .withNamespace(configMap.getMetadata().getNamespace())
+ .withLabels(Map.of("app", "longevity-test"))
+ .build())
+ .withData(Map.of(DATA_KEY, configMap.getData().get(DATA_KEY)))
+ .build();
+ secret.addOwnerReference(configMap);
+ return secret;
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index 88e9879..6053103 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,6 +57,8 @@
2.21.0
1.0
1.8.0
+ 2.16.3.Final
+ 5.1.0
@@ -67,6 +69,13 @@
+
+ io.quarkiverse.operatorsdk
+ quarkus-operator-sdk-bom
+ ${quarkus.operator.sdk.version}
+ pom
+ import
+
org.junit
junit-bom
@@ -168,7 +177,7 @@
initialize
- longevitytest.project.root
+ longevity.test.project.root