Define our ServerStateRepository implementation to retrieve list of containers to build

This commit is contained in:
Nicolas Héron 2019-05-07 21:28:52 +02:00
commit e2f09eedc5
9 changed files with 114 additions and 26 deletions

View file

@ -4,4 +4,5 @@ kieserver.login=kieserver
kieserver.password=kieserver1
spring.data.mongodb.database=businessProxyDB
spring.data.mongodb.host=localhost:27017
spring.data.mongodb.host=localhost:28017
server.port=5547

View file

@ -0,0 +1,56 @@
package org.chtijbug.drools.proxy;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
import org.chtijbug.drools.proxy.persistence.repository.ContainerRepository;
import org.chtijbug.drools.proxy.service.KieServiceCommon;
import org.kie.server.api.model.KieContainerResource;
import org.kie.server.api.model.KieServerConfig;
import org.kie.server.api.model.ReleaseId;
import org.kie.server.services.impl.storage.KieServerState;
import org.kie.server.services.impl.storage.KieServerStateRepository;
import org.kie.server.services.impl.storage.KieServerStateRepositoryUtils;
import java.util.List;
public class PlatfomKieServerStateRepository implements KieServerStateRepository {
private ContainerRepository containerRepository;
private KieServiceCommon kieServiceCommon;
private KieServerState kieServerState = new KieServerState();
public PlatfomKieServerStateRepository(ContainerRepository containerRepository, KieServiceCommon kieServiceCommon) {
this.containerRepository = containerRepository;
this.kieServiceCommon = kieServiceCommon;
KieServerConfig config = new KieServerConfig();
KieServerStateRepositoryUtils.populateWithSystemProperties(config);
kieServerState.setConfiguration(config);
}
@Override
public synchronized void store(String s, KieServerState kieServerState) {
System.out.println("coucou");
}
@Override
public KieServerState load(String serverID) {
String serverName = KieServiceCommon.getKieServerID();
List<ContainerPojoPersist> containers = containerRepository.findByServerNameAndStatus(serverName, ContainerPojoPersist.STATUS.UP.toString());
for (ContainerPojoPersist element : containers) {
KieContainerResource newContainer = new KieContainerResource();
newContainer.setContainerId(element.getContainerId());
newContainer.setReleaseId(new ReleaseId());
newContainer.getReleaseId().setArtifactId(element.getArtifactId());
newContainer.getReleaseId().setGroupId(element.getGroupId());
newContainer.getReleaseId().setVersion(element.getVersion());
kieServerState.getContainers().add(newContainer);
}
return kieServerState;
}
}

View file

@ -22,8 +22,6 @@ public class AdminRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
System.out.println("coucou");
restConfiguration()
.component("servlet")
.bindingMode(RestBindingMode.json)

View file

@ -18,6 +18,7 @@ package org.chtijbug.drools.proxy.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.CamelContext;
import org.apache.camel.Route;
import org.chtijbug.drools.proxy.PlatfomKieServerStateRepository;
import org.chtijbug.drools.proxy.camel.DroolsRouter;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
@ -30,7 +31,6 @@ import org.kie.server.services.api.KieServerExtension;
import org.kie.server.services.api.KieServerRegistry;
import org.kie.server.services.impl.KieContainerInstanceImpl;
import org.kie.server.services.impl.KieServerImpl;
import org.kie.server.services.impl.KieServerLocator;
import org.kie.server.services.impl.marshal.MarshallerHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -71,22 +71,7 @@ public class KieServiceCommon {
public KieServiceCommon() {
// for now, if no server impl is passed as parameter, create one
this.server = KieServerLocator.getInstance();
List<KieServerExtension> serverExtensions = this.server.getServerExtensions();
for (KieServerExtension serverExtension : serverExtensions) {
if (serverExtension instanceof DroolsChtijbugKieServerExtension) {
droolsChtijbugKieServerExtension = (DroolsChtijbugKieServerExtension) serverExtension;
if (droolsChtijbugRulesExecutionService == null) {
droolsChtijbugRulesExecutionService = droolsChtijbugKieServerExtension.getRulesExecutionService();
}
if (registry == null) {
registry = droolsChtijbugRulesExecutionService.getContext();
}
}
}
this.marshallerHelper = new MarshallerHelper(this.server.getServerRegistry());
// this.server = KieServerLocator.getInstance();
}
public static String getKieServerID(){
@ -95,6 +80,27 @@ public class KieServiceCommon {
@PostConstruct
private void initCamelBusinessRoutes() {
this.server = new KieServerImpl(new PlatfomKieServerStateRepository(containerRepository,this));
this.server.init();
List<KieServerExtension> serverExtensions = this.server.getServerExtensions();
if (registry==null || droolsChtijbugKieServerExtension==null) {
for (KieServerExtension serverExtension : serverExtensions) {
if (serverExtension instanceof DroolsChtijbugKieServerExtension) {
droolsChtijbugKieServerExtension = (DroolsChtijbugKieServerExtension) serverExtension;
if (droolsChtijbugRulesExecutionService == null) {
droolsChtijbugRulesExecutionService = droolsChtijbugKieServerExtension.getRulesExecutionService();
}
if (registry == null) {
registry = droolsChtijbugRulesExecutionService.getContext();
}
}
}
}
this.marshallerHelper = new MarshallerHelper(this.server.getServerRegistry());
String serverName = KieServiceCommon.getKieServerID();
String sftpPort = System.getProperty("org.chtijbug.server.sftpPort");
List<RuntimePersist> itIsMes = runtimeRepository.findByServerName(serverName);
@ -131,9 +137,16 @@ public class KieServiceCommon {
}
try {
List<ContainerPojoPersist> containers = containerRepository.findByServerName(serverName);
for (ContainerPojoPersist container : containers) {
this.initCamelBusinessRoute(container);
for (KieContainerResource kieContainerResource : this.server.getServerState().getResult().getContainers()){
// this.createContainer(container.getContainerId(),)
this.createContainer(kieContainerResource.getContainerId(), kieContainerResource);
List<ContainerPojoPersist> containers = containerRepository.findByContainerId(kieContainerResource.getContainerId());
if (containers.size()==1) {
this.initCamelBusinessRoute(containers.get(0));
}
}
} catch (Exception e) {
logger.info("initCamelBusinessRoutes", e);

View file

@ -7,6 +7,6 @@ import org.springframework.stereotype.Component;
public class AutodeployRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("quartz2://myGroup/myTimerName?cron=0/5+*+*+?+*+*").to("bean:updateService?method=updateConfig()");
from("quartz2://myGroup/myTimerName?cron=0/30+*+*+?+*+*").to("bean:updateService?method=updateConfig()");
}
}

View file

@ -0,0 +1,16 @@
package org.chtijbug.drools.reverseproxy.mappings;
import com.github.mkopylec.charon.configuration.MappingProperties;
import com.github.mkopylec.charon.core.http.ForwardedRequestInterceptor;
import com.github.mkopylec.charon.core.http.RequestData;
import org.springframework.stereotype.Component;
@Component
public class CustomForwardedRequestInterceptor implements ForwardedRequestInterceptor {
@Override
public void intercept(RequestData data, MappingProperties mapping) {
System.out.println("tptp");
}
}

View file

@ -34,12 +34,15 @@ public class UpdateService {
}
public void updateConfig() {
/**
if (this.toUpdate==false) {
this.toUpdate = isToUpdate();
if (this.toUpdate==true){
generateMappings();
}
}
**/
generateMappings();
}
private boolean isToUpdate() {

View file

@ -1,3 +1,4 @@
server.port=9500
spring.data.mongodb.database=businessProxyDB
spring.data.mongodb.host=localhost:27017
spring.data.mongodb.host=localhost:28017
charon.tracing.enabled=true

View file

@ -19,7 +19,7 @@
<packaging>pom</packaging>
<properties>
<jbpm.version>7.19.0.Final</jbpm.version>
<jbpm.version>7.20.0.Final</jbpm.version>
<spring.boot.version>1.5.12.RELEASE</spring.boot.version>
<spring.version>4.3.16.RELEASE</spring.version>
<version.thorntail>2.2.1.Final</version.thorntail>