@grnsft/if 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/CONTRIBUTING.md +4 -5
  2. package/README.md +14 -33
  3. package/Refactor-migration-guide.md +5 -6
  4. package/build/builtins/coefficient/index.d.ts +1 -2
  5. package/build/builtins/coefficient/index.js +18 -4
  6. package/build/builtins/copy-param/index.d.ts +2 -0
  7. package/build/builtins/copy-param/index.js +68 -0
  8. package/build/builtins/csv-lookup/index.d.ts +1 -1
  9. package/build/builtins/csv-lookup/index.js +44 -37
  10. package/build/builtins/divide/index.d.ts +1 -1
  11. package/build/builtins/divide/index.js +22 -11
  12. package/build/builtins/exponent/index.d.ts +1 -2
  13. package/build/builtins/exponent/index.js +9 -23
  14. package/build/builtins/export-csv-raw.d.ts +4 -2
  15. package/build/builtins/export-csv-raw.js +7 -7
  16. package/build/builtins/export-csv.js +8 -11
  17. package/build/builtins/export-log.js +1 -1
  18. package/build/builtins/export-yaml.js +6 -6
  19. package/build/builtins/group-by.d.ts +1 -1
  20. package/build/builtins/group-by.js +5 -5
  21. package/build/builtins/index.d.ts +1 -0
  22. package/build/builtins/index.js +4 -2
  23. package/build/builtins/interpolation/index.d.ts +1 -1
  24. package/build/builtins/interpolation/index.js +10 -8
  25. package/build/builtins/mock-observations/helpers/common-generator.d.ts +2 -2
  26. package/build/builtins/mock-observations/helpers/common-generator.js +10 -13
  27. package/build/builtins/mock-observations/helpers/rand-int-generator.d.ts +2 -2
  28. package/build/builtins/mock-observations/helpers/rand-int-generator.js +14 -24
  29. package/build/builtins/mock-observations/index.d.ts +1 -2
  30. package/build/builtins/mock-observations/index.js +2 -4
  31. package/build/builtins/multiply/index.d.ts +1 -2
  32. package/build/builtins/multiply/index.js +10 -16
  33. package/build/builtins/regex/index.d.ts +1 -2
  34. package/build/builtins/regex/index.js +8 -12
  35. package/build/builtins/sci/index.d.ts +1 -2
  36. package/build/builtins/sci/index.js +23 -22
  37. package/build/builtins/sci-embodied/index.d.ts +1 -1
  38. package/build/builtins/sci-embodied/index.js +16 -17
  39. package/build/builtins/shell/index.d.ts +1 -2
  40. package/build/builtins/shell/index.js +4 -4
  41. package/build/builtins/subtract/index.d.ts +1 -2
  42. package/build/builtins/subtract/index.js +7 -23
  43. package/build/builtins/sum/index.d.ts +1 -2
  44. package/build/builtins/sum/index.js +14 -11
  45. package/build/builtins/time-sync.d.ts +1 -2
  46. package/build/builtins/time-sync.js +62 -67
  47. package/build/check.d.ts +2 -0
  48. package/build/check.js +95 -0
  49. package/build/config/config.d.ts +13 -1
  50. package/build/config/config.js +61 -1
  51. package/build/config/params.js +1 -6
  52. package/build/config/strings.d.ts +45 -5
  53. package/build/config/strings.js +50 -9
  54. package/build/diff.js +2 -2
  55. package/build/env.d.ts +2 -0
  56. package/build/env.js +38 -0
  57. package/build/lib/aggregate.js +1 -1
  58. package/build/lib/compute.js +1 -1
  59. package/build/lib/exhaust.js +4 -4
  60. package/build/lib/initialize.js +20 -24
  61. package/build/lib/load.js +4 -4
  62. package/build/types/compute.d.ts +1 -1
  63. package/build/types/compute.js +1 -1
  64. package/build/types/if-env.d.ts +8 -0
  65. package/build/types/if-env.js +3 -0
  66. package/build/types/interface.d.ts +1 -19
  67. package/build/types/interface.js +1 -1
  68. package/build/types/npm.d.ts +9 -0
  69. package/build/types/npm.js +3 -0
  70. package/build/types/process-args.d.ts +9 -0
  71. package/build/types/process-args.js +1 -1
  72. package/build/util/aggregation-helper.d.ts +1 -1
  73. package/build/util/aggregation-helper.js +5 -5
  74. package/build/util/args.d.ts +23 -1
  75. package/build/util/args.js +91 -14
  76. package/build/util/debug-logger.js +8 -7
  77. package/build/util/fs.d.ts +20 -0
  78. package/build/util/fs.js +94 -0
  79. package/build/util/helpers.d.ts +25 -5
  80. package/build/util/helpers.js +111 -15
  81. package/build/util/npm.d.ts +28 -0
  82. package/build/util/npm.js +152 -0
  83. package/build/util/plugin-storage.js +4 -4
  84. package/build/util/validations.js +4 -4
  85. package/jest.config.js +1 -1
  86. package/manifests/{plugins → examples/builtins/csv-lookup}/cloud-metadata/failure-invalid-instance-type.yaml +9 -3
  87. package/manifests/examples/builtins/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +27 -0
  88. package/manifests/{plugins → examples/builtins/csv-lookup}/cloud-metadata/failure-missing-cloud-vendor.yml +9 -3
  89. package/manifests/{plugins → examples/builtins/csv-lookup}/cloud-metadata/success.yml +8 -2
  90. package/manifests/{plugins/csv-lookup → examples/builtins/csv-lookup/region-metadata}/failure-missing-column.yml +1 -2
  91. package/manifests/{plugins/csv-lookup → examples/builtins/csv-lookup/region-metadata}/failure-missing-output.yml +1 -2
  92. package/manifests/{plugins/csv-lookup → examples/builtins/csv-lookup/region-metadata}/success-renaming.yml +1 -2
  93. package/manifests/{plugins/csv-lookup → examples/builtins/csv-lookup/region-metadata}/success.yml +2 -3
  94. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yml +23 -0
  95. package/manifests/examples/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +24 -0
  96. package/manifests/examples/builtins/csv-lookup/tdp-finder/success.yml +24 -0
  97. package/manifests/{plugins → examples/builtins}/divide/failure-denominator-equal-zero.yml +8 -9
  98. package/manifests/{plugins → examples/builtins}/divide/failure-invalid-config-denominator.yml +8 -9
  99. package/manifests/{plugins → examples/builtins}/divide/failure-missing-numerator.yml +8 -9
  100. package/manifests/{plugins → examples/builtins}/divide/success.yml +9 -10
  101. package/manifests/examples/builtins/exponent/success.yml +25 -0
  102. package/manifests/{plugins → examples/builtins}/groupby/success.yml +1 -1
  103. package/manifests/examples/builtins/interpolation/success.yml +23 -0
  104. package/manifests/{plugins → examples/builtins}/sci/failure-missing-input-param.yml +2 -6
  105. package/manifests/{plugins → examples/builtins}/sci/success.yml +0 -3
  106. package/manifests/examples/builtins/subtract/success.yml +24 -0
  107. package/manifests/{plugins → examples/builtins}/sum/success.yml +1 -1
  108. package/manifests/examples/{generics.yml → pipelines/generics.yml} +49 -13
  109. package/manifests/examples/{nesting.yml → pipelines/nesting.yml} +82 -35
  110. package/manifests/examples/{pipeline-teads-sci.yml → pipelines/pipeline-teads-sci.yml} +54 -18
  111. package/manifests/examples/{pipeline-with-aggregate.yml → pipelines/pipeline-with-aggregate.yml} +67 -25
  112. package/manifests/examples/{pipeline-with-mocks.yml → pipelines/pipeline-with-mocks.yml} +65 -22
  113. package/manifests/examples/pipelines/zeros.yml +130 -0
  114. package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +243 -0
  115. package/manifests/outputs/bugs/initialize-error-no-config.yaml +78 -0
  116. package/manifests/outputs/bugs/initialize-error-no-path.yaml +91 -0
  117. package/manifests/outputs/bugs/initialize-error-no-plugins.yaml +74 -0
  118. package/manifests/outputs/bugs/input-error-missing-duration.yaml +84 -0
  119. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +81 -0
  120. package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +91 -0
  121. package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +92 -0
  122. package/manifests/outputs/bugs/pipeline-ordering-error.yaml +155 -0
  123. package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +73 -0
  124. package/manifests/outputs/divide.yaml +93 -0
  125. package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +101 -0
  126. package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +100 -0
  127. package/manifests/outputs/features/aggregate-horizontal.yaml +128 -0
  128. package/manifests/outputs/features/aggregate-vertical.yaml +151 -0
  129. package/manifests/outputs/features/aggregate.yaml +155 -0
  130. package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +95 -0
  131. package/manifests/outputs/pipelines/mock-obs-group-by-cloud-meta.yaml +645 -0
  132. package/manifests/outputs/pipelines/mock-obs-groupby.yaml +178 -0
  133. package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +350 -0
  134. package/manifests/outputs/plugins/coefficient/failure-invalid-config-input-param.yaml +73 -0
  135. package/manifests/outputs/plugins/coefficient/failure-output-param-is-null.yaml +73 -0
  136. package/manifests/outputs/plugins/coefficient/success.yaml +75 -0
  137. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +27 -0
  138. package/manifests/{plugins → outputs/plugins/csv-lookup}/cloud-metadata/failure-invalid-vendor.yaml +8 -2
  139. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +77 -0
  140. package/manifests/outputs/plugins/csv-lookup/cloud-metadata/success.yaml +82 -0
  141. package/manifests/outputs/plugins/csv-lookup/region-metadata/failure-missing-column.yaml +76 -0
  142. package/manifests/outputs/plugins/csv-lookup/region-metadata/failure-missing-output.yaml +75 -0
  143. package/manifests/outputs/plugins/csv-lookup/region-metadata/success-renaming.yaml +80 -0
  144. package/manifests/outputs/plugins/csv-lookup/region-metadata/success.yaml +92 -0
  145. package/manifests/outputs/plugins/csv-lookup/tdp-finder/failure-missing-input-param.yaml +74 -0
  146. package/manifests/outputs/plugins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +75 -0
  147. package/manifests/outputs/plugins/csv-lookup/tdp-finder/success.yaml +76 -0
  148. package/manifests/outputs/plugins/divide/failure-invalid-config-denominator.yaml +73 -0
  149. package/manifests/outputs/plugins/divide/failure-missing-numerator.yaml +77 -0
  150. package/manifests/outputs/plugins/divide/success-denominator-equal-zero.yaml +95 -0
  151. package/manifests/outputs/plugins/divide/success.yaml +95 -0
  152. package/manifests/outputs/plugins/exponent/success.yaml +77 -0
  153. package/manifests/outputs/plugins/groupby/failure-invalid-config-group.yaml +96 -0
  154. package/manifests/outputs/plugins/groupby/failure-missing-cloud-instance-type.yaml +95 -0
  155. package/manifests/outputs/plugins/groupby/success.yaml +101 -0
  156. package/manifests/outputs/plugins/interpolation/interpolation.yaml +83 -0
  157. package/manifests/outputs/plugins/interpolation/success.yaml +83 -0
  158. package/manifests/outputs/plugins/mock-observations/failure-invalid-config-cpu-range.yaml +86 -0
  159. package/manifests/outputs/plugins/mock-observations/failure-invalid-memory-utilization-range.yaml +84 -0
  160. package/manifests/outputs/plugins/mock-observations/failure-missing-timestamp-from-param.yaml +83 -0
  161. package/manifests/outputs/plugins/mock-observations/success.yaml +220 -0
  162. package/manifests/outputs/plugins/multiply/failure-input-parameter-is-missing.yaml +75 -0
  163. package/manifests/outputs/plugins/multiply/success-with-multiple-inputs.yaml +96 -0
  164. package/manifests/outputs/plugins/multiply/success.yaml +78 -0
  165. package/manifests/outputs/plugins/regex/failure-missing-input-param.yaml +75 -0
  166. package/manifests/outputs/plugins/regex/failure-not-matching-with-regex.yaml +76 -0
  167. package/manifests/outputs/plugins/regex/success.yaml +81 -0
  168. package/manifests/outputs/plugins/sci/failure-invalid-config-value.yaml +72 -0
  169. package/manifests/outputs/plugins/sci/failure-missing-input-param.yaml +72 -0
  170. package/manifests/outputs/plugins/sci/success.yml.yaml +80 -0
  171. package/manifests/outputs/plugins/sci-embodied/failure-invalid-default-emission-value.yaml +75 -0
  172. package/manifests/outputs/plugins/sci-embodied/failure-missing-expected-lifespan.yaml +71 -0
  173. package/manifests/outputs/plugins/sci-embodied/success.yaml +78 -0
  174. package/manifests/outputs/plugins/shell/failure-invalid-command.yaml +70 -0
  175. package/manifests/outputs/plugins/shell/success.yaml +68 -0
  176. package/manifests/outputs/plugins/subtract/success.yaml +78 -0
  177. package/manifests/outputs/plugins/sum/failure-missing-input-param.yaml +75 -0
  178. package/manifests/outputs/plugins/sum/failure-missing-output-param.yaml +78 -0
  179. package/manifests/outputs/plugins/sum/success.yaml +78 -0
  180. package/manifests/outputs/plugins/time-sync/failure-config-start-later-end.yaml +82 -0
  181. package/manifests/outputs/plugins/time-sync/failure-missing-global-config.yaml +78 -0
  182. package/manifests/outputs/plugins/time-sync/success.yaml +119 -0
  183. package/package.json +10 -4
  184. package/src/__mocks__/mock-manifest.yaml +72 -0
  185. package/src/builtins/README.md +1 -1
  186. package/src/builtins/coefficient/README.md +19 -1
  187. package/src/builtins/copy-param/README.md +104 -0
  188. package/src/builtins/csv-lookup/README.md +39 -1
  189. package/src/builtins/divide/README.md +29 -3
  190. package/src/builtins/exponent/README.md +21 -1
  191. package/src/builtins/interpolation/README.md +29 -1
  192. package/src/builtins/mock-observations/README.md +1 -1
  193. package/src/builtins/multiply/README.md +16 -1
  194. package/src/builtins/regex/README.md +32 -2
  195. package/src/builtins/sci/README.md +24 -1
  196. package/src/builtins/sci-embodied/README.md +15 -1
  197. package/src/builtins/shell/README.md +12 -1
  198. package/src/builtins/subtract/README.md +12 -1
  199. package/src/builtins/sum/README.md +28 -1
  200. package/src/config/env-template.yml +24 -0
  201. package/build/builtins/coefficient/types.d.ts +0 -5
  202. package/build/builtins/coefficient/types.js +0 -3
  203. package/build/builtins/exponent/types.d.ts +0 -5
  204. package/build/builtins/exponent/types.js +0 -3
  205. package/build/builtins/interpolation/types.d.ts +0 -5
  206. package/build/builtins/interpolation/types.js +0 -10
  207. package/build/builtins/mock-observations/types.d.ts +0 -13
  208. package/build/builtins/mock-observations/types.js +0 -3
  209. package/build/builtins/multiply/types.d.ts +0 -4
  210. package/build/builtins/multiply/types.js +0 -3
  211. package/build/builtins/subtract/types.d.ts +0 -4
  212. package/build/builtins/subtract/types.js +0 -3
  213. package/build/builtins/sum/types.d.ts +0 -4
  214. package/build/builtins/sum/types.js +0 -3
  215. package/build/types/common.d.ts +0 -4
  216. package/build/types/common.js +0 -3
  217. package/build/types/group-by.d.ts +0 -3
  218. package/build/types/group-by.js +0 -3
  219. package/build/types/helpers.d.ts +0 -4
  220. package/build/types/helpers.js +0 -3
  221. package/build/util/errors.d.ts +0 -6
  222. package/build/util/errors.js +0 -33
  223. package/manifests/bugs/aggregation-error-wrong-metric.yml +0 -128
  224. package/manifests/bugs/azure-importer-ignoring-defaults.yml +0 -61
  225. package/manifests/bugs/azure-importer-incorrect-calculation.yml +0 -56
  226. package/manifests/bugs/initialize-error-no-config.yml +0 -27
  227. package/manifests/bugs/initialize-error-no-path.yml +0 -28
  228. package/manifests/bugs/initialize-error-no-plugins.yml +0 -23
  229. package/manifests/bugs/input-error-missing-duration.yml +0 -21
  230. package/manifests/bugs/mock-observations-failure-duration-is-zero.yml +0 -34
  231. package/manifests/bugs/pipeline-error-naming-mismatch.yml +0 -28
  232. package/manifests/bugs/pipeline-error-uninitialized-plugin.yml +0 -29
  233. package/manifests/bugs/pipeline-ordering-error.yml +0 -82
  234. package/manifests/bugs/sci-embodied-missing-resources-total.yml +0 -23
  235. package/manifests/examples/basic.yml +0 -28
  236. package/manifests/examples/mock-cpu-util-to-carbon.yml +0 -70
  237. package/manifests/features/aggregate-failure-inalid-metrics.yml +0 -43
  238. package/manifests/features/aggregate-failure-missing-metric-in-inputs.yml +0 -43
  239. package/manifests/features/aggregate-horizontal.yml +0 -44
  240. package/manifests/features/aggregate-vertical.yml +0 -44
  241. package/manifests/features/aggregate.yml +0 -44
  242. package/manifests/integrations/cloud-metadata-divide-boavizta.yml +0 -38
  243. package/manifests/integrations/mock-obs-group-by-cloud-meta.yml +0 -51
  244. package/manifests/integrations/mock-obs-groupby.yml +0 -39
  245. package/manifests/integrations/mock-obs-time-sync.yml +0 -65
  246. package/manifests/plugins/tdp-finder/failure-missing-input-param.yml +0 -18
  247. package/manifests/plugins/tdp-finder/failure-unsupported-physical-processor.yml +0 -19
  248. package/manifests/plugins/tdp-finder/success.yml +0 -19
  249. /package/manifests/{plugins → examples/builtins}/coefficient/failure-invalid-config-input-param.yml +0 -0
  250. /package/manifests/{plugins → examples/builtins}/coefficient/failure-output-param-is-null.yaml +0 -0
  251. /package/manifests/{plugins → examples/builtins}/coefficient/success.yml +0 -0
  252. /package/manifests/{plugins → examples/builtins}/groupby/failure-invalid-config-group.yml +0 -0
  253. /package/manifests/{plugins → examples/builtins}/groupby/failure-missing-cloud-instance-type.yml +0 -0
  254. /package/manifests/{plugins → examples/builtins}/interpolation/interpolation.yml +0 -0
  255. /package/manifests/{plugins → examples/builtins}/mock-observations/failure-invalid-config-cpu-range.yml +0 -0
  256. /package/manifests/{plugins → examples/builtins}/mock-observations/failure-invalid-memory-utilization-range.yml +0 -0
  257. /package/manifests/{plugins → examples/builtins}/mock-observations/failure-missing-timestamp-from-param.yml +0 -0
  258. /package/manifests/{plugins → examples/builtins}/mock-observations/success.yml +0 -0
  259. /package/manifests/{plugins → examples/builtins}/multiply/failure-input-parameter-is-missing.yml +0 -0
  260. /package/manifests/{plugins → examples/builtins}/multiply/success-with-multiple-inputs.yml +0 -0
  261. /package/manifests/{plugins → examples/builtins}/multiply/success.yml +0 -0
  262. /package/manifests/{plugins → examples/builtins}/regex/failure-missing-input-param.yml +0 -0
  263. /package/manifests/{plugins → examples/builtins}/regex/failure-not-matching-with-regex.yml +0 -0
  264. /package/manifests/{plugins → examples/builtins}/regex/success.yml +0 -0
  265. /package/manifests/{plugins → examples/builtins}/sci/failure-invalid-config-value.yml +0 -0
  266. /package/manifests/{plugins → examples/builtins}/sci-embodied/failure-invalid-default-emission-value.yml +0 -0
  267. /package/manifests/{plugins → examples/builtins}/sci-embodied/failure-missing-expected-lifespan.yml +0 -0
  268. /package/manifests/{plugins → examples/builtins}/sci-embodied/success.yml +0 -0
  269. /package/manifests/{plugins → examples/builtins}/shell/failure-invalid-command.yml +0 -0
  270. /package/manifests/{plugins → examples/builtins}/shell/success.yml +0 -0
  271. /package/manifests/{plugins → examples/builtins}/sum/failure-missing-input-param.yml +0 -0
  272. /package/manifests/{plugins → examples/builtins}/sum/failure-missing-output-param.yml +0 -0
  273. /package/manifests/{plugins → examples/builtins}/time-sync/failure-config-start-later-end.yml +0 -0
  274. /package/manifests/{plugins → examples/builtins}/time-sync/failure-missing-global-config.yml +0 -0
  275. /package/manifests/{plugins → examples/builtins}/time-sync/success.yml +0 -0
  276. /package/manifests/examples/{instance-metadata.yml → pipelines/instance-metadata.yml} +0 -0
  277. /package/manifests/examples/{sci.yml → pipelines/sci.yml} +0 -0
  278. /package/manifests/examples/{teads-curve.yml → pipelines/teads-curve.yml} +0 -0
@@ -25,20 +25,57 @@ initialize:
25
25
  cpu/utilization:
26
26
  min: 1
27
27
  max: 99
28
- "teads-curve":
29
- path: "@grnsft/if-unofficial-plugins"
30
- method: TeadsCurve
28
+ "interpolate":
29
+ method: Interpolation
30
+ path: 'builtin'
31
31
  global-config:
32
- interpolation: spline
33
- "sci-e":
34
- path: "@grnsft/if-plugins"
35
- method: SciE
32
+ method: linear
33
+ x: [0, 10, 50, 100]
34
+ y: [0.12, 0.32, 0.75, 1.02]
35
+ input-parameter: 'cpu/utilization'
36
+ output-parameter: 'cpu-factor'
37
+ "cpu-factor-to-wattage":
38
+ method: Multiply
39
+ path: builtin
40
+ global-config:
41
+ input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
42
+ output-parameter: "cpu-wattage"
43
+ "wattage-times-duration":
44
+ method: Multiply
45
+ path: builtin
46
+ global-config:
47
+ input-parameters: ["cpu-wattage", "duration"]
48
+ output-parameter: "cpu-wattage-times-duration"
49
+ "wattage-to-energy-kwh":
50
+ method: Divide
51
+ path: "builtin"
52
+ global-config:
53
+ numerator: cpu-wattage-times-duration
54
+ denominator: 3600000
55
+ output: cpu-energy-raw
56
+ "calculate-vcpu-ratio":
57
+ method: Divide
58
+ path: "builtin"
59
+ global-config:
60
+ numerator: vcpus-total
61
+ denominator: vcpus-allocated
62
+ output: vcpu-ratio
63
+ "correct-cpu-energy-for-vcpu-ratio":
64
+ method: Divide
65
+ path: "builtin"
66
+ global-config:
67
+ numerator: cpu-energy-raw
68
+ denominator: vcpu-ratio
69
+ output: cpu-energy-kwh
36
70
  "sci-embodied":
37
71
  path: "builtin"
38
72
  method: SciEmbodied
39
- "sci-o":
40
- path: "@grnsft/if-plugins"
41
- method: SciO
73
+ "operational-carbon":
74
+ method: Multiply
75
+ path: builtin
76
+ global-config:
77
+ input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
78
+ output-parameter: "carbon-operational"
42
79
  "sum-carbon":
43
80
  path: "builtin"
44
81
  method: Sum
@@ -68,10 +105,14 @@ tree:
68
105
  children:
69
106
  child-1:
70
107
  pipeline:
71
- - teads-curve
72
- - sci-e
108
+ - interpolate
109
+ - cpu-factor-to-wattage
110
+ - wattage-times-duration
111
+ - wattage-to-energy-kwh
112
+ - calculate-vcpu-ratio
113
+ - correct-cpu-energy-for-vcpu-ratio
73
114
  - sci-embodied
74
- - sci-o
115
+ - operational-carbon
75
116
  - sum-carbon
76
117
  - time-sync
77
118
  - sci
@@ -86,9 +127,8 @@ tree:
86
127
  device/emissions-embodied: 1533.120 # gCO2eq
87
128
  time-reserved: 3600 # 1hr in seconds
88
129
  device/expected-lifespan: 94608000 # 3 years in seconds
89
- resources-reserved: 1
90
- resources-total: 8
91
- functional-unit-time: "1 min"
130
+ vcpus-total: 8
131
+ vcpus-allocated: 1
92
132
  inputs:
93
133
  - timestamp: "2023-12-12T00:00:00.000Z"
94
134
  cloud/instance-type: A1
@@ -116,10 +156,14 @@ tree:
116
156
  requests: 50
117
157
  child-2:
118
158
  pipeline:
119
- - teads-curve
120
- - sci-e
159
+ - interpolate
160
+ - cpu-factor-to-wattage
161
+ - wattage-times-duration
162
+ - wattage-to-energy-kwh
163
+ - calculate-vcpu-ratio
164
+ - correct-cpu-energy-for-vcpu-ratio
121
165
  - sci-embodied
122
- - sci-o
166
+ - operational-carbon
123
167
  - sum-carbon
124
168
  - time-sync
125
169
  - sci
@@ -134,9 +178,8 @@ tree:
134
178
  device/emissions-embodied: 1533.120 # gCO2eq
135
179
  time-reserved: 3600 # 1hr in seconds
136
180
  device/expected-lifespan: 94608000 # 3 years in seconds
137
- resources-reserved: 1
138
- resources-total: 8
139
- functional-unit-time: "1 min"
181
+ vcpus-total: 8
182
+ vcpus-allocated: 1
140
183
  inputs:
141
184
  - timestamp: "2023-12-12T00:00:00.000Z"
142
185
  duration: 1
@@ -0,0 +1,130 @@
1
+ name: generics
2
+ description: a pipeline that does arbitrary calculations using our generic arithmetic builtins
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ "sum-zero-and-one":
7
+ path: "builtin"
8
+ method: Sum
9
+ global-config:
10
+ input-parameters:
11
+ - some-value
12
+ - zero-value
13
+ output-parameter: one-plus-zero
14
+ "sum-zero-and-zero":
15
+ path: "builtin"
16
+ method: Sum
17
+ global-config:
18
+ input-parameters:
19
+ - zero-value
20
+ - zero-value
21
+ output-parameter: zero-plus-zero
22
+ "subtract-one-and-zero":
23
+ path: "builtin"
24
+ method: Subtract
25
+ global-config:
26
+ input-parameters:
27
+ - some-value
28
+ - zero-value
29
+ output-parameter: one-minus-zero
30
+ "subtract-zero-and-zero":
31
+ path: "builtin"
32
+ method: Sum
33
+ global-config:
34
+ input-parameters:
35
+ - zero-value
36
+ - zero-value
37
+ output-parameter: zero-minus-zero
38
+ "subtract-zero-and-one":
39
+ path: "builtin"
40
+ method: Subtract
41
+ global-config:
42
+ input-parameters:
43
+ - zero-value
44
+ - some-value
45
+ output-parameter: zero-minus-one
46
+ "coefficient-one-times-zero":
47
+ path: "builtin"
48
+ method: Coefficient
49
+ global-config:
50
+ input-parameter: zero-value
51
+ coefficient: 1
52
+ output-parameter: zero-times-one-coefficient
53
+ "coefficient-zero-times-one":
54
+ path: "builtin"
55
+ method: Coefficient
56
+ global-config:
57
+ input-parameter: some-value
58
+ coefficient: 0
59
+ output-parameter: one-times-zero-coefficient
60
+ "coefficient-zero-times-zero":
61
+ path: "builtin"
62
+ method: Coefficient
63
+ global-config:
64
+ input-parameter: zero-value
65
+ coefficient: 0
66
+ output-parameter: zero-times-zero-coefficient
67
+ "multiply-one-times-zero":
68
+ path: "builtin"
69
+ method: Multiply
70
+ global-config:
71
+ input-parameters: ["some-value", "zero-value"]
72
+ output-parameter: "one-times-zero"
73
+ "multiply-zero-times-one":
74
+ path: "builtin"
75
+ method: Multiply
76
+ global-config:
77
+ input-parameters: ["zero-value", "zero-value"]
78
+ output-parameter: "zero-times-one"
79
+ exponent-one-to-zero:
80
+ method: Exponent
81
+ path: 'builtin'
82
+ global-config:
83
+ input-parameter: 'some-value'
84
+ exponent: 0
85
+ output-parameter: 'one-raised-to-zero-power'
86
+ exponent-zero-to-zero:
87
+ method: Exponent
88
+ path: 'builtin'
89
+ global-config:
90
+ input-parameter: 'zero-value'
91
+ exponent: 0
92
+ output-parameter: 'zero-raised-to-zero-power'
93
+ exponent-zero-to-one:
94
+ method: Exponent
95
+ path: 'builtin'
96
+ global-config:
97
+ input-parameter: 'zero-value'
98
+ exponent: 1
99
+ output-parameter: 'zero-raised-to-first-power'
100
+ "sci":
101
+ path: "builtin"
102
+ method: Sci
103
+ global-config:
104
+ functional-unit: "zero-value"
105
+ tree:
106
+ children:
107
+ child-1:
108
+ pipeline:
109
+ - sum-zero-and-one
110
+ - sum-zero-and-zero
111
+ - subtract-one-and-zero
112
+ - subtract-zero-and-zero
113
+ - subtract-zero-and-one
114
+ - coefficient-one-times-zero
115
+ - coefficient-zero-times-one
116
+ - coefficient-zero-times-zero
117
+ - multiply-one-times-zero
118
+ - multiply-zero-times-one
119
+ - exponent-one-to-zero
120
+ - exponent-zero-to-one
121
+ - exponent-zero-to-zero
122
+ - sci
123
+ config:
124
+ defaults:
125
+ inputs:
126
+ - timestamp: "2023-12-12T00:00:00.000Z"
127
+ duration: 1
128
+ some-value: 1
129
+ zero-value: 0
130
+ carbon: 10
@@ -0,0 +1,243 @@
1
+ name: aggregation-error-wrong-metric
2
+ description: >-
3
+ a negative test case that fails due to the aggregation feature being passed an
4
+ incorrect metric
5
+ tags: null
6
+ aggregation:
7
+ metrics:
8
+ - dummy-param
9
+ type: both
10
+ initialize:
11
+ outputs:
12
+ - yaml
13
+ plugins:
14
+ interpolate:
15
+ method: Interpolation
16
+ path: builtin
17
+ global-config:
18
+ method: linear
19
+ x:
20
+ - 0
21
+ - 10
22
+ - 50
23
+ - 100
24
+ 'y':
25
+ - 0.12
26
+ - 0.32
27
+ - 0.75
28
+ - 1.02
29
+ input-parameter: cpu/utilization
30
+ output-parameter: cpu-factor
31
+ cpu-factor-to-wattage:
32
+ method: Multiply
33
+ path: builtin
34
+ global-config:
35
+ input-parameters:
36
+ - cpu-factor
37
+ - cpu/thermal-design-power
38
+ output-parameter: cpu-wattage
39
+ wattage-times-duration:
40
+ method: Multiply
41
+ path: builtin
42
+ global-config:
43
+ input-parameters:
44
+ - cpu-wattage
45
+ - duration
46
+ output-parameter: cpu-wattage-times-duration
47
+ wattage-to-energy-kwh:
48
+ method: Divide
49
+ path: builtin
50
+ global-config:
51
+ numerator: cpu-wattage-times-duration
52
+ denominator: 3600000
53
+ output: cpu-energy-raw
54
+ calculate-vcpu-ratio:
55
+ method: Divide
56
+ path: builtin
57
+ global-config:
58
+ numerator: vcpus-total
59
+ denominator: vcpus-allocated
60
+ output: vcpu-ratio
61
+ correct-cpu-energy-for-vcpu-ratio:
62
+ method: Divide
63
+ path: builtin
64
+ global-config:
65
+ numerator: cpu-energy-raw
66
+ denominator: vcpu-ratio
67
+ output: cpu-energy-kwh
68
+ sci-embodied:
69
+ path: builtin
70
+ method: SciEmbodied
71
+ operational-carbon:
72
+ method: Multiply
73
+ path: builtin
74
+ global-config:
75
+ input-parameters:
76
+ - cpu-energy-kwh
77
+ - grid/carbon-intensity
78
+ output-parameter: carbon
79
+ sci:
80
+ path: builtin
81
+ method: Sci
82
+ global-config:
83
+ functional-unit: requests
84
+ time-sync:
85
+ method: TimeSync
86
+ path: builtin
87
+ global-config:
88
+ start-time: '2023-12-12T00:00:00.000Z'
89
+ end-time: '2023-12-12T00:01:00.000Z'
90
+ interval: 5
91
+ allow-padding: true
92
+ group-by:
93
+ path: builtin
94
+ method: GroupBy
95
+ execution:
96
+ status: fail
97
+ command: >-
98
+ /Users/mariamkhalatova/.npm/_npx/1bf7c3c15bf47d04/node_modules/.bin/ts-node
99
+ /Users/mariamkhalatova/Projects/UK/if/src/index.ts -m
100
+ manifests/outputs/bugs/aggregation-error-wrong-metric.yml -o
101
+ manifests/outputs/bugs/aggregation-error-wrong-metric
102
+ environment:
103
+ if-version: 0.4.0
104
+ os: macOS
105
+ os-version: '13.2'
106
+ node-version: 18.14.2
107
+ date-time: 2024-07-01T19:25:34.759Z (UTC)
108
+ dependencies:
109
+ - '@babel/core@7.22.10'
110
+ - '@babel/preset-typescript@7.23.3'
111
+ - '@commitlint/cli@18.6.0'
112
+ - '@commitlint/config-conventional@18.6.0'
113
+ - '@grnsft/if-core@0.0.10'
114
+ - '@jest/globals@29.7.0'
115
+ - '@types/jest@29.5.8'
116
+ - '@types/js-yaml@4.0.9'
117
+ - '@types/luxon@3.4.2'
118
+ - '@types/node@20.9.0'
119
+ - axios-mock-adapter@1.22.0
120
+ - axios@1.7.2
121
+ - cross-env@7.0.3
122
+ - csv-parse@5.5.6
123
+ - csv-stringify@6.4.6
124
+ - fixpack@4.0.0
125
+ - gts@5.2.0
126
+ - husky@8.0.3
127
+ - jest@29.7.0
128
+ - js-yaml@4.1.0
129
+ - lint-staged@15.2.2
130
+ - luxon@3.4.4
131
+ - release-it@16.3.0
132
+ - rimraf@5.0.5
133
+ - ts-command-line-args@2.5.1
134
+ - ts-jest@29.1.1
135
+ - typescript-cubic-spline@1.0.1
136
+ - typescript@5.2.2
137
+ - winston@3.11.0
138
+ - zod@3.22.4
139
+ error: >-
140
+ MissingAggregationParamError: Aggregation metric dummy-param is not found in
141
+ inputs[0].
142
+ tree:
143
+ children:
144
+ child-1:
145
+ pipeline:
146
+ - interpolate
147
+ - cpu-factor-to-wattage
148
+ - wattage-times-duration
149
+ - wattage-to-energy-kwh
150
+ - calculate-vcpu-ratio
151
+ - correct-cpu-energy-for-vcpu-ratio
152
+ - sci-embodied
153
+ - operational-carbon
154
+ - time-sync
155
+ - sci
156
+ config:
157
+ group-by:
158
+ group:
159
+ - cloud/region
160
+ - cloud/instance-type
161
+ defaults:
162
+ cpu/thermal-design-power: 100
163
+ grid/carbon-intensity: 800
164
+ device/emissions-embodied: 1533.12
165
+ time-reserved: 3600
166
+ device/expected-lifespan: 94608000
167
+ vcpus-allocated: 1
168
+ vcpus-total: 8
169
+ inputs:
170
+ - timestamp: '2023-12-12T00:00:00.000Z'
171
+ cloud/instance-type: A1
172
+ cloud/region: uk-west
173
+ duration: 1
174
+ cpu/utilization: 10
175
+ requests: 100
176
+ - timestamp: '2023-12-12T00:00:01.000Z'
177
+ duration: 5
178
+ cpu/utilization: 20
179
+ cloud/instance-type: A1
180
+ cloud/region: uk-west
181
+ requests: 100
182
+ - timestamp: '2023-12-12T00:00:06.000Z'
183
+ duration: 7
184
+ cpu/utilization: 15
185
+ cloud/instance-type: A1
186
+ cloud/region: uk-west
187
+ requests: 100
188
+ - timestamp: '2023-12-12T00:00:13.000Z'
189
+ duration: 30
190
+ cloud/instance-type: A1
191
+ cloud/region: uk-west
192
+ cpu/utilization: 15
193
+ requests: 100
194
+ child-2:
195
+ pipeline:
196
+ - interpolate
197
+ - cpu-factor-to-wattage
198
+ - wattage-times-duration
199
+ - wattage-to-energy-kwh
200
+ - calculate-vcpu-ratio
201
+ - correct-cpu-energy-for-vcpu-ratio
202
+ - sci-embodied
203
+ - operational-carbon
204
+ - time-sync
205
+ - sci
206
+ config:
207
+ group-by:
208
+ group:
209
+ - cloud/region
210
+ - cloud/instance-type
211
+ defaults:
212
+ cpu/thermal-design-power: 100
213
+ grid/carbon-intensity: 800
214
+ device/emissions-embodied: 1533.12
215
+ time-reserved: 3600
216
+ device/expected-lifespan: 94608000
217
+ vcpus-allocated: 1
218
+ vcpus-total: 8
219
+ inputs:
220
+ - timestamp: '2023-12-12T00:00:00.000Z'
221
+ duration: 1
222
+ cpu/utilization: 30
223
+ cloud/instance-type: A1
224
+ cloud/region: uk-west
225
+ requests: 100
226
+ - timestamp: '2023-12-12T00:00:01.000Z'
227
+ duration: 5
228
+ cpu/utilization: 28
229
+ cloud/instance-type: A1
230
+ cloud/region: uk-west
231
+ requests: 100
232
+ - timestamp: '2023-12-12T00:00:06.000Z'
233
+ duration: 7
234
+ cpu/utilization: 40
235
+ cloud/instance-type: A1
236
+ cloud/region: uk-west
237
+ requests: 100
238
+ - timestamp: '2023-12-12T00:00:13.000Z'
239
+ duration: 30
240
+ cpu/utilization: 33
241
+ cloud/instance-type: A1
242
+ cloud/region: uk-west
243
+ requests: 100
@@ -0,0 +1,78 @@
1
+ name: initialize-error-no-config
2
+ description: >-
3
+ a negative test case that fails due to plugin initialization missing some
4
+ required config
5
+ tags: null
6
+ initialize:
7
+ outputs:
8
+ - yaml
9
+ plugins:
10
+ interpolate:
11
+ method: Interpolation
12
+ path: builtin
13
+ global-config: null
14
+ execution:
15
+ status: fail
16
+ command: >-
17
+ /Users/mariamkhalatova/.npm/_npx/1bf7c3c15bf47d04/node_modules/.bin/ts-node
18
+ /Users/mariamkhalatova/Projects/UK/if/src/index.ts -m
19
+ manifests/outputs/bugs/initialize-error-no-config.yml -o
20
+ manifests/outputs/bugs/initialize-error-no-config
21
+ environment:
22
+ if-version: 0.4.0
23
+ os: macOS
24
+ os-version: '13.2'
25
+ node-version: 18.14.2
26
+ date-time: 2024-07-01T19:45:41.936Z (UTC)
27
+ dependencies:
28
+ - '@babel/core@7.22.10'
29
+ - '@babel/preset-typescript@7.23.3'
30
+ - '@commitlint/cli@18.6.0'
31
+ - '@commitlint/config-conventional@18.6.0'
32
+ - '@grnsft/if-core@0.0.10'
33
+
34
+ - '@jest/globals@29.7.0'
35
+ - '@types/jest@29.5.8'
36
+ - '@types/js-yaml@4.0.9'
37
+ - '@types/luxon@3.4.2'
38
+ - '@types/node@20.9.0'
39
+ - axios-mock-adapter@1.22.0
40
+ - axios@1.7.2
41
+ - cross-env@7.0.3
42
+ - csv-parse@5.5.6
43
+ - csv-stringify@6.4.6
44
+ - fixpack@4.0.0
45
+ - gts@5.2.0
46
+ - husky@8.0.3
47
+ - jest@29.7.0
48
+ - js-yaml@4.1.0
49
+ - lint-staged@15.2.2
50
+ - luxon@3.4.4
51
+ - release-it@16.3.0
52
+ - rimraf@5.0.5
53
+ - ts-command-line-args@2.5.1
54
+ - ts-jest@29.1.1
55
+ - typescript-cubic-spline@1.0.1
56
+ - typescript@5.2.2
57
+ - winston@3.11.0
58
+ - zod@3.22.4
59
+ error: >-
60
+ ManifestValidationError: "initialize.plugins.interpolate.global-config"
61
+ parameter is expected object, received null. Error code: invalid_type.
62
+ tree:
63
+ children:
64
+ child-0:
65
+ defaults:
66
+ cpu/thermal-design-power: 100
67
+ pipeline:
68
+ - interpolate
69
+ inputs:
70
+ - timestamp: 2023-07-06T00:00
71
+ duration: 1
72
+ cpu/utilization: 20
73
+ - timestamp: 2023-07-06T00:01
74
+ duration: 1
75
+ cpu/utilization: 80
76
+ - timestamp: 2023-07-06T00:02
77
+ duration: 1
78
+ cpu/utilization: 20
@@ -0,0 +1,91 @@
1
+ name: initialize-error-no-path
2
+ description: >-
3
+ a negative test case that fails because the path is mising in a plugin
4
+ initialization
5
+ tags: null
6
+ initialize:
7
+ plugins:
8
+ interpolate:
9
+ method: Interpolation
10
+ path: null
11
+ global-config:
12
+ method: linear
13
+ x:
14
+ - 0
15
+ - 10
16
+ - 50
17
+ - 100
18
+ 'y':
19
+ - 0.12
20
+ - 0.32
21
+ - 0.75
22
+ - 1.02
23
+ input-parameter: cpu/utilization
24
+ output-parameter: cpu-factor
25
+ outputs:
26
+ - yaml
27
+ execution:
28
+ status: fail
29
+ command: >-
30
+ /Users/mariamkhalatova/.npm/_npx/1bf7c3c15bf47d04/node_modules/.bin/ts-node
31
+ /Users/mariamkhalatova/Projects/UK/if/src/index.ts -m
32
+ manifests/outputs/bugs/initialize-error-no-path.yml -o
33
+ manifests/outputs/bugs/initialize-error-no-path
34
+ environment:
35
+ if-version: 0.4.0
36
+ os: macOS
37
+ os-version: '13.2'
38
+ node-version: 18.14.2
39
+ date-time: 2024-07-01T19:57:11.499Z (UTC)
40
+ dependencies:
41
+ - '@babel/core@7.22.10'
42
+ - '@babel/preset-typescript@7.23.3'
43
+ - '@commitlint/cli@18.6.0'
44
+ - '@commitlint/config-conventional@18.6.0'
45
+ - '@grnsft/if-core@0.0.10'
46
+
47
+ - '@jest/globals@29.7.0'
48
+ - '@types/jest@29.5.8'
49
+ - '@types/js-yaml@4.0.9'
50
+ - '@types/luxon@3.4.2'
51
+ - '@types/node@20.9.0'
52
+ - axios-mock-adapter@1.22.0
53
+ - axios@1.7.2
54
+ - cross-env@7.0.3
55
+ - csv-parse@5.5.6
56
+ - csv-stringify@6.4.6
57
+ - fixpack@4.0.0
58
+ - gts@5.2.0
59
+ - husky@8.0.3
60
+ - jest@29.7.0
61
+ - js-yaml@4.1.0
62
+ - lint-staged@15.2.2
63
+ - luxon@3.4.4
64
+ - release-it@16.3.0
65
+ - rimraf@5.0.5
66
+ - ts-command-line-args@2.5.1
67
+ - ts-jest@29.1.1
68
+ - typescript-cubic-spline@1.0.1
69
+ - typescript@5.2.2
70
+ - winston@3.11.0
71
+ - zod@3.22.4
72
+ error: >-
73
+ ManifestValidationError: "initialize.plugins.interpolate.path" parameter is
74
+ expected string, received null. Error code: invalid_type.
75
+ tree:
76
+ children:
77
+ child-0:
78
+ defaults:
79
+ cpu/thermal-design-power: 100
80
+ pipeline:
81
+ - interpolate
82
+ inputs:
83
+ - timestamp: 2023-07-06T00:00
84
+ duration: 1
85
+ cpu/utilization: 20
86
+ - timestamp: 2023-07-06T00:01
87
+ duration: 1
88
+ cpu/utilization: 80
89
+ - timestamp: 2023-07-06T00:02
90
+ duration: 1
91
+ cpu/utilization: 20