Search in sources :

Example 6 with InstanceInfo

use of com.netflix.appinfo.InstanceInfo in project eureka by Netflix.

the class NonEc2EurekaClientModuleTest method testDI.

@SuppressWarnings("deprecation")
@Test
public void testDI() {
    InstanceInfo instanceInfo = injector.getInstance(InstanceInfo.class);
    Assert.assertEquals(ApplicationInfoManager.getInstance().getInfo(), instanceInfo);
    VipAddressResolver vipAddressResolver = injector.getInstance(VipAddressResolver.class);
    Assert.assertTrue(vipAddressResolver instanceof Archaius2VipAddressResolver);
    EurekaClient eurekaClient = injector.getInstance(EurekaClient.class);
    DiscoveryClient discoveryClient = injector.getInstance(DiscoveryClient.class);
    Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClient(), eurekaClient);
    Assert.assertEquals(DiscoveryManager.getInstance().getDiscoveryClient(), discoveryClient);
    Assert.assertEquals(eurekaClient, discoveryClient);
    EurekaClientConfig eurekaClientConfig = injector.getInstance(EurekaClientConfig.class);
    Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClientConfig(), eurekaClientConfig);
    EurekaInstanceConfig eurekaInstanceConfig = injector.getInstance(EurekaInstanceConfig.class);
    Assert.assertEquals(DiscoveryManager.getInstance().getEurekaInstanceConfig(), eurekaInstanceConfig);
    Assert.assertTrue(eurekaInstanceConfig instanceof EurekaArchaius2InstanceConfig);
    ApplicationInfoManager applicationInfoManager = injector.getInstance(ApplicationInfoManager.class);
    InstanceInfo myInfo = applicationInfoManager.getInfo();
    Assert.assertEquals(DataCenterInfo.Name.MyOwn, myInfo.getDataCenterInfo().getName());
}
Also used : EurekaClientConfig(com.netflix.discovery.EurekaClientConfig) EurekaArchaius2InstanceConfig(com.netflix.appinfo.EurekaArchaius2InstanceConfig) Archaius2VipAddressResolver(com.netflix.appinfo.providers.Archaius2VipAddressResolver) VipAddressResolver(com.netflix.appinfo.providers.VipAddressResolver) EurekaInstanceConfig(com.netflix.appinfo.EurekaInstanceConfig) EurekaClient(com.netflix.discovery.EurekaClient) DiscoveryClient(com.netflix.discovery.DiscoveryClient) InstanceInfo(com.netflix.appinfo.InstanceInfo) Archaius2VipAddressResolver(com.netflix.appinfo.providers.Archaius2VipAddressResolver) ApplicationInfoManager(com.netflix.appinfo.ApplicationInfoManager) Test(org.junit.Test)

Example 7 with InstanceInfo

use of com.netflix.appinfo.InstanceInfo in project eureka by Netflix.

the class AbstractJersey2EurekaHttpClient method sendHeartBeat.

@Override
public EurekaHttpResponse<InstanceInfo> sendHeartBeat(String appName, String id, InstanceInfo info, InstanceStatus overriddenStatus) {
    String urlPath = "apps/" + appName + '/' + id;
    Response response = null;
    try {
        WebTarget webResource = jerseyClient.target(serviceUrl).path(urlPath).queryParam("status", info.getStatus().toString()).queryParam("lastDirtyTimestamp", info.getLastDirtyTimestamp().toString());
        if (overriddenStatus != null) {
            webResource = webResource.queryParam("overriddenstatus", overriddenStatus.name());
        }
        Builder requestBuilder = webResource.request();
        addExtraProperties(requestBuilder);
        addExtraHeaders(requestBuilder);
        requestBuilder.accept(MediaType.APPLICATION_JSON_TYPE);
        // Jersey2 refuses to handle PUT with no body
        response = requestBuilder.put(Entity.entity("{}", MediaType.APPLICATION_JSON_TYPE));
        EurekaHttpResponseBuilder<InstanceInfo> eurekaResponseBuilder = anEurekaHttpResponse(response.getStatus(), InstanceInfo.class).headers(headersOf(response));
        if (response.hasEntity()) {
            eurekaResponseBuilder.entity(response.readEntity(InstanceInfo.class));
        }
        return eurekaResponseBuilder.build();
    } finally {
        if (logger.isDebugEnabled()) {
            logger.debug("Jersey2 HTTP PUT {}/{}; statusCode={}", serviceUrl, urlPath, response == null ? "N/A" : response.getStatus());
        }
        if (response != null) {
            response.close();
        }
    }
}
Also used : EurekaHttpResponse(com.netflix.discovery.shared.transport.EurekaHttpResponse) EurekaHttpResponse.anEurekaHttpResponse(com.netflix.discovery.shared.transport.EurekaHttpResponse.anEurekaHttpResponse) Response(javax.ws.rs.core.Response) EurekaHttpResponseBuilder(com.netflix.discovery.shared.transport.EurekaHttpResponse.EurekaHttpResponseBuilder) Builder(javax.ws.rs.client.Invocation.Builder) WebTarget(javax.ws.rs.client.WebTarget) InstanceInfo(com.netflix.appinfo.InstanceInfo)

Example 8 with InstanceInfo

use of com.netflix.appinfo.InstanceInfo in project eureka by Netflix.

the class DiscoveryClient method getNextServerFromEureka.

/*
     * (non-Javadoc)
     *
     * @see
     * com.netflix.discovery.shared.LookupService#getNextServerFromEureka(java
     * .lang.String, boolean)
     */
@Override
public InstanceInfo getNextServerFromEureka(String virtualHostname, boolean secure) {
    List<InstanceInfo> instanceInfoList = this.getInstancesByVipAddress(virtualHostname, secure);
    if (instanceInfoList == null || instanceInfoList.isEmpty()) {
        throw new RuntimeException("No matches for the virtual host name :" + virtualHostname);
    }
    Applications apps = this.localRegionApps.get();
    int index = (int) (apps.getNextIndex(virtualHostname.toUpperCase(Locale.ROOT), secure).incrementAndGet() % instanceInfoList.size());
    return instanceInfoList.get(index);
}
Also used : Applications(com.netflix.discovery.shared.Applications) InstanceInfo(com.netflix.appinfo.InstanceInfo)

Example 9 with InstanceInfo

use of com.netflix.appinfo.InstanceInfo in project eureka by Netflix.

the class DiscoveryClient method updateInstanceRemoteStatus.

private synchronized void updateInstanceRemoteStatus() {
    // Determine this instance's status for this app and set to UNKNOWN if not found
    InstanceInfo.InstanceStatus currentRemoteInstanceStatus = null;
    if (instanceInfo.getAppName() != null) {
        Application app = getApplication(instanceInfo.getAppName());
        if (app != null) {
            InstanceInfo remoteInstanceInfo = app.getByInstanceId(instanceInfo.getId());
            if (remoteInstanceInfo != null) {
                currentRemoteInstanceStatus = remoteInstanceInfo.getStatus();
            }
        }
    }
    if (currentRemoteInstanceStatus == null) {
        currentRemoteInstanceStatus = InstanceInfo.InstanceStatus.UNKNOWN;
    }
    // Notify if status changed
    if (lastRemoteInstanceStatus != currentRemoteInstanceStatus) {
        onRemoteStatusChanged(lastRemoteInstanceStatus, currentRemoteInstanceStatus);
        lastRemoteInstanceStatus = currentRemoteInstanceStatus;
    }
}
Also used : InstanceStatus(com.netflix.appinfo.InstanceInfo.InstanceStatus) InstanceInfo(com.netflix.appinfo.InstanceInfo) Application(com.netflix.discovery.shared.Application)

Example 10 with InstanceInfo

use of com.netflix.appinfo.InstanceInfo in project eureka by Netflix.

the class Ec2EurekaClientModuleTest method testDI.

@SuppressWarnings("deprecation")
@Test
public void testDI() {
    InstanceInfo instanceInfo = injector.getInstance(InstanceInfo.class);
    Assert.assertEquals(ApplicationInfoManager.getInstance().getInfo(), instanceInfo);
    VipAddressResolver vipAddressResolver = injector.getInstance(VipAddressResolver.class);
    Assert.assertTrue(vipAddressResolver instanceof Archaius2VipAddressResolver);
    EurekaClient eurekaClient = injector.getInstance(EurekaClient.class);
    DiscoveryClient discoveryClient = injector.getInstance(DiscoveryClient.class);
    Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClient(), eurekaClient);
    Assert.assertEquals(DiscoveryManager.getInstance().getDiscoveryClient(), discoveryClient);
    Assert.assertEquals(eurekaClient, discoveryClient);
    EurekaClientConfig eurekaClientConfig = injector.getInstance(EurekaClientConfig.class);
    Assert.assertEquals(DiscoveryManager.getInstance().getEurekaClientConfig(), eurekaClientConfig);
    EurekaInstanceConfig eurekaInstanceConfig = injector.getInstance(EurekaInstanceConfig.class);
    Assert.assertEquals(DiscoveryManager.getInstance().getEurekaInstanceConfig(), eurekaInstanceConfig);
    Assert.assertTrue(eurekaInstanceConfig instanceof Ec2EurekaArchaius2InstanceConfig);
    ApplicationInfoManager applicationInfoManager = injector.getInstance(ApplicationInfoManager.class);
    InstanceInfo myInfo = applicationInfoManager.getInfo();
    Assert.assertTrue(myInfo.getDataCenterInfo() instanceof AmazonInfo);
    Assert.assertEquals(DataCenterInfo.Name.Amazon, myInfo.getDataCenterInfo().getName());
}
Also used : EurekaClientConfig(com.netflix.discovery.EurekaClientConfig) Ec2EurekaArchaius2InstanceConfig(com.netflix.appinfo.Ec2EurekaArchaius2InstanceConfig) Archaius2VipAddressResolver(com.netflix.appinfo.providers.Archaius2VipAddressResolver) VipAddressResolver(com.netflix.appinfo.providers.VipAddressResolver) EurekaInstanceConfig(com.netflix.appinfo.EurekaInstanceConfig) EurekaClient(com.netflix.discovery.EurekaClient) DiscoveryClient(com.netflix.discovery.DiscoveryClient) AmazonInfo(com.netflix.appinfo.AmazonInfo) InstanceInfo(com.netflix.appinfo.InstanceInfo) Archaius2VipAddressResolver(com.netflix.appinfo.providers.Archaius2VipAddressResolver) ApplicationInfoManager(com.netflix.appinfo.ApplicationInfoManager) Test(org.junit.Test)

Aggregations

InstanceInfo (com.netflix.appinfo.InstanceInfo)192 Test (org.junit.Test)74 Application (com.netflix.discovery.shared.Application)35 Applications (com.netflix.discovery.shared.Applications)22 AmazonInfo (com.netflix.appinfo.AmazonInfo)21 ArrayList (java.util.ArrayList)19 InstanceStatus (com.netflix.appinfo.InstanceInfo.InstanceStatus)11 Before (org.junit.Before)11 DiscoveryClient (com.netflix.discovery.DiscoveryClient)10 DecoderWrapper (com.netflix.discovery.converters.wrappers.DecoderWrapper)10 Lease (com.netflix.eureka.lease.Lease)9 HashMap (java.util.HashMap)8 Response (javax.ws.rs.core.Response)8 DataCenterInfo (com.netflix.appinfo.DataCenterInfo)7 CodecWrappers (com.netflix.discovery.converters.wrappers.CodecWrappers)7 EncoderWrapper (com.netflix.discovery.converters.wrappers.EncoderWrapper)7 ByteArrayInputStream (java.io.ByteArrayInputStream)7 ApplicationInfoManager (com.netflix.appinfo.ApplicationInfoManager)6 EurekaEntityFunctions.mergeApplications (com.netflix.discovery.util.EurekaEntityFunctions.mergeApplications)6 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)6