summaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
Diffstat (limited to 'module')
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java2
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java20
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java5
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java6
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java2
-rw-r--r--module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl16
6 files changed, 36 insertions, 15 deletions
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java b/module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java
index 0b65aaa..6b23cdd 100644
--- a/module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java
+++ b/module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java
@@ -10,4 +10,6 @@ public class Cluster {
public Cluster(String name) {
this.name = name;
}
+
+ protected Cluster() {}
}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java b/module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java
index 3888661..a420671 100644
--- a/module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java
+++ b/module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java
@@ -1,22 +1,19 @@
package io.trygvis.rules.dba;
-import com.fasterxml.jackson.annotation.JsonIdentityReference;
import io.trygvis.rules.machine.Machine;
import io.trygvis.rules.machine.MachineSpecification;
//@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class Container {
- public final String id;
-
-// @JsonIdentityReference(alwaysAsId = true)
- public final Cluster cluster;
- public final String name;
- public final String machineRole;
- public final String image;
- public final String tag;
+ public String id;
+ public Cluster cluster;
+ public String name;
+ public String machineRole;
+ public String image;
+ public String tag;
private Machine machine;
- public final MachineSpecification machineSpecification;
+ public MachineSpecification machineSpecification;
public Container(Cluster cluster, String name, String machineRole, String image, String tag,
MachineSpecification machineSpecification) {
@@ -29,6 +26,9 @@ public class Container {
this.machineSpecification = machineSpecification;
}
+ protected Container() {
+ }
+
public Cluster getCluster() {
return cluster;
}
diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
index e2abd5a..7dc24ad 100644
--- a/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
+++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
@@ -2,6 +2,7 @@ package io.trygvis.rules.engine;
import ch.qos.logback.core.util.FileUtil;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyName;
import com.fasterxml.jackson.databind.SerializationFeature;
@@ -72,9 +73,9 @@ public class DbIo {
public List<Object> load(File file) throws IOException {
var parser = mapper.getFactory().createParser(file);
- var objects = mapper.readValues(parser, DbObject.class).readAll(new ArrayList<>());
+ var objects = parser.<List<DbObject>>readValueAs(new TypeReference<List<DbObject>>() {});
- List<Object> items = new ArrayList<>(objects.size());
+ var items = new ArrayList<>();
for (DbObject object : objects) {
try {
var type = mapper.getTypeFactory().findClass(object.type);
diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java
index fbb79aa..ef6b4b1 100644
--- a/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java
+++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java
@@ -86,8 +86,10 @@ public class Engine implements Closeable {
session.addEventListener((RuleRuntimeEventListener) l);
var te = session.getGlobals().get("te");
- if (te != null) {
+ try {
session.setGlobal("te", new JinjavaTemplateEngine(templateLoader, output));
+ } catch (java.lang.RuntimeException ignore) {
+ // This happens if the rules doesn't need the template engine.
}
logger.info("Loading data");
@@ -102,7 +104,7 @@ public class Engine implements Closeable {
return;
}
- logger.info("Loaded {} objects from {}", objects.size(), objects.size());
+ logger.info("Loaded {} objects from {}", objects.size(), database);
allObjects.addAll(objects);
}
logger.info("Loaded {} objects", allObjects.size());
diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
index f61acbe..1f3e5ed 100644
--- a/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
+++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
@@ -64,6 +64,8 @@ public class RunCommand implements Callable<Integer> {
} else if (i.endsWith("*")) {
i = i.substring(0, i.length() - 2);
ok = name.startsWith(i) || simpleName.startsWith(i);
+ } else {
+ ok = name.equals(i) || simpleName.equals(i);
}
if (ok) {
diff --git a/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl b/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl
index d971696..97d17cb 100644
--- a/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl
+++ b/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl
@@ -35,6 +35,7 @@ declare WgHost
end
declare WgConnection
+ name : String
host : WgHost
to : WgHost
end
@@ -93,7 +94,20 @@ when
$other : WgHost(publicName != null, this != $h)
then
System.out.printf("VPN connection from %s to %s%n", $h.machine.name, $other.machine.name);
- insert(new WgConnection($h, $other))
+ var c = new WgConnection();
+ c.host = $h;
+ c.to = $other;
+ insert(c)
+end
+
+rule "Name connections"
+when
+ $c : WgConnection(name == null, host != null, to != null)
+then
+ String n = $c.host.machine.name + "_x_" + $c.to.machine.name;
+ modify($c) {
+ name = n
+ }
end
// This and the next rule needs to use .toString(), the specific objects might be generated multiple times,