Search in sources :

Example 1 with Pair

use of com.netflix.discovery.shared.Pair in project spring-cloud-netflix by spring-cloud.

the class EurekaController method populateApps.

private void populateApps(Map<String, Object> model) {
    List<Application> sortedApplications = getRegistry().getSortedApplications();
    ArrayList<Map<String, Object>> apps = new ArrayList<>();
    for (Application app : sortedApplications) {
        LinkedHashMap<String, Object> appData = new LinkedHashMap<>();
        apps.add(appData);
        appData.put("name", app.getName());
        Map<String, Integer> amiCounts = new HashMap<>();
        Map<InstanceInfo.InstanceStatus, List<Pair<String, String>>> instancesByStatus = new HashMap<>();
        Map<String, Integer> zoneCounts = new HashMap<>();
        for (InstanceInfo info : app.getInstances()) {
            String id = info.getId();
            String url = info.getStatusPageUrl();
            InstanceInfo.InstanceStatus status = info.getStatus();
            String ami = "n/a";
            String zone = "";
            if (info.getDataCenterInfo().getName() == DataCenterInfo.Name.Amazon) {
                AmazonInfo dcInfo = (AmazonInfo) info.getDataCenterInfo();
                ami = dcInfo.get(AmazonInfo.MetaDataKey.amiId);
                zone = dcInfo.get(AmazonInfo.MetaDataKey.availabilityZone);
            }
            Integer count = amiCounts.get(ami);
            if (count != null) {
                amiCounts.put(ami, count + 1);
            } else {
                amiCounts.put(ami, 1);
            }
            count = zoneCounts.get(zone);
            if (count != null) {
                zoneCounts.put(zone, count + 1);
            } else {
                zoneCounts.put(zone, 1);
            }
            List<Pair<String, String>> list = instancesByStatus.get(status);
            if (list == null) {
                list = new ArrayList<>();
                instancesByStatus.put(status, list);
            }
            list.add(new Pair<>(id, url));
        }
        appData.put("amiCounts", amiCounts.entrySet());
        appData.put("zoneCounts", zoneCounts.entrySet());
        ArrayList<Map<String, Object>> instanceInfos = new ArrayList<>();
        appData.put("instanceInfos", instanceInfos);
        for (Iterator<Map.Entry<InstanceInfo.InstanceStatus, List<Pair<String, String>>>> iter = instancesByStatus.entrySet().iterator(); iter.hasNext(); ) {
            Map.Entry<InstanceInfo.InstanceStatus, List<Pair<String, String>>> entry = iter.next();
            List<Pair<String, String>> value = entry.getValue();
            InstanceInfo.InstanceStatus status = entry.getKey();
            LinkedHashMap<String, Object> instanceData = new LinkedHashMap<>();
            instanceInfos.add(instanceData);
            instanceData.put("status", entry.getKey());
            ArrayList<Map<String, Object>> instances = new ArrayList<>();
            instanceData.put("instances", instances);
            instanceData.put("isNotUp", status != InstanceInfo.InstanceStatus.UP);
            for (Pair<String, String> p : value) {
                LinkedHashMap<String, Object> instance = new LinkedHashMap<>();
                instances.add(instance);
                instance.put("id", p.first());
                String url = p.second();
                instance.put("url", url);
                boolean isHref = url != null && url.startsWith("http");
                instance.put("isHref", isHref);
            /*
					 * String id = p.first(); String url = p.second(); if(url != null &&
					 * url.startsWith("http")){
					 * buf.append("<a href=\"").append(url).append("\">"); }else { url =
					 * null; } buf.append(id); if(url != null){ buf.append("</a>"); }
					 * buf.append(", ");
					 */
            }
        }
    // out.println("<td>" + buf.toString() + "</td></tr>");
    }
    model.put("apps", apps);
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) InstanceInfo(com.netflix.appinfo.InstanceInfo) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) List(java.util.List) AmazonInfo(com.netflix.appinfo.AmazonInfo) Pair(com.netflix.discovery.shared.Pair) Application(com.netflix.discovery.shared.Application) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 2 with Pair

use of com.netflix.discovery.shared.Pair in project nutzboot by nutzam.

the class EurekaServletStarter method populateApps.

private void populateApps(NutMap result) {
    List<Application> sortedApplications = getRegistry().getSortedApplications();
    ArrayList<Map<String, Object>> apps = new ArrayList<>();
    for (Application app : sortedApplications) {
        LinkedHashMap<String, Object> appData = new LinkedHashMap<>();
        apps.add(appData);
        appData.put("name", app.getName());
        Map<String, Integer> amiCounts = new HashMap<>();
        Map<InstanceInfo.InstanceStatus, List<Pair<String, String>>> instancesByStatus = new HashMap<>();
        Map<String, Integer> zoneCounts = new HashMap<>();
        for (InstanceInfo info : app.getInstances()) {
            String id = info.getId();
            String url = info.getStatusPageUrl();
            InstanceInfo.InstanceStatus status = info.getStatus();
            String ami = "n/a";
            String zone = "";
            if (info.getDataCenterInfo().getName() == DataCenterInfo.Name.Amazon) {
                AmazonInfo dcInfo = (AmazonInfo) info.getDataCenterInfo();
                ami = dcInfo.get(AmazonInfo.MetaDataKey.amiId);
                zone = dcInfo.get(AmazonInfo.MetaDataKey.availabilityZone);
            }
            Integer count = amiCounts.get(ami);
            if (count != null) {
                amiCounts.put(ami, count + 1);
            } else {
                amiCounts.put(ami, 1);
            }
            count = zoneCounts.get(zone);
            if (count != null) {
                zoneCounts.put(zone, count + 1);
            } else {
                zoneCounts.put(zone, 1);
            }
            List<Pair<String, String>> list = instancesByStatus.get(status);
            if (list == null) {
                list = new ArrayList<>();
                instancesByStatus.put(status, list);
            }
            list.add(new Pair<>(id, url));
        }
        appData.put("amiCounts", amiCounts.entrySet().stream().map(map -> NutMap.NEW().setv("key", map.getKey()).setv("value", map.getValue())).collect(Collectors.toList()));
        appData.put("zoneCounts", zoneCounts.entrySet().stream().map(map -> NutMap.NEW().setv("key", map.getKey()).setv("value", map.getValue())).collect(Collectors.toList()));
        ArrayList<Map<String, Object>> instanceInfos = new ArrayList<>();
        appData.put("instanceInfos", instanceInfos);
        instancesByStatus.forEach((key, value) -> {
            LinkedHashMap<String, Object> instanceData = new LinkedHashMap<>();
            instanceInfos.add(instanceData);
            instanceData.put("status", key);
            ArrayList<Map<String, Object>> instances = new ArrayList<>();
            instanceData.put("instances", instances);
            instanceData.put("isNotUp", key != InstanceInfo.InstanceStatus.UP);
            for (Pair<String, String> p : value) {
                LinkedHashMap<String, Object> instance = new LinkedHashMap<>();
                instances.add(instance);
                instance.put("id", p.first());
                String url = p.second();
                instance.put("url", url);
                boolean isHref = url != null && url.startsWith("http");
                instance.put("isHref", isHref);
            }
        });
    }
    result.put("apps", apps);
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) InstanceInfo(com.netflix.appinfo.InstanceInfo) LinkedHashMap(java.util.LinkedHashMap) ArrayList(java.util.ArrayList) List(java.util.List) AmazonInfo(com.netflix.appinfo.AmazonInfo) Application(com.netflix.discovery.shared.Application) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) NutMap(org.nutz.lang.util.NutMap) Pair(com.netflix.discovery.shared.Pair)

Example 3 with Pair

use of com.netflix.discovery.shared.Pair in project spring-cloud-netflix by spring-cloud.

the class EurekaController method lastn.

@RequestMapping(value = "/lastn", method = RequestMethod.GET)
public String lastn(HttpServletRequest request, Map<String, Object> model) {
    populateBase(request, model);
    PeerAwareInstanceRegistryImpl registry = (PeerAwareInstanceRegistryImpl) getRegistry();
    ArrayList<Map<String, Object>> lastNCanceled = new ArrayList<>();
    List<Pair<Long, String>> list = registry.getLastNCanceledInstances();
    for (Pair<Long, String> entry : list) {
        lastNCanceled.add(registeredInstance(entry.second(), entry.first()));
    }
    model.put("lastNCanceled", lastNCanceled);
    list = registry.getLastNRegisteredInstances();
    ArrayList<Map<String, Object>> lastNRegistered = new ArrayList<>();
    for (Pair<Long, String> entry : list) {
        lastNRegistered.add(registeredInstance(entry.second(), entry.first()));
    }
    model.put("lastNRegistered", lastNRegistered);
    return "eureka/lastn";
}
Also used : PeerAwareInstanceRegistryImpl(com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl) ArrayList(java.util.ArrayList) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) Pair(com.netflix.discovery.shared.Pair) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 4 with Pair

use of com.netflix.discovery.shared.Pair in project eureka by Netflix.

the class AbstractInstanceConfig method getHostInfo.

private static Pair<String, String> getHostInfo() {
    Pair<String, String> pair;
    try {
        InetAddress localHost = InetAddress.getLocalHost();
        pair = new Pair<String, String>(localHost.getHostAddress(), localHost.getHostName());
    } catch (UnknownHostException e) {
        logger.error("Cannot get host info", e);
        pair = new Pair<String, String>("", "");
    }
    return pair;
}
Also used : UnknownHostException(java.net.UnknownHostException) InetAddress(java.net.InetAddress) Pair(com.netflix.discovery.shared.Pair)

Aggregations

Pair (com.netflix.discovery.shared.Pair)4 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 LinkedHashMap (java.util.LinkedHashMap)3 Map (java.util.Map)3 AmazonInfo (com.netflix.appinfo.AmazonInfo)2 InstanceInfo (com.netflix.appinfo.InstanceInfo)2 Application (com.netflix.discovery.shared.Application)2 List (java.util.List)2 PeerAwareInstanceRegistryImpl (com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl)1 InetAddress (java.net.InetAddress)1 UnknownHostException (java.net.UnknownHostException)1 NutMap (org.nutz.lang.util.NutMap)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1