protected void registerWithAlias(KieContainerInstanceImpl kieContainerInstance) { KieContainerResource containerResource = kieContainerInstance.getResource(); String alias = getContainerAlias(containerResource); List<KieContainerInstanceImpl> byAlias = containersByAlias.get(alias); if (byAlias == null) { byAlias = new ArrayList<>(); containersByAlias.put(alias, byAlias); } byAlias.add(kieContainerInstance); }
protected void removeFromAlias(KieContainerInstanceImpl kieContainerInstance) { if (kieContainerInstance == null) { return; } KieContainerResource containerResource = kieContainerInstance.getResource(); String alias = getContainerAlias(containerResource); List<KieContainerInstanceImpl> byAlias = containersByAlias.get(alias); if (byAlias != null) { byAlias.remove(kieContainerInstance); } }
private KieScannerResource getScannerResource(KieContainerInstanceImpl kci) { return kci.getResource().getScanner(); }
private List<KieContainerResource> getContainersWithMessages() { List<KieContainerResource> containers = new ArrayList<KieContainerResource>(); for (KieContainerInstanceImpl instance : context.getContainers()) { instance.getResource().setMessages(getMessagesForContainer(instance.getContainerId())); containers.add(instance.getResource()); } return containers; }
public void disposeScanner() { if (this.scanner == null) { throw new IllegalStateException("Can not dispose non-existing (null) scanner!"); } this.scanner.shutdown(); this.scanner = null; this.getResource().setScanner(new KieScannerResource(KieScannerStatus.DISPOSED)); }
public ServiceResponse<KieContainerResource> getContainerInfo(String id) { try { KieContainerInstanceImpl ci = context.getContainer(id); if (ci != null) { setMessages(ci); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.SUCCESS, "Info for container " + id, ci.getResource()); } return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Container " + id + " is not instantiated."); } catch (Exception e) { logger.error("Error retrieving info for container '" + id + "'", e); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Error retrieving container info: " + e.getClass().getName() + ": " + e.getMessage()); } }
public ServiceResponse<ReleaseId> getContainerReleaseId(String id) { try { KieContainerInstanceImpl ci = context.getContainer(id); if (ci != null) { return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.SUCCESS, "ReleaseId for container " + id, ci.getResource().getReleaseId()); } return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Container " + id + " is not instantiated."); } catch (Exception e) { logger.error("Error retrieving releaseId for container '" + id + "'", e); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error retrieving container releaseId: " + e.getClass().getName() + ": " + e.getMessage()); } }
public void startScanner(long pollingInterval) { if (this.scanner == null) { throw new IllegalStateException("Can not start non-existing (null) scanner!"); } this.scanner.start(pollingInterval); this.scanner.addListener(scannerListener); this.getResource().setScanner(new KieScannerResource(KieScannerStatus.STARTED, pollingInterval)); }
public void stopScanner() { if (this.scanner == null) { throw new IllegalStateException("Can not stop non-existing (null) scanner!"); } this.scanner.stop(); this.scanner.removeListener(scannerListener); this.getResource().getScanner().setStatus(KieScannerStatus.STOPPED); }
private void setMessages(KieContainerInstanceImpl kci) { kci.getResource().setMessages(getMessagesForContainer(kci.getContainerId())); }
try { KieContainerInstanceImpl ci = new KieContainerInstanceImpl(containerId, KieContainerStatus.CREATING, null, releaseId, this); ci.getResource().setContainerAlias(container.getContainerAlias()); KieContainerInstanceImpl previous = null; if (kieContainer != null) { ci.setKieContainer(kieContainer); ci.getResource().setConfigItems(container.getConfigItems()); ci.getResource().setMessages(messages); logger.debug("Container {} (for release id {}) general initialization: DONE", containerId, releaseId); String errorMessage = "Failed to create scanner for container " + containerId + " with module " + releaseId + "."; messages.add(new Message(Severity.ERROR, errorMessage)); ci.getResource().setStatus(KieContainerStatus.FAILED); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, errorMessage); ci.getResource().setStatus(KieContainerStatus.STARTED); logger.info("Container {} (for release id {}) successfully started", containerId, releaseId); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.SUCCESS, "Container " + containerId + " successfully deployed with module " + releaseId + ".", ci.getResource()); } else { ci.getResource().setStatus(KieContainerStatus.FAILED); ci.getResource().setReleaseId(releaseId); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Failed to create container " + containerId + " with module " + releaseId + "."); ci.getResource().setStatus(KieContainerStatus.FAILED); ci.getResource().setReleaseId(releaseId); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Failed to create container " + containerId + " with module " + releaseId + ".");
storeServerState(currentState -> { String containerId = kci.getContainerId(); KieScannerResource scannerState = kci.getResource().getScanner(); currentState.getContainers().forEach(containerResource -> { if (containerId.equals(containerResource.getContainerId())) {
try { logger.debug("Container {} (for release id {}) shutdown: In Progress", containerId, kci.getResource().getReleaseId()); logger.debug("Container {} (for release id {}) {} shutdown: DONE", containerId, kci.getResource().getReleaseId(), extension); disposedExtensions.add(extension); for (KieServerExtension extension : disposedExtensions) { extension.createContainer(containerId, kci, parameters); logger.debug("Container {} (for release id {}) {} restart: DONE", containerId, kci.getResource().getReleaseId(), extension); logger.info("Container {} (for release id {}) STARTED after failed dispose", containerId, kci.getResource().getReleaseId()); logger.info("Container {} (for release id {}) successfully stopped", containerId, kci.getResource().getReleaseId());
ReleaseId originalReleaseId = kci.getResource().getReleaseId(); Message updateMessage = updateKieContainerToVersion(kci, releaseId); if (updateMessage.getSeverity().equals(Severity.WARN)) { messages.add(updateMessage); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error updating release id on container " + containerId + " to " + releaseId, kci.getResource().getReleaseId()); if (updateMessage.getSeverity().equals(Severity.WARN)) { messages.add(updateMessage); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error reverting release id update on container " + containerId + " to original release id " + originalReleaseId, kci.getResource().getReleaseId()); messages.add(new Message(Severity.WARN, "Error updating release id on container " + containerId + " to " + releaseId + ", release id returned back to " + kci.getResource().getReleaseId())); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error updating release id on container " + containerId + " to " + releaseId + ", release id returned back to " + kci.getResource().getReleaseId(), kci.getResource().getReleaseId()); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.SUCCESS, "Release id successfully updated.", kci.getResource().getReleaseId()); } else { return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Container " + containerId + " is not instantiated.");
return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.SUCCESS, "Container " + containerId + " deactivated successfully.", kci.getResource());
return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.SUCCESS, "Container " + containerId + " activated successfully.", kci.getResource());
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; }
@Test public void buildConversationIdHeaderRunningContainer() { String kieServerId = "KieServerId"; KieServerEnvironment.setServerId(kieServerId); String groupId = "org.kie"; String artifactId = "testArtifact"; String version = "1.0"; ReleaseId releaseId = new ReleaseId(groupId, artifactId, version); KieContainerInstanceImpl containerInstanceImpl = new KieContainerInstanceImpl(CONTAINER_ID, KieContainerStatus.STARTED); containerInstanceImpl.getResource().setReleaseId(releaseId); when(registry.getContainer(CONTAINER_ID)).thenReturn(containerInstanceImpl); Header conversationIdHeader = RestUtils.buildConversationIdHeader(CONTAINER_ID, registry, headers); assertEquals(KieServerConstants.KIE_CONVERSATION_ID_TYPE_HEADER, conversationIdHeader.getName()); assertNotNull(conversationIdHeader.getValue()); assertTrue(conversationIdHeader.getValue().contains(groupId)); assertTrue(conversationIdHeader.getValue().contains(artifactId)); assertTrue(conversationIdHeader.getValue().contains(version)); assertTrue(conversationIdHeader.getValue().contains(CONTAINER_ID)); assertTrue(conversationIdHeader.getValue().contains(kieServerId)); }