public ServiceResponsesList executeScript(CommandScript commands) { List<ServiceResponse<? extends Object>> responses = new ArrayList<ServiceResponse<? extends Object>>(); if( commands != null ) { for (KieServerCommand command : commands.getCommands()) { if (command instanceof CreateContainerCommand) { responses.add(createContainer(((CreateContainerCommand) command).getContainer().getContainerId(), ((CreateContainerCommand) command).getContainer())); } else if (command instanceof GetServerInfoCommand) { responses.add(getInfo()); } else if (command instanceof ListContainersCommand) { responses.add(listContainers()); } else if (command instanceof CallContainerCommand) { responses.add(callContainer(((CallContainerCommand) command).getContainerId(), ((CallContainerCommand) command).getPayload())); } else if (command instanceof DisposeContainerCommand) { responses.add(disposeContainer(((DisposeContainerCommand) command).getContainerId())); } else if (command instanceof GetContainerInfoCommand ) { responses.add(getContainerInfo(((GetContainerInfoCommand) command).getContainerId())); } else if (command instanceof GetScannerInfoCommand ) { responses.add(getScannerInfo(((GetScannerInfoCommand) command).getContainerId())); } else if (command instanceof UpdateScannerCommand ) { responses.add(updateScanner(((UpdateScannerCommand) command).getContainerId(), ((UpdateScannerCommand) command).getScanner())); } else if (command instanceof UpdateReleaseIdCommand ) { responses.add(updateContainerReleaseId(((UpdateReleaseIdCommand) command).getContainerId(), ((UpdateReleaseIdCommand) command).getReleaseId())); } } } return new ServiceResponsesList(responses); }
private ServiceResponse<KieScannerResource> configureScanner(String containerId, KieContainerInstanceImpl kci, KieScannerResource scannerResource) { KieScannerStatus scannerStatus = scannerResource.getStatus(); ServiceResponse<KieScannerResource> result; switch (scannerStatus) { case CREATED: result = createScanner(containerId, kci); break; case STARTED: result = startScanner(containerId, scannerResource.getPollInterval(), kci); break; case STOPPED: result = stopScanner(containerId, kci); break; case SCANNING: result = scanNow(containerId, kci); break; case DISPOSED: result = disposeScanner(containerId, kci); break; default: // error result = new ServiceResponse<KieScannerResource>(ResponseType.FAILURE, "Unknown status '" + scannerStatus + "' for scanner on container " + containerId + "."); break; } kci.getResource().setScanner(result.getResult()); return result; }
@Override public void contextDestroyed(ServletContextEvent sce) { KieServerImpl server = KieServerLocator.getInstance(); server.destroy(); logger.info("KieServer (id {}) destroyed successfully", KieServerEnvironment.getServerId()); } }
private ServiceResponse<KieScannerResource> stopScanner(String id, KieContainerInstanceImpl kci) { List<Message> messages = getMessagesForContainer(id); messages.clear(); if (kci.getScanner() == null) { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Scanner is not started. ", getScannerResource(kci)); } if (KieScannerStatus.STARTED.equals(mapScannerStatus(kci)) || KieScannerStatus.SCANNING.equals(mapScannerStatus(kci))) { kci.stopScanner(); messages.add(new Message(Severity.INFO, "Kie scanner successfully stopped.")); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Kie scanner successfully stopped.", getScannerResource(kci)); } else { KieScannerStatus scannerStatus = mapScannerStatus(kci); messages.add(new Message(Severity.WARN, "Invalid kie scanner status: " + scannerStatus)); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid kie scanner status: " + scannerStatus, getScannerResource(kci)); } }
private ServiceResponse<KieScannerResource> disposeScanner(String id, KieContainerInstanceImpl kci) { List<Message> messages = getMessagesForContainer(id); messages.clear(); if (kci.getScanner() == null) { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Invalid call. Scanner already disposed.", getScannerResource(kci)); } if (KieScannerStatus.STARTED.equals(mapScannerStatus(kci)) || KieScannerStatus.SCANNING.equals(mapScannerStatus(kci))) { ServiceResponse<KieScannerResource> response = stopScanner(id, kci); if (ResponseType.FAILURE.equals(response.getType())) { return response; } } kci.disposeScanner(); messages.add(new Message(Severity.INFO, "Kie scanner successfully disposed (shut down).")); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Kie scanner successfully disposed (shut down).", getScannerResource(kci)); }
for (KieServerCommand command : commands.getCommands()) { if (command instanceof CreateContainerCommand) { ServiceResponse<?> forbidden = this.kieServer.checkAccessability(); if (forbidden != null) { logger.warn("Kie Server management api is disabled, skiping command execution {}", command); responses.add(this.kieServer.createContainer(((CreateContainerCommand) command).getContainer().getContainerId(), ((CreateContainerCommand) command).getContainer())); } else if (command instanceof GetServerInfoCommand) { responses.add(this.kieServer.getInfo()); } else if (command instanceof ListContainersCommand) { responses.add(this.kieServer.listContainers(((ListContainersCommand)command).getKieContainerResourceFilter())); } else if (command instanceof CallContainerCommand) { ServiceResponse response = callContainer(((CallContainerCommand) command).getContainerId(), ((CallContainerCommand) command).getPayload(), marshallingFormat, classType, true); ServiceResponse<?> forbidden = this.kieServer.checkAccessability(); if (forbidden != null) { logger.warn("Kie Server management api is disabled, skiping command execution {}", command); responses.add(this.kieServer.disposeContainer(((DisposeContainerCommand) command).getContainerId())); } else if (command instanceof GetContainerInfoCommand) { responses.add(this.kieServer.getContainerInfo(((GetContainerInfoCommand) command).getContainerId())); } else if (command instanceof GetScannerInfoCommand) { responses.add(this.kieServer.getScannerInfo(((GetScannerInfoCommand) command).getContainerId())); } else if (command instanceof UpdateScannerCommand) { ServiceResponse<?> forbidden = this.kieServer.checkAccessability(); if (forbidden != null) { logger.warn("Kie Server management api is disabled, skiping command execution {}", command); responses.add(this.kieServer.updateScanner(((UpdateScannerCommand) command).getContainerId(), ((UpdateScannerCommand) command).getScanner()));
private ServiceResponse<KieScannerResource> scanNow(String id, KieContainerInstanceImpl kci) { List<Message> messages = getMessagesForContainer(id); messages.clear(); if (kci.getScanner() == null) { createScanner(id, kci); } KieScannerStatus scannerStatus = mapScannerStatus(kci); if (KieScannerStatus.STOPPED.equals(scannerStatus) || KieScannerStatus.CREATED.equals(scannerStatus) || KieScannerStatus.STARTED.equals(scannerStatus)) { kci.scanNow(); messages.add(new Message(Severity.INFO, "Kie scanner successfully invoked.")); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Scan successfully executed.", getScannerResource(kci)); } else { messages.add(new Message(Severity.WARN, "Invalid kie scanner status: " + scannerStatus)); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid kie scanner status: " + scannerStatus, getScannerResource(kci)); } }
private ServiceResponse<KieScannerResource> scanNow(String id, KieScannerResource resource, KieContainerInstance kci) { if (kci.getScanner() == null) { createScanner( id, kci ); } KieScannerStatus kss = mapStatus( kci.getScanner().getStatus() ); if (KieScannerStatus.STOPPED.equals( kss ) || KieScannerStatus.CREATED.equals( kss ) || KieScannerStatus.STARTED.equals( kss )) { kci.getScanner().scanNow(); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Scan successfully executed.", getScannerResource(kci)); } else { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid kie scanner status: " + kss, getScannerResource(kci)); } }
public void installContainersSync(KieServerImpl kieServer, Set<KieContainerResource> containers, KieServerState currentState, KieServerSetup kieServerSetup) { logger.info("About to install containers '{}' on kie server '{}'", containers, kieServer); if (containers == null) { kieServer.markAsReady(); return; } for (KieContainerResource containerResource : containers) { if (KieContainerStatus.STARTED.equals(containerResource.getStatus())) { kieServer.createContainer(containerResource.getContainerId(), containerResource); } else if (KieContainerStatus.DEACTIVATED.equals(containerResource.getStatus())) { kieServer.createContainer(containerResource.getContainerId(), containerResource); kieServer.deactivateContainer(containerResource.getContainerId()); containerResource.setStatus(KieContainerStatus.DEACTIVATED); } } currentState.setContainers(containers); if (kieServerSetup.getServerConfig() != null) { currentState.setConfiguration(kieServerSetup.getServerConfig()); } kieServer.getServerRegistry().getStateRepository().store(KieServerEnvironment.getServerId(), currentState); kieServer.markAsReady(); } }
private ServiceResponse<KieScannerResource> disposeScanner(String id, KieScannerResource resource, KieContainerInstance kci) { if (kci.getScanner() == null) { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Invalid call. Scanner already disposed. ", getScannerResource(kci)); } if (KieScannerStatus.STARTED.equals(mapStatus(kci.getScanner().getStatus())) || KieScannerStatus.SCANNING.equals(mapStatus(kci.getScanner().getStatus()))) { ServiceResponse<KieScannerResource> response = stopScanner(id, resource, kci); if (ResponseType.FAILURE.equals(response.getType())) { return response; } } kci.getScanner().shutdown(); kci.setScanner(null); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Kie scanner successfully shutdown.", getScannerResource(kci)); }
public ServiceResponse<KieScannerResource> getScannerInfo(String id) { try { KieContainerInstanceImpl kci = context.getContainer(id); if (kci != null && kci.getKieContainer() != null) { KieScannerResource info = getScannerResource(kci); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Scanner info successfully retrieved", info); } else { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Unknown container " + id + "."); } } catch (Exception e) { logger.error("Error retrieving scanner info for container '" + id + "'.", e); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Error retrieving scanner info for container '" + id + "': " + e.getClass().getName() + ": " + e.getMessage()); } }
private ServiceResponse<KieScannerResource> createScanner(String id, KieContainerInstanceImpl kci) { if (kci.getScanner() == null) { List<Message> messages = getMessagesForContainer(id); messages.clear(); kci.createScanner(); messages.add(new Message(Severity.INFO, "Kie scanner successfully created.")); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Kie scanner successfully created.", getScannerResource(kci)); } else { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Error creating the scanner for container " + id + ". Scanner already exists."); } }
private ServiceResponse<KieScannerResource> stopScanner(String id, KieScannerResource resource, KieContainerInstance kci) { if (kci.getScanner() == null) { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid call. Scanner is not instantiated. ", getScannerResource(kci)); } if (KieScannerStatus.STARTED.equals(mapStatus(kci.getScanner().getStatus())) || KieScannerStatus.SCANNING.equals(mapStatus(kci.getScanner().getStatus()))) { kci.getScanner().stop(); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Kie scanner successfully stopped.", getScannerResource(kci)); } else { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid kie scanner status: " + mapStatus(kci.getScanner().getStatus()), getScannerResource(kci)); } }
@Override public Response getContainerInfo(HttpHeaders headers, String id) { return createCorrectVariant(server.getContainerInfo(id), headers); }
@Override public Response getInfo(HttpHeaders headers) { return createCorrectVariant(server.getInfo(), headers); }
@Override public Response disposeContainer(HttpHeaders headers, String id) { return createCorrectVariant(server.disposeContainer(id), headers); }
@Override public Response getReleaseId(HttpHeaders headers, String id) { return createCorrectVariant(server.getContainerReleaseId(id), headers); }
@Override public Response getScannerInfo(HttpHeaders headers, String id) { return createCorrectVariant(server.getScannerInfo(id), headers); }
@Override public Response createContainer(HttpHeaders headers, String id, KieContainerResource container) { ServiceResponse<KieContainerResource> response = server.createContainer(id, container); if( response.getType() == ServiceResponse.ResponseType.SUCCESS ) { return createCorrectVariant(response, headers, Status.CREATED); } return createCorrectVariant(response, headers, Status.BAD_REQUEST); }
private ServiceResponse<KieScannerResource> startScanner(String id, Long scannerPollInterval, KieContainerInstanceImpl kci) { List<Message> messages = getMessagesForContainer(id); messages.clear(); if (kci.getScanner() == null) { ServiceResponse<KieScannerResource> response = createScanner(id, kci); if (ResponseType.FAILURE.equals(response.getType())) { return response; KieScannerStatus scannerStatus = mapScannerStatus(kci); if (KieScannerStatus.STOPPED.equals(scannerStatus) && scannerPollInterval != null) { return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.SUCCESS, "Kie scanner successfully created.", getScannerResource(kci)); } else if (!KieScannerStatus.STOPPED.equals(scannerStatus)) { messages.add(new Message(Severity.WARN, "Invalid kie scanner status: " + scannerStatus)); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid kie scanner status: " + scannerStatus, getScannerResource(kci)); } else if (scannerPollInterval == null) { messages.add(new Message(Severity.WARN, "Invalid polling interval: null")); return new ServiceResponse<KieScannerResource>(ServiceResponse.ResponseType.FAILURE, "Invalid polling interval: null", getScannerResource(kci)); getScannerResource(kci));