@Override
  public Set<Resource> populateResourcesWithProperties(Set<Resource> resources,
               Request request, Set<String> propertyIds) throws SystemException {

    Map<String, Map<TemporalInfo, MetricsRequest>> requestMap = getMetricsRequests(resources, request, propertyIds);

    // For each cluster
    for (Map.Entry<String, Map<TemporalInfo, MetricsRequest>> clusterEntry : requestMap.entrySet()) {
      // For each request
      for (MetricsRequest metricsRequest : clusterEntry.getValue().values()) {
        try {
          metricsRequest.populateResources();
        } catch (IOException io) {
          // Skip further queries to preempt long calls due to timeout
          if (io instanceof SocketTimeoutException) {
            if (LOG.isDebugEnabled()) {
              LOG.debug("Skip populating resources on socket timeout.");
            }
            break;
          }
        }
      }
    }

    return resources;
  }
Populate the associated resources by making a call to the Metrics
service.

@return a collection of populated resources
@throws SystemException if unable to populate the resources
ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSPropertyProvider.java