private Map<String, MetricReportRequest> getPropertyIdMaps(Request request, Set<String> ids) {
    Map<String, MetricReportRequest> propertyMap = new HashMap<>();

    for (String id : ids) {
      Map<String, PropertyInfo> propertyInfoMap = getPropertyInfoMap("*", id);

      for (Map.Entry<String, PropertyInfo> entry : propertyInfoMap.entrySet()) {
        PropertyInfo propertyInfo = entry.getValue();
        String propertyId = entry.getKey();
        String amsId = propertyInfo.getAmsId();

        TemporalInfo temporalInfo = request.getTemporalInfo(id);

        if (temporalInfo != null && propertyInfo.isTemporal()) {
          String propertyName = propertyInfo.getPropertyId();
          String report = null;
          // format : report_name.metric_name
          int dotIndex = propertyName.lastIndexOf('.');
          if (dotIndex != -1){
            report = propertyName.substring(0, dotIndex);
          }
          if (report !=  null) {
            MetricReportRequest reportRequest = propertyMap.get(report);
            if (reportRequest == null) {
              reportRequest = new MetricReportRequest();
              propertyMap.put(report, reportRequest);
              reportRequest.setTemporalInfo(temporalInfo);
            }
            reportRequest.addPropertyId(amsId, propertyId);
          }
        }
      }
    }
    return propertyMap;
  }
Populate a resource by obtaining the requested Ganglia RESOURCE_METRICS.

@param resource  the resource to be populated
@param request   the request
@param predicate the predicate

@return true if the resource was successfully populated with the requested properties

@throws SystemException if unable to populate the resource
ambari-server/src/main/java/org/apache/ambari/server/controller/metrics/timeline/AMSReportPropertyProvider.java