function getData()

in lib/perf-top/rca/util/temperature-profile/generate-data.js [72:156]


function getData(rawData, dimension, graphParams, type) {
  var jsonData = {};
  try {
    jsonData = JSON.parse(rawData).AllTemperatureDimensions[0].NodeLevelDimensionalSummary;
    if (jsonData.length === 0 || jsonData === undefined) {
      console.error(`Failed to retrieve data for metrics. HTTP(S) response was:
        ${rawData}`);
      return {};
    }
    if (graphParams.split(",").length > 1) {
      console.error(`Too many graph parameters to plot`);
      return {};
    }
  } catch (e) {
    console.error(`HTTP(S) Response for per-node data was not in JSON format:
      ${rawData}`);
    return {};
  }

  var nodeDimensions = [];
  var nodeData = [];
  var nodeTimestamp;
  var allData = {};
  for (var i = 0; i < jsonData.length; i++) {
    var node = jsonData[i];
    if (!("dimension" in node)) {
      console.error(`Data returned was in an unexpected format:
        ${JSON.stringify(node)}`);
      continue;
    }
    if (!dimension.includes(node.dimension)) continue;
    nodeTimestamp = node.timestamp;
    var zoneSummary = node.NodeLevelZoneSummary;
    
    if (type === "lines") {
      var field = node.dimension + " - " + graphParams;
      nodeDimensions.push(field);
      if (node.hasOwnProperty(graphParams)) {
        nodeData.push(helper.parseNumberData(node[graphParams]));
      } else {
        nodeData.push("null");
      }
    } else if (type === "tables") {
      for (var j = 0; j < zoneSummary.length; j++) {
        if (zoneSummary[j].zone === graphParams) {
          var target = zoneSummary[j];
          if (target.all_shards.length > 0) {
            nodeDimensions.push('index_name');
            nodeDimensions.push("shard_id");
            target.all_shards[0].temperature.forEach(function (field) {
              nodeDimensions.push(field.dimension);
            });
            for (var k = 0; k < target.all_shards.length; k++) {
              var tmp = target.all_shards[k];
              var tmpData = [];
              tmpData.push(tmp.index_name);
              tmpData.push(tmp.shard_id);
              tmp.temperature.forEach(function (data) {
                tmpData.push(helper.parseNumberData(data.value));
              });
              nodeData.push(tmpData);
            }
          }
          break;
        }
      }
    } else if (type == "donuts") {
      for (var j = 0; j < zoneSummary.length; j++) {
        nodeDimensions.push(zoneSummary[j].zone);
        nodeData.push(helper.parseNumberData(zoneSummary[j].all_shards.length));
      }
    }
    break;
  }
  try {
    allData = {
      fields: nodeDimensions,
      data: nodeData,
      timestamp: nodeTimestamp,
    };
  } catch (e) {
    console.error(`error find: ${e}`);
  }
  return allData;
}