diff --git a/opennms-container/minion/Dockerfile b/opennms-container/minion/Dockerfile
index cf3cc4796e94..d48680b3da1f 100644
--- a/opennms-container/minion/Dockerfile
+++ b/opennms-container/minion/Dockerfile
@@ -59,7 +59,7 @@ RUN chmod +x /tmp/plugins.sh && cd /tmp && ./plugins.sh && rm ./plugins.sh
##
FROM ${BASE_IMAGE}
-ARG REQUIRED_RPMS="hostname uuid"
+ARG REQUIRED_RPMS="hostname uuid gettext"
# Collect generic steps in a layer for caching
@@ -95,12 +95,10 @@ COPY container-fs/prom-jmx-default-config.yaml /opt/prom-jmx-exporter/config.yam
# If you copy from /opt/minion to /opt/minion the permissions are not preserved
# We would have 755 for minion:root instead of 775 and prevents writing lock files in /opt/minion
COPY --chown=10001:0 --from=minion-base /opt /opt
-COPY --chown=10001:0 --from=minion-plugins /opt/usr-plugins /opt/minion/deploy
-# Install confd.io configuration files and scripts and ensure they are executable
-COPY ./container-fs/confd/ /opt/minion/confd/
-RUN chmod +x /opt/minion/confd/scripts/*
-COPY ./minion-config-schema.yml /opt/minion/confd/
+# Overlay container-specific etc files (config files and featuresBoot templates)
+COPY --chown=10001:0 container-fs/etc/ /opt/minion/etc/
+COPY --chown=10001:0 --from=minion-plugins /opt/usr-plugins /opt/minion/deploy
# Create the directory for server certificates
RUN install -d -m 750 /opt/minion/server-certs
diff --git a/opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml b/opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml
deleted file mode 100644
index 64a65cbdfba5..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "confd-telemetry-feature.xml.tmpl"
-dest = "/opt/minion/deploy/confd-telemetry-feature.xml"
-keys = [
- "/telemetry/flows"
-]
diff --git a/opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml b/opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml
deleted file mode 100644
index d5d5ba0f7746..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "custom.system.properties.tmpl"
-dest = "/opt/minion/etc/custom.system.properties"
-keys = [
- "/system/properties"
-]
diff --git a/opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml
deleted file mode 100644
index f49e92fd5d5f..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-[template]
-src = "disable-jms.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/disable-jms.boot"
-keys = [
- "/ipc/rpc/kafka",
- "/ipc/sink/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/disable-jms.boot"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml
deleted file mode 100644
index 6c837b5e19ac..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "dominion-scv.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/dominion-scv.boot"
-keys = [
- "/scv"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/dominion-scv.boot"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml
deleted file mode 100644
index aab9d134caef..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "grpc.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/grpc.boot"
-keys = [
- "/ipc/grpc"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/grpc.boot"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml b/opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml
deleted file mode 100644
index a2d7c8d38815..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "instance-id.properties.tmpl"
-dest = "/opt/minion/etc/opennms.properties.d/instance-id.properties"
-keys = [
- "/org.opennms.instance.id"
-]
diff --git a/opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml
deleted file mode 100644
index ac4c827d9e35..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-[template]
-src = "jaeger.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/jaeger.boot"
-keys = [
- "/system/properties/JAEGER_AGENT_HOST",
- "/system/properties/JAEGER_ENDPOINT"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/jaeger.boot"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml
deleted file mode 100644
index d001621c8db7..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "kafka-ipc.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/kafka-ipc.boot"
-keys = [
- "/ipc/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-ipc.boot"
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml
deleted file mode 100644
index a0f0fe06f704..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "kafka-rpc.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/kafka-rpc.boot"
-keys = [
- "/ipc/rpc/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-rpc.boot"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml
deleted file mode 100644
index 7ce294ef616f..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "kafka-sink.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/kafka-sink.boot"
-keys = [
- "/ipc/sink/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-sink.boot"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml b/opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml
deleted file mode 100644
index f89b2fdc05b3..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "kafka-twin.boot.tmpl"
-dest = "/opt/minion/etc/featuresBoot.d/kafka-twin.boot"
-keys = [
- "/ipc/twin/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/featuresBoot.d/kafka-twin.boot"
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml
deleted file mode 100644
index c3c2e62caed4..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "org.apache.karaf.management.cfg.tmpl"
-dest = "/opt/minion/etc/org.apache.karaf.management.cfg"
-keys = [
- "/karaf/management/rmi"
-]
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml
deleted file mode 100644
index 793f4176a3da..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "org.apache.karaf.shell.cfg.tmpl"
-dest = "/opt/minion/etc/org.apache.karaf.shell.cfg"
-keys = [
- "/karaf/shell/ssh"
-]
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml
deleted file mode 100644
index ed943d436267..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.core.ipc.grpc.client.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.core.ipc.grpc.client.cfg"
-keys = [
- "/ipc/grpc"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.grpc.client.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml
deleted file mode 100644
index d2ea663bd1e7..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.core.ipc.kafka.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.core.ipc.kafka.cfg"
-keys = [
- "/ipc/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.kafka.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml
deleted file mode 100644
index a1da31892a88..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.core.ipc.rpc.kafka.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.core.ipc.rpc.kafka.cfg"
-keys = [
- "/ipc/rpc/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.rpc.kafka.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml
deleted file mode 100644
index 83d18dc472dc..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.core.ipc.sink.kafka.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.core.ipc.sink.kafka.cfg"
-keys = [
- "/ipc/sink/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.sink.kafka.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml
deleted file mode 100644
index 761981366624..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.core.ipc.sink.offheap.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.core.ipc.sink.offheap.cfg"
-keys = [
- "/ipc/sink/offheap"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.sink.offheap.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml
deleted file mode 100644
index ab9413c62eea..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.core.ipc.twin.kafka.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.core.ipc.twin.kafka.cfg"
-keys = [
- "/ipc/twin/kafka"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.core.ipc.twin.kafka.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml
deleted file mode 100644
index fc56588d243c..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.features.minion.dominion.grpc.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.features.minion.dominion.grpc.cfg"
-keys = [
- "/dominion/grpc"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.features.minion.dominion.grpc.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml
deleted file mode 100644
index 82bddd265c35..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml
+++ /dev/null
@@ -1,9 +0,0 @@
-[template]
-src = "org.opennms.minion.controller.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.minion.controller.cfg"
-keys = [
- "/location",
- "/id",
- "/broker-url"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.minion.controller.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml
deleted file mode 100644
index b145fab29bb3..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.minion.process-env.tmpl"
-dest = "/opt/minion/etc/minion-process.env"
-keys = [
- "/process-env"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/minion-process.env"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml
deleted file mode 100644
index addceb3530d3..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.minion.server-certificates.tmpl"
-dest = "/opt/minion/etc/minion-server-certs.env"
-keys = [
- "/server-certs"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/minion-server-certs.env"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml
deleted file mode 100644
index b21f2358be00..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.netmgt.syslog.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.netmgt.syslog.cfg"
-keys = [
- "/netmgt/syslog"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.netmgt.syslog.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml
deleted file mode 100644
index 75404132977b..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml
+++ /dev/null
@@ -1,7 +0,0 @@
-[template]
-src = "org.opennms.netmgt.trapd.cfg.tmpl"
-dest = "/opt/minion/etc/org.opennms.netmgt.trapd.cfg"
-keys = [
- "/netmgt/traps"
-]
-reload_cmd = "/opt/minion/confd/scripts/remove-if-empty /opt/minion/etc/org.opennms.netmgt.trapd.cfg"
diff --git a/opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml b/opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml
deleted file mode 100644
index b71b783ebc27..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "org.ops4j.pax.web.cfg.tmpl"
-dest = "/opt/minion/etc/org.ops4j.pax.web.cfg"
-keys = [
- "/jetty/web"
-]
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml b/opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml
deleted file mode 100644
index 3cde4f6b8efa..000000000000
--- a/opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-[template]
-src = "prom-jmx-exporter.yaml.tmpl"
-dest = "/opt/prom-jmx-exporter/config.yaml"
-keys = [
- "/java/agent/prom-jmx-exporter"
-]
diff --git a/opennms-container/minion/container-fs/confd/confd.toml b/opennms-container/minion/container-fs/confd/confd.toml
deleted file mode 100644
index 89e0b3eba326..000000000000
--- a/opennms-container/minion/container-fs/confd/confd.toml
+++ /dev/null
@@ -1,4 +0,0 @@
-confdir = "/opt/minion/confd"
-backend = "file"
-file = [ "/opt/minion/minion-config.yaml" ]
-log-level = "debug"
diff --git a/opennms-container/minion/container-fs/confd/directories b/opennms-container/minion/container-fs/confd/directories
deleted file mode 100644
index 04909d627773..000000000000
--- a/opennms-container/minion/container-fs/confd/directories
+++ /dev/null
@@ -1 +0,0 @@
-etc/opennms.properties.d
diff --git a/opennms-container/minion/container-fs/confd/scripts/confd_lib.sh b/opennms-container/minion/container-fs/confd/scripts/confd_lib.sh
deleted file mode 100755
index 73a3d5f6fa7d..000000000000
--- a/opennms-container/minion/container-fs/confd/scripts/confd_lib.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-MINION_ETC_DIR="/opt/minion/etc"
-STATIC_DIR="/opt/minion/confd/static"
-
-# Checks if the given file is empty and if so deletes it.
-removeIfEmpty() {
- local file="$1"
-
- if [ -z "$file" ]; then
- echo "No rendered template was specified"
- exit 1
- fi
-
- if [ -s "$file" ]; then
- return 1
- fi
-
- rm "$file"
- return 0
-}
diff --git a/opennms-container/minion/container-fs/confd/scripts/remove-if-empty b/opennms-container/minion/container-fs/confd/scripts/remove-if-empty
deleted file mode 100755
index 9adf03cf8c08..000000000000
--- a/opennms-container/minion/container-fs/confd/scripts/remove-if-empty
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env bash
-. "/opt/minion/confd/scripts/confd_lib.sh"
-
-if removeIfEmpty "$1"; then
- echo "Removed file '$1' since it was empty after rendering"
-fi
diff --git a/opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl b/opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl
deleted file mode 100644
index e24857cb96fd..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl
+++ /dev/null
@@ -1,67 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-
-
-
-
-{{$flowsPath := "/telemetry/flows" -}}
-{{$singlePortPath := (print $flowsPath "/single-port-listener") -}}
-{{if eq (getv (print $singlePortPath "/enabled") "false") "true" -}}
-
- name={{getv (print $singlePortPath "/name") "Single-Port-Flow-Listener"}}
- class-name=org.opennms.netmgt.telemetry.listeners.UdpListener
-{{if not (exists (print $singlePortPath "/parameters/port")) -}}
- parameters.port=50000
-{{end -}}
-{{range gets (print $singlePortPath "/parameters/*") -}}
- parameters.{{base .Key}}={{.Value}}
-{{end -}}
- parsers.1.name=Netflow-5
- parsers.1.class-name=org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow5UdpParser
- parsers.1.parameters.maxClockSkew=300
-{{range gets (print $singlePortPath "/parser-parameters/*") -}}
- parsers.1.parameters.{{base .Key}}={{.Value}}
-{{end -}}
- parsers.2.name=Netflow-9
- parsers.2.class-name=org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow9UdpParser
- parsers.2.parameters.maxClockSkew=300
-{{range gets (print $singlePortPath "/parser-parameters/*") -}}
- parsers.2.parameters.{{base .Key}}={{.Value}}
-{{end -}}
- parsers.3.name=IPFIX
- parsers.3.class-name=org.opennms.netmgt.telemetry.protocols.netflow.parser.IpfixUdpParser
- parsers.3.parameters.maxClockSkew=300
-{{range gets (print $singlePortPath "/parser-parameters/*") -}}
- parsers.3.parameters.{{base .Key}}={{.Value}}
-{{end -}}
- parsers.4.name=SFlow
- parsers.4.class-name=org.opennms.netmgt.telemetry.protocols.sflow.parser.SFlowUdpParser
-{{range gets (print $singlePortPath "/parser-parameters/*") -}}
- parsers.4.parameters.{{base .Key}}={{.Value}}
-{{end -}}
-
-{{end -}}
-{{range lsdir (print $flowsPath "/listeners") -}}
-{{$listenerPath := (print $flowsPath "/listeners/" .) -}}
-{{$listenerName := base $listenerPath -}}
-
- name={{$listenerName}}
- class-name={{getv (print $listenerPath "/class-name")}}
-{{range gets (print $listenerPath "/parameters/*") -}}
- parameters.{{base .Key}}={{.Value}}
-{{end -}}
-{{range $parserIndex, $element := lsdir (print $listenerPath "/parsers") -}}
-{{$parserPath := (print $listenerPath "/parsers/" .) -}}
-{{$parserName := base $parserPath -}}
- parsers.{{$parserIndex}}.name={{$parserName}}
- parsers.{{$parserIndex}}.class-name={{getv (print $parserPath "/class-name")}}
-{{range gets (print $parserPath "/parameters/*") -}}
- parsers.{{$parserIndex}}.parameters.{{base .Key}}={{.Value}}
-{{end -}}
-{{end -}}
-
-{{end -}}
-
-
-
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl b/opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl
deleted file mode 100644
index 7d2c2a12f526..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/system/properties/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl
deleted file mode 100644
index 072d22db2f51..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if (and (exists "/ipc/rpc/kafka/bootstrap.servers") (exists "/ipc/sink/kafka/bootstrap.servers")) -}}
-!minion-jms
-!opennms-core-ipc-jms
-{{end -}}
diff --git a/opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl
deleted file mode 100644
index f52ca1db809d..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{$provider := (getv "/scv/provider" "") -}}
-{{if eq $provider "dominion" -}}
-!scv-jceks-impl
-dominion-secure-credentials-vault
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl
deleted file mode 100644
index f59ccf6eb672..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if exists "/ipc/grpc/host" -}}
-!opennms-core-ipc-jms
-!minion-jms
-opennms-core-ipc-grpc-client
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl b/opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl
deleted file mode 100644
index dcf70077bc09..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{$instanceIdKey := "/org.opennms.instance.id" -}}
-{{if exists $instanceIdKey -}}
-org.opennms.instance.id={{getv $instanceIdKey}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl
deleted file mode 100644
index a3b0f4c7e6b0..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if or (exists "/system/properties/JAEGER_AGENT_HOST") (exists "/system/properties/JAEGER_ENDPOINT") -}}
-opennms-core-tracing-jaeger
-{{end -}}
diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl
deleted file mode 100644
index 2523f2f25eee..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if exists "/ipc/kafka/bootstrap.servers" -}}
-!minion-jms
-!opennms-core-ipc-jms
-opennms-core-ipc-kafka
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl
deleted file mode 100644
index 3c808b5c8b3e..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if exists "/ipc/rpc/kafka/bootstrap.servers" -}}
-!opennms-core-ipc-rpc-jms
-opennms-core-ipc-rpc-kafka
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl
deleted file mode 100644
index f01a5558fa83..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if exists "/ipc/sink/kafka/bootstrap.servers" -}}
-!opennms-core-ipc-sink-camel
-opennms-core-ipc-sink-kafka
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl b/opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl
deleted file mode 100644
index 1df7e2bfe3be..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if exists "/ipc/twin/kafka/bootstrap.servers" -}}
-!opennms-core-ipc-twin-jms
-opennms-core-ipc-twin-kafka
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl
deleted file mode 100644
index ed18e9a7dd2d..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-#
-# DON'T EDIT THIS FILE :: GENERATED WITH CONFD
-#
-{{$karafSshPath := "/karaf/shell/ssh" -}}
-sshPort={{getv (print $karafSshPath "/port") "8201"}}
-sshHost={{getv (print $karafSshPath "/host") "127.0.0.1"}}
-hostKeyFormat=PEM
-sshRealm=karaf
-hostKey=${karaf.etc}/host.key
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl
deleted file mode 100644
index 45d52ff10060..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/ipc/grpc/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl
deleted file mode 100644
index 6cf3d9966032..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/ipc/kafka/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl
deleted file mode 100644
index 7ee576525e76..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/ipc/rpc/kafka/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl
deleted file mode 100644
index d1cc1de1443e..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/ipc/sink/kafka/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl
deleted file mode 100644
index c7417c872958..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/ipc/sink/offheap/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl
deleted file mode 100644
index 6478aaed6be5..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/ipc/twin/kafka/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl
deleted file mode 100644
index f59411603d55..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{$grpcPath := "/dominion/grpc/" -}}
-{{if exists (print $grpcPath "host") -}}
-host = {{getv (print $grpcPath "host")}}
-{{end -}}
-{{if exists (print $grpcPath "port") -}}
-port = {{getv (print $grpcPath "port")}}
-{{end -}}
-{{if exists (print $grpcPath "client-secret") -}}
-clientSecret = {{getv (print $grpcPath "client-secret")}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl
deleted file mode 100644
index c5d006e6c66d..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{if exists "/location" -}}
-location = {{getv "/location"}}
-{{end -}}
-{{if exists "/id" -}}
-id = {{getv "/id"}}
-{{end -}}
-{{if exists "/broker-url" -}}
-broker-url = {{getv "/broker-url"}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl
deleted file mode 100644
index 8d090807c85d..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range $idx, $elm := ls "/process-env/java-opts" -}}
-{{if not $idx -}}
-#
-# DON'T EDIT THIS FILE :: GENERATED WITH CONFD
-#
-CUSTOM_JAVA_OPTS=
- {{- range $index, $element := getvs "/process-env/java-opts/*" -}}
- {{- if $index}} {{end -}}
- {{- $element -}}
- {{- end}}
-{{end -}}
-{{end -}}
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl
deleted file mode 100644
index 21563cb1e344..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range $idx, $elm := getvs "/server-certs/*" -}}
-{{if not $idx -}}
-#
-# DON'T EDIT THIS FILE :: GENERATED WITH CONFD
-#
-{{end -}}
-{{.}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl
deleted file mode 100644
index 3ef13aedc8bb..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/netmgt/syslog/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl
deleted file mode 100644
index 5ad281ec63ce..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-{{range gets "/netmgt/traps/*" -}}
-{{base .Key}} = {{.Value}}
-{{end -}}
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl b/opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl
deleted file mode 100644
index 6b7a5c51810c..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-#
-# DON'T EDIT THIS FILE :: GENERATED WITH CONFD
-#
-{{$jettyWebPath := "/jetty/web" -}}
-org.osgi.service.http.port={{getv (print $jettyWebPath "/port") "8181"}}
-org.ops4j.pax.web.listening.addresses={{getv (print $jettyWebPath "/host") "0.0.0.0"}}
-javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
-org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl b/opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl
deleted file mode 100644
index 194f11b217a5..000000000000
--- a/opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# DON'T EDIT THIS FILE :: GENERATED WITH CONFD
-#
-{{$promJmxPath := "/java/agent/prom-jmx-exporter" -}}
-startDelaySeconds: {{getv (print $promJmxPath "/startDelaySeconds") "0"}}
-lowercaseOutputName: {{getv (print $promJmxPath "/lowerCaseOutputName") "true"}}
-lowercaseOutputLabelNames: {{getv (print $promJmxPath "/lowercaseOutputLabelNames") "true"}}
-autoExcludeObjectNameAttributes: {{getv (print $promJmxPath "/autoExcludeObjectNameAttributes") "true"}}
-
-{{$woSize := len (getvs (print $promJmxPath "/includeObjectNames/*")) -}}
-{{if gt $woSize 0 -}}
-includeObjectNames:
-{{range getvs (print $promJmxPath "/includeObjectNames/*") -}}
-- "{{.}}"
-{{end -}}
-{{end -}}
-
-{{$boSize := len (getvs (print $promJmxPath "/excludeObjectNames/*")) -}}
-{{if gt $boSize 0 -}}
-excludeObjectNames:
-{{range getvs (print $promJmxPath "/excludeObjectNames/*") -}}
-- "{{.}}"
-{{end -}}
-{{end -}}
-
-rules:
-- pattern: org\.opennms\..+\.(.+)<>Value
- name: minion_$1_$2
- type: GAUGE
-
-- pattern: org\.opennms\..+\.(.+)<>Count
- name: minion_$1_$2_count
- type: COUNTER
-
-- pattern: org\.opennms\..+\.(.+)<>(\d+)thPercentile
- name: minion_$1_$2
- type: GAUGE
- labels:
- quantile: "0.$3"
-
-# Per-device trapd metrics
-- pattern: 'org\.opennms\.netmgt\.trapd\.device]+)><>(\w+)'
- name: trapd_device_$4
- type: COUNTER
- labels:
- location: "$1"
- ip: "$2"
- type: "$3"
diff --git a/opennms-container/minion/container-fs/entrypoint.sh b/opennms-container/minion/container-fs/entrypoint.sh
index cddfe6dae48e..5a4524ce7806 100755
--- a/opennms-container/minion/container-fs/entrypoint.sh
+++ b/opennms-container/minion/container-fs/entrypoint.sh
@@ -6,21 +6,21 @@
# Cause false/positives
# shellcheck disable=SC2086
-set -e
+set -eE
+
+trap 'rc=$?; echo "[Startup][ERROR] entrypoint failed at line ${LINENO} (exit=${rc})"; exit ${rc}' ERR
+
umask 002
export MINION_HOME="/opt/minion"
export KARAF_HOME="${MINION_HOME}"
-MINION_CONFIG="${MINION_HOME}/etc/org.opennms.minion.controller.cfg"
MINION_PROCESS_ENV_CFG="${MINION_HOME}/etc/minion-process.env"
MINION_SERVER_CERTS_CFG="${MINION_HOME}/etc/minion-server-certs.env"
MINION_OVERLAY_ETC="/opt/minion-etc-overlay"
-CONFD_KEY_STORE="${MINION_HOME}/minion-config.yaml"
-CONFD_CONFIG_DIR="${MINION_HOME}/confd"
-CONFD_BIN="/usr/bin/confd"
-CONFD_CONFIG_FILE="${CONFD_CONFIG_DIR}/confd.toml"
CACERTS="${MINION_HOME}/cacerts"
+FEATURES_BOOT_DIR="${MINION_HOME}/etc/featuresBoot.d"
+FEATURES_BOOT_TEMPLATES_DIR="${FEATURES_BOOT_DIR}/templates"
export JAVA_OPTS="${JAVA_OPTS} -Xms${JAVA_MIN_MEM:-2g} -Xmx${JAVA_MAX_MEM:-2g}"
# Prometheus JMX Exporter Configuration
@@ -33,7 +33,7 @@ export JAVA_OPTS="${JAVA_OPTS} -Xms${JAVA_MIN_MEM:-2g} -Xmx${JAVA_MAX_MEM:-2g}"
# - All other settings are optional and have sensible defaults
#
# Default behavior:
-# - Configuration is managed via confd templates
+# - Configuration is managed via environment variables, which can be set in the Dockerfile, via docker run -e, or in a docker-compose file.
# - Template uses key/values from /java/agent/prom-jmx-exporter
PROM_JMX_EXPORTER_ENABLED="${PROM_JMX_EXPORTER_ENABLED:-false}" # required
PROM_JMX_EXPORTER_JAR="${PROM_JMX_EXPORTER_JAR:-/opt/prom-jmx-exporter/jmx_prometheus_javaagent.jar}"
@@ -97,7 +97,7 @@ function updateConfig() {
value=$2
file=$3
- # Handling exceptions
+ # Handling exceptions for specific keys
[ "$key" == "class.name" ] && key="class-name"
[ "$key" == "max.packet.size" ] && key="maxPacketSize"
[ "$key" == "template.timeout" ] && key="templateTimeout"
@@ -106,13 +106,62 @@ function updateConfig() {
echo "[Configuring] '$key' in '$file'"
# If config exists in file, replace it. Otherwise, append to file.
- if grep -E -q "^#?$key=" "$file"; then
- sed -r -i "s@^#?$key=.*@$key=$value@g" "$file" #note that no config values may contain an '@' char
+ if grep -E -q "^#?\s*$key\s*=" "$file"; then
+ sed -r -i "s@^#?\s*$key\s*=.*@$key=$value@g" "$file" #note that no config values may contain an '@' char
else
echo "$key=$value" >> "$file"
fi
}
+function applyFeatureBootTemplates() {
+ # Clean only files managed by this script; keep baseline boot files from the image/package.
+ local managed_boot_files=(
+ "kafka-ipc.boot"
+ "kafka-rpc.boot"
+ "kafka-sink.boot"
+ "kafka-twin.boot"
+ "grpc.boot"
+ "disable-jms.boot"
+ "jaeger.boot"
+ "dominion-scv.boot"
+ )
+ local boot_file
+ for boot_file in "${managed_boot_files[@]}"; do
+ rm -f "${FEATURES_BOOT_DIR}/${boot_file}"
+ done
+
+ apply_template() {
+ local name="$1"
+ envsubst < "${FEATURES_BOOT_TEMPLATES_DIR}/${name}" > "${FEATURES_BOOT_DIR}/${name}"
+ echo "[Features] Enabled: ${name}"
+ }
+
+ # IPC strategy — jms, kafka, or grpc
+ case "${MINION_IPC:-}" in
+ jms)
+ echo "[Features] IPC strategy set to JMS."
+ ;;
+ kafka)
+ apply_template "kafka-ipc.boot"
+ apply_template "kafka-rpc.boot"
+ apply_template "kafka-sink.boot"
+ apply_template "kafka-twin.boot"
+ apply_template "disable-jms.boot"
+ ;;
+ grpc)
+ apply_template "grpc.boot"
+ apply_template "disable-jms.boot"
+ ;;
+ *)
+ echo "[Features] No IPC strategy set via MINION_IPC, using defaults."
+ ;;
+ esac
+
+ # Standalone optional features
+ [[ "${JAEGER_ENABLED:-false}" == "true" ]] && apply_template "jaeger.boot" || echo "[Features] Jaeger boot file not applied because JAEGER_ENABLED=${JAEGER_ENABLED:-false}."
+ [[ "${DOMINION_SCV_ENABLED:-false}" == "true" ]] && apply_template "dominion-scv.boot" || echo "[Features] Dominion SCV boot file not applied because DOMINION_SCV_ENABLED=${DOMINION_SCV_ENABLED:-false}."
+}
+
function parseEnvironment() {
# Configure additional features
IFS=$'\n'
@@ -132,12 +181,20 @@ function parseEnvironment() {
if [[ $env_var =~ ^KAFKA_IPC_ ]]; then
ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .)
updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.kafka.cfg"
- if [[ "$ipc_name" == "bootstrap.servers" ]]; then
- echo "opennms-core-ipc-kafka" > ${MINION_HOME}/etc/featuresBoot.d/kafka.boot
- echo "!minion-jms" > ${MINION_HOME}/etc/featuresBoot.d/disable-activemq.boot
- echo "!opennms-core-ipc-jms" >> ${MINION_HOME}/etc/featuresBoot.d/disable-activemq.boot
- fi
fi
+ if [[ $env_var =~ ^KAFKA_RPC_ ]]; then
+ ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .)
+ updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.rpc.kafka.cfg"
+ fi
+ if [[ $env_var =~ ^KAFKA_SINK_ ]]; then
+ ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .)
+ updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.sink.kafka.cfg"
+ fi
+ if [[ $env_var =~ ^KAFKA_TWIN_ ]]; then
+ ipc_name=$(echo "$env_var" | cut -d_ -f3- | tr '[:upper:]' '[:lower:]' | tr _ .)
+ updateConfig "$ipc_name" "${!env_var}" "${MINION_HOME}/etc/org.opennms.core.ipc.twin.kafka.cfg"
+ fi
+
done
}
@@ -156,19 +213,8 @@ initConfig() {
echo "_g_\\:admingroup = group,admin,manager,viewer,systembundles,ssh" >> ${MINION_HOME}/etc/keys.properties && \
chmod 600 "${MINION_HOME}/.ssh/id_rsa"
- # Expose Karaf Shell
- sed -i "/^sshHost/s/=.*/= 0.0.0.0/" ${MINION_HOME}/etc/org.apache.karaf.shell.cfg
-
- # Expose the RMI registry and server
- sed -i "/^rmiRegistryHost/s/=.*/= 0.0.0.0/" ${MINION_HOME}/etc/org.apache.karaf.management.cfg
- sed -i "/^rmiServerHost/s/=.*/= 0.0.0.0/" ${MINION_HOME}/etc/org.apache.karaf.management.cfg
-
- # Set Minion location and connection to OpenNMS instance
- echo "location = ${MINION_LOCATION}" > ${MINION_CONFIG}
- echo "id = ${MINION_ID}" >> ${MINION_CONFIG}
- echo "broker-url = ${OPENNMS_BROKER_URL}" >> ${MINION_CONFIG}
-
parseEnvironment
+ applyFeatureBootTemplates
echo "Configured $(date)" > ${MINION_HOME}/etc/configured
else
@@ -186,15 +232,6 @@ applyOverlayConfig() {
fi
}
-applyConfd() {
- if [ -f "${CONFD_KEY_STORE}" ]; then
- echo "Found a configuration key store, applying configuration via confd."
- runConfd
- else
- echo "No configuration key store present, skipping confd configuration."
- fi
-}
-
applyOpennmsPropertiesD() {
find "${MINION_HOME}/etc/opennms.properties.d" -name '*.properties' | while IFS= read -r filename; do
echo "appending to custom.system.properties: $filename"
@@ -203,30 +240,146 @@ applyOpennmsPropertiesD() {
done
}
+printFeatureBootInventory() {
+ echo "[Features] Active boot files in ${FEATURES_BOOT_DIR}:"
+ if compgen -G "${FEATURES_BOOT_DIR}/*.boot" > /dev/null; then
+ find "${FEATURES_BOOT_DIR}" -maxdepth 1 -name "*.boot" -type f | sort | sed "s#^${FEATURES_BOOT_DIR}/# - #"
+ else
+ echo " - (none)"
+ fi
+}
+
+printStartupDiagnostics() {
+ echo "[Startup] Effective minion mode and toggles:"
+ echo " MINION_IPC=${MINION_IPC:-}"
+ echo " MINION_VALIDATE_FEATURES_BOOT=${MINION_VALIDATE_FEATURES_BOOT:-false}"
+ echo " MINION_REPAIR_FEATURES_BOOT=${MINION_REPAIR_FEATURES_BOOT:-true}"
+ echo " JAEGER_ENABLED=${JAEGER_ENABLED:-false}"
+ echo " DOMINION_SCV_ENABLED=${DOMINION_SCV_ENABLED:-false}"
+ echo " GRPC_CLIENT_HOST=${IPC_GRPC_HOST:-}"
+ echo " GRPC_CLIENT_PORT=${IPC_GRPC_PORT:-}"
+ echo " KAFKA_BOOTSTRAP_SERVERS=${KAFKA_IPC_BOOTSTRAP_SERVERS:-}"
+
+ print_cfg() {
+ local cfg="$1"
+ local path="${MINION_HOME}/etc/${cfg}"
+ echo "[Startup] ${cfg}:"
+ if [[ -f "${path}" ]]; then
+ sed -n '1,120p' "${path}" | sed 's/^/ /'
+ else
+ echo " (missing)"
+ fi
+ }
+
+ print_cfg "org.opennms.minion.controller.cfg"
+ print_cfg "org.opennms.core.ipc.grpc.client.cfg"
+ print_cfg "org.opennms.core.ipc.kafka.cfg"
+}
+
+printKarafResolutionDiagnostics() {
+ local ver
+ local root="${MINION_HOME}/system/org/opennms/karaf/opennms"
+
+ ver="$(grep -E 'mvn:org\.opennms\.karaf/opennms/.*/xml/features' "${MINION_HOME}/etc/org.apache.karaf.features.cfg" \
+ | sed -E 's#.*mvn:org\.opennms\.karaf/opennms/([^/]+)/xml/features.*#\1#' \
+ | head -n1)"
+
+ echo "[Karaf] Repository diagnostics:"
+ echo " configured-opennms-features-version=${ver:-}"
+
+ if [[ -n "${ver}" && -d "${root}/${ver}" ]]; then
+ echo " local-repo-path=${root}/${ver}"
+ find "${root}/${ver}" -maxdepth 1 -type f -name "*features*.xml" | sed 's/^/ found-feature-xml=/' || true
+ else
+ echo " local-repo-path=${root}/${ver} (missing)"
+ fi
+
+ echo "[Karaf] org.ops4j.pax.url.mvn.cfg:"
+ if [[ "${MINION_DEBUG_KARAF_RESOLUTION_DIAGNOSTICS:-false}" == "true" ]]; then
+ if [[ -f "${MINION_HOME}/etc/org.ops4j.pax.url.mvn.cfg" ]]; then
+ sed -n '1,200p' "${MINION_HOME}/etc/org.ops4j.pax.url.mvn.cfg" | sed 's/^/ /'
+ else
+ echo " (missing)"
+ fi
+ else
+ echo " (redacted; set MINION_DEBUG_KARAF_RESOLUTION_DIAGNOSTICS=true to print contents)"
+ fi
+}
+
+validateFeatureBootComposition() {
+ local strict_validation="${MINION_VALIDATE_FEATURES_BOOT:-false}"
+ local repair_missing="${MINION_REPAIR_FEATURES_BOOT:-true}"
+ local missing=0
+
+ require_boot_file() {
+ local name="$1"
+ if [[ ! -f "${FEATURES_BOOT_DIR}/${name}" ]]; then
+ echo "[Features][ERROR] Missing required boot file: ${name}"
+ missing=1
+ fi
+ }
+
+ check_required_boot_files() {
+ missing=0
+
+ case "${MINION_IPC:-}" in
+ kafka)
+ require_boot_file "kafka-ipc.boot"
+ require_boot_file "kafka-rpc.boot"
+ require_boot_file "kafka-sink.boot"
+ require_boot_file "kafka-twin.boot"
+ require_boot_file "disable-jms.boot"
+ ;;
+ grpc)
+ require_boot_file "grpc.boot"
+ require_boot_file "disable-jms.boot"
+ ;;
+ jms|"")
+ # Default/package-provided feature boots are expected to cover JMS.
+ ;;
+ *)
+ echo "[Features][WARN] Unknown MINION_IPC='${MINION_IPC}', skipping strategy-specific checks."
+ ;;
+ esac
+
+ [[ "${JAEGER_ENABLED:-false}" == "true" ]] && require_boot_file "jaeger.boot" || echo "[Features][INFO] Jaeger boot file not required because JAEGER_ENABLED=${JAEGER_ENABLED:-false}."
+ [[ "${DOMINION_SCV_ENABLED:-false}" == "true" ]] && require_boot_file "dominion-scv.boot" || echo "[Features][INFO] Dominion SCV boot file not required because DOMINION_SCV_ENABLED=${DOMINION_SCV_ENABLED:-false}."
+ }
+
+ printFeatureBootInventory
+
+ check_required_boot_files
+
+ if [[ "$missing" -ne 0 && "${repair_missing}" == "true" ]]; then
+ echo "[Features][WARN] Missing boot files detected; attempting auto-repair from templates."
+ applyFeatureBootTemplates
+ printFeatureBootInventory
+ check_required_boot_files
+ fi
+
+ if [[ "$missing" -ne 0 ]]; then
+ if [[ "${strict_validation}" != "true" ]]; then
+ echo "[Features][WARN] Boot file validation found missing files; continuing because MINION_VALIDATE_FEATURES_BOOT=${strict_validation}."
+ return 0
+ fi
+ echo "[Features][ERROR] Boot file validation failed; refusing to start with incomplete feature composition."
+ return 1
+ fi
+
+ echo "[Features] Boot file validation passed."
+}
+
start() {
export KARAF_EXEC="exec"
cd ${MINION_HOME}/bin
exec ./karaf server
}
-runConfd() {
- # Create any directories that confd might write to
- while IFS= read -r dir; do
- local dirToCreate="$MINION_HOME"/"$dir"
- echo "Creating $dirToCreate so confd can write to it"
- mkdir -p "$dirToCreate"
- done < "$CONFD_CONFIG_DIR"/directories
-
- "$CONFD_BIN" -onetime -config-file "$CONFD_CONFIG_FILE"
-}
-
# Order of precedence is (later overwrites former):
# 1. Config set via environment variable
-# 2. Config set via overlayed keystore (confd)
-# 3. Config set via direct file overlay
+# 2. Config set via direct file overlay
configure() {
initConfig
- applyConfd
applyOpennmsPropertiesD
applyOverlayConfig
if [[ "$JACOCO_AGENT_ENABLED" -gt 0 ]]; then
@@ -239,6 +392,13 @@ configure() {
done < "$MINION_PROCESS_ENV_CFG"
export JAVA_OPTS="$CUSTOM_JAVA_OPTS $JAVA_OPTS"
fi
+ if [[ ${MINION_DEBUG_STARTUP_DIAGNOSTICS:-false} == "true" ]]; then
+ printStartupDiagnostics
+ fi
+ if [[ "${MINION_DEBUG_KARAF_RESOLUTION_DIAGNOSTICS:-false}" == "true" ]]; then
+ printKarafResolutionDiagnostics
+ fi
+ validateFeatureBootComposition
if [[ -f "$MINION_SERVER_CERTS_CFG" ]]; then
# cacerts is a symlink to a file, so *do not* put /. on the target
rsync --out-format="%n %C" "$JAVA_HOME/lib/security/cacerts" "$CACERTS"
diff --git a/opennms-container/minion/container-fs/etc/custom.system.properties b/opennms-container/minion/container-fs/etc/custom.system.properties
new file mode 100644
index 000000000000..669cc6a0a9c2
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/custom.system.properties
@@ -0,0 +1,40 @@
+################################################################################
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+#
+# topic prefix for OpenNMS events
+#
+org.opennms.instance.id=${env:OPENNMS_INSTANCE_ID:-OpenNMS}
+
+#
+# All the values specified here will override the default values given
+# in config.properties.
+#
+
+karaf.systemBundlesStartLevel=50
+
+#
+# You can place any customized configuration here.
+#
+org.osgi.framework.system.packages.extra=sun.nio.ch, \
+ sun.misc, \
+ sun.net.dns, \
+ sun.reflect, \
+ sun.security.ssl, \
+ sun.security.x509
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot
new file mode 100644
index 000000000000..224b6359bced
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot
@@ -0,0 +1,2 @@
+!minion-jms
+!opennms-core-ipc-jms
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot
new file mode 100644
index 000000000000..d7cf7ddabca4
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot
@@ -0,0 +1,2 @@
+!scv-jceks-impl
+dominion-secure-credentials-vault
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot
new file mode 100644
index 000000000000..500a0e6f6c22
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot
@@ -0,0 +1,3 @@
+!opennms-core-ipc-jms
+!minion-jms
+opennms-core-ipc-grpc-client
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot
new file mode 100644
index 000000000000..9bb3287b6b65
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot
@@ -0,0 +1 @@
+opennms-core-tracing-jaeger
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot
new file mode 100644
index 000000000000..4ba4a4664aef
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot
@@ -0,0 +1,3 @@
+!minion-jms
+!opennms-core-ipc-jms
+opennms-core-ipc-kafka
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot
new file mode 100644
index 000000000000..3e60771f8eb1
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot
@@ -0,0 +1,2 @@
+!opennms-core-ipc-rpc-jms
+opennms-core-ipc-rpc-kafka
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot
new file mode 100644
index 000000000000..f2f4cc854b53
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot
@@ -0,0 +1,2 @@
+!opennms-core-ipc-sink-camel
+opennms-core-ipc-sink-kafka
diff --git a/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot
new file mode 100644
index 000000000000..8e46f5f0a356
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot
@@ -0,0 +1,2 @@
+!opennms-core-ipc-twin-jms
+opennms-core-ipc-twin-kafka
diff --git a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.management.cfg.tmpl b/opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg
similarity index 68%
rename from opennms-container/minion/container-fs/confd/templates/org.apache.karaf.management.cfg.tmpl
rename to opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg
index 422ca5cd5e3b..4cb8f83e5706 100644
--- a/opennms-container/minion/container-fs/confd/templates/org.apache.karaf.management.cfg.tmpl
+++ b/opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg
@@ -1,35 +1,25 @@
-{{- /* Upon updating this file please ensure that the schema minion-config-schema.yml accurately reflects the keys that
-are used by this template. */ -}}
-#
-# DON'T EDIT THIS FILE :: GENERATED WITH CONFD
-#
-
#
# The properties in this file define the configuration of Apache Karaf's JMX Management
#
-{{$karafRmiPath := "/karaf/management/rmi" -}}
-{{$karafRmiRegistryPath := (print $karafRmiPath "/registry") -}}
-{{$karafRmiServerPath := (print $karafRmiPath "/server") -}}
-
#
# Port number for RMI registry connection
#
-rmiRegistryPort = {{getv (print $karafRmiRegistryPath "/port") "1299"}}
+rmiRegistryPort = ${env:KARAF_MGMT_RMI_REGISTRY_PORT:-1299}
#
# Host for RMI registry
#
-rmiRegistryHost = {{getv (print $karafRmiRegistryPath "/host") "127.0.0.1"}}
+rmiRegistryHost = ${env:KARAF_MGMT_RMI_REGISTRY_HOST:-0.0.0.0}
#
# Port number for RMI server connection
#
-rmiServerPort = {{getv (print $karafRmiServerPath "/port") "45444"}}
+rmiServerPort = ${env:KARAF_MGMT_RMI_SERVER_PORT:-45444}
#
# Host for RMI server
#
-rmiServerHost = {{getv (print $karafRmiServerPath "/host") "127.0.0.1"}}
+rmiServerHost = ${env:KARAF_MGMT_RMI_SERVER_HOST:-0.0.0.0}
#
# Name of the JAAS realm used for authentication
@@ -109,4 +99,4 @@ objectName = connector:name=rmi
#
# Locate an existing MBean server if possible (usefull when Karaf is embedded)
#
-#locateExistingMBeanServerIfPossible = true
\ No newline at end of file
+#locateExistingMBeanServerIfPossible = true
diff --git a/opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg b/opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg
new file mode 100644
index 000000000000..b64b053e8768
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg
@@ -0,0 +1,5 @@
+sshPort=${env:KARAF_SSH_PORT:-8201}
+sshHost=${env:KARAF_SSH_HOST:-0.0.0.0}
+hostKeyFormat=PEM
+sshRealm=karaf
+hostKey=${karaf.etc}/host.key
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg
new file mode 100644
index 000000000000..abef5035c011
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg
@@ -0,0 +1,2 @@
+host = ${env:IPC_GRPC_HOST:-horizon}
+port = ${env:IPC_GRPC_PORT:-8990}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg
new file mode 100644
index 000000000000..50d019d5fd18
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg
@@ -0,0 +1 @@
+bootstrap.servers=${env:KAFKA_IPC_BOOTSTRAP_SERVERS:-kafka:29092}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg
new file mode 100644
index 000000000000..8eb700868612
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg
@@ -0,0 +1,2 @@
+acks = ${env:KAFKA_RPC_ACKS:-1}
+bootstrap.servers = ${env:KAFKA_RPC_BOOTSTRAP_SERVERS:-kafka:29092}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg
new file mode 100644
index 000000000000..17ffac29d23f
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg
@@ -0,0 +1,2 @@
+acks = ${env:KAFKA_SINK_ACKS:-1}
+bootstrap.servers = ${env:KAFKA_SINK_BOOTSTRAP_SERVERS:-kafka:29092}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.offheap.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.offheap.cfg
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg
new file mode 100644
index 000000000000..6c8b550f52b6
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg
@@ -0,0 +1,2 @@
+acks = ${env:KAFKA_TWIN_ACKS:-1}
+bootstrap.servers = ${env:KAFKA_TWIN_BOOTSTRAP_SERVERS:-kafka:29092}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg
new file mode 100644
index 000000000000..1545dec9f8d0
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg
@@ -0,0 +1,3 @@
+host = ${env:DOMINION_GRPC_HOST:-horizon}
+port = ${env:DOMINION_GRPC_PORT:-8990}
+clientSecret = ${env:DOMINION_GRPC_CLIENT_SECRET:-}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg
new file mode 100644
index 000000000000..dffc8de986e9
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg
@@ -0,0 +1,14 @@
+name = Single-Port-Flow-Listener
+class-name = org.opennms.netmgt.telemetry.listeners.UdpListener
+parameters.port = ${env:FLOWS_PORT:-50000}
+parsers.0.name = Netflow-5
+parsers.0.class-name = org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow5UdpParser
+parsers.0.parameters.maxClockSkew = 300
+parsers.1.name = Netflow-9
+parsers.1.class-name = org.opennms.netmgt.telemetry.protocols.netflow.parser.Netflow9UdpParser
+parsers.1.parameters.maxClockSkew = 300
+parsers.2.name = IPFIX
+parsers.2.class-name = org.opennms.netmgt.telemetry.protocols.netflow.parser.IpfixUdpParser
+parsers.2.parameters.maxClockSkew = 300
+parsers.3.name = SFlow
+parsers.3.class-name = org.opennms.netmgt.telemetry.protocols.sflow.parser.SFlowUdpParser
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg
new file mode 100644
index 000000000000..a17e3f1e3895
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg
@@ -0,0 +1,5 @@
+name = JTI-Listener
+class-name = org.opennms.netmgt.telemetry.listeners.UdpListener
+parameters.port = ${env:JTI_PORT:-50001}
+parsers.0.name = JTI
+parsers.0.class-name = org.opennms.netmgt.telemetry.protocols.common.parser.ForwardParser
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg
new file mode 100644
index 000000000000..9d19bd2b7b0b
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg
@@ -0,0 +1,5 @@
+name = NXOS-Listener
+class-name = org.opennms.netmgt.telemetry.listeners.UdpListener
+parameters.port = ${env:NXOS_PORT:-50002}
+parsers.0.name = NXOS
+parsers.0.class-name = org.opennms.netmgt.telemetry.protocols.common.parser.ForwardParser
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg b/opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg
new file mode 100644
index 000000000000..a7881cf31e53
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg
@@ -0,0 +1,3 @@
+location = ${env:MINION_LOCATION:-MINION}
+id = ${env:MINION_ID:-MINION-01}
+broker-url = ${env:OPENNMS_BROKER_URL:-failover:tcp://horizon:61616}
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg
new file mode 100644
index 000000000000..8206ef6c1975
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg
@@ -0,0 +1,3 @@
+syslog.listen.interface = ${env:MINION_SYSLOG_LISTEN_INTERFACE:-0.0.0.0}
+syslog.listen.port = ${env:MINION_SYSLOG_LISTEN_PORT:-1514}
+syslog.useAddressFromVarbind = true
\ No newline at end of file
diff --git a/opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg
new file mode 100644
index 000000000000..64498e5e1f62
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg
@@ -0,0 +1,3 @@
+trapd.listen.interface = ${env:MINION_TRAPD_LISTEN_INTERFACE:-0.0.0.0}
+trapd.listen.port = ${env:MINION_TRAPD_LISTEN_PORT:-1162}
+trapd.useAddressFromVarbind = true
diff --git a/opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg b/opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg
new file mode 100644
index 000000000000..f4ed213a4715
--- /dev/null
+++ b/opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg
@@ -0,0 +1,4 @@
+org.osgi.service.http.port=${env:JETTY_PORT:-8181}
+org.ops4j.pax.web.listening.addresses=${env:JETTY_HOST:-0.0.0.0}
+javax.servlet.context.tempdir=${karaf.data}/pax-web-jsp
+org.ops4j.pax.web.config.file=${karaf.etc}/jetty.xml
diff --git a/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java b/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java
index fe0b67b9a76c..13f3afb03bb7 100644
--- a/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java
+++ b/smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java
@@ -123,6 +123,10 @@ public MinionContainer(final StackModel model, final MinionProfile profile) {
.withEnv("OPENNMS_BROKER_USER", "admin")
.withEnv("OPENNMS_BROKER_PASS", "admin")
.withEnv("JACOCO_AGENT_ENABLED", "1")
+ .withEnv("MINION_VALIDATE_FEATURES_BOOT", "false")
+ .withEnv("MINION_REPAIR_FEATURES_BOOT", "true")
+ .withEnv("MINION_LOCATION", profile.getLocation())
+ .withEnv("MINION_ID", profile.getId())
.withEnv("JAVA_OPTS", "-Xms2g -Xmx2g -Djava.security.egd=file:/dev/./urandom")
.withNetwork(Network.SHARED)
.withNetworkAliases(ALIAS)
@@ -138,80 +142,44 @@ public MinionContainer(final StackModel model, final MinionProfile profile) {
for (final Map.Entry entry : profile.getLegacyConfiguration().entrySet()) {
addEnv(entry.getKey(), entry.getValue());
}
- } else {
- addFileSystemBind(writeMinionConfig(profile).toString(),
- "/opt/minion/minion-config.yaml", BindMode.READ_ONLY, SelinuxContext.SINGLE);
}
if (profile.isJvmDebuggingEnabled()) {
withEnv("KARAF_DEBUG", "true");
withEnv("JAVA_DEBUG_PORT", "" + MINION_DEBUG_PORT);
}
- }
-
- private Path writeMinionConfig(MinionProfile profile) {
- try {
- final Path minionConfig = createTempDirectory(ALIAS).toAbsolutePath().resolve("minion-config.yaml");
- writeMinionConfigYaml(minionConfig, profile);
- return minionConfig;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- private void writeMinionConfigYaml(Path minionConfigYaml, MinionProfile profile) throws IOException {
- // Copy over the default configuration from the class-path
- FileUtils.copyFile(new File(MountableFile.forClasspathResource("minion-config/minion-config.yaml").getFilesystemPath()), minionConfigYaml.toFile());
-
- // Allow other users to read the file
- OverlayUtils.setOverlayPermissions(minionConfigYaml);
-
- String config = "{\n" +
- "\t\"location\": \"" + profile.getLocation() + "\",\n" +
- "\t\"id\": \"" + profile.getId() + "\",\n" +
- "\t\"broker-url\": \"failover:tcp://" + OpenNMSContainer.ALIAS + ":61616\"\n" +
- "}";
- OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(config, Map.class));
- if (!Strings.isNullOrEmpty(profile.getDominionGrpcScvClientSecret())) {
- final String scvConfig = "{\"scv\": {\"provider\": \"dominion\"}}";
- OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(scvConfig, Map.class));
-
- final String gprcConfig = "{\"dominion\": { \"grpc\": { \"client-secret\":\"" + profile.getDominionGrpcScvClientSecret() + "\"}}}";
- OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(gprcConfig, Map.class));
- }
+ withEnv("OPENNMS_BROKER_URL", "failover:tcp://" + OpenNMSContainer.ALIAS + ":61616");
if (IpcStrategy.KAFKA.equals(model.getIpcStrategy())) {
- String kafkaIpc = "{\n" +
- "\t\"ipc\": {\n" +
- "\t\t\"kafka\": {\n" +
- "\t\t\t\"bootstrap.servers\": \""+ OpenNMSContainer.KAFKA_ALIAS +":9092\",\n" +
- "\t\t\t\"compression.type\": \""+ model.getKafkaCompressionStrategy().getCodec() +"\"\n" +
- "\t\t}\n" +
- "\t}\n" +
- "}";
- OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(kafkaIpc, Map.class));
+ withEnv("MINION_IPC", "kafka");
+ withEnv("KAFKA_IPC_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092");
+ withEnv("KAFKA_RPC_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092");
+ withEnv("KAFKA_SINK_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092");
+ withEnv("KAFKA_TWIN_BOOTSTRAP_SERVERS", OpenNMSContainer.KAFKA_ALIAS + ":9092");
+ if (model.getKafkaCompressionStrategy() != null) {
+ withEnv("KAFKA_IPC_COMPRESSION_TYPE", model.getKafkaCompressionStrategy().getCodec());
+ withEnv("KAFKA_SINK_COMPRESSION_TYPE", model.getKafkaCompressionStrategy().getCodec());
+ withEnv("KAFKA_TWIN_COMPRESSION_TYPE", model.getKafkaCompressionStrategy().getCodec());
+ }
} else if (IpcStrategy.GRPC.equals(model.getIpcStrategy())) {
- String grpc = "{\n" +
- "\t\"ipc\": {\n" +
- "\t\t\"grpc\": {\n" +
- "\t\t\t\"host\": \"" + OpenNMSContainer.ALIAS + "\",\n" +
- "\t\t\t\"port\": 8990\n" +
- "\t\t}\n" +
- "\t}\n" +
- "}";
- OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(grpc, Map.class));
+ withEnv("MINION_IPC", "grpc");
+ withEnv("IPC_GRPC_HOST", OpenNMSContainer.ALIAS);
+ withEnv("IPC_GRPC_PORT", "8990");
+ } else if (IpcStrategy.JMS.equals(model.getIpcStrategy())) {
+ withEnv("MINION_IPC", "jms");
}
if (model.isJaegerEnabled()) {
- String jaeger = "{\n" +
- "\t\"system\": {\n" +
- "\t\t\"properties\": {\n" +
- "\t\t\t\"JAEGER_ENDPOINT\": \"" + JaegerContainer.getThriftHttpURL() + "\"\n" +
- "\t\t}\n" +
- "\t}\n" +
- "}";
- OverlayUtils.writeYaml(minionConfigYaml, jsonMapper.readValue(jaeger, Map.class));
+ withEnv("JAEGER_ENABLED", "true");
+ withEnv("JAEGER_ENDPOINT", JaegerContainer.getThriftHttpURL());
+ }
+
+ if (!Strings.isNullOrEmpty(profile.getDominionGrpcScvClientSecret())) {
+ withEnv("DOMINION_SCV_ENABLED", "true");
+ withEnv("DOMINION_GRPC_HOST", OpenNMSContainer.ALIAS);
+ withEnv("DOMINION_GRPC_PORT", "8990");
+ withEnv("DOMINION_GRPC_CLIENT_SECRET", profile.getDominionGrpcScvClientSecret());
}
}
diff --git a/smoke-test/src/main/resources/minion-overlay/org.opennms.netmgt.trapd.cfg b/smoke-test/src/main/resources/minion-overlay/org.opennms.netmgt.trapd.cfg
new file mode 100644
index 000000000000..d6f922354e2d
--- /dev/null
+++ b/smoke-test/src/main/resources/minion-overlay/org.opennms.netmgt.trapd.cfg
@@ -0,0 +1,3 @@
+trapd.listen.interface = 0.0.0.0
+trapd.listen.port = 1162
+trapd.useAddressFromVarbind = true