protected String getContainerAlias(KieContainerResource containerResource) { String alias = containerResource.getContainerAlias(); if (alias == null || alias.isEmpty()) { alias = containerResource.getReleaseId().getArtifactId(); } return alias; }
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 ServiceResponse<ReleaseId> getContainerReleaseId(String id) { try { KieContainerInstance 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 ServiceResponse<ReleaseId> updateContainerReleaseId(String id, ReleaseId releaseId) { if( releaseId == null ) { logger.error("Error updating releaseId for container '" + id + "'. ReleaseId is null."); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error updating releaseId for container " + id + ". ReleaseId is null. "); } try { KieContainerInstance kci = context.getContainer(id); // the following code is subject to a concurrent call to dispose(), but the cost of synchronizing it // would likely not be worth it. At this point a decision was made to fail the execution if a concurrent // call do dispose() is executed. if (kci != null && kci.getKieContainer() != null) { Results results = kci.getKieContainer().updateToVersion(releaseId); if (results.hasMessages(Level.ERROR)) { logger.error("Error updating releaseId for container " + id + " to version " + releaseId + "\nMessages: " + results.getMessages()); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error updating release id on container " + id + " to " + releaseId, kci.getResource().getReleaseId()); } else { return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.SUCCESS, "Release id successfully updated.", kci.getResource().getReleaseId()); } } else { return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Container " + id + " is not instantiated."); } } catch (Exception e) { logger.error("Error updating releaseId for container '" + id + "'", e); return new ServiceResponse<ReleaseId>(ServiceResponse.ResponseType.FAILURE, "Error updating releaseId for container " + id + ": " + e.getClass().getName() + ": " + e.getMessage()); } }
public boolean accept(KieContainerResource kieContainerResource) { if (kieContainerResource == null) { throw new IllegalArgumentException("KieContainerResource can not be null!"); } // in case resolved release id exists, check against that ReleaseId resolvedReleaseId = kieContainerResource.getResolvedReleaseId(); if (resolvedReleaseId != null) { if (!releaseIdFilter.accept(resolvedReleaseId)) { return false; } } else { if (!releaseIdFilter.accept(kieContainerResource.getReleaseId())) { return false; } } KieContainerStatus status = kieContainerResource.getStatus(); if (status != null && !statusFilter.accept(status)) { return false; } // all sub-filters accepted the container, so it is a match return true; }
protected boolean updateReleaseId() { ReleaseId oldReleaseId = this.resource.getReleaseId(); ReleaseId oldResolvedReleaseId = this.resource.getResolvedReleaseId(); if ( kieContainer != null ) { this.resource.setReleaseId( new ReleaseId( kieContainer.getContainerReleaseId() ) ); this.resource.setResolvedReleaseId( new ReleaseId( kieContainer.getReleaseId() ) ); } if (releaseIdUpdated(oldReleaseId, this.resource.getReleaseId()) || releaseIdUpdated(oldResolvedReleaseId, this.resource.getResolvedReleaseId())) { disposeMarshallers(); return true; } return false; }
public ServiceResponse<KieContainerResource> createContainer(String containerId, KieContainerResource container) { if (container == null || container.getReleaseId() == null) { logger.error("Error creating container. Release Id is null: " + container); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Failed to create container " + containerId + ". Release Id is null: " + container + "."); ReleaseId releaseId = container.getReleaseId(); try { KieContainerInstance ci = new KieContainerInstance(containerId, KieContainerStatus.CREATING);
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.");
@Test public void testGetContainersRemoteOperationWhenResponseTypeIsSUCCESS() { doReturn(containerResource).when(response).getResult(); doReturn(response).when(client).getContainerInfo(any()); doReturn(ServiceResponse.ResponseType.SUCCESS).when(response).getType(); final KieServerInstanceManager.RemoteKieServerOperation<Void> operation = instanceManager.getContainersRemoteOperation(serverTemplate, containerSpec); operation.doOperation(client, container); verify(container).setContainerSpecId(containerResource.getContainerId()); verify(container).setContainerName(containerResource.getContainerId()); verify(container).setResolvedReleasedId(containerResource.getReleaseId()); verify(container).setServerTemplateId(serverTemplate.getId()); verify(container).setStatus(containerResource.getStatus()); verify(container).setMessages(containerResource.getMessages()); }
@Test public void testMakeContainerResourceWhenConfigsIsNull() { final String id = "id"; final ReleaseId releaseId = mock(ReleaseId.class); final ReleaseId resolvedReleasedId = mock(ReleaseId.class); final KieContainerStatus status = KieContainerStatus.CREATING; final String containerName = "containerName"; final Collection<Message> messages = new ArrayList<>(); doReturn(id).when(containerSpec).getId(); doReturn(releaseId).when(containerSpec).getReleasedId(); doReturn(resolvedReleasedId).when(container).getResolvedReleasedId(); doReturn(status).when(container).getStatus(); doReturn(containerName).when(containerSpec).getContainerName(); doReturn(messages).when(container).getMessages(); doReturn(null).when(containerSpec).getConfigs(); final KieContainerResource resource = instanceManager.makeContainerResource(container, containerSpec); assertEquals(id, resource.getContainerId()); assertEquals(releaseId, resource.getReleaseId()); assertEquals(resolvedReleasedId, resource.getResolvedReleaseId()); assertEquals(status, resource.getStatus()); assertEquals(containerName, resource.getContainerAlias()); assertEquals(messages, resource.getMessages()); verify(instanceManager, never()).setRuleConfigAttributes(any(), any()); verify(instanceManager, never()).setProcessConfigAttributes(any(), any()); }
public ServiceResponse<KieContainerResource> createContainer(String containerId, KieContainerResource container) { if (container == null || container.getReleaseId() == null) { logger.error("Error creating container. Release Id is null: " + container); return new ServiceResponse<KieContainerResource>(ServiceResponse.ResponseType.FAILURE, "Failed to create container " + containerId + ". Release Id is null: " + container + "."); ReleaseId releaseId = container.getReleaseId(); try { KieContainerInstanceImpl ci = new KieContainerInstanceImpl(containerId, KieContainerStatus.CREATING, null, releaseId, this);
@Test public void testMakeContainerResourceWhenConfigsIsNotNull() { final String id = "id"; final ReleaseId releaseId = mock(ReleaseId.class); final ReleaseId resolvedReleasedId = mock(ReleaseId.class); final KieContainerStatus status = KieContainerStatus.CREATING; final String containerName = "containerName"; final Collection<Message> messages = new ArrayList<>(); final Map<?, ?> configs = mock(Map.class); doReturn(id).when(containerSpec).getId(); doReturn(releaseId).when(containerSpec).getReleasedId(); doReturn(resolvedReleasedId).when(container).getResolvedReleasedId(); doReturn(status).when(container).getStatus(); doReturn(containerName).when(containerSpec).getContainerName(); doReturn(messages).when(container).getMessages(); doReturn(configs).when(containerSpec).getConfigs(); final KieContainerResource resource = instanceManager.makeContainerResource(container, containerSpec); assertEquals(id, resource.getContainerId()); assertEquals(releaseId, resource.getReleaseId()); assertEquals(resolvedReleasedId, resource.getResolvedReleaseId()); assertEquals(status, resource.getStatus()); assertEquals(containerName, resource.getContainerAlias()); assertEquals(messages, resource.getMessages()); verify(instanceManager).setRuleConfigAttributes(containerSpec, resource); verify(instanceManager).setProcessConfigAttributes(containerSpec, resource); }
protected void collectContainerInfo(ContainerSpec containerSpec, KieServicesClient client, Container container) { // collect up to date information ServiceResponse<KieContainerResource> serviceResponse = client.getContainerInfo(containerSpec.getId()); if (serviceResponse.getType().equals(ServiceResponse.ResponseType.SUCCESS)) { KieContainerResource containerResource = serviceResponse.getResult(); container.setResolvedReleasedId(containerResource.getResolvedReleaseId() == null ? containerResource.getReleaseId() : containerResource.getResolvedReleaseId()); container.setMessages(containerResource.getMessages()); } }
container.setServerInstanceId(serverInstanceKey.getServerInstanceId()); container.setUrl(serverInstanceKey.getUrl() + CONTAINERS_URI_PART + containerResource.getContainerId()); container.setResolvedReleasedId(containerResource.getResolvedReleaseId() == null ? containerResource.getReleaseId() : containerResource.getResolvedReleaseId()); container.setServerTemplateId(serverInstanceKey.getServerTemplateId()); container.setStatus(containerResource.getStatus());
assertEquals(1, containerResources.size()); ReleaseId latestContainerReleaseId = containerResources.get(0).getReleaseId(); assertEquals(releaseId101, latestContainerReleaseId);
@Override public Void doOperation(KieServicesClient client, Container container) { final ServiceResponse<KieContainerResource> response = client.getContainerInfo(containerSpec.getId()); final KieContainerResource containerResource = response.getResult(); if (response.getType().equals(ServiceResponse.ResponseType.SUCCESS)) { container.setContainerSpecId(containerResource.getContainerId()); container.setContainerName(containerResource.getContainerAlias()); container.setResolvedReleasedId(containerResource.getResolvedReleaseId() == null ? containerResource.getReleaseId() : containerResource.getResolvedReleaseId()); container.setServerTemplateId(serverTemplate.getId()); container.setStatus(containerResource.getStatus()); container.setMessages(containerResource.getMessages()); } return null; } };
assertEquals(1, containerResources.size()); ReleaseId latestContainerReleaseId = containerResources.get(0).getReleaseId(); assertEquals(kjar101, latestContainerReleaseId);
KieContainerResource container = response.getResult(); assertEquals("Container id", "kie1", container.getContainerId()); assertEquals("Release id", releaseId, container.getReleaseId()); assertEquals("Resolved release Id", releaseId, container.getResolvedReleaseId());