Add clonning of values in fact logging to keep initial values

This commit is contained in:
Nicolas Héron 2020-07-23 09:20:35 +02:00
commit 998eb9980f
21 changed files with 199 additions and 85 deletions

View file

@ -15,6 +15,7 @@ import org.chtijbug.drools.console.middle.DababaseContentInit;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.ApplicationContextProvider;
import org.chtijbug.drools.console.service.wbconnector.KieBusinessCentralConnector;
import org.chtijbug.drools.proxy.persistence.repository.KieWorkbenchRepository;
import org.chtijbug.drools.proxy.persistence.repository.ProjectRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -60,6 +61,8 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
@Autowired
private ProjectRepository projectRepository;
@Autowired
private KieWorkbenchRepository kieWorkbenchRepository;
@Bean
public WebMvcConfigurer corsConfigurer() {
@ -88,6 +91,7 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
public KieConfigurationData createKieConfigurationData(){
KieConfigurationData kieConfigurationData = new KieConfigurationData();
kieConfigurationData.setKiewbUrl(kiewbUrl);
kieConfigurationData.setName("demo");
return kieConfigurationData;
}
@Override
@ -174,36 +178,52 @@ public class DroolsSpringBootConsoleApplication extends SpringBootServletInitial
public void InitPlatform(){
dababaseContentInit.initDatabaseIfNecessary();
/**
Map<String,KieContainerResource> kies = new HashMap<>();
KieServerSetup kieServerSetup = kieBusinessCentralConnector.connectToBusinessCentral("nheron", "adminnheron00@");
if (kieServerSetup!= null && kieServerSetup.getContainers()!= null) {
for (KieContainerResource kieContainerResource : kieServerSetup.getContainers()) {
kies.put(kieContainerResource.getContainerId(), kieContainerResource);
}
}
for (ProjectPersist projectPersist : projectRepository.findAll()){
if (projectPersist.getServerNames().size()>0){
if (!kies.containsKey(projectPersist.getContainerID())){
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@",projectPersist);
}else{
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@",projectPersist,kies.get(projectPersist.getContainerID()));
}
}
}
for (KieWorkbench kieWorkbench: kieWorkbenchRepository.findAll()) {
Map<String, KieContainerResource> kies = new HashMap<>();
KieServerSetup kieServerSetup = kieBusinessCentralConnector.connectToBusinessCentral("nheron", "adminnheron00@", kieWorkbench.getName(),kieWorkbench.getExternalUrl());
if (kieServerSetup != null && kieServerSetup.getContainers() != null) {
for (KieContainerResource kieContainerResource : kieServerSetup.getContainers()) {
kies.put(kieContainerResource.getContainerId(), kieContainerResource);
}
}
List<ProjectPersist> projectRepositories = projectRepository.findByKieWorkbench(kieWorkbench);
if (!projectRepositories.isEmpty()){
for (ProjectPersist projectPersist : projectRepository.findAll()) {
if (projectPersist.getServerNames().size() > 0) {
if (!kies.containsKey(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion())) {
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@", projectPersist,kieWorkbench.getExternalUrl());
} else {
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@", projectPersist, kies.get(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion()),kieWorkbench.getExternalUrl());
}
}
}
}
/**
for (ProjectPersist projectPersist : projectRepository.findAll()) {
if (projectPersist.getServerNames().size() > 0) {
if (!kies.containsKey(projectPersist.getContainerID())) {
kieBusinessCentralConnector.createContainer("nheron", "adminnheron00@", projectPersist);
} else {
kieBusinessCentralConnector.updateContainer("nheron", "adminnheron00@", projectPersist, kies.get(projectPersist.getContainerID()));
}
}
}
ServerInstanceKeyList serverInstanceKeyList = kieBusinessCentralConnector.getListInstances("nheron", "adminnheron00@");
if (serverInstanceKeyList!=null){
for (ServerInstanceKey serverInstanceKey : serverInstanceKeyList.getServerInstanceKeys()){
String serverInstanceId = serverInstanceKey.getServerInstanceId();
ContainerList containerList = kieBusinessCentralConnector.getListContainers("nheron", "adminnheron00@", serverInstanceId);
System.out.println("coucou");
for (Container container : containerList.getContainers()){
ServerInstanceKeyList serverInstanceKeyList = kieBusinessCentralConnector.getListInstances("nheron", "adminnheron00@");
if (serverInstanceKeyList != null) {
for (ServerInstanceKey serverInstanceKey : serverInstanceKeyList.getServerInstanceKeys()) {
String serverInstanceId = serverInstanceKey.getServerInstanceId();
ContainerList containerList = kieBusinessCentralConnector.getListContainers("nheron", "adminnheron00@", serverInstanceId);
System.out.println("coucou");
for (Container container : containerList.getContainers()) {
}
}
System.out.println("coucou");
}
System.out.println("coucou");
}
}
System.out.println("coucou");
}
System.out.println("coucou");
}
**/
}

View file

@ -128,7 +128,7 @@ public class KieRepositoryService {
return reponseMoteur;
}
public UserConnected login(String url, String username, String password) {
public UserConnected login(String url, String username, String password,String workbenchName) {
User user = userRepository.findByLogin(username);
String completeurl = url + "/chtijbug/login";
@ -161,7 +161,7 @@ public class KieRepositoryService {
userConnected.getProjectResponses().addAll(responseBody.getProjects());
userConnected.getRoles().addAll(responseBody.getRoles());
userConnected.setUserName(username);
userConnected.setKieWorkbenchName(workbenchName);
return userConnected;
} else {
return null;

View file

@ -11,14 +11,8 @@ import org.chtijbug.drools.console.service.model.kie.JobStatus;
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
import org.chtijbug.drools.console.service.util.AppContext;
import org.chtijbug.drools.proxy.persistence.json.KieProject;
import org.chtijbug.drools.proxy.persistence.model.ContainerPojoPersist;
import org.chtijbug.drools.proxy.persistence.model.ContainerRuntimePojoPersist;
import org.chtijbug.drools.proxy.persistence.model.ProjectPersist;
import org.chtijbug.drools.proxy.persistence.model.RuntimePersist;
import org.chtijbug.drools.proxy.persistence.repository.ContainerRepository;
import org.chtijbug.drools.proxy.persistence.repository.ContainerRuntimeRepository;
import org.chtijbug.drools.proxy.persistence.repository.ProjectRepository;
import org.chtijbug.drools.proxy.persistence.repository.RuntimeRepository;
import org.chtijbug.drools.proxy.persistence.model.*;
import org.chtijbug.drools.proxy.persistence.repository.*;
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -60,6 +54,10 @@ public class ProjectPersistService {
@Autowired
private RuntimeRepository runtimeRepository;
@Autowired
private KieWorkbenchRepository workbenchRepository;
@Autowired
private KafkaTemplate<String, ReverseProxyUpdate> kafkaTemplateProxyUpdate;
@ -72,19 +70,22 @@ public class ProjectPersistService {
}
public void saveIfnotExist(List<PlatformProjectResponse> platformProjectResponses) {
public void saveIfnotExist(List<PlatformProjectResponse> platformProjectResponses,String workbenchName) {
KieWorkbench kieWorkbench = workbenchRepository.findByName(workbenchName);
for (PlatformProjectResponse platformProjectResponse : platformProjectResponses) {
ProjectPersist projectPersist = projectRepository.findByProjectNameAndBranch(new KieProject(platformProjectResponse.getSpaceName(), platformProjectResponse.getName()), platformProjectResponse.getBranch());
if (projectPersist == null) {
projectPersist = platformProjectResponseToProjectPersist(platformProjectResponse);
projectPersist.setKieWorkbench(kieWorkbench);
projectPersist = projectRepository.save(projectPersist);
addProjectToSession(projectPersist, true);
} else {
projectPersist.setKieWorkbench(kieWorkbench);
projectPersist.getClassNameList().clear();
for (String className : platformProjectResponse.getJavaClasses()) {
projectPersist.getClassNameList().add(className);

View file

@ -50,8 +50,9 @@ public class KieServerRestImpl {
}
//@RequestHeader HttpHeaders headers
@GetMapping(produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public KieServerInfo getInfo() {
@GetMapping(path="/{kieServerName}",produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public KieServerInfo getInfo(
@PathVariable("kieServerName") String kieServerName) {
KieServerInfo kieServerInfo = new KieServerInfo();
kieServerInfo.setServerId(kieserverID);
kieServerInfo.setLocation(controlerLocation);
@ -61,9 +62,10 @@ public class KieServerRestImpl {
return kieServerInfo;
}
@GetMapping(path = "/containers",
@GetMapping(path = "/{kieServerName}/containers",
produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response listContainers(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@RequestParam("groupId") String groupId,
@RequestParam("artifactId") String artifactId,
@RequestParam("version") String version,
@ -80,10 +82,11 @@ public class KieServerRestImpl {
}
@PutMapping(path = "/containers/{" + CONTAINER_ID + "}",
@PutMapping(path = "/{kieServerName}/containers/{" + CONTAINER_ID + "}",
consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response createContainer(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id,
String containerPayload) {
@ -91,61 +94,67 @@ public class KieServerRestImpl {
}
@PutMapping(path = "/containers/{" + CONTAINER_ID + "}/status/activated",
@PutMapping(path = "/{kieServerName}/containers/{" + CONTAINER_ID + "}/status/activated",
consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response activateContainer(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id) {
return null;
}
@PutMapping(path="/containers/{" + CONTAINER_ID + "}/status/deactivated",
@PutMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}/status/deactivated",
consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
produces={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response deactivateContainer(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id) {
return null;
}
@GetMapping(path="/containers/{" + CONTAINER_ID + "}",
@GetMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}",
consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getContainerInfo(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id) {
return null;
}
@DeleteMapping(path="/containers/{" + CONTAINER_ID + "}",
@DeleteMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}",
produces={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response disposeContainer(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id) {
return null;
}
@GetMapping(path="/containers/{" + CONTAINER_ID + "}/scanner",
@GetMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}/scanner",
produces={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getScannerInfo(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id) {
return null;
}
@PostMapping(path="/containers/{" + CONTAINER_ID + "}/scanner",
@PostMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}/scanner",
consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
produces={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response updateScanner(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id,
String resourcePayload) {
return null;
}
@GetMapping(path="/containers/{" + CONTAINER_ID + "}/release-id",
@GetMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}/release-id",
produces={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getReleaseId(@RequestHeader HttpHeaders headers,
@PathVariable(CONTAINER_ID) String id) {
@ -153,10 +162,11 @@ public class KieServerRestImpl {
}
@PostMapping(path="/containers/{" + CONTAINER_ID + "}/release-id",
@PostMapping(path="/{kieServerName}/containers/{" + CONTAINER_ID + "}/release-id",
consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
produces={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response updateReleaseId(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@PathVariable(CONTAINER_ID) String id,
String releaseIdPayload,
@RequestParam(value = "resetBeforeUpdate", defaultValue = "false") boolean resetBeforeUpdate) {
@ -164,19 +174,21 @@ public class KieServerRestImpl {
return null;
}
@GetMapping(path="/state",consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@GetMapping(path="/{kieServerName}/state",consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getServerState(@RequestHeader HttpHeaders headers) {
return null;
}
@GetMapping(path="/readycheck",consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response readycheck(@RequestHeader HttpHeaders headers) {
@GetMapping(path="/{kieServerName}/readycheck",consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response readycheck(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName) {
return null;
}
@GetMapping(path="/healthcheck",consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@GetMapping(path="/{kieServerName}/healthcheck",consumes={MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response healthcheck(@RequestHeader HttpHeaders headers,
@PathVariable("kieServerName") String kieServerName,
@RequestParam(value = "report", defaultValue = "false") boolean report) {
return null;
}

View file

@ -16,6 +16,8 @@ public class UserConnected {
private boolean connected;
private String kieWorkbenchName;
public UserConnected() {
}
@ -40,6 +42,13 @@ public class UserConnected {
this.userPassword = userPassword;
}
public String getKieWorkbenchName() {
return kieWorkbenchName;
}
public void setKieWorkbenchName(String kieWorkbenchName) {
this.kieWorkbenchName = kieWorkbenchName;
}
public List<PlatformProjectResponse> getProjectResponses() {
return projectResponses;

View file

@ -8,6 +8,7 @@ public class KieConfigurationData {
private String password;
private String name;
public String getKiewbUrl() {
@ -34,4 +35,11 @@ public class KieConfigurationData {
this.password = password;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

View file

@ -51,11 +51,16 @@ public class KieBusinessCentralConnector {
mapper.registerModule(new JaxbAnnotationModule());
}
public String createContainer(String username, String password, ProjectPersist projectPersist){
String completeurl=kiewbUrl+"/controller/management/servers/"+kieserverID+"/containers/"+projectPersist.getContainerID();
public String createContainer(String username, String password, ProjectPersist projectPersist, String externalUrl){
String completeurl;
if (externalUrl==null || externalUrl.isEmpty()) {
completeurl=kiewbUrl+"/controller/management/servers/"+kieserverID+"/containers/"+projectPersist.getContainerID();
}else{
completeurl=externalUrl+"/controller/management/servers/"+kieserverID+"/containers/"+projectPersist.getContainerID();
}
ContainerSpec containerSpec = new ContainerSpec();
containerSpec.setId(projectPersist.getContainerID());
containerSpec.setContainerName(projectPersist.getContainerID());
containerSpec.setId(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion());
containerSpec.setContainerName(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion());
containerSpec.setReleasedId(new ReleaseId());
containerSpec.setStatus(KieContainerStatus.STARTED);
containerSpec.getReleasedId().setArtifactId(projectPersist.getArtifactID());
@ -86,11 +91,16 @@ public class KieBusinessCentralConnector {
}
}
public String updateContainer(String username, String password, ProjectPersist projectPersist, KieContainerResource kieContainerResource){
String completeurl=kiewbUrl+"/controller/management/servers/"+kieserverID+"/containers/"+projectPersist.getContainerID();
public String updateContainer(String username, String password, ProjectPersist projectPersist, KieContainerResource kieContainerResource, String externalUrl){
String completeurl;
if (externalUrl==null || externalUrl.isEmpty()) {
completeurl=kiewbUrl+"/controller/management/servers/"+kieserverID+"/containers/"+projectPersist.getContainerID();
}else{
completeurl=externalUrl+"/controller/management/servers/"+kieserverID+"/containers/"+projectPersist.getContainerID();
}
ContainerSpec containerSpec = new ContainerSpec();
containerSpec.setId(projectPersist.getContainerID());
containerSpec.setContainerName(projectPersist.getContainerID());
containerSpec.setId(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion());
containerSpec.setContainerName(projectPersist.getArtifactID()+"_"+projectPersist.getProjectVersion());
containerSpec.setReleasedId(new ReleaseId());
containerSpec.setStatus(KieContainerStatus.STARTED);
containerSpec.getReleasedId().setArtifactId(projectPersist.getArtifactID());
@ -179,15 +189,24 @@ public class KieBusinessCentralConnector {
return null;
}
}
public KieServerSetup connectToBusinessCentral(String username, String password){
String completeurl=kiewbUrl+"/controller/server/"+kieserverID;
public KieServerSetup connectToBusinessCentral(String username, String password, String kieServerName, String externalUrl){
String completeurl;
if (externalUrl==null || externalUrl.isEmpty()) {
completeurl = kiewbUrl + "/controller/server/" + kieserverID;
}else{
completeurl = externalUrl + "/controller/server/" + kieserverID;
}
KieServerInfo kieServerInfo = new KieServerInfo();
kieServerInfo.setVersion("1.0.0");
kieServerInfo.setServerId("1");
kieServerInfo.setName(kieserverID);
kieServerInfo.setMode(KieServerMode.DEVELOPMENT);
kieServerInfo.setServerId(kieserverID);
kieServerInfo.setLocation(controlerLocation);
if (kieServerName==null || kieServerName.isEmpty()){
kieServerInfo.setLocation(controlerLocation+"/demo");
}else{
kieServerInfo.setLocation(controlerLocation+"/"+kieServerName);
}
kieServerInfo.setCapabilities(new ArrayList<>());
kieServerInfo.getCapabilities().add("BRM");
ResponseEntity<KieServerSetup> response = restTemplateKiewb

View file

@ -124,12 +124,13 @@ public class FormulaireComposant extends VerticalLayout {
UserConnected connected = kieRepositoryService.login(
configKie.getKiewbUrl(),
userConnectedBinder.getBean().getUserName(),
userConnectedBinder.getBean().getUserPassword());
userConnectedBinder.getBean().getUserPassword(),
configKie.getName());
if(connected!=null) {
connected.setConnected(true);
userConnectedService.addUserToSession(connected);
projectPersistService.saveIfnotExist(connected.getProjectResponses());
projectPersistService.saveIfnotExist(connected.getProjectResponses(),configKie.getName());
return true;
}else {