public Double getMetricValue()

in src/main/java/com/google/cloud/dfmetrics/pipelinemanager/MetricsManager.java [91:128]


  public Double getMetricValue(String metricName) throws IOException {
    LOG.info(
        "Getting '{}' metric for {} under {}", metricName, job().getId(), job().getProjectId());

    List<MetricUpdate> metrics =
        jobsClient()
            .getMetrics(job().getProjectId(), job().getLocation(), job().getId())
            .execute()
            .getMetrics();

    if (metrics == null) {
      LOG.warn("No metrics received for the job {} under {}.", job().getId(), job().getProjectId());
      return null;
    }

    for (MetricUpdate metricUpdate : metrics) {
      String currentMetricName = metricUpdate.getName().getName();
      String currentMetricOriginalName = metricUpdate.getName().getContext().get("original_name");
      if (Objects.equals(metricName, currentMetricName)
          || Objects.equals(metricName, currentMetricOriginalName)) {
        // only return if the metric is a scalar
        if (metricUpdate.getScalar() != null) {
          return ((Number) metricUpdate.getScalar()).doubleValue();
        } else {
          LOG.warn(
              "The given metric '{}' is not a scalar metric. Please use getMetrics instead.",
              metricName);
          return null;
        }
      }
    }
    LOG.warn(
        "Unable to find '{}' metric for {} under {}. Please check the metricName and try again!",
        metricName,
        job().getId(),
        job().getProjectId());
    return null;
  }