@RequestMapping(method = RequestMethod.GET)
  public HttpEntity<Resources<AutoscaledAppResource>> getAutoscaledApps() throws Exception {

    List<String> autoscaledAppNames =
        autoscalingManager.getAppNames().get(10, TimeUnit.MILLISECONDS);
    List<AutoscaledAppResource> result =
        new ArrayList<AutoscaledAppResource>(autoscaledAppNames.size());
    Collection<Link> links = new ArrayList<Link>();
    links.add(linkTo(AutoscaledAppController.class).withSelfRel());

    for (String appName : autoscaledAppNames) {
      AutoscaledAppResource ar = new AutoscaledAppResource(appName);
      ar.add(linkTo(AutoscaledAppController.class).slash(appName).withSelfRel());
      ar.add(linkTo(AutoscaledAppController.class).slash(appName).slash("rules").withRel("rules"));
      links.add(linkTo(AutoscaledAppController.class).slash(appName).withRel("autoscaledApp"));
      result.add(ar);
    }
    return new HttpEntity<Resources<AutoscaledAppResource>>(
        new Resources<AutoscaledAppResource>(result, links));
  }
 @RequestMapping(value = "/{appName}", method = RequestMethod.GET)
 public HttpEntity<AutoscaledAppResource> get(@PathVariable String appName)
     throws InterruptedException, ExecutionException {
   AppInfo app = autoscalingManager.getApp(appName).get();
   AutoscaledAppResource ar = new AutoscaledAppResource(appName);
   ar.setMetrics(app.getMetrics());
   ar.setInstanceCount(app.getInstanceCount());
   ar.setScalingEvents(app.getScalingEvents());
   ar.setActiveAlarms(app.getActiveAlarms());
   ar.add(linkTo(AutoscaledAppController.class).slash(appName).withSelfRel());
   ar.add(linkTo(AutoscaledAppController.class).slash(appName).slash("rules").withRel("rules"));
   return new HttpEntity<AutoscaledAppResource>(ar);
 }