@Override public void callback(final Void response) { if (version != null && !version.isEmpty() && version.compareTo(containerSpec.getReleasedId().getVersion()) == 0) { notification.fire(new NotificationEvent(view.getUpgradeSuccessMessage(), NotificationEvent.NotificationType.SUCCESS)); } updateViewState(); } },
public void setup(final ContainerSpec containerSpec, final RuleConfig ruleConfig) { this.containerSpec = checkNotNull("containerSpec", containerSpec); setRuleConfig(ruleConfig, containerSpec.getReleasedId().getVersion()); }
public void upgrade(final String version) { view.disableActions(); ruleCapabilitiesService.call(new RemoteCallback<Void>() { @Override public void callback(final Void response) { if (version != null && !version.isEmpty() && version.compareTo(containerSpec.getReleasedId().getVersion()) == 0) { notification.fire(new NotificationEvent(view.getUpgradeSuccessMessage(), NotificationEvent.NotificationType.SUCCESS)); } updateViewState(); } }, new ErrorCallback<Object>() { @Override public boolean error(final Object o, final Throwable throwable) { notification.fire(new NotificationEvent(view.getUpgradeErrorMessage(), NotificationEvent.NotificationType.ERROR)); updateViewState(); return false; } }).upgradeContainer(containerSpec, new ReleaseId(containerSpec.getReleasedId().getGroupId(), containerSpec.getReleasedId().getArtifactId(), version)); }
private ContainerSpec copy(final ContainerSpec origin, final String newServerTemplateId, final String newServerTemplateName) { final Map<Capability, ContainerConfig> configMap = origin.getConfigs(); for (Map.Entry<Capability, ContainerConfig> entry : origin.getConfigs().entrySet()) { configMap.put(entry.getKey(), copy(entry.getValue())); } return new ContainerSpec(origin.getId(), origin.getContainerName(), new ServerTemplateKey(newServerTemplateId, newServerTemplateName), new ReleaseId(origin.getReleasedId()), origin.getStatus(), configMap); }
@Test public void testMakeUpgradeContainerOperationWhenResponseTypeIsSuccess() { final ServiceResponse.ResponseType responseType = ServiceResponse.ResponseType.SUCCESS; final String containerId = "id"; final ReleaseId releaseId = mock(ReleaseId.class); doReturn(containerId).when(containerSpec).getId(); doReturn(releaseId).when(containerSpec).getReleasedId(); doReturn(containerResource).when(instanceManager).makeContainerResource(container, containerSpec); doReturn(response).when(client).updateReleaseId(containerId, releaseId); doReturn(responseType).when(response).getType(); doNothing().when(instanceManager).collectContainerInfo(containerSpec, client, container); instanceManager.makeUpgradeContainerOperation(containerSpec).doOperation(client, container); verify(client, never()).createContainer(anyString(), any(KieContainerResource.class)); verify(client).updateReleaseId(containerId, releaseId); verify(instanceManager).collectContainerInfo(containerSpec, client, container); verify(instanceManager, never()).log(any(), any(), any(), any()); }
@Test public void testMakeUpgradeAndStartContainerOperationWhenResponseTypeIsSuccess() { final ServiceResponse.ResponseType responseType = ServiceResponse.ResponseType.SUCCESS; final String containerId = "id"; final ReleaseId releaseId = mock(ReleaseId.class); doReturn(containerId).when(containerSpec).getId(); doReturn(releaseId).when(containerSpec).getReleasedId(); doReturn(containerResource).when(instanceManager).makeContainerResource(container, containerSpec); doReturn(response).when(client).updateReleaseId(containerId, releaseId); doReturn(responseType).when(response).getType(); doNothing().when(instanceManager).collectContainerInfo(containerSpec, client, container); instanceManager.makeUpgradeAndStartContainerOperation(containerSpec).doOperation(client, container); verify(client).createContainer(containerId, containerResource); verify(client).updateReleaseId(containerId, releaseId); verify(instanceManager).collectContainerInfo(containerSpec, client, container); verify(instanceManager, never()).log(any(), any(), any(), any()); }
protected void buildClientsForServer(ServerTemplate serverTemplate) { KieServicesClient kieServicesClient = createClientForTemplate(serverTemplate, null, getCredentialsProvider()); if (kieServicesClient != null) { serverTemplatesClients.put(serverTemplate.getId(), kieServicesClient); } if (serverTemplate.getContainersSpec() != null) { for (ContainerSpec containerSpec : serverTemplate.getContainersSpec()) { try { String key = serverTemplate.getId() + "|" + containerSpec.getId(); if (serverTemplatesClients.containsKey(key)) { logger.debug("KieServerClient for {} is already created", key); continue; } KieContainer kieContainer = kieServices.newKieContainer(containerSpec.getReleasedId()); KieServicesClient kieServicesClientForContainer = createClientForTemplate(serverTemplate, kieContainer.getClassLoader(), getCredentialsProvider()); if (kieServicesClient != null) { serverTemplatesClients.put(key, kieServicesClientForContainer); } } catch (Exception e) { logger.warn("Failed ot create kie server client for container {} due to {}", containerSpec.getId(), e.getMessage()); } } } // lastly create admin client KieServicesClient adminKieServicesClient = createClientForTemplate(serverTemplate, null, getAdminCredentialsProvider()); if (adminKieServicesClient != null) { adminClients.put(serverTemplate.getId(), adminKieServicesClient); } }
@Before public void init() { releaseId = new ReleaseId(); releaseId.setVersion("0.1"); doNothing().when(notification).fire(any(NotificationEvent.class)); ruleCapabilitiesServiceCaller = new CallerMock<RuleCapabilitiesService>(ruleCapabilitiesService); when(containerSpec.getReleasedId()).thenReturn(releaseId); when(view.getUpgradeSuccessMessage()).thenReturn(SUCCESS_UPGRADE); presenter = new ContainerRulesConfigPresenter(logger, view, ruleCapabilitiesServiceCaller, notification); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { releaseId.setVersion(invocation.getArgumentAt(1, ReleaseId.class).getVersion()); return null; } }).when(ruleCapabilitiesService).upgradeContainer(any(ContainerSpecKey.class), any(ReleaseId.class)); }
@Test public void testMakeUpgradeContainerOperationWhenResponseTypeIsNotSuccess() { final ServiceResponse.ResponseType responseType = ServiceResponse.ResponseType.FAILURE; final String containerId = "id"; final String url = "url"; final String msg = "msg"; final ReleaseId releaseId = mock(ReleaseId.class); doReturn(containerId).when(containerSpec).getId(); doReturn(releaseId).when(containerSpec).getReleasedId(); doReturn(containerResource).when(instanceManager).makeContainerResource(container, containerSpec); doReturn(response).when(client).updateReleaseId(containerId, releaseId); doReturn(responseType).when(response).getType(); doReturn(msg).when(response).getMsg(); doReturn(url).when(container).getUrl(); doNothing().when(instanceManager).collectContainerInfo(containerSpec, client, container); instanceManager.makeUpgradeContainerOperation(containerSpec).doOperation(client, container); verify(client, never()).createContainer(anyString(), any(KieContainerResource.class)); verify(client).updateReleaseId(containerId, releaseId); verify(instanceManager).collectContainerInfo(containerSpec, client, container); verify(instanceManager).log("Container {} failed to upgrade on server instance {} due to {}", containerId, url, msg); }
@Test public void testMakeUpgradeAndStartContainerOperationWhenResponseTypeIsNotSuccess() { final ServiceResponse.ResponseType responseType = ServiceResponse.ResponseType.FAILURE; final String containerId = "id"; final String url = "url"; final String msg = "msg"; final ReleaseId releaseId = mock(ReleaseId.class); doReturn(containerId).when(containerSpec).getId(); doReturn(releaseId).when(containerSpec).getReleasedId(); doReturn(containerResource).when(instanceManager).makeContainerResource(container, containerSpec); doReturn(response).when(client).updateReleaseId(containerId, releaseId); doReturn(responseType).when(response).getType(); doReturn(msg).when(response).getMsg(); doReturn(url).when(container).getUrl(); doNothing().when(instanceManager).collectContainerInfo(containerSpec, client, container); instanceManager.makeUpgradeAndStartContainerOperation(containerSpec).doOperation(client, container); verify(client).createContainer(containerId, containerResource); verify(client).updateReleaseId(containerId, releaseId); verify(instanceManager).collectContainerInfo(containerSpec, client, container); verify(instanceManager).log("Container {} failed to upgrade on server instance {} due to {}", containerId, url, msg); }
private void updateView(final Collection<Container> containers) { containerStatusEmptyPresenter.setup(containerSpec); containerRemoteStatusPresenter.setup(containerSpec, containers); view.clear(); if (isEmpty(containers)) { view.setStatus(containerStatusEmptyPresenter.getView()); } else { view.setStatus(containerRemoteStatusPresenter.getView()); } view.setContainerName(containerSpec.getContainerName()); view.setGroupIp(containerSpec.getReleasedId().getGroupId()); view.setArtifactId(containerSpec.getReleasedId().getArtifactId()); containerRulesConfigPresenter.setVersion(containerSpec.getReleasedId().getVersion()); containerProcessConfigPresenter.disable(); updateStatus(containerSpec.getStatus() != null ? containerSpec.getStatus() : KieContainerStatus.STOPPED); for (Map.Entry<Capability, ContainerConfig> entry : containerSpec.getConfigs().entrySet()) { switch (entry.getKey()) { case RULE: setupRuleConfig((RuleConfig) entry.getValue()); break; case PROCESS: setupProcessConfig((ProcessConfig) entry.getValue()); break; } } }
@Test public void testUpgradeContainerWhenContainerSpecStatusIsStarted() { final List<Container> fakeResult = new ArrayList<Container>() {{ add(container); }}; doReturn(fakeResult).when(kieServerInstanceManager).upgradeContainer(any(ServerTemplate.class), any(ContainerSpec.class)); containerSpec.setStatus(KieContainerStatus.STARTED); final ReleaseId initial = containerSpec.getReleasedId(); final ReleaseId upgradeTo = new ReleaseId("org.kie", "kie-server-kjar", "2.0"); ruleCapabilitiesService.upgradeContainer(containerSpec, upgradeTo); verify(kieServerInstanceManager).upgradeContainer(any(ServerTemplate.class), any(ContainerSpec.class)); final ServerTemplate updated = specManagementService.getServerTemplate(serverTemplate.getId()); final Collection<ContainerSpec> containerSpecs = updated.getContainersSpec(); assertNotNull(containerSpecs); assertEquals(1, containerSpecs.size()); ContainerSpec updatedContainer = containerSpecs.iterator().next(); assertNotNull(updatedContainer); assertNotNull(updatedContainer.getReleasedId()); assertNotEquals(initial, updatedContainer.getReleasedId()); assertEquals(upgradeTo, updatedContainer.getReleasedId()); assertEquals(updatedContainer.getStatus(), KieContainerStatus.STARTED); }
private void remoteUpgradeContainer(final KieServicesClient client, final Container container, final ContainerSpec containerSpec) { final ServiceResponse<ReleaseId> response = client.updateReleaseId(containerSpec.getId(), containerSpec.getReleasedId()); if (response.getType() != ServiceResponse.ResponseType.SUCCESS) { log("Container {} failed to upgrade on server instance {} due to {}", containerSpec.getId(), container.getUrl(), response.getMsg()); } collectContainerInfo(containerSpec, client, container); }
final ReleaseId initial = containerSpec.getReleasedId(); final ReleaseId upgradeTo = new ReleaseId("org.kie", "kie-server-kjar", "2.0"); assertNotNull(updatedContainer); assertNotNull(updatedContainer.getReleasedId()); assertNotEquals(initial, updatedContainer.getReleasedId()); assertEquals(upgradeTo, updatedContainer.getReleasedId()); assertEquals(updatedContainer.getStatus(), KieContainerStatus.STARTED);
@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()); }
@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); }
@Test public void testNewContainerStarted() { final String path = "org:kie:1.0"; final GAV gav = new GAV(path); when(m2RepoService.loadGAVFromJar(path)).thenReturn(gav); when(view.getContainerName()).thenReturn("containerName"); when(view.getContainerAlias()).thenReturn("containerAlias"); when(view.getGroupId()).thenReturn(gav.getGroupId()); when(view.getArtifactId()).thenReturn(gav.getArtifactId()); when(view.getVersion()).thenReturn(gav.getVersion()); when(view.isStartContainer()).thenReturn(true); presenter.asWidget(); final ContainerSpec containerSpec = presenter.buildContainerSpec("templateId", Collections.<Capability, ContainerConfig>emptyMap()); assertEquals(new ReleaseId(gav.getGroupId(), gav.getArtifactId(), gav.getVersion()), containerSpec.getReleasedId()); assertEquals(KieContainerStatus.STARTED, containerSpec.getStatus()); assertEquals("containerAlias", containerSpec.getContainerName()); assertEquals("containerName", containerSpec.getId()); } }
KieContainerResource makeContainerResource(final Container container, final ContainerSpec containerSpec) { final KieContainerResource containerResource = new KieContainerResource(containerSpec.getId(), containerSpec.getReleasedId(), container.getResolvedReleasedId(), container.getStatus()); containerResource.setContainerAlias(containerSpec.getContainerName()); containerResource.setMessages((List<Message>) container.getMessages()); if (containerSpec.getConfigs() != null) { setRuleConfigAttributes(containerSpec, containerResource); setProcessConfigAttributes(containerSpec, containerResource); } return containerResource; }
@Test public void testOnDependencyPathSelectedEvent() { final String path = "org:kie:1.0"; final GAV gav = new GAV(path); when(m2RepoService.loadGAVFromJar(path)).thenReturn(gav); when(view.getContainerName()).thenReturn("containerName"); when(view.getContainerAlias()).thenReturn("containerAlias"); when(view.getGroupId()).thenReturn(gav.getGroupId()); when(view.getArtifactId()).thenReturn(gav.getArtifactId()); when(view.getVersion()).thenReturn(gav.getVersion()); presenter.asWidget(); presenter.onDependencyPathSelectedEvent(new DependencyPathSelectedEvent(artifactListWidgetPresenter, path)); verify(m2RepoService).loadGAVFromJar(path); verify(view).setGroupId(gav.getGroupId()); verify(view).setArtifactId(gav.getArtifactId()); verify(view).setVersion(gav.getVersion()); verify(wizardPageStatusChangeEvent).fire(any(WizardPageStatusChangeEvent.class)); final ContainerSpec containerSpec = presenter.buildContainerSpec("templateId", Collections.<Capability, ContainerConfig>emptyMap()); assertEquals(new ReleaseId(gav.getGroupId(), gav.getArtifactId(), gav.getVersion()), containerSpec.getReleasedId()); assertEquals(KieContainerStatus.STOPPED, containerSpec.getStatus()); assertEquals("containerAlias", containerSpec.getContainerName()); assertEquals("containerName", containerSpec.getId()); }
container.setServerInstanceId(serverTemplate.getId()); container.setServerTemplateId(serverTemplate.getId()); container.setResolvedReleasedId(containerSpec.getReleasedId()); container.setContainerName(containerSpec.getContainerName()); container.setContainerSpecId(containerSpec.getId());