summaryrefslogtreecommitdiff
path: root/module/ri-base
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2021-02-03 16:35:48 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2021-02-03 16:35:48 +0100
commitbafe762ac01d16904c18404283027e426e19bc73 (patch)
treec22688ad186f5ce635f525704c5035f91b983b68 /module/ri-base
parent91abd0b04320a9c9d932df195aca38c1cacfcc5a (diff)
downloadrules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.tar.gz
rules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.tar.bz2
rules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.tar.xz
rules-sandbox-bafe762ac01d16904c18404283027e426e19bc73.zip
Code reorganization.
Moving main code to src, keeping modules in modules/
Diffstat (limited to 'module/ri-base')
-rw-r--r--module/ri-base/classpath.txt27
-rw-r--r--module/ri-base/pom.xml32
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/core/Problem.java11
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java15
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java59
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntry.java27
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntryTerraformExpression.java21
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/dns/DnsZone.java9
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/engine/KeyValue.java14
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/machine/Machine.java29
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/machine/MachineSpecification.java21
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/network/IpCalc.java6
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Address.java58
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java150
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformInputVariable.java41
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformMain.java21
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformProvider.java22
-rw-r--r--module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformResource.java213
-rw-r--r--module/ri-base/src/main/resources/META-INF/kmodule.xml12
-rw-r--r--module/ri-base/src/main/resources/io/trygvis/rules/dba/dba.drl69
-rw-r--r--module/ri-base/src/main/resources/io/trygvis/rules/engine/init.drl17
-rw-r--r--module/ri-base/src/main/resources/io/trygvis/rules/machine/machine.drl1
-rw-r--r--module/ri-base/src/main/resources/io/trygvis/rules/scaleway/terraform.drl81
-rw-r--r--module/ri-base/src/main/resources/io/trygvis/rules/terraform/terraform-resources.drl28
-rw-r--r--module/ri-base/src/main/resources/templates/dba/cluster.j219
-rw-r--r--module/ri-base/src/main/resources/templates/platform-ansible.j26
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/machine-outputs.j27
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/machine.j219
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/main-scaleway-machine.j219
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/main.j210
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/record-set.j28
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/resource.j21
-rw-r--r--module/ri-base/src/main/resources/templates/terraform/variables.j210
-rw-r--r--module/ri-base/src/test/java/io/trygvis/rules/network/Ipv4CidrTest.txt37
34 files changed, 0 insertions, 1120 deletions
diff --git a/module/ri-base/classpath.txt b/module/ri-base/classpath.txt
deleted file mode 100644
index d5370b2..0000000
--- a/module/ri-base/classpath.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-io.trygvis.rules-sandbox.module:ri-base:1.0-SNAPSHOT:kjar
-com.fasterxml.jackson.core:jackson-annotations:2.12.0:jar
-com.fasterxml.jackson.core:jackson-core:2.12.0:jar
-com.fasterxml.jackson.core:jackson-databind:2.12.0:jar
-com.github.javaparser:javaparser-core:3.13.10:jar
-com.thoughtworks.xstream:xstream:1.4.14:jar
-commons-codec:commons-codec:1.14:jar
-commons-io:commons-io:2.8.0:jar
-io.trygvis.rules-sandbox.module:ri-module-api:1.0-SNAPSHOT:jar
-org.antlr:antlr-runtime:3.5.2:jar
-org.drools:drools-canonical-model:7.48.0.Final:jar
-org.drools:drools-compiler:7.48.0.Final:jar
-org.drools:drools-core:7.48.0.Final:jar
-org.drools:drools-core-dynamic:7.48.0.Final:jar
-org.drools:drools-core-reflective:7.48.0.Final:jar
-org.drools:drools-ecj:7.48.0.Final:jar
-org.drools:drools-model-compiler:7.48.0.Final:jar
-org.drools:drools-mvel-compiler:7.48.0.Final:jar
-org.drools:drools-mvel-parser:7.48.0.Final:jar
-org.kie:kie-api:7.48.0.Final:jar
-org.kie:kie-internal:7.48.0.Final:jar
-org.kie:kie-memory-compiler:7.48.0.Final:jar
-org.kie.soup:kie-soup-maven-support:7.48.0.Final:jar
-org.kie.soup:kie-soup-xstream:7.48.0.Final:jar
-org.slf4j:slf4j-api:1.7.30:jar
-xmlpull:xmlpull:1.1.3.1:jar
-xpp3:xpp3_min:1.1.4c:jar
diff --git a/module/ri-base/pom.xml b/module/ri-base/pom.xml
deleted file mode 100644
index 119368c..0000000
--- a/module/ri-base/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>io.trygvis.rules-sandbox.module</groupId>
- <artifactId>ri-module-parent</artifactId>
- <version>1.0-SNAPSHOT</version>
- <relativePath>../ri-module-parent/pom.xml</relativePath>
- </parent>
-
- <artifactId>ri-base</artifactId>
- <packaging>kjar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>ri-module-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/core/Problem.java b/module/ri-base/src/main/java/io/trygvis/rules/core/Problem.java
deleted file mode 100644
index 04d1af3..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/core/Problem.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.trygvis.rules.core;
-
-public class Problem {
- public final String message;
- public final Object object;
-
- public Problem(String message, Object object) {
- this.message = message;
- this.object = object;
- }
-}
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
deleted file mode 100644
index 6b23cdd..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/dba/Cluster.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.trygvis.rules.dba;
-
-import com.fasterxml.jackson.annotation.JsonIdentityInfo;
-import com.fasterxml.jackson.annotation.ObjectIdGenerators;
-
-@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "name")
-public class Cluster {
- public String name;
-
- 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
deleted file mode 100644
index a420671..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/dba/Container.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package io.trygvis.rules.dba;
-
-import io.trygvis.rules.machine.Machine;
-import io.trygvis.rules.machine.MachineSpecification;
-
-//@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
-public class Container {
- public String id;
- public Cluster cluster;
- public String name;
- public String machineRole;
- public String image;
- public String tag;
-
- private Machine machine;
- public MachineSpecification machineSpecification;
-
- public Container(Cluster cluster, String name, String machineRole, String image, String tag,
- MachineSpecification machineSpecification) {
- this.id = cluster.name + "-" + name;
- this.cluster = cluster;
- this.name = name;
- this.machineRole = machineRole;
- this.image = image;
- this.tag = tag;
- this.machineSpecification = machineSpecification;
- }
-
- protected Container() {
- }
-
- public Cluster getCluster() {
- return cluster;
- }
-
- public String getName() {
- return name;
- }
-
- public String getMachineRole() {
- return machineRole;
- }
-
- public String getImage() {
- return image;
- }
-
- public String getTag() {
- return tag;
- }
-
- public Machine getMachine() {
- return machine;
- }
-
- public void setMachine(Machine machine) {
- this.machine = machine;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntry.java b/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntry.java
deleted file mode 100644
index 105ef79..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntry.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package io.trygvis.rules.dns;
-
-public class DnsEntry {
- public String fqdn;
- public String type;
-
- public DnsEntry(String fqdn, String type) {
- this.fqdn = fqdn;
- this.type = type;
- }
-
- public static DnsEntry a(String fqdn) {
- return new DnsEntry(fqdn, "A");
- }
-
- public static DnsEntry aaaa(String fqdn) {
- return new DnsEntry(fqdn, "AAAA");
- }
-
- public String getFqdn() {
- return fqdn;
- }
-
- public String getType() {
- return type;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntryTerraformExpression.java b/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntryTerraformExpression.java
deleted file mode 100644
index 79bf934..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsEntryTerraformExpression.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package io.trygvis.rules.dns;
-
-public class DnsEntryTerraformExpression {
- public DnsEntry entry;
- public String key;
- public String expression;
-
- public DnsEntryTerraformExpression(DnsEntry entry, String key, String expression) {
- this.entry = entry;
- this.key = key;
- this.expression = expression;
- }
-
- public String getKey() {
- return key;
- }
-
- public String getExpression() {
- return expression;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsZone.java b/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsZone.java
deleted file mode 100644
index 1af5c8f..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/dns/DnsZone.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.trygvis.rules.dns;
-
-public class DnsZone {
- public final String name;
-
- public DnsZone(String name) {
- this.name = name;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/engine/KeyValue.java b/module/ri-base/src/main/java/io/trygvis/rules/engine/KeyValue.java
deleted file mode 100644
index 5046169..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/engine/KeyValue.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.trygvis.rules.engine;
-
-public class KeyValue {
- public String key;
- public String value;
-
- public KeyValue() {
- }
-
- public KeyValue(String key, String value) {
- this.key = key;
- this.value = value;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/machine/Machine.java b/module/ri-base/src/main/java/io/trygvis/rules/machine/Machine.java
deleted file mode 100644
index 8f162c6..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/machine/Machine.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package io.trygvis.rules.machine;
-
-import com.fasterxml.jackson.annotation.JsonIdentityInfo;
-import com.fasterxml.jackson.annotation.ObjectIdGenerators;
-
-@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "name")
-public class Machine {
- public String name;
- private String fqdn;
-
- public Machine() {
- }
-
- public Machine(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public String getFqdn() {
- return fqdn;
- }
-
- public void setFqdn(String fqdn) {
- this.fqdn = fqdn;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/machine/MachineSpecification.java b/module/ri-base/src/main/java/io/trygvis/rules/machine/MachineSpecification.java
deleted file mode 100644
index 9d38b2d..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/machine/MachineSpecification.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package io.trygvis.rules.machine;
-
-public class MachineSpecification {
- public int cpu;
- public int memory;
-
- protected MachineSpecification() {}
-
- public MachineSpecification(int cpu, int memory) {
- this.cpu = cpu;
- this.memory = memory;
- }
-
- public int getCpu() {
- return cpu;
- }
-
- public int getMemory() {
- return memory;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/network/IpCalc.java b/module/ri-base/src/main/java/io/trygvis/rules/network/IpCalc.java
deleted file mode 100644
index 7ec344c..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/network/IpCalc.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.trygvis.rules.network;
-
-import java.util.regex.Pattern;
-
-public class IpCalc {
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Address.java b/module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Address.java
deleted file mode 100644
index 9021198..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Address.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package io.trygvis.rules.network;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
-import java.io.IOException;
-import java.util.Objects;
-
-@JsonSerialize(using = Ipv4Address.Serializer.class)
-public class Ipv4Address implements Comparable<Ipv4Address> {
- public final int address;
-
- public Ipv4Address(int address) {
- this.address = address;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
-
- if (o instanceof Ipv4Address) {
- Ipv4Address other = (Ipv4Address) o;
- return address == other.address;
- }
-
- return false;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(address);
- }
-
- @Override
- public int compareTo(Ipv4Address o) {
- return address - o.address;
- }
-
- @Override
- public String toString() {
- return "%d.%d.%d.%d".formatted(
- address >> 24 & 0xff,
- address >> 16 & 0xff,
- address >> 8 & 0xff,
- address & 0xff);
- }
-
- public static class Serializer extends JsonSerializer<Ipv4Address> {
- @Override
- public void serialize(Ipv4Address value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeStartObject();
- gen.writeObjectField("value", value.toString());
- gen.writeEndObject();
- }
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java b/module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java
deleted file mode 100644
index 851af95..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/network/Ipv4Cidr.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package io.trygvis.rules.network;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.regex.Pattern;
-
-@JsonSerialize(using = Ipv4Cidr.Serializer.class)
-public class Ipv4Cidr implements Comparable<Ipv4Cidr> {
- public final int network;
- public final int bits;
-
- public Ipv4Cidr(int network, int bits) {
- if (bits < 0 || bits > 32) {
- throw new IllegalArgumentException("bits must be [0, 32]");
- }
-
- int hostBits = 32 - bits;
- int netmask = (-1 >> hostBits) << hostBits;
-
- int x = network & ~netmask;
-
- if (x != 0) {
- throw new IllegalArgumentException("The host part of the address must be 0.");
- }
-
- this.network = network;
- this.bits = bits;
- }
-
- @Override
- public String toString() {
- return "%d.%d.%d.%d/%d".formatted(
- network >> 24 & 0xff,
- network >> 16 & 0xff,
- network >> 8 & 0xff,
- network & 0xff,
- bits);
- }
-
- private String formatIpv4(int address) {
- return "%d.%d.%d.%d".formatted(address >> 24 & 0xff, address >> 16 & 0xff, address >> 8 & 0xff, address & 0xff);
- }
-
- public List<Ipv4Cidr> partition(int bits) {
- if (bits <= 0 || bits <= this.bits || bits > 32) {
- throw new IllegalArgumentException("Invalid new network size");
- }
-
- var list = new ArrayList<Ipv4Cidr>();
-
- int count = 1 << (bits - this.bits);
- for (int i = 0; i < count; i++) {
- var network = this.network | (i << (32 - bits));
-
- list.add(new Ipv4Cidr(network, bits));
- }
-
- return list;
- }
-
- public List<Ipv4Address> addresses() {
- int size = 1 << 32 - bits;
- var end = network + size;
- var addresses = new ArrayList<Ipv4Address>(size);
- for (int address = network; address < end; address++) {
- addresses.add(new Ipv4Address(address));
- }
-
- return addresses;
- }
-
- @Override
- public int compareTo(Ipv4Cidr o) {
- if (this == o) {
- return 0;
- }
-
- var ret = network - o.network;
- if (ret != 0) {
- return ret;
- }
-
- return bits - o.bits;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Ipv4Cidr ipv4Cidr = (Ipv4Cidr) o;
- return network == ipv4Cidr.network && bits == ipv4Cidr.bits;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(network, bits);
- }
-
- private static final Pattern pattern = Pattern.compile("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})/([0-9]{1,3})");
-
- public static Ipv4Cidr parseCidr(String cidr) {
- var matcher = pattern.matcher(cidr);
- if (!matcher.matches()) {
- throw new IllegalArgumentException("Not a CIDR: " + cidr);
- }
-
- var b1 = matcher.group(1);
- var b2 = matcher.group(2);
- var b3 = matcher.group(3);
- var b4 = matcher.group(4);
-
- int network = parse(b1) << 24 |
- parse(b2) << 16 |
- parse(b3) << 8 |
- parse(b4);
-
-// System.out.printf("network = %x%n", network);
-
- var l = matcher.group(5);
- var bits = Integer.parseInt(l);
-// System.out.printf("netmask = %08x%n", netmask);
-
- return new Ipv4Cidr(network, bits);
- }
-
- private static int parse(String s) {
- var i = Integer.parseInt(s);
- if (i > 255) {
- throw new IllegalArgumentException("Not a CIDR");
- }
-
- return i;
- }
-
- public static class Serializer extends JsonSerializer<Ipv4Cidr> {
- @Override
- public void serialize(Ipv4Cidr value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeStartObject();
- gen.writeObjectField("value", value.toString());
- gen.writeEndObject();
- }
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformInputVariable.java b/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformInputVariable.java
deleted file mode 100644
index 1415767..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformInputVariable.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package io.trygvis.rules.terraform;
-
-public class TerraformInputVariable {
- private String module;
-
- private String name;
- private String type;
- private String default_;
-
- public TerraformInputVariable(String module) {
- this.module = module;
- }
-
- public String getModule() {
- return module;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String getDefault() {
- return default_;
- }
-
- public void setDefault(String default_) {
- this.default_ = default_;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformMain.java b/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformMain.java
deleted file mode 100644
index 82626d2..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformMain.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package io.trygvis.rules.terraform;
-
-import java.util.Map;
-import java.util.TreeMap;
-
-public class TerraformMain {
- private String module;
- private Map<String, TerraformProvider> providers = new TreeMap<String, TerraformProvider>();
-
- public TerraformMain(String module) {
- this.module = module;
- }
-
- public String getModule() {
- return module;
- }
-
- public Map<String, TerraformProvider> getProviders() {
- return providers;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformProvider.java b/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformProvider.java
deleted file mode 100644
index 613d953..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformProvider.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package io.trygvis.rules.terraform;
-
-public class TerraformProvider {
- private String source;
- private String version;
-
- protected TerraformProvider() {
- }
-
- public TerraformProvider(String source, String version) {
- this.source = source;
- this.version = version;
- }
-
- public String getSource() {
- return source;
- }
-
- public String getVersion() {
- return version;
- }
-}
diff --git a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformResource.java b/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformResource.java
deleted file mode 100644
index 351a3e1..0000000
--- a/module/ri-base/src/main/java/io/trygvis/rules/terraform/TerraformResource.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package io.trygvis.rules.terraform;
-
-import com.fasterxml.jackson.annotation.JsonValue;
-
-import java.util.*;
-
-@SuppressWarnings("unused")
-public class TerraformResource {
- private static final String EOL = System.getProperty("line.separator");
- private final String output;
- private final String kind;
- private final String instance;
- private final Map<String, TerraformValue> values = new LinkedHashMap<>();
-
- public TerraformResource(String output, String kind, String instance) {
- this.output = output;
- this.kind = kind;
- this.instance = instance;
- }
-
- public String getOutput() {
- return output;
- }
-
- public String getName() {
- return kind + "." + instance;
- }
-
- public String getKind() {
- return kind;
- }
-
- public String getInstance() {
- return instance;
- }
-
- public Map<String, TerraformValue> getValues() {
- return values;
- }
-
- public TerraformResource set(String key, String value) {
- values.put(key, new StringTerraformValue(value));
- return this;
- }
-
- public TerraformResource set(String key, boolean value) {
- values.put(key, new BooleanTerraformValue(value));
- return this;
- }
-
- public TerraformResource set(String key, int value) {
- values.put(key, new IntegerTerraformValue(value));
- return this;
- }
-
- public TerraformResource setExpression(String key, String value) {
- values.put(key, new ExpressionTerraformValue(value));
- return this;
- }
-
- public ArrayTerraformValue array(String key) {
- var array = new ArrayTerraformValue();
- values.put(key, array);
- return array;
- }
-
- public String asString() {
- var buf = new StringBuilder();
-
- buf.append("resource ");
- buf.append(quote(kind));
- buf.append(" ");
- buf.append(quote(instance));
- buf.append(" {");
- buf.append(EOL);
-
- for (var entry : values.entrySet()) {
- buf.append(" ");
- buf.append(entry.getKey());
- buf.append(" = ");
- buf.append(entry.getValue().asString());
- buf.append(EOL);
- }
-
- buf.append("}");
-
- return buf.toString();
- }
-
- public interface TerraformValue {
- String asString();
- }
-
- public static class StringTerraformValue implements TerraformValue {
- private final String value;
-
- public StringTerraformValue(String value) {
- this.value = value;
- }
-
- @JsonValue
- public String getValue() {
- return value;
- }
-
- @Override
- public String asString() {
- return quote(value);
- }
- }
-
- public static class BooleanTerraformValue implements TerraformValue {
- private final boolean value;
-
- public BooleanTerraformValue(boolean value) {
- this.value = value;
- }
-
- @JsonValue
- public boolean getValue() {
- return value;
- }
-
- @Override
- public String asString() {
- return String.valueOf(value);
- }
- }
-
- public static class IntegerTerraformValue implements TerraformValue {
- private final int value;
-
- public IntegerTerraformValue(int value) {
- this.value = value;
- }
-
- @JsonValue
- public int getValue() {
- return value;
- }
-
- @Override
- public String asString() {
- return String.valueOf(value);
- }
- }
-
- public static class ExpressionTerraformValue implements TerraformValue {
- private final String value;
-
- public ExpressionTerraformValue(String value) {
- this.value = value;
- }
-
- @JsonValue
- public String getValue() {
- return value;
- }
-
- @Override
- public String asString() {
- return value;
- }
- }
-
- public static class ArrayTerraformValue implements TerraformValue {
- private final List<TerraformValue> values = new ArrayList<>();
-
- @JsonValue
- public List<TerraformValue> getValues() {
- return values;
- }
-
- public ArrayTerraformValue add(String value) {
- values.add(new StringTerraformValue(value));
- return this;
- }
-
- public ArrayTerraformValue add(int value) {
- values.add(new IntegerTerraformValue(value));
- return this;
- }
-
- public ArrayTerraformValue add(boolean value) {
- values.add(new BooleanTerraformValue(value));
- return this;
- }
-
- public ArrayTerraformValue addExpression(String value) {
- values.add(new ExpressionTerraformValue(value));
- return this;
- }
-
- @Override
- public String asString() {
- if (values.isEmpty()) {
- return "[]";
- }
-
- if (values.size() == 1) {
- return "[" + values.get(0).asString() + "]";
- }
-
- var j = new StringJoiner(",\n ", "[\n", "\n ]");
- values.forEach(value -> j.add(value.asString()));
- return j.toString();
- }
- }
-
- private static String quote(String value) {
- return "\"%s\"".formatted(value);
- }
-}
diff --git a/module/ri-base/src/main/resources/META-INF/kmodule.xml b/module/ri-base/src/main/resources/META-INF/kmodule.xml
deleted file mode 100644
index 4650977..0000000
--- a/module/ri-base/src/main/resources/META-INF/kmodule.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://www.drools.org/xsd/kmodule"
- xsi:schemaLocation="http://www.drools.org/xsd/kmodule https://www.drools.org/xsd/kmodule_7_1.xsd">
-
- <kbase name="all" packages="io.trygvis.rules.*"/>
- <kbase name="engine" packages="io.trygvis.rules.engine"/>
- <kbase name="dba" packages="io.trygvis.rules.dba"/>
- <kbase name="machine" packages="io.trygvis.rules.machine"/>
- <kbase name="terraform" packages="io.trygvis.rules.terraform"/>
- <kbase name="scaleway" packages="io.trygvis.rules.scaleway"/>
-</kmodule>
diff --git a/module/ri-base/src/main/resources/io/trygvis/rules/dba/dba.drl b/module/ri-base/src/main/resources/io/trygvis/rules/dba/dba.drl
deleted file mode 100644
index c31bc57..0000000
--- a/module/ri-base/src/main/resources/io/trygvis/rules/dba/dba.drl
+++ /dev/null
@@ -1,69 +0,0 @@
-package io.trygvis.rules.dba
-
-import io.trygvis.rules.core.Problem
-import io.trygvis.rules.machine.Machine
-import java.util.ArrayList
-import java.util.Map
-import java.util.HashMap
-import java.util.List
-import java.util.stream.Collectors
-import java.util.Collections
-
-global io.trygvis.rules.engine.TemplateEngine te;
-
-dialect "mvel"
-
-declare DbaMachineRole
- machine : String
- roles : String[]
-end
-
-rule "Assign containers to machine"
-when
- $machine : Machine()
- $machineRole : DbaMachineRole(machine == $machine.name)
- $container : Container(machine == null, $machineRole.roles contains machineRole)
-then
- System.out.println("Assigning container to machine: " + $machine.name);
- modify ($container) {
- machine = $machine
- }
-end
-
-rule "Containers without hosts"
- agenda-group "generate"
-when
- $container : Container(machine == null)
-then
- insert(new Problem("No machine for container", $container))
-end
-
-rule "Generate docker-compose.yaml"
- agenda-group "generate"
-when
- $cluster : Cluster()
- $containers : ArrayList(size > 0) from collect(Container(cluster == $cluster))
-then
- System.out.println("Docker compose for cluster: " + $cluster.name + " with " + $containers.size() + " containers");
-
- Map containersByMachine = new HashMap();
- for (Object o : $containers) {
- Container c = (Container) o;
-
- List list = (List) containersByMachine.get(c.getMachine());
- if (list == null) {
- list = new ArrayList();
- containersByMachine.put(c.getMachine(), list);
- }
- list.add(c);
- }
-
- System.out.println("containersByMachine = " + containersByMachine);
-
- String path = "ansible/dba/" + $cluster.name + ".yml";
- te.template("dba/cluster", path, Map.of(
- "cluster", $cluster,
- "containers", $containers,
- "containersByMachine", containersByMachine
- ));
-end
diff --git a/module/ri-base/src/main/resources/io/trygvis/rules/engine/init.drl b/module/ri-base/src/main/resources/io/trygvis/rules/engine/init.drl
deleted file mode 100644
index 267cc4a..0000000
--- a/module/ri-base/src/main/resources/io/trygvis/rules/engine/init.drl
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.trygvis.rules.engine;
-
-import java.util.Map
-import org.apache.commons.io.FileSystem
-import org.apache.commons.io.FileUtils
-import java.io.File
-
-global io.trygvis.rules.engine.TemplateEngine te;
-
-rule "Clean directories"
- agenda-group "init"
-when
- not(KeyValue(key == "rm-gen"));
-then
- te.clean();
- insert(new KeyValue("rm-gen", null));
-end
diff --git a/module/ri-base/src/main/resources/io/trygvis/rules/machine/machine.drl b/module/ri-base/src/main/resources/io/trygvis/rules/machine/machine.drl
deleted file mode 100644
index 0250cc6..0000000
--- a/module/ri-base/src/main/resources/io/trygvis/rules/machine/machine.drl
+++ /dev/null
@@ -1 +0,0 @@
-package io.trygvis.rules.machine;
diff --git a/module/ri-base/src/main/resources/io/trygvis/rules/scaleway/terraform.drl b/module/ri-base/src/main/resources/io/trygvis/rules/scaleway/terraform.drl
deleted file mode 100644
index 7e0ff03..0000000
--- a/module/ri-base/src/main/resources/io/trygvis/rules/scaleway/terraform.drl
+++ /dev/null
@@ -1,81 +0,0 @@
-package io.trygvis.rules.scaleway
-
-import io.trygvis.rules.dba.Cluster
-import io.trygvis.rules.dba.Container
-import io.trygvis.rules.machine.Machine
-import io.trygvis.rules.dns.DnsEntry
-import io.trygvis.rules.dns.DnsEntryTerraformExpression
-import java.util.ArrayList;
-import java.util.Map;
-
-global io.trygvis.rules.engine.TemplateEngine te;
-
-dialect "mvel"
-
-declare ScalewayMachine
- machine : Machine
- key : String
-end
-
-declare GoogleManagedZoneTerraformExpression
- name : String
-end
-
-rule "Terraform for Machine"
-when
- $machine: Machine()
-then
- ScalewayMachine scw = new ScalewayMachine();
- scw.setKey($machine.name);
- scw.setMachine($machine);
-
- insert(scw);
-end
-
-rule "Create DNS entry for Terraform Machine"
-when
- $machine : Machine(fqdn != null)
- not(DnsEntry(fqdn == $machine.fqdn))
-then
- DnsEntry a = DnsEntry.a($machine.fqdn);
- insert(a);
-
- String ipv4 = "scaleway_instance_ip.%s.address".formatted($machine.name);
- insert(new DnsEntryTerraformExpression(a, $machine.name, ipv4));
-end
-
-rule "main-scaleway-machine.tf"
- agenda-group "generate"
-when
- $managedZones : ArrayList() from collect(GoogleManagedZoneTerraformExpression())
-then
- String path = "terraform/main-scaleway-machine.tf";
- te.template("terraform/main-scaleway-machine", path, Map.of(
- "managedZones", $managedZones
- ));
-end
-
-rule "TF for TerraformMachine"
- agenda-group "generate"
-when
- $m: Machine()
- $scw: ScalewayMachine(machine == $m)
-then
- String path = "terraform/scaleway-machine-%s.tf".formatted($scw.getKey());
- te.template("terraform/machine", path, Map.of("m", $m, "scw", $scw));
-end
-
-rule "Terraform for DNS"
- agenda-group "generate"
-when
- $entry: DnsEntry()
- $tf : DnsEntryTerraformExpression(entry == $entry)
- $managedZone : GoogleManagedZoneTerraformExpression()
-then
- String path = "terraform/dns-%s.tf".formatted($tf.key);
- te.template("terraform/record-set", path, Map.of(
- "entry", $entry,
- "managedZone", $managedZone,
- "tf", $tf)
- );
-end
diff --git a/module/ri-base/src/main/resources/io/trygvis/rules/terraform/terraform-resources.drl b/module/ri-base/src/main/resources/io/trygvis/rules/terraform/terraform-resources.drl
deleted file mode 100644
index 40a81f0..0000000
--- a/module/ri-base/src/main/resources/io/trygvis/rules/terraform/terraform-resources.drl
+++ /dev/null
@@ -1,28 +0,0 @@
-package io.trygvis.rules.terraform;
-
-import java.util.ArrayList
-import java.util.HashSet
-import java.util.Map
-import java.util.Set
-
-global io.trygvis.rules.engine.TemplateEngine te;
-
-dialect "mvel"
-
-rule "terraform-resources"
- agenda-group "generate"
-when
- $r : TerraformResource()
-then
- te.template("terraform/resource", $r.output, Map.of("resource", $r));
-end
-
-rule "main.tf"
- agenda-group "generate"
-when
- $main : TerraformMain()
- $variables : ArrayList() from collect(TerraformInputVariable(module == $main.module))
-then
- te.template("terraform/main", $main.module + "/main.tf", Map.of("main", $main));
- te.template("terraform/variables", $main.module + "/vars.tf", Map.of("variables", $variables));
-end
diff --git a/module/ri-base/src/main/resources/templates/dba/cluster.j2 b/module/ri-base/src/main/resources/templates/dba/cluster.j2
deleted file mode 100644
index 045fbcd..0000000
--- a/module/ri-base/src/main/resources/templates/dba/cluster.j2
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated
-
-# cluster: {{ cluster.name }}
-{%- for m, containers in containersByMachine.entrySet() %}
----
-- host:
- - {{ m.name }}
- tasks:
- import_role:
- name: docker-service
- vars:
- template: |
- version: "3"
- services:
-{%- for c in containers %}
- {{ c.name }}:
- image: {{ c.image }}:{{ c.tag }}
-{%- endfor %}
-{% endfor %}
diff --git a/module/ri-base/src/main/resources/templates/platform-ansible.j2 b/module/ri-base/src/main/resources/templates/platform-ansible.j2
deleted file mode 100644
index 72e3247..0000000
--- a/module/ri-base/src/main/resources/templates/platform-ansible.j2
+++ /dev/null
@@ -1,6 +0,0 @@
-# Ansible
-- hosts:
- - {{ m.key }}
- tasks:
- - import_role:
- name: acme-platform
diff --git a/module/ri-base/src/main/resources/templates/terraform/machine-outputs.j2 b/module/ri-base/src/main/resources/templates/terraform/machine-outputs.j2
deleted file mode 100644
index 438fac6..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/machine-outputs.j2
+++ /dev/null
@@ -1,7 +0,0 @@
-output "addresses" {
- value = {
-{%- for m in machines %}
- {{ m.key }}: scaleway_instance_ip.{{ m.key }}.address,
-{%- endfor %}
- }
-}
diff --git a/module/ri-base/src/main/resources/templates/terraform/machine.j2 b/module/ri-base/src/main/resources/templates/terraform/machine.j2
deleted file mode 100644
index 0ac8b90..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/machine.j2
+++ /dev/null
@@ -1,19 +0,0 @@
-resource "scaleway_instance_server" "{{ scw.key }}" {
- name = "acme-1"
- type = "DEV1-S"
- image = "b3042271-d2b1-4f87-b407-aedd3bbd1663"
- ip_id = scaleway_instance_ip.{{ scw.key }}.id
- enable_dynamic_ip = false
- enable_ipv6 = true
-}
-
-resource "scaleway_instance_ip" "{{ scw.key }}" {}
-
-resource "scaleway_instance_ip_reverse_dns" "{{ scw.key }}" {
- ip_id = scaleway_instance_ip.{{ scw.key }}.id
- reverse = "{{ m.fqdn }}."
-}
-
-output "{{scw.key}}_public_ip" {
- value = scaleway_instance_server.{{ scw.key }}.public_ip
-}
diff --git a/module/ri-base/src/main/resources/templates/terraform/main-scaleway-machine.j2 b/module/ri-base/src/main/resources/templates/terraform/main-scaleway-machine.j2
deleted file mode 100644
index eab9fac..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/main-scaleway-machine.j2
+++ /dev/null
@@ -1,19 +0,0 @@
-# Generated
-
-terraform {
- required_providers {
- scaleway = {
- source = "scaleway/scaleway"
- version = "1.17.2"
- }
- }
-}
-
-provider "scaleway" {
-}
-
-{% -for z in managedZones %}
-variable "{{z.name}}" {
- type = string
-}
-{% endfor -%}
diff --git a/module/ri-base/src/main/resources/templates/terraform/main.j2 b/module/ri-base/src/main/resources/templates/terraform/main.j2
deleted file mode 100644
index 009f4ed..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/main.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-terraform {
- required_providers {
-{% for alias, provider in main.providers.entrySet() %}
- {{ alias }} = {
- version = "{{ provider.version }}"
- source = "{{ provider.source }}"
- }
-{%- endfor %}
- }
-}
diff --git a/module/ri-base/src/main/resources/templates/terraform/record-set.j2 b/module/ri-base/src/main/resources/templates/terraform/record-set.j2
deleted file mode 100644
index b89ee00..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/record-set.j2
+++ /dev/null
@@ -1,8 +0,0 @@
-resource "google_dns_record_set" "{{ tf.key }}" {
- name = "{{ entry.fqdn }}"
- managed_zone = var.{{ managedZone.name }}
- type = "{{ entry.type }}"
- ttl = 300
-
- rrdatas = [{{ tf.expression }}]
-}
diff --git a/module/ri-base/src/main/resources/templates/terraform/resource.j2 b/module/ri-base/src/main/resources/templates/terraform/resource.j2
deleted file mode 100644
index 91af481..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/resource.j2
+++ /dev/null
@@ -1 +0,0 @@
-{{ resource.asString() -}}
diff --git a/module/ri-base/src/main/resources/templates/terraform/variables.j2 b/module/ri-base/src/main/resources/templates/terraform/variables.j2
deleted file mode 100644
index 6c37d99..0000000
--- a/module/ri-base/src/main/resources/templates/terraform/variables.j2
+++ /dev/null
@@ -1,10 +0,0 @@
-{%- for var in variables %}
-variable "{{ var.name }}" {
-{%- if var.type %}
- type = {{ var.type }}
-{% endif %}
-{%- if var.default %}
- default = {{ var.default }}
-{% endif %}
-}
-{% endfor %}
diff --git a/module/ri-base/src/test/java/io/trygvis/rules/network/Ipv4CidrTest.txt b/module/ri-base/src/test/java/io/trygvis/rules/network/Ipv4CidrTest.txt
deleted file mode 100644
index 826f586..0000000
--- a/module/ri-base/src/test/java/io/trygvis/rules/network/Ipv4CidrTest.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-package io.trygvis.rules.network;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import static io.trygvis.rules.network.Ipv4Cidr.parseCidr;
-import static org.junit.jupiter.api.Assertions.*;
-
-class Ipv4CidrTest {
-
- @Test
- public void basic() {
- Assertions.assertThrows(IllegalArgumentException.class, () -> parseCidr("192.168.1.1/24").addresses());
- assertEquals(256, parseCidr("192.168.1.0/24").addresses().size());
- assertEquals(128, parseCidr("192.168.1.128/25").addresses().size());
- }
-
- @ParameterizedTest
- @ValueSource(strings = {
- "192.168.1.0/24",
- "192.168.1.128/25",
- })
- public void testParsing(String s) {
- assertEquals(s, parseCidr(s).toString());
- }
-
- @Test
- public void partition() {
- var children = parseCidr("192.168.1.0/24").partition(26);
- assertEquals(1 << 2, children.size());
- for (var cidr : children) {
- assertEquals(26, cidr.bits);
- }
- }
-}