public static Application mergeApplication(Application first, Application second) { if (!first.getName().equals(second.getName())) { throw new IllegalArgumentException("Cannot merge applications with different names"); } Application merged = copyApplication(first); for (InstanceInfo instance : second.getInstances()) { switch (instance.getActionType()) { case ADDED: case MODIFIED: merged.addInstance(instance); break; case DELETED: merged.removeInstance(instance); } } return merged; }
public static Application copyApplication(Application application) { Application copy = new Application(application.getName()); for (InstanceInfo instance : application.getInstances()) { copy.addInstance(instance); } return copy; }
public static boolean equal(Application first, Application second) { if (first == second) { return true; } if (first == null || first == null && second != null) { return false; } if (first.getName() != null ? !first.getName().equals(second.getName()) : second.getName() != null) { return false; } List<InstanceInfo> firstInstanceInfos = first.getInstances(); List<InstanceInfo> secondInstanceInfos = second.getInstances(); if (firstInstanceInfos == null && secondInstanceInfos == null) { return true; } if (firstInstanceInfos == null || secondInstanceInfos == null || firstInstanceInfos.size() != secondInstanceInfos.size()) { return false; } for (InstanceInfo firstInstanceInfo : firstInstanceInfos) { InstanceInfo secondInstanceInfo = second.getByInstanceId(firstInstanceInfo.getId()); if (!equal(firstInstanceInfo, secondInstanceInfo)) { return false; } } return true; }
public static void copyApplication(Application source, Application result) { if (source != null) { for (InstanceInfo instance : source.getInstances()) { result.addInstance(instance); } } }
@Override public void serialize(Application value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeStringField(ELEM_NAME, value.getName()); jgen.writeObjectField(ELEM_INSTANCE, value.getInstances()); jgen.writeEndObject(); } }
public static Map<String, InstanceInfo> selectInstancesMappedById(Application application) { Map<String, InstanceInfo> result = new HashMap<>(); for (InstanceInfo instance : application.getInstances()) { result.put(instance.getId(), instance); } return result; }
public static Map<String, Application> toApplicationMap(List<InstanceInfo> instances) { Map<String, Application> applicationMap = new HashMap<String, Application>(); for (InstanceInfo instance : instances) { String appName = instance.getAppName(); Application application = applicationMap.get(appName); if (application == null) { applicationMap.put(appName, application = new Application(appName)); } application.addInstance(instance); } return applicationMap; }
public static void copyApplications(Applications source, Applications result) { if (source != null) { for (Application app : source.getRegisteredApplications()) { result.addApplication(new Application(app.getName(), app.getInstances())); } } }
int deltaCount = 0; for (Application app : delta.getRegisteredApplications()) { for (InstanceInfo instance : app.getInstances()) { Applications applications = getApplications(); String instanceRegion = instanceRegionChecker.getInstanceRegion(instance); applications.getRegisteredApplications(instance.getAppName()).addInstance(instance); } else if (ActionType.MODIFIED.equals(instance.getActionType())) { Application existingApp = applications.getRegisteredApplications(instance.getAppName()); applications.getRegisteredApplications(instance.getAppName()).addInstance(instance); if (existingApp != null) { logger.debug("Deleted instance {} to the existing apps ", instance.getId()); existingApp.removeInstance(instance); if (existingApp.getInstancesAsIsFromEureka().isEmpty()) { applications.removeApplication(existingApp);
int deltaCount = 0; for (Application app : delta.getRegisteredApplications()) { for (InstanceInfo instance : app.getInstances()) { ++deltaCount; if (ActionType.ADDED.equals(instance.getActionType())) { instance.getId()); getApplications().getRegisteredApplications( instance.getAppName()).addInstance(instance); } else if (ActionType.MODIFIED.equals(instance.getActionType())) { Application existingApp = getApplications() instance.getAppName()).addInstance(instance); instance.getId()); getApplications().getRegisteredApplications( instance.getAppName()).removeInstance(instance);
/** * Test that instancesMap in Application and shuffleVirtualHostNameMap in * Applications are correctly updated when the last instance is removed from * an application and shuffleInstances has been run. */ @Test public void shuffleVirtualHostNameMapLastInstanceTest() { DataCenterInfo myDCI = new DataCenterInfo() { public DataCenterInfo.Name getName() { return DataCenterInfo.Name.MyOwn; } }; InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder().setAppName("test") .setVIPAddress("test.testname:1").setDataCenterInfo(myDCI).setHostName("test.hostname").build(); Application application = new Application("TestApp"); application.addInstance(instanceInfo); Applications applications = new Applications(); applications.addApplication(application); applications.shuffleInstances(true); List<InstanceInfo> testApp = applications.getInstancesByVirtualHostName("test.testname:1"); assertEquals(Iterables.getOnlyElement(testApp), application.getByInstanceId("test.hostname")); application.removeInstance(instanceInfo); assertEquals(0, applications.size()); applications.shuffleInstances(true); testApp = applications.getInstancesByVirtualHostName("test.testname:1"); assertTrue(testApp.isEmpty()); assertNull(application.getByInstanceId("test.hostname")); }
@Test public void testRegisteredApplicationsConstructor() { DataCenterInfo myDCI = new DataCenterInfo() { public DataCenterInfo.Name getName() { return DataCenterInfo.Name.MyOwn; } }; InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder() .setAppName("test") .setVIPAddress("test.testname:1") .setSecureVIPAddress("securetest.testname:7102") .setDataCenterInfo(myDCI) .setHostName("test.hostname") .build(); Application application = new Application("TestApp"); application.addInstance(instanceInfo); Applications applications = new Applications("UP_1_", -1L, Arrays.asList(application)); List<Application> appsList = applications.getRegisteredApplications(); Assert.assertEquals(1, appsList.size()); Assert.assertTrue(appsList.contains(application)); Assert.assertEquals(application, applications.getRegisteredApplications(application.getName())); }
@Test public void testMiniAppGet() throws Exception { Response response = applicationResource.getApplication( Version.V2.name(), MediaType.APPLICATION_JSON, EurekaAccept.compact.name() ); String json = String.valueOf(response.getEntity()); DecoderWrapper decoder = CodecWrappers.getDecoder(CodecWrappers.LegacyJacksonJson.class); Application decodedApp = decoder.decode(json, Application.class); // assert false as one is mini, so should NOT equal assertThat(EurekaEntityComparators.equal(testApplication, decodedApp), is(false)); for (InstanceInfo instanceInfo : testApplication.getInstances()) { InstanceInfo decodedInfo = decodedApp.getByInstanceId(instanceInfo.getId()); assertThat(EurekaEntityComparators.equalMini(instanceInfo, decodedInfo), is(true)); } }
@Test public void testInstanceFiltering() { DataCenterInfo myDCI = new DataCenterInfo() { public DataCenterInfo.Name getName() { return DataCenterInfo.Name.MyOwn; } }; InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder() .setAppName("test") .setVIPAddress("test.testname:1") .setSecureVIPAddress("securetest.testname:7102") .setDataCenterInfo(myDCI) .setHostName("test.hostname") .setStatus(InstanceStatus.DOWN) .build(); Application application = new Application("TestApp"); application.addInstance(instanceInfo); Applications applications = new Applications(); applications.addApplication(application); applications.shuffleInstances(true); assertNotNull(applications.getRegisteredApplications("TestApp").getByInstanceId("test.hostname")); assertTrue(applications.getInstancesBySecureVirtualHostName("securetest.testname:7102").isEmpty()); assertTrue(applications.getInstancesBySecureVirtualHostName("test.testname:1").isEmpty()); }
appsForRemoteRegion.getRegisteredApplications(instanceInfo.getAppName()); if (null == remoteApp) { remoteApp = new Application(instanceInfo.getAppName()); appsForRemoteRegion.addApplication(remoteApp); remoteApp.addInstance(instanceInfo); this.removeInstance(instanceInfo, false); it.remove();
@Override public List<InstanceInfo> getInstancesById(String id) { List<InstanceInfo> list = Collections.emptyList(); for (Application app : applications.get().getRegisteredApplications()) { InstanceInfo info = app.getByInstanceId(id); if (info != null) { list.add(info); return list; } } return list; }
public static Application deepCopyApplication(Application source) { Application result = new Application(source.getName()); deepCopyApplication(source, result, EurekaEntityTransformers.<InstanceInfo>identity()); return result; }
@Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Application app = new Application(); while (reader.hasMoreChildren()) { reader.moveDown(); String nodeName = reader.getNodeName(); if (ELEM_NAME.equals(nodeName)) { app.setName(reader.getValue()); } else if (NODE_INSTANCE.equals(nodeName)) { app.addInstance((InstanceInfo) context.convertAnother(app, InstanceInfo.class)); } reader.moveUp(); } return app; } }
private Observable<Void> instanceResource(HttpServerRequest<ByteBuf> request, HttpServerResponse<ByteBuf> response, String appName, String instanceId) { Application app = applications.getRegisteredApplications(appName); if (app == null) { response.setStatus(HttpResponseStatus.NOT_FOUND); return Observable.empty(); } if (request.getHttpMethod() == HttpMethod.PUT) { return Observable.empty(); } if (request.getHttpMethod() == HttpMethod.DELETE) { InstanceInfo instanceInfo = app.getByInstanceId(instanceId); app.removeInstance(instanceInfo); return Observable.empty(); } return notSupportedError(request, response); }