package io.trygvis.rules.engine; import io.trygvis.rules.acme.AcmeIo; import io.trygvis.rules.dns.DnsEntry; import io.trygvis.rules.machine.Machine; import io.trygvis.rules.network.Ipv4Address; import io.trygvis.rules.network.Ipv4Cidr; import org.drools.core.audit.WorkingMemoryConsoleLogger; import org.kie.api.KieServices; import org.kie.api.event.rule.AgendaEventListener; import org.kie.api.event.rule.RuleRuntimeEventListener; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { var services = KieServices.Factory.get(); var container = services.getKieClasspathContainer(); var kieBase = container.getKieBase(); var io = new AcmeIo(kieBase); var objects = io.load("acme.yaml"); var session = container.newKieSession(); session.setGlobal("te", new TemplateEngine()); for (var object : objects) { System.out.println("object = " + object); session.insert(object); } var logger = new WorkingMemoryConsoleLogger(session); session.addEventListener((AgendaEventListener) logger); session.addEventListener((RuleRuntimeEventListener) logger); session.getAgenda().getAgendaGroup("init").setFocus(); session.fireAllRules(); io.dump("phase-1", session.getFactHandles()); io.dump("vpn0", session.getFactHandles(), (Object o) -> o.getClass().getName().contains("Wg") || o instanceof Machine || o instanceof DnsEntry || o instanceof Ipv4Cidr || o instanceof Ipv4Address); session.dispose(); } }