@Override public void afterResponseSent() { ServerTemplate serverTemplate = controller.getTemplateStorage().load(serverInfo.getServerId()); ServerInstanceKey serverInstanceKey = serverTemplate.getServerInstanceKeys().stream() .filter(server -> server.getUrl().equals(serverInfo.getLocation())) .findFirst() .get(); ServerInstance serverInstance = new ServerInstance(); serverInstance.setServerName(serverInstanceKey.getServerName()); serverInstance.setServerTemplateId(serverInstanceKey.getServerTemplateId()); serverInstance.setServerInstanceId(serverInstanceKey.getServerInstanceId()); serverInstance.setUrl(serverInstanceKey.getUrl()); controller.getNotificationService().notify(new ServerInstanceUpdated(serverInstance)); controller.getNotificationService().notify(new ServerInstanceConnected(serverInstance)); }
protected void updateOrBuildClient(KieServicesClient client, ServerInstance serverInstance) { if (client != null) { LoadBalancer loadBalancer = ((AbstractKieServicesClientImpl) client).getLoadBalancer(); loadBalancer.activate(serverInstance.getUrl()); logger.debug("Server instance {} for server template {} activated on client thus will be used for operations", serverInstance.getUrl(), serverInstance.getServerTemplateId()); } else { logger.debug("No kie server client yet created, attempting to create one for server template {}", serverInstance.getServerTemplateId()); ServerTemplate serverTemplate = specManagementService.getServerTemplate(serverInstance.getServerTemplateId()); buildClientsForServer(serverTemplate); } }
public static ServerInstanceKey toKey( final ServerInstance serverInstance ) { return new ServerInstanceKey( serverInstance.getServerTemplateId(), serverInstance.getServerName(), serverInstance.getServerInstanceId(), serverInstance.getUrl() ); }
public void onServerInstanceUpdated( @Observes final ServerInstanceUpdated serverInstanceUpdated ) { if ( serverInstanceUpdated != null && serverInstanceUpdated.getServerInstance() != null ) { final ServerInstance updatedServerInstance = serverInstanceUpdated.getServerInstance(); if ( serverTemplate != null && updatedServerInstance.getServerTemplateId().equals( serverTemplate.getId() ) && !serverInstances.contains( updatedServerInstance.getServerInstanceId() ) ) { addServerInstance( updatedServerInstance ); } } else { logger.warn( "Illegal event argument." ); } }
@Test public void testRegisterKieServerWithoutProcessCapability() { final ServerInstance serverInstance = new ServerInstance(); serverInstance.setServerInstanceId("instanceId"); serverInstance.setServerTemplateId("templateId"); when(specManagementService.getServerTemplate(serverInstance.getServerTemplateId())).thenReturn(new ServerTemplate()); kieServerDataSetManager.registerInKieServer(new ServerInstanceRegistered(serverInstance)); assertEquals(1, receivedEvents.size()); verify(dataSetDefRegistry, never()).getDataSetDefs(false); }
@Test public void testOnInstanceUpdateDifferentServer() { final ServerInstance serverInstance = new ServerInstance( "templateId", "serverName", "serverInstanceId", "url", "1.0", Collections.<Message>emptyList(), Collections.<Container>emptyList() ); presenter.onSelect( new ServerInstanceSelected( serverInstance ) ); final ServerInstance serverInstance2 = new ServerInstance( "templateId2", "serverName2", "serverInstanceId2", "url", "1.0", Collections.<Message>emptyList(), Collections.<Container>emptyList() ); presenter.onInstanceUpdate( new ServerInstanceUpdated( serverInstance2 ) ); verify( view ).clear(); verify( view ).setServerName( serverInstance.getServerName() ); verify( view ).setServerURL( serverInstance.getUrl() ); verify( view ).setEmptyView( remoteEmptyPresenter.getView() ); }
@Test public void testServerInstanceConnected() { handler.accept(new ServerInstanceConnected(new ServerInstance())); verify(eventHandler).onServerInstanceConnected(any()); verifyNoMoreInteractions(eventHandler); }
@Test public void testOnServerInstanceUpdated() { final ServerTemplate serverTemplate = new ServerTemplate( "ServerTemplateId", "ServerTemplateName" ); presenter.setup( serverTemplate, null ); assertEquals( serverTemplate, presenter.getCurrentServerTemplate() ); final ServerInstance serverInstance = new ServerInstance( serverTemplate.getId(), "serverName", "serverInstanceId", "url", "1.0", Collections.<Message>emptyList(), Collections.<Container>emptyList() ); presenter.onServerInstanceUpdated( new ServerInstanceUpdated( serverInstance ) ); presenter.onServerInstanceUpdated( new ServerInstanceUpdated( serverInstance ) ); verify( view ).addServerInstance( eq( serverInstance.getServerTemplateId() ), eq( serverInstance.getServerInstanceId() ), eq( serverInstance.getServerName() ), any( Command.class ) ); presenter.onServerInstanceDeleted( new ServerInstanceDeleted( serverInstance.getServerInstanceId() ) ); presenter.onServerInstanceUpdated( new ServerInstanceUpdated( serverInstance ) ); verify( view, times( 2 ) ).addServerInstance( eq( serverInstance.getServerTemplateId() ), eq( serverInstance.getServerInstanceId() ), eq( serverInstance.getServerName() ), any( Command.class ) ); }
@Test public void testOnServerInstanceUpdated() { final ContainerCardPresenter cardPresenter = mock( ContainerCardPresenter.class ); when( cardPresenter.getView() ).thenReturn( mock( ContainerCardPresenter.View.class ) ); when( presenterProvider.get() ).thenReturn( cardPresenter ); final ServerInstance serverInstance = new ServerInstance( "templateId", "serverName", "serverInstanceId", "url", "1.0", Collections.<Message>emptyList(), Collections.<Container>emptyList() ); final Container container = new Container( "containerSpecId", "containerName", serverInstance, Collections.<Message>emptyList(), null, null ); container.setStatus( KieContainerStatus.STARTED ); final Container containerToBeRemoved = new Container( "containerToBeRemovedSpecId", "containerToBeRemovedName", serverInstance, Collections.<Message>emptyList(), null, null ); containerToBeRemoved.setStatus( KieContainerStatus.STARTED ); serverInstance.addContainer( container ); presenter.setup( new ContainerSpec(), Arrays.asList( container, containerToBeRemoved ) ); presenter.onServerInstanceUpdated( new ServerInstanceUpdated( serverInstance ) ); //One container updated, one removed verify( cardPresenter ).updateContent( serverInstance, container ); verify( cardPresenter ).delete(); final ArgumentCaptor<Container> containerCaptor = ArgumentCaptor.forClass( Container.class ); verify( cardPresenter, times( 2 ) ).setup( eq( container.getServerInstanceKey() ), containerCaptor.capture() ); final List<Container> containers = containerCaptor.getAllValues(); assertEquals( 2, containers.size() ); assertEquals( container, containers.get( 0 ) ); assertEquals( containerToBeRemoved, containers.get( 1 ) ); }
public void onServerInstanceConnected(@Observes ServerInstanceConnected serverInstanceConnected) { ServerInstance serverInstance = serverInstanceConnected.getServerInstance(); Iterator<Map.Entry<String, KieServicesClient>> iterator = serverTemplatesClients.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, KieServicesClient> entry = iterator.next(); if (entry.getKey().startsWith(serverInstance.getServerTemplateId())) { KieServicesClient client = entry.getValue(); // update regular clients updateOrBuildClient(client, serverInstance); logger.debug("KieServerClient load balancer updated for server template {}", entry.getKey()); } } KieServicesClient adminClient = adminClients.get(serverInstance.getServerTemplateId()); // update admin clients updateOrBuildClient(adminClient, serverInstance); }
public void onServerInstanceUpdated( @Observes final ServerInstanceUpdated serverInstanceUpdated ) { if ( serverInstanceUpdated != null && serverInstanceUpdated.getServerInstance() != null ) { final String updatedServerInstanceKey = serverInstanceUpdated.getServerInstance().getServerInstanceId(); if ( index.containsKey( updatedServerInstanceKey ) ) { final Map<String, ContainerCardPresenter> oldIndex = new HashMap<String, ContainerCardPresenter>( index.remove( updatedServerInstanceKey ) ); final Map<String, ContainerCardPresenter> newIndexIndex = new HashMap<String, ContainerCardPresenter>( serverInstanceUpdated.getServerInstance().getContainers().size() ); index.put( updatedServerInstanceKey, newIndexIndex ); for ( final Container container : serverInstanceUpdated.getServerInstance().getContainers() ) { ContainerCardPresenter presenter = oldIndex.remove( container.getContainerSpecId() ); if ( !container.getStatus().equals( KieContainerStatus.STOPPED ) ) { for ( final Container container : serverInstanceUpdated.getServerInstance().getContainers() ) { if ( container.getServerTemplateId().equals( containerSpec.getServerTemplateKey().getId() ) && container.getContainerSpecId().equals( containerSpec.getId() ) ) {
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ServerInstanceUpdated that = (ServerInstanceUpdated) o; if (serverInstance != null ? !serverInstance.equals(that.serverInstance) : that.serverInstance != null) { return false; } return true; }
@Test public void testRegisterKieServerWithoutProcessCapability() { final ServerInstance serverInstance = new ServerInstance(); serverInstance.setServerInstanceId("instanceId"); serverInstance.setServerTemplateId("templateId"); when(specManagementService.getServerTemplate(serverInstance.getServerTemplateId())).thenReturn(new ServerTemplate()); kieServerDataSetManager.registerInKieServer(new ServerInstanceRegistered(serverInstance)); assertEquals(1, receivedEvents.size()); verify(dataSetDefRegistry, never()).getDataSetDefs(false); }
@Test public void testOnInstanceUpdate() { final ServerInstance serverInstance = new ServerInstance( "templateId", "serverName", "serverInstanceId", "url", "1.0", Collections.<Message>emptyList(), Collections.<Container>emptyList() ); presenter.onSelect( new ServerInstanceSelected( serverInstance ) ); presenter.onInstanceUpdate( new ServerInstanceUpdated( serverInstance ) ); verify( view, times( 2 ) ).clear(); verify( view, times( 2 ) ).setServerName( serverInstance.getServerName() ); verify( view, times( 2 ) ).setServerURL( serverInstance.getUrl() ); verify( view, times( 2 ) ).setEmptyView( remoteEmptyPresenter.getView() ); }
@Test public void testServerInstanceUpdated() { handler.accept(new ServerInstanceUpdated(new ServerInstance())); verify(eventHandler).onServerInstanceUpdated(any()); verifyNoMoreInteractions(eventHandler); }
public void onServerInstanceConnected(@Observes ServerInstanceConnected serverInstanceConnected) { ServerInstance serverInstance = serverInstanceConnected.getServerInstance(); serverTemplatesClients.computeIfPresent(serverInstance.getServerTemplateId(), (serverTemplateId, clients) -> { clients.forEach((key, client) -> { // update regular clients updateOrBuildClient(client, serverInstance); logger.debug("KieServerClient load balancer updated for server template {}", serverTemplateId.equals(SERVER_TEMPLATE_KEY) ? serverInstance.getServerTemplateId() : serverTemplateId); }); return clients; }); serverInstancesById.put(serverInstance.getServerInstanceId(), serverInstance); KieServicesClient adminClient = adminClients.get(serverInstance.getServerTemplateId()); // update admin clients updateOrBuildClient(adminClient, serverInstance); // once all steps are completed successfully notify other parts interested so the serverClient can actually be used serverInstanceRegisteredEvent.fire(new ServerInstanceRegistered(serverInstanceConnected.getServerInstance())); }
@Test public void testOnServerInstanceUpdatedDuplicatedContainerName() { final ContainerCardPresenter cardPresenter = mock( ContainerCardPresenter.class ); when( cardPresenter.getView() ).thenReturn( mock( ContainerCardPresenter.View.class ) ); when( presenterProvider.get() ).thenReturn( cardPresenter ); final ServerInstance serverInstance = new ServerInstance( "templateId", "serverName", "serverInstanceId", "url", "1.0", Collections.<Message>emptyList(), Collections.<Container>emptyList() ); final Container container = new Container( "containerSpecId", "containerName", serverInstance, Collections.<Message>emptyList(), null, null ); container.setStatus( KieContainerStatus.STARTED ); final Container container2 = new Container( "containerSpecId2", "containerName", serverInstance, Collections.<Message>emptyList(), null, null ); container2.setStatus( KieContainerStatus.STARTED ); final Container containerToBeRemoved = new Container( "containerToBeRemovedSpecId", "containerToBeRemovedName", serverInstance, Collections.<Message>emptyList(), null, null ); containerToBeRemoved.setStatus( KieContainerStatus.STARTED ); serverInstance.addContainer( container ); serverInstance.addContainer( container2 ); presenter.setup( new ContainerSpec(), Arrays.asList( container, container2, containerToBeRemoved ) ); presenter.onServerInstanceUpdated( new ServerInstanceUpdated( serverInstance ) ); //One container updated, one removed verify( cardPresenter ).updateContent( serverInstance, container ); verify( cardPresenter ).updateContent( serverInstance, container2 ); verify( cardPresenter ).delete(); final ArgumentCaptor<Container> containerCaptor = ArgumentCaptor.forClass( Container.class ); verify( cardPresenter, times( 3 ) ).setup( eq( container.getServerInstanceKey() ), containerCaptor.capture() ); final List<Container> containers = containerCaptor.getAllValues(); assertEquals( 3, containers.size() ); assertEquals( container, containers.get( 0 ) ); assertEquals( container2, containers.get( 1 ) ); assertEquals( containerToBeRemoved, containers.get( 2 ) ); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ServerInstanceConnected that = (ServerInstanceConnected) o; if (serverInstance != null ? !serverInstance.equals(that.serverInstance) : that.serverInstance != null) { return false; } return true; }
final String serverInstanceId2 = serverTemplateId + "@2"; final ServerInstance serverInstance1 = new ServerInstance(); serverInstance1.setServerTemplateId(serverTemplateId); serverInstance1.setUrl("http://1"); serverInstance1.setServerInstanceId(serverInstanceId1); final ServerTemplate serverTemplate = new ServerTemplate(serverTemplateId, serverTemplateId); serverTemplate.addServerInstance(serverInstance1); final ServerInstance serverInstance2 = new ServerInstance(); serverInstance2.setServerTemplateId(serverTemplateId); serverInstance2.setUrl("http://2"); serverInstance2.setServerInstanceId(serverInstanceId2);
@Test public void testRegisterKieServerWithProcessCapability() { final ServerInstance serverInstance = new ServerInstance(); serverInstance.setServerInstanceId("instanceId"); serverInstance.setServerTemplateId("templateId"); when(specManagementService.getServerTemplate(serverInstance.getServerTemplateId())).thenReturn(new ServerTemplate(serverInstance.getServerTemplateId(), null, singletonList(Capability.PROCESS.name()), emptyMap(), emptyList())); kieServerDataSetManager.registerInKieServer(new ServerInstanceRegistered(serverInstance)); assertEquals(0, receivedEvents.size()); verify(dataSetDefRegistry).getDataSetDefs(false); }