public double estimateJobCost()

in src/main/java/com/google/cloud/dfmetrics/model/ResourcePricing.java [100:122]


  public double estimateJobCost(String jobType, Map<String, Double> metrics) {
    // Check if dataflow prime is enabled. If so return the cos
    double dcuPrice = getPrice(metrics, "TotalDcuUsage", 1, 1);
    if (dcuPrice > 0) {
      LOG.warn("Estimated Job Cost is not available for prime enabled jobs");
      return 0.0;
    }

    double estimatedCost =
        getPrice(metrics, "TotalVcpuTime", SECONDS_PER_HOUR, vcpuPerHour)
            + getPrice(metrics, "TotalMemoryUsage", (SECONDS_PER_HOUR * 1000), memoryGbPerHour)
            + getPrice(metrics, "TotalPdUsage", SECONDS_PER_HOUR, pdGbPerHour)
            + getPrice(metrics, "TotalSsdUsage", SECONDS_PER_HOUR, ssdGbPerHour);

    if (jobType.equals("JOB_TYPE_STREAMING")) {
      estimatedCost +=
          getPrice(metrics, "TotalStreamingDataProcessed", GB_IN_BYTES, streamingDataPerGb);
    } else {
      estimatedCost +=
          getPrice(metrics, "BillableShuffleDataProcessed", GB_IN_BYTES, shuffleDataPerGb);
    }
    return Math.round(estimatedCost * scale) / scale;
  }