Green-Software-Foundation / if

Impact Framework
https://if.greensoftware.foundation/
MIT License
143 stars 40 forks source link

SCI embodied ambiguous error message #849

Closed MariamKhalatova closed 2 months ago

MariamKhalatova commented 3 months ago

Description of the Error

After receiving following error:

MissingInputDataError: `functional-unit` value is missing from input data or
    it is not a positive integer

as a user, I'm entering positive integer which results with another error:

InputValidationError:   "functional-unit" parameter is expected string, received number. Error code: invalid_type.

Expected Behaviour

First error message should guide what to fix.

Actual Behaviour

Misleading error.

Steps to Reproduce

name: pipeline-with-aggregate
description: a full pipeline with the aggregate feature enabled
tags:
# aggregation:
#   metrics:
#     - "carbon"
#   type: "both"
initialize:
  plugins:
    "interpolate":
      method: Interpolation
      path: 'builtin'
      global-config:
        method: linear
        x: [0, 10, 50, 100]
        y: [0.12, 0.32, 0.75, 1.02]
        input-parameter: 'cpu/utilization'
        output-parameter: 'cpu-factor'
    "cpu-factor-to-wattage":
      method: Multiply
      path: builtin
      global-config:
        input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
        output-parameter: "cpu-wattage"
    "wattage-times-duration":
      method: Multiply
      path: builtin
      global-config:
        input-parameters: ["cpu-wattage", "duration"]
        output-parameter: "cpu-wattage-times-duration"
    "wattage-to-energy-kwh":
      method: Divide
      path: "builtin"
      global-config:
        numerator: cpu-wattage-times-duration
        denominator: 3600000
        output: cpu-energy-raw
    "calculate-vcpu-ratio":
      method: Divide
      path: "builtin"
      global-config:
        numerator: vcpus-total
        denominator: vcpus-allocated
        output: vcpu-ratio
    "correct-cpu-energy-for-vcpu-ratio":
      method: Divide
      path: "builtin"
      global-config:
        numerator: cpu-energy-raw
        denominator: vcpu-ratio
        output: cpu-energy-kwh
    "sci-embodied":
      path: "builtin"
      method: SciEmbodied
    "operational-carbon":
      method: Multiply
      path: builtin
      global-config:
        input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
        output-parameter: "carbon-operational"
    "sci":
      path: "builtin"
      method: Sci
      global-config:
        functional-unit: "requests"
    "sum-carbon":
      path: "builtin"
      method: Sum
      global-config:
        input-parameters:
          - carbon-operational
          - carbon-embodied
        output-parameter: carbon
    "time-sync":
      method: TimeSync
      path: "builtin"
      global-config:
        start-time: "2023-12-12T00:00:00.000Z"
        end-time: "2023-12-12T00:01:00.000Z"
        interval: 5
        allow-padding: true
tree:
  children:
    child-1:
      pipeline:
        - interpolate
        - cpu-factor-to-wattage
        - wattage-times-duration
        - wattage-to-energy-kwh
        - calculate-vcpu-ratio
        - correct-cpu-energy-for-vcpu-ratio
        - sci-embodied
        - operational-carbon
        - sum-carbon
        - time-sync
        - sci
      config:
        group-by:
          group:
            - cloud/region
            - cloud/instance-type
      defaults:
        cpu/thermal-design-power: 100
        grid/carbon-intensity: 800
        device/emissions-embodied: 1533.120 # gCO2eq
        time-reserved: 3600 # 1hr in seconds
        device/expected-lifespan: 94608000 # 3 years in seconds
        vcpus-total: 8
        vcpus-allocated: 1
      inputs:
        - timestamp: "2023-12-12T00:00:00.000Z"
          cloud/instance-type: A1
          cloud/region: uk-west
          duration: 1
          cpu/utilization: 10
          requests: 10
        - timestamp: "2023-12-12T00:00:01.000Z"
          duration: 5
          cpu/utilization: 20
          cloud/instance-type: A1
          cloud/region: uk-west
          requests: 5
        - timestamp: "2023-12-12T00:00:06.000Z"
          duration: 7
          cpu/utilization: 15
          cloud/instance-type: A1
          cloud/region: uk-west
          requests: 15
        - timestamp: "2023-12-12T00:00:13.000Z"
          duration: 30
          cloud/instance-type: A1
          cloud/region: uk-west
          cpu/utilization: 15
          requests: 30
jmcook1186 commented 3 months ago

fix suggested in #850

jmcook1186 commented 2 months ago

Closing as fixed