@grnsft/if 0.5.0-beta.0 → 0.6.0-beta.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 (468) hide show
  1. package/README.md +5 -17
  2. package/Refactor-migration-guide.md +110 -164
  3. package/build/common/config/index.d.ts +1 -0
  4. package/build/common/config/index.js +6 -0
  5. package/build/common/config/strings.d.ts +8 -0
  6. package/build/common/config/strings.js +16 -0
  7. package/build/common/lib/load.d.ts +6 -0
  8. package/build/common/lib/load.js +18 -0
  9. package/build/{types → common/types}/manifest.d.ts +4 -1
  10. package/build/common/types/manifest.js +3 -0
  11. package/build/common/util/debug-logger.js +115 -0
  12. package/build/common/util/fs.js +94 -0
  13. package/build/common/util/helpers.d.ts +15 -0
  14. package/build/common/util/helpers.js +80 -0
  15. package/build/{util → common/util}/logger.js +1 -1
  16. package/build/{util → common/util}/validations.d.ts +149 -47
  17. package/build/common/util/validations.js +141 -0
  18. package/build/common/util/yaml.js +59 -0
  19. package/build/if-check/config/config.d.ts +6 -0
  20. package/build/if-check/config/config.js +31 -0
  21. package/build/{config → if-check/config}/index.d.ts +0 -1
  22. package/build/if-check/config/index.js +8 -0
  23. package/build/if-check/config/strings.d.ts +12 -0
  24. package/build/if-check/config/strings.js +16 -0
  25. package/build/if-check/index.js +98 -0
  26. package/build/if-check/types/process-args.d.ts +4 -0
  27. package/build/if-check/types/process-args.js +3 -0
  28. package/build/if-check/util/args.d.ts +10 -0
  29. package/build/if-check/util/args.js +56 -0
  30. package/build/if-check/util/helpers.d.ts +4 -0
  31. package/build/if-check/util/helpers.js +18 -0
  32. package/build/if-check/util/npm.d.ts +4 -0
  33. package/build/if-check/util/npm.js +59 -0
  34. package/build/if-csv/config/config.d.ts +6 -0
  35. package/build/if-csv/config/config.js +37 -0
  36. package/build/if-csv/config/index.d.ts +2 -0
  37. package/build/if-csv/config/index.js +8 -0
  38. package/build/if-csv/config/strings.d.ts +4 -0
  39. package/build/if-csv/config/strings.js +8 -0
  40. package/build/if-csv/index.js +63 -0
  41. package/build/if-csv/types/csv.d.ts +7 -0
  42. package/build/if-csv/types/csv.js +3 -0
  43. package/build/if-csv/types/process-args.d.ts +5 -0
  44. package/build/if-csv/types/process-args.js +3 -0
  45. package/build/if-csv/util/args.d.ts +12 -0
  46. package/build/if-csv/util/args.js +51 -0
  47. package/build/if-csv/util/helpers.d.ts +9 -0
  48. package/build/if-csv/util/helpers.js +95 -0
  49. package/build/if-diff/config/config.d.ts +6 -0
  50. package/build/if-diff/config/config.js +31 -0
  51. package/build/if-diff/config/index.d.ts +2 -0
  52. package/build/if-diff/config/index.js +8 -0
  53. package/build/if-diff/config/strings.d.ts +6 -0
  54. package/build/if-diff/config/strings.js +10 -0
  55. package/build/if-diff/index.js +46 -0
  56. package/build/{lib → if-diff/lib}/compare.d.ts +1 -1
  57. package/build/if-diff/lib/compare.js +56 -0
  58. package/build/{lib → if-diff/lib}/load.d.ts +16 -18
  59. package/build/if-diff/lib/load.js +51 -0
  60. package/build/if-diff/types/args.js +3 -0
  61. package/build/if-diff/types/compare.js +3 -0
  62. package/build/if-diff/types/process-args.d.ts +4 -0
  63. package/build/if-diff/types/process-args.js +3 -0
  64. package/build/if-diff/util/args.d.ts +5 -0
  65. package/build/if-diff/util/args.js +51 -0
  66. package/build/if-diff/util/helpers.d.ts +13 -0
  67. package/build/if-diff/util/helpers.js +75 -0
  68. package/build/if-env/config/config.d.ts +6 -0
  69. package/build/if-env/config/config.js +37 -0
  70. package/build/if-env/config/index.d.ts +2 -0
  71. package/build/if-env/config/index.js +8 -0
  72. package/build/if-env/config/strings.d.ts +7 -0
  73. package/build/if-env/config/strings.js +11 -0
  74. package/build/if-env/index.js +40 -0
  75. package/build/if-env/types/if-env.js +3 -0
  76. package/build/if-env/types/npm.js +3 -0
  77. package/build/if-env/types/process-args.d.ts +5 -0
  78. package/build/if-env/types/process-args.js +3 -0
  79. package/build/if-env/util/args.d.ts +12 -0
  80. package/build/if-env/util/args.js +47 -0
  81. package/build/if-env/util/helpers.d.ts +20 -0
  82. package/build/if-env/util/helpers.js +94 -0
  83. package/build/{util → if-env/util}/npm.d.ts +0 -4
  84. package/build/if-env/util/npm.js +126 -0
  85. package/build/if-run/builtins/coefficient/index.d.ts +2 -0
  86. package/build/if-run/builtins/coefficient/index.js +67 -0
  87. package/build/if-run/builtins/copy-param/index.d.ts +2 -0
  88. package/build/if-run/builtins/copy-param/index.js +70 -0
  89. package/build/if-run/builtins/csv-lookup/index.d.ts +2 -0
  90. package/build/if-run/builtins/csv-lookup/index.js +190 -0
  91. package/build/if-run/builtins/divide/index.d.ts +2 -0
  92. package/build/if-run/builtins/divide/index.js +80 -0
  93. package/build/if-run/builtins/exponent/index.d.ts +2 -0
  94. package/build/if-run/builtins/exponent/index.js +60 -0
  95. package/build/{builtins → if-run/builtins}/export-log.d.ts +1 -1
  96. package/build/{builtins → if-run/builtins}/export-log.js +1 -1
  97. package/build/{builtins → if-run/builtins}/export-yaml.d.ts +1 -1
  98. package/build/if-run/builtins/export-yaml.js +30 -0
  99. package/build/{builtins → if-run/builtins}/index.d.ts +1 -2
  100. package/build/{builtins → if-run/builtins}/index.js +4 -6
  101. package/build/if-run/builtins/interpolation/index.d.ts +2 -0
  102. package/build/if-run/builtins/interpolation/index.js +151 -0
  103. package/build/if-run/builtins/mock-observations/helpers/common-generator.js +29 -0
  104. package/build/if-run/builtins/mock-observations/helpers/rand-int-generator.js +48 -0
  105. package/build/if-run/builtins/mock-observations/index.d.ts +2 -0
  106. package/build/if-run/builtins/mock-observations/index.js +116 -0
  107. package/build/if-run/builtins/mock-observations/interfaces/index.js +3 -0
  108. package/build/if-run/builtins/multiply/index.d.ts +2 -0
  109. package/build/if-run/builtins/multiply/index.js +59 -0
  110. package/build/if-run/builtins/regex/index.d.ts +2 -0
  111. package/build/if-run/builtins/regex/index.js +76 -0
  112. package/build/if-run/builtins/sci/config.js +44 -0
  113. package/build/if-run/builtins/sci/index.d.ts +2 -0
  114. package/build/if-run/builtins/sci/index.js +92 -0
  115. package/build/if-run/builtins/sci-embodied/index.d.ts +2 -0
  116. package/build/if-run/builtins/sci-embodied/index.js +156 -0
  117. package/build/if-run/builtins/shell/index.d.ts +2 -0
  118. package/build/if-run/builtins/shell/index.js +60 -0
  119. package/build/if-run/builtins/subtract/index.d.ts +2 -0
  120. package/build/if-run/builtins/subtract/index.js +61 -0
  121. package/build/if-run/builtins/sum/index.d.ts +2 -0
  122. package/build/if-run/builtins/sum/index.js +66 -0
  123. package/build/if-run/builtins/time-sync/index.d.ts +17 -0
  124. package/build/if-run/builtins/time-sync/index.js +339 -0
  125. package/build/if-run/config/config.d.ts +9 -0
  126. package/build/if-run/config/config.js +73 -0
  127. package/build/if-run/config/index.d.ts +2 -0
  128. package/build/if-run/config/index.js +8 -0
  129. package/build/{config → if-run/config}/strings.d.ts +28 -50
  130. package/build/if-run/config/strings.js +76 -0
  131. package/build/if-run/index.d.ts +2 -0
  132. package/build/if-run/index.js +63 -0
  133. package/build/if-run/lib/aggregate.d.ts +15 -0
  134. package/build/if-run/lib/aggregate.js +123 -0
  135. package/build/if-run/lib/compute.js +136 -0
  136. package/build/{lib → if-run/lib}/environment.d.ts +1 -1
  137. package/build/if-run/lib/environment.js +75 -0
  138. package/build/{lib → if-run/lib}/exhaust.d.ts +1 -1
  139. package/build/if-run/lib/exhaust.js +27 -0
  140. package/build/if-run/lib/explain.d.ts +9 -0
  141. package/build/if-run/lib/explain.js +43 -0
  142. package/build/if-run/lib/initialize.d.ts +6 -0
  143. package/build/if-run/lib/initialize.js +109 -0
  144. package/build/if-run/lib/regroup.d.ts +5 -0
  145. package/build/if-run/lib/regroup.js +64 -0
  146. package/build/if-run/types/aggregation.d.ts +5 -0
  147. package/build/if-run/types/aggregation.js +6 -0
  148. package/build/{types → if-run/types}/compute.d.ts +12 -8
  149. package/build/if-run/types/compute.js +3 -0
  150. package/build/if-run/types/environment.js +3 -0
  151. package/build/{types → if-run/types}/exhaust-plugin-interface.d.ts +1 -1
  152. package/build/if-run/types/exhaust-plugin-interface.js +3 -0
  153. package/build/if-run/types/explain.d.ts +10 -0
  154. package/build/if-run/types/explain.js +3 -0
  155. package/build/if-run/types/interface.d.ts +3 -0
  156. package/build/if-run/types/interface.js +6 -0
  157. package/build/if-run/types/plugin-storage.js +3 -0
  158. package/build/if-run/types/process-args.d.ts +25 -0
  159. package/build/if-run/types/process-args.js +3 -0
  160. package/build/if-run/types/time-sync.js +3 -0
  161. package/build/{util → if-run/util}/aggregation-helper.d.ts +2 -1
  162. package/build/if-run/util/aggregation-helper.js +47 -0
  163. package/build/if-run/util/args.d.ts +9 -0
  164. package/build/if-run/util/args.js +60 -0
  165. package/build/if-run/util/helpers.d.ts +14 -0
  166. package/build/if-run/util/helpers.js +57 -0
  167. package/build/if-run/util/log-memoize.js +19 -0
  168. package/build/if-run/util/os-checker.js +97 -0
  169. package/build/{util → if-run/util}/plugin-storage.d.ts +1 -1
  170. package/build/if-run/util/plugin-storage.js +34 -0
  171. package/jest.config.js +2 -6
  172. package/manifests/{plugins → examples/builtins}/coefficient/failure-invalid-config-input-param.yml +2 -2
  173. package/manifests/{plugins → examples/builtins}/coefficient/failure-output-param-is-null.yaml +3 -3
  174. package/manifests/{plugins → examples/builtins}/coefficient/success.yml +2 -2
  175. package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +3 -3
  176. package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/failure-invalid-vendor.yaml +3 -3
  177. package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yml +3 -3
  178. package/manifests/{plugins → examples/builtins}/csv-lookup/cloud-metadata/success.yml +3 -3
  179. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/failure-missing-column.yml +3 -4
  180. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/failure-missing-output.yml +3 -4
  181. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/success-renaming.yml +4 -5
  182. package/manifests/{plugins → examples/builtins}/csv-lookup/region-metadata/success.yml +3 -4
  183. package/manifests/{plugins → examples/builtins}/csv-lookup/tdp-finder/failure-missing-input-param.yml +2 -2
  184. package/manifests/{plugins → examples/builtins}/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yml +2 -2
  185. package/manifests/{plugins → examples/builtins}/csv-lookup/tdp-finder/success.yml +2 -2
  186. package/manifests/{plugins → examples/builtins}/divide/failure-denominator-equal-zero.yml +4 -4
  187. package/manifests/{plugins → examples/builtins}/divide/failure-invalid-config-denominator.yml +5 -5
  188. package/manifests/{plugins → examples/builtins}/divide/failure-missing-numerator.yml +4 -4
  189. package/manifests/{plugins → examples/builtins}/divide/success.yml +4 -6
  190. package/manifests/{plugins → examples/builtins}/exponent/success.yml +5 -8
  191. package/manifests/{plugins → examples/builtins}/interpolation/interpolation.yml +2 -2
  192. package/manifests/{plugins → examples/builtins}/interpolation/success.yml +2 -2
  193. package/manifests/{plugins → examples/builtins}/mock-observations/failure-invalid-config-cpu-range.yml +2 -2
  194. package/manifests/{plugins → examples/builtins}/mock-observations/failure-invalid-memory-utilization-range.yml +2 -2
  195. package/manifests/{plugins → examples/builtins}/mock-observations/failure-missing-timestamp-from-param.yml +2 -2
  196. package/manifests/{plugins → examples/builtins}/mock-observations/success.yml +2 -2
  197. package/manifests/{plugins → examples/builtins}/multiply/failure-input-parameter-is-missing.yml +2 -4
  198. package/manifests/{plugins → examples/builtins}/multiply/success-with-multiple-inputs.yml +2 -4
  199. package/manifests/{plugins → examples/builtins}/multiply/success.yml +3 -4
  200. package/manifests/{plugins → examples/builtins}/regex/failure-missing-input-param.yml +2 -4
  201. package/manifests/{plugins → examples/builtins}/regex/failure-not-matching-with-regex.yml +2 -4
  202. package/manifests/{plugins → examples/builtins}/regex/success.yml +2 -4
  203. package/manifests/{plugins → examples/builtins}/sci/failure-invalid-config-value.yml +2 -2
  204. package/manifests/{plugins → examples/builtins}/sci/failure-missing-input-param.yml +3 -2
  205. package/manifests/{plugins → examples/builtins}/sci/success.yml +2 -3
  206. package/manifests/{plugins → examples/builtins}/sci-embodied/failure-invalid-default-emission-value.yml +3 -3
  207. package/manifests/{plugins → examples/builtins}/sci-embodied/failure-missing-expected-lifespan.yml +2 -2
  208. package/manifests/{plugins → examples/builtins}/sci-embodied/success.yml +2 -2
  209. package/manifests/{plugins → examples/builtins}/shell/failure-invalid-command.yml +2 -2
  210. package/manifests/{plugins → examples/builtins}/shell/success.yml +2 -1
  211. package/manifests/{plugins → examples/builtins}/subtract/success.yml +6 -9
  212. package/manifests/{plugins → examples/builtins}/sum/failure-missing-input-param.yml +2 -4
  213. package/manifests/{plugins → examples/builtins}/sum/failure-missing-output-param.yml +3 -5
  214. package/manifests/{plugins → examples/builtins}/sum/success.yml +2 -4
  215. package/manifests/{plugins → examples/builtins}/time-sync/failure-config-start-later-end.yml +3 -3
  216. package/manifests/{plugins → examples/builtins}/time-sync/failure-missing-global-config.yml +3 -3
  217. package/manifests/{plugins → examples/builtins}/time-sync/success.yml +2 -2
  218. package/manifests/{plugins/groupby/failure-invalid-config-group.yml → examples/features/regroup/failure-invalid-regroup.yml} +4 -11
  219. package/manifests/{plugins/groupby → examples/features/regroup}/failure-missing-cloud-instance-type.yml +5 -12
  220. package/manifests/{plugins/groupby → examples/features/regroup}/success.yml +4 -11
  221. package/manifests/examples/{generics.yml → pipelines/generics.yml} +12 -12
  222. package/manifests/examples/{instance-metadata.yml → pipelines/instance-metadata.yml} +6 -7
  223. package/manifests/examples/{nesting.yml → pipelines/nesting.yml} +157 -50
  224. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-aggregate.yaml +997 -0
  225. package/manifests/examples/pipelines/outputs-if-diff/pipeline-with-mocks.yaml +1059 -0
  226. package/manifests/examples/{pipeline-teads-sci.yml → pipelines/pipeline-teads-sci.yml} +11 -11
  227. package/manifests/examples/{pipeline-with-aggregate.yml → pipelines/pipeline-with-aggregate.yml} +113 -36
  228. package/manifests/examples/pipelines/pipeline-with-mocks.yml +297 -0
  229. package/manifests/{bugs/mock-observations-failure-duration-is-zero.yml → examples/pipelines/scenario-1.yml} +7 -7
  230. package/manifests/examples/pipelines/scenario-2.yml +52 -0
  231. package/manifests/examples/pipelines/scenario-3.yml +86 -0
  232. package/manifests/examples/pipelines/scenario-4.yml +46 -0
  233. package/manifests/examples/pipelines/scenario-5.yml +46 -0
  234. package/manifests/examples/{sci.yml → pipelines/sci.yml} +15 -17
  235. package/manifests/examples/{teads-curve.yml → pipelines/teads-curve.yml} +7 -6
  236. package/manifests/examples/{zeros.yaml → pipelines/zeros.yml} +15 -16
  237. package/manifests/outputs/bugs/aggregation-error-wrong-metric.yaml +235 -0
  238. package/manifests/outputs/bugs/input-error-missing-duration.yaml +82 -0
  239. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +79 -0
  240. package/manifests/outputs/bugs/pipeline-error-naming-mismatch.yaml +89 -0
  241. package/manifests/outputs/bugs/pipeline-error-uninitialized-plugin.yaml +90 -0
  242. package/manifests/outputs/bugs/pipeline-ordering-error.yaml +152 -0
  243. package/manifests/outputs/bugs/sci-embodied-missing-resources-total.yaml +72 -0
  244. package/manifests/outputs/builtins/coefficient/failure-invalid-config-input-param.yaml +69 -0
  245. package/manifests/outputs/builtins/coefficient/failure-output-param-is-null.yaml +69 -0
  246. package/manifests/outputs/builtins/coefficient/success.yaml +70 -0
  247. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-invalid-instance-type.yaml +76 -0
  248. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/failure-missing-cloud-vendor.yaml +74 -0
  249. package/manifests/outputs/builtins/csv-lookup/cloud-metadata/success.yaml +79 -0
  250. package/manifests/outputs/builtins/csv-lookup/region-metadata/failure-missing-column.yaml +75 -0
  251. package/manifests/outputs/builtins/csv-lookup/region-metadata/failure-missing-output.yaml +73 -0
  252. package/manifests/outputs/builtins/csv-lookup/region-metadata/success-renaming.yaml +78 -0
  253. package/manifests/outputs/builtins/csv-lookup/region-metadata/success.yaml +90 -0
  254. package/manifests/outputs/builtins/csv-lookup/tdp-finder/failure-missing-input-param.yaml +71 -0
  255. package/manifests/outputs/builtins/csv-lookup/tdp-finder/failure-unsupported-physical-processor.yaml +73 -0
  256. package/manifests/outputs/builtins/csv-lookup/tdp-finder/success.yaml +74 -0
  257. package/manifests/outputs/builtins/divide/failure-invalid-config-denominator.yaml +69 -0
  258. package/manifests/outputs/builtins/divide/failure-missing-numerator.yaml +75 -0
  259. package/manifests/outputs/builtins/divide/success-denominator-equal-zero.yaml +91 -0
  260. package/manifests/outputs/builtins/divide/success.yaml +91 -0
  261. package/manifests/outputs/builtins/exponent/success.yaml +73 -0
  262. package/manifests/outputs/builtins/interpolation/interpolation.yaml +81 -0
  263. package/manifests/outputs/builtins/interpolation/success.yaml +81 -0
  264. package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +84 -0
  265. package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +82 -0
  266. package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +81 -0
  267. package/manifests/outputs/builtins/mock-observations/success.yaml +358 -0
  268. package/manifests/outputs/builtins/multiply/failure-input-parameter-is-missing.yaml +71 -0
  269. package/manifests/outputs/builtins/multiply/success-with-multiple-inputs.yaml +92 -0
  270. package/manifests/outputs/builtins/multiply/success.yaml +74 -0
  271. package/manifests/outputs/builtins/regex/failure-missing-input-param.yaml +71 -0
  272. package/manifests/outputs/builtins/regex/success.yaml +76 -0
  273. package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +70 -0
  274. package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +70 -0
  275. package/manifests/outputs/builtins/sci/success.yaml +77 -0
  276. package/manifests/outputs/builtins/sci-embodied/failure-invalid-default-emission-value.yaml +73 -0
  277. package/manifests/outputs/builtins/sci-embodied/failure-missing-expected-lifespan.yaml +69 -0
  278. package/manifests/outputs/builtins/sci-embodied/success.yaml +76 -0
  279. package/manifests/outputs/builtins/shell/failure-invalid-command.yaml +68 -0
  280. package/manifests/outputs/builtins/shell/success.yaml +66 -0
  281. package/manifests/outputs/builtins/subtract/success.yaml +74 -0
  282. package/manifests/outputs/builtins/sum/failure-missing-input-param.yaml +71 -0
  283. package/manifests/outputs/builtins/sum/failure-missing-output-param.yaml +74 -0
  284. package/manifests/outputs/builtins/sum/success.yaml +74 -0
  285. package/manifests/outputs/builtins/time-sync/failure-config-start-later-end.yaml +79 -0
  286. package/manifests/outputs/builtins/time-sync/success.yaml +122 -0
  287. package/manifests/outputs/features/aggregate-failure-invalid-metrics.yaml +100 -0
  288. package/manifests/outputs/features/aggregate-failure-missing-metric-in-inputs.yaml +99 -0
  289. package/manifests/outputs/features/aggregate-horizontal.yaml +132 -0
  290. package/manifests/outputs/features/aggregate-vertical.yaml +155 -0
  291. package/manifests/outputs/features/aggregate.yaml +159 -0
  292. package/manifests/outputs/features/failure-invalid-regroup.yaml +87 -0
  293. package/manifests/outputs/features/failure-missing-cloud-instance-type.yaml +86 -0
  294. package/manifests/outputs/pipelines/cloud-metadata-divide.yaml +91 -0
  295. package/manifests/outputs/pipelines/generics.yaml +239 -0
  296. package/manifests/outputs/pipelines/instance-metadata.yaml +98 -0
  297. package/manifests/outputs/pipelines/mock-obs-time-sync.yaml +449 -0
  298. package/manifests/outputs/pipelines/nesting.yaml +1799 -0
  299. package/manifests/outputs/pipelines/pipeline-teads-sci.yaml +276 -0
  300. package/manifests/outputs/pipelines/sci.yaml +297 -0
  301. package/manifests/outputs/pipelines/teads-curve.yaml +188 -0
  302. package/manifests/outputs/pipelines/zeros.yaml +198 -0
  303. package/package.json +15 -16
  304. package/src/__mocks__/mock-manifest.yaml +2 -3
  305. package/src/{config → if-env/config}/env-template.yml +2 -3
  306. package/src/{builtins → if-run/builtins}/coefficient/README.md +31 -9
  307. package/src/{builtins → if-run/builtins}/copy-param/README.md +30 -11
  308. package/src/{builtins → if-run/builtins}/csv-lookup/README.md +32 -20
  309. package/src/{builtins → if-run/builtins}/divide/README.md +21 -8
  310. package/src/{builtins → if-run/builtins}/exponent/README.md +19 -8
  311. package/src/{builtins → if-run/builtins}/interpolation/README.md +21 -6
  312. package/src/{builtins → if-run/builtins}/mock-observations/README.md +18 -4
  313. package/src/{builtins → if-run/builtins}/multiply/README.md +20 -8
  314. package/src/{builtins → if-run/builtins}/regex/README.md +19 -9
  315. package/src/{builtins → if-run/builtins}/sci/README.md +19 -9
  316. package/src/{builtins → if-run/builtins}/sci-embodied/README.md +17 -5
  317. package/src/{builtins → if-run/builtins}/shell/README.md +19 -7
  318. package/src/{builtins → if-run/builtins}/subtract/README.md +17 -6
  319. package/src/{builtins → if-run/builtins}/sum/README.md +34 -8
  320. package/src/if-run/builtins/time-sync/README.md +267 -0
  321. package/build/builtins/coefficient/index.d.ts +0 -2
  322. package/build/builtins/coefficient/index.js +0 -65
  323. package/build/builtins/copy-param/index.d.ts +0 -2
  324. package/build/builtins/copy-param/index.js +0 -68
  325. package/build/builtins/csv-lookup/index.d.ts +0 -2
  326. package/build/builtins/csv-lookup/index.js +0 -188
  327. package/build/builtins/divide/index.d.ts +0 -2
  328. package/build/builtins/divide/index.js +0 -78
  329. package/build/builtins/exponent/index.d.ts +0 -2
  330. package/build/builtins/exponent/index.js +0 -58
  331. package/build/builtins/export-csv-raw.d.ts +0 -4
  332. package/build/builtins/export-csv-raw.js +0 -132
  333. package/build/builtins/export-csv.d.ts +0 -10
  334. package/build/builtins/export-csv.js +0 -96
  335. package/build/builtins/export-yaml.js +0 -30
  336. package/build/builtins/group-by.d.ts +0 -5
  337. package/build/builtins/group-by.js +0 -71
  338. package/build/builtins/interpolation/index.d.ts +0 -2
  339. package/build/builtins/interpolation/index.js +0 -148
  340. package/build/builtins/mock-observations/helpers/common-generator.js +0 -29
  341. package/build/builtins/mock-observations/helpers/rand-int-generator.js +0 -48
  342. package/build/builtins/mock-observations/index.d.ts +0 -2
  343. package/build/builtins/mock-observations/index.js +0 -114
  344. package/build/builtins/mock-observations/interfaces/index.js +0 -3
  345. package/build/builtins/multiply/index.d.ts +0 -2
  346. package/build/builtins/multiply/index.js +0 -57
  347. package/build/builtins/regex/index.d.ts +0 -2
  348. package/build/builtins/regex/index.js +0 -74
  349. package/build/builtins/sci/config.js +0 -44
  350. package/build/builtins/sci/index.d.ts +0 -2
  351. package/build/builtins/sci/index.js +0 -70
  352. package/build/builtins/sci-embodied/index.d.ts +0 -2
  353. package/build/builtins/sci-embodied/index.js +0 -114
  354. package/build/builtins/shell/index.d.ts +0 -2
  355. package/build/builtins/shell/index.js +0 -58
  356. package/build/builtins/subtract/index.d.ts +0 -2
  357. package/build/builtins/subtract/index.js +0 -59
  358. package/build/builtins/sum/index.d.ts +0 -2
  359. package/build/builtins/sum/index.js +0 -64
  360. package/build/builtins/time-sync.d.ts +0 -2
  361. package/build/builtins/time-sync.js +0 -300
  362. package/build/check.js +0 -85
  363. package/build/config/config.d.ts +0 -29
  364. package/build/config/config.js +0 -147
  365. package/build/config/index.js +0 -10
  366. package/build/config/params.d.ts +0 -2
  367. package/build/config/params.js +0 -196
  368. package/build/config/strings.js +0 -101
  369. package/build/diff.js +0 -46
  370. package/build/env.js +0 -38
  371. package/build/index.js +0 -48
  372. package/build/lib/aggregate.d.ts +0 -6
  373. package/build/lib/aggregate.js +0 -77
  374. package/build/lib/compare.js +0 -56
  375. package/build/lib/compute.js +0 -91
  376. package/build/lib/environment.js +0 -75
  377. package/build/lib/exhaust.js +0 -53
  378. package/build/lib/initialize.d.ts +0 -6
  379. package/build/lib/initialize.js +0 -101
  380. package/build/lib/load.js +0 -70
  381. package/build/lib/parameterize.d.ts +0 -6
  382. package/build/lib/parameterize.js +0 -55
  383. package/build/types/aggregation.d.ts +0 -2
  384. package/build/types/aggregation.js +0 -5
  385. package/build/types/compute.js +0 -3
  386. package/build/types/environment.js +0 -3
  387. package/build/types/exhaust-plugin-interface.js +0 -3
  388. package/build/types/if-env.js +0 -3
  389. package/build/types/interface.d.ts +0 -4
  390. package/build/types/interface.js +0 -8
  391. package/build/types/lib/compare.js +0 -3
  392. package/build/types/manifest.js +0 -3
  393. package/build/types/npm.js +0 -3
  394. package/build/types/parameters.d.ts +0 -5
  395. package/build/types/parameters.js +0 -5
  396. package/build/types/plugin-storage.js +0 -3
  397. package/build/types/process-args.d.ts +0 -33
  398. package/build/types/process-args.js +0 -3
  399. package/build/types/time-sync.js +0 -3
  400. package/build/types/util/args.js +0 -3
  401. package/build/util/aggregation-helper.js +0 -55
  402. package/build/util/args.d.ts +0 -37
  403. package/build/util/args.js +0 -205
  404. package/build/util/debug-logger.js +0 -117
  405. package/build/util/fs.js +0 -94
  406. package/build/util/helpers.d.ts +0 -57
  407. package/build/util/helpers.js +0 -250
  408. package/build/util/json.d.ts +0 -4
  409. package/build/util/json.js +0 -36
  410. package/build/util/log-memoize.js +0 -19
  411. package/build/util/npm.js +0 -152
  412. package/build/util/os-checker.js +0 -97
  413. package/build/util/plugin-storage.js +0 -34
  414. package/build/util/validations.js +0 -124
  415. package/build/util/yaml.js +0 -59
  416. package/manifests/bugs/aggregation-error-wrong-metric.yml +0 -178
  417. package/manifests/bugs/azure-importer-ignoring-defaults.yml +0 -64
  418. package/manifests/bugs/azure-importer-incorrect-calculation.yml +0 -59
  419. package/manifests/bugs/initialize-error-no-config.yml +0 -26
  420. package/manifests/bugs/initialize-error-no-path.yml +0 -32
  421. package/manifests/bugs/initialize-error-no-plugins.yml +0 -23
  422. package/manifests/bugs/input-error-missing-duration.yml +0 -25
  423. package/manifests/bugs/pipeline-error-naming-mismatch.yml +0 -32
  424. package/manifests/bugs/pipeline-error-uninitialized-plugin.yml +0 -33
  425. package/manifests/bugs/pipeline-ordering-error.yml +0 -91
  426. package/manifests/bugs/sci-embodied-missing-resources-total.yml +0 -23
  427. package/manifests/examples/copy.yaml +0 -20
  428. package/manifests/examples/mock-cpu-util-to-carbon.yml +0 -76
  429. package/manifests/examples/pipeline-with-mocks.yml +0 -207
  430. package/manifests/examples/region-metadata.yml +0 -26
  431. package/manifests/examples/tdp-finder.yml +0 -23
  432. package/manifests/features/aggregate-failure-invalid-metrics.yml +0 -49
  433. package/manifests/features/aggregate-failure-missing-metric-in-inputs.yml +0 -49
  434. package/manifests/features/aggregate-horizontal.yml +0 -50
  435. package/manifests/features/aggregate-vertical.yml +0 -50
  436. package/manifests/features/aggregate.yml +0 -50
  437. package/manifests/integrations/cloud-metadata-divide.yml +0 -37
  438. package/manifests/integrations/instance-metadata/failure-invalid-instance-type.yaml +0 -33
  439. package/manifests/integrations/instance-metadata/failure-invalid-provider.yaml +0 -33
  440. package/manifests/integrations/instance-metadata/failure-missing-queried-input.yml +0 -33
  441. package/manifests/integrations/instance-metadata/success.yml +0 -33
  442. package/manifests/integrations/mock-obs-group-by-cloud-meta.yml +0 -57
  443. package/manifests/integrations/mock-obs-groupby.yml +0 -39
  444. package/manifests/integrations/mock-obs-time-sync.yml +0 -110
  445. package/src/__tests__/integration/templates/integration.yaml +0 -16
  446. package/src/builtins/README.md +0 -848
  447. /package/build/{util → common/util}/debug-logger.d.ts +0 -0
  448. /package/build/{util → common/util}/fs.d.ts +0 -0
  449. /package/build/{util → common/util}/logger.d.ts +0 -0
  450. /package/build/{util → common/util}/yaml.d.ts +0 -0
  451. /package/build/{index.d.ts → if-check/index.d.ts} +0 -0
  452. /package/build/{check.d.ts → if-csv/index.d.ts} +0 -0
  453. /package/build/{diff.d.ts → if-diff/index.d.ts} +0 -0
  454. /package/build/{types/util → if-diff/types}/args.d.ts +0 -0
  455. /package/build/{types/lib → if-diff/types}/compare.d.ts +0 -0
  456. /package/build/{env.d.ts → if-env/index.d.ts} +0 -0
  457. /package/build/{types → if-env/types}/if-env.d.ts +0 -0
  458. /package/build/{types → if-env/types}/npm.d.ts +0 -0
  459. /package/build/{builtins → if-run/builtins}/mock-observations/helpers/common-generator.d.ts +0 -0
  460. /package/build/{builtins → if-run/builtins}/mock-observations/helpers/rand-int-generator.d.ts +0 -0
  461. /package/build/{builtins → if-run/builtins}/mock-observations/interfaces/index.d.ts +0 -0
  462. /package/build/{builtins → if-run/builtins}/sci/config.d.ts +0 -0
  463. /package/build/{lib → if-run/lib}/compute.d.ts +0 -0
  464. /package/build/{types → if-run/types}/environment.d.ts +0 -0
  465. /package/build/{types → if-run/types}/plugin-storage.d.ts +0 -0
  466. /package/build/{types → if-run/types}/time-sync.d.ts +0 -0
  467. /package/build/{util → if-run/util}/log-memoize.d.ts +0 -0
  468. /package/build/{util → if-run/util}/os-checker.d.ts +0 -0
@@ -79,17 +79,17 @@ tree:
79
79
  children:
80
80
  child-1:
81
81
  pipeline:
82
- - interpolate
83
- - cpu-factor-to-wattage
84
- - wattage-times-duration
85
- - wattage-to-energy-kwh
86
- - calculate-vcpu-ratio
87
- - correct-cpu-energy-for-vcpu-ratio
88
- - sci-embodied
89
- - operational-carbon
90
- - sum-carbon
91
- - sci
92
- config:
82
+ compute:
83
+ - interpolate
84
+ - cpu-factor-to-wattage
85
+ - wattage-times-duration
86
+ - wattage-to-energy-kwh
87
+ - calculate-vcpu-ratio
88
+ - correct-cpu-energy-for-vcpu-ratio
89
+ - sci-embodied
90
+ - operational-carbon
91
+ - sum-carbon
92
+ - sci
93
93
  defaults:
94
94
  cpu/thermal-design-power: 100
95
95
  grid/carbon-intensity: 800
@@ -3,25 +3,51 @@ description: a full pipeline with the aggregate feature enabled
3
3
  tags:
4
4
  aggregation:
5
5
  metrics:
6
- - "carbon"
6
+ - carbon
7
7
  type: "both"
8
8
  initialize:
9
9
  plugins:
10
10
  "interpolate":
11
11
  method: Interpolation
12
- path: 'builtin'
12
+ path: "builtin"
13
13
  global-config:
14
14
  method: linear
15
15
  x: [0, 10, 50, 100]
16
16
  y: [0.12, 0.32, 0.75, 1.02]
17
- input-parameter: 'cpu/utilization'
18
- output-parameter: 'cpu-factor'
17
+ input-parameter: "cpu/utilization"
18
+ output-parameter: "cpu-factor"
19
+ parameter-metadata:
20
+ inputs:
21
+ cpu/utilization:
22
+ unit: percentage
23
+ description: refers to CPU utilization.
24
+ aggregation-method: avg
25
+ outputs:
26
+ cpu-factor:
27
+ unit: kWh
28
+ description: result of interpolate
29
+ aggregation-method: avg
19
30
  "cpu-factor-to-wattage":
20
31
  method: Multiply
21
32
  path: builtin
22
33
  global-config:
23
34
  input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
24
35
  output-parameter: "cpu-wattage"
36
+ parameter-metadata:
37
+ inputs:
38
+ cpu-factor:
39
+ unit: kWh
40
+ description: result of interpolate
41
+ aggregation-method: avg
42
+ cpu/thermal-design-power:
43
+ unit: kWh
44
+ description: thermal design power for a processor
45
+ aggregation-method: avg
46
+ outputs:
47
+ cpu-wattage:
48
+ unit: kWh
49
+ description: the energy used by the CPU
50
+ aggregation-method: sum
25
51
  "wattage-times-duration":
26
52
  method: Multiply
27
53
  path: builtin
@@ -35,6 +61,17 @@ initialize:
35
61
  numerator: cpu-wattage-times-duration
36
62
  denominator: 3600000
37
63
  output: cpu-energy-raw
64
+ parameter-metadata:
65
+ inputs:
66
+ cpu-wattage-times-duration:
67
+ unit: kWh
68
+ description: CPU wattage multiplied by duration
69
+ aggregation-method: sum
70
+ outputs:
71
+ cpu-energy-raw:
72
+ unit: kWh
73
+ description: Raw energy used by CPU in kWh
74
+ aggregation-method: sum
38
75
  "calculate-vcpu-ratio":
39
76
  method: Divide
40
77
  path: "builtin"
@@ -42,6 +79,21 @@ initialize:
42
79
  numerator: vcpus-total
43
80
  denominator: vcpus-allocated
44
81
  output: vcpu-ratio
82
+ parameter-metadata:
83
+ inputs:
84
+ vcpus-total:
85
+ unit: count
86
+ description: total number of vcpus available on a particular resource
87
+ aggregation-method: none
88
+ vcpus-allocated:
89
+ unit: count
90
+ description: number of vcpus allocated to particular resource
91
+ aggregation-method: none
92
+ outputs:
93
+ vcpu-ratio:
94
+ unit: none
95
+ description: Ratio of vCPUs
96
+ aggregation-method: none
45
97
  "correct-cpu-energy-for-vcpu-ratio":
46
98
  method: Divide
47
99
  path: "builtin"
@@ -58,11 +110,32 @@ initialize:
58
110
  global-config:
59
111
  input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
60
112
  output-parameter: "carbon-operational"
113
+ parameter-metadata:
114
+ inputs:
115
+ cpu-energy-kwh:
116
+ unit: kWh
117
+ description: Corrected CPU energy in kWh
118
+ aggregation-method: sum
119
+ grid/carbon-intensity:
120
+ unit: gCO2eq/kWh
121
+ description: Carbon intensity for the grid
122
+ aggregation-method: avg
123
+ outputs:
124
+ carbon-operational:
125
+ unit: gCO2eq
126
+ description: Operational carbon footprint
127
+ aggregation-method: sum
61
128
  "sci":
62
129
  path: "builtin"
63
130
  method: Sci
64
131
  global-config:
65
132
  functional-unit: requests # factor to convert per time to per f.unit
133
+ parameter-metadata:
134
+ inputs:
135
+ requests:
136
+ unit: none
137
+ description: expressed the final SCI value
138
+ aggregation-method: sum
66
139
  "sum-carbon":
67
140
  path: "builtin"
68
141
  method: Sum
@@ -71,6 +144,12 @@ initialize:
71
144
  - carbon-operational
72
145
  - carbon-embodied
73
146
  output-parameter: carbon
147
+ parameter-metadata:
148
+ outputs:
149
+ carbon:
150
+ unit: gCO2eq
151
+ description: product of carbon
152
+ aggregation-method: sum
74
153
  "time-sync":
75
154
  method: TimeSync
76
155
  path: "builtin"
@@ -83,22 +162,21 @@ tree:
83
162
  children:
84
163
  child-1:
85
164
  pipeline:
86
- - interpolate
87
- - cpu-factor-to-wattage
88
- - wattage-times-duration
89
- - wattage-to-energy-kwh
90
- - calculate-vcpu-ratio
91
- - correct-cpu-energy-for-vcpu-ratio
92
- - sci-embodied
93
- - operational-carbon
94
- - sum-carbon
95
- - time-sync
96
- - sci
97
- config:
98
- group-by:
99
- group:
100
- - cloud/region
101
- - cloud/instance-type
165
+ regroup:
166
+ - cloud/region
167
+ - cloud/instance-type
168
+ compute:
169
+ - interpolate
170
+ - cpu-factor-to-wattage
171
+ - wattage-times-duration
172
+ - wattage-to-energy-kwh
173
+ - calculate-vcpu-ratio
174
+ - correct-cpu-energy-for-vcpu-ratio
175
+ - sci-embodied
176
+ - operational-carbon
177
+ - sum-carbon
178
+ - time-sync
179
+ - sci
102
180
  defaults:
103
181
  cpu/thermal-design-power: 100
104
182
  grid/carbon-intensity: 800
@@ -134,22 +212,21 @@ tree:
134
212
  requests: 30
135
213
  child-2:
136
214
  pipeline:
137
- - interpolate
138
- - cpu-factor-to-wattage
139
- - wattage-times-duration
140
- - wattage-to-energy-kwh
141
- - calculate-vcpu-ratio
142
- - correct-cpu-energy-for-vcpu-ratio
143
- - sci-embodied
144
- - operational-carbon
145
- - sum-carbon
146
- - time-sync
147
- - sci
148
- config:
149
- group-by:
150
- group:
151
- - cloud/region
152
- - cloud/instance-type
215
+ regroup:
216
+ - cloud/region
217
+ - cloud/instance-type
218
+ compute:
219
+ - interpolate
220
+ - cpu-factor-to-wattage
221
+ - wattage-times-duration
222
+ - wattage-to-energy-kwh
223
+ - calculate-vcpu-ratio
224
+ - correct-cpu-energy-for-vcpu-ratio
225
+ - sci-embodied
226
+ - operational-carbon
227
+ - sum-carbon
228
+ - time-sync
229
+ - sci
153
230
  defaults:
154
231
  cpu/thermal-design-power: 100
155
232
  grid/carbon-intensity: 800
@@ -0,0 +1,297 @@
1
+ name: pipeline-with-mocks
2
+ description: a full pipeline seeded with data from mock-observations feature
3
+ tags:
4
+ aggregation:
5
+ metrics:
6
+ - carbon
7
+ type: "both"
8
+ initialize:
9
+ plugins:
10
+ mock-observations:
11
+ kind: plugin
12
+ method: MockObservations
13
+ path: "builtin"
14
+ global-config:
15
+ timestamp-from: "2023-12-12T00:00:00.000Z"
16
+ timestamp-to: "2023-12-12T00:00:13.000Z"
17
+ duration: 30
18
+ components:
19
+ - cloud/instance-type: A1
20
+ generators:
21
+ common:
22
+ cloud/region: uk-west
23
+ randint:
24
+ cpu/utilization:
25
+ min: 1
26
+ max: 99
27
+ parameter-metadata:
28
+ inputs:
29
+ timestamp:
30
+ description: refers to the time of occurrence of the input
31
+ unit: RFC3339
32
+ aggregation-method: none
33
+ duration:
34
+ description: refers to the duration of the input
35
+ unit: seconds
36
+ aggregation-method: sum
37
+ cloud/instance-type:
38
+ description: type of Cloud Instance name used in the cloud provider APIs
39
+ unit: none
40
+ aggregation-method: none
41
+ cloud/region:
42
+ description: region cloud instance
43
+ unit: none
44
+ aggregation-method: none
45
+ interpolate:
46
+ method: Interpolation
47
+ path: "builtin"
48
+ global-config:
49
+ method: linear
50
+ x: [0, 10, 50, 100]
51
+ y: [0.12, 0.32, 0.75, 1.02]
52
+ input-parameter: "cpu/utilization"
53
+ output-parameter: "cpu-factor"
54
+ parameter-metadata:
55
+ inputs:
56
+ cpu/utilization:
57
+ description: refers to CPU utilization.
58
+ unit: percentage
59
+ aggregation-method: avg
60
+ outputs:
61
+ cpu-factor:
62
+ description: result of interpolate
63
+ unit: kWh
64
+ aggregation-method: avg
65
+ cpu-factor-to-wattage:
66
+ method: Multiply
67
+ path: builtin
68
+ global-config:
69
+ input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
70
+ output-parameter: "cpu-wattage"
71
+ parameter-metadata:
72
+ inputs:
73
+ cpu-factor:
74
+ description: result of interpolate
75
+ unit: kWh
76
+ aggregation-method: avg
77
+ cpu/thermal-design-power:
78
+ description: thermal design power for a processor
79
+ unit: kWh
80
+ aggregation-method: avg
81
+ outputs:
82
+ cpu-wattage:
83
+ description: the energy used by the CPU
84
+ unit: kWh
85
+ aggregation-method: sum
86
+ wattage-times-duration:
87
+ method: Multiply
88
+ path: builtin
89
+ global-config:
90
+ input-parameters: ["cpu-wattage", "duration"]
91
+ output-parameter: "cpu-wattage-times-duration"
92
+ parameter-metadata:
93
+ inputs:
94
+ cpu-wattage:
95
+ description: Energy used by the CPU
96
+ unit: kWh
97
+ aggregation-method: sum
98
+ duration:
99
+ description: Duration of the observation
100
+ unit: seconds
101
+ aggregation-method: sum
102
+ outputs:
103
+ cpu-wattage-times-duration:
104
+ description: CPU wattage multiplied by duration
105
+ unit: kWh
106
+ aggregation-method: sum
107
+ wattage-to-energy-kwh:
108
+ method: Divide
109
+ path: "builtin"
110
+ global-config:
111
+ numerator: cpu-wattage-times-duration
112
+ denominator: 3600000
113
+ output: cpu-energy-raw
114
+ parameter-metadata:
115
+ inputs:
116
+ cpu-wattage-times-duration:
117
+ description: CPU wattage multiplied by duration
118
+ unit: kWh
119
+ aggregation-method: sum
120
+ outputs:
121
+ cpu-energy-raw:
122
+ description: Raw energy used by CPU in kWh
123
+ unit: kWh
124
+ aggregation-method: sum
125
+ calculate-vcpu-ratio:
126
+ method: Divide
127
+ path: "builtin"
128
+ global-config:
129
+ numerator: vcpus-total
130
+ denominator: vcpus-allocated
131
+ output: vcpu-ratio
132
+ parameter-metadata:
133
+ inputs:
134
+ vcpus-total:
135
+ description: total number of vcpus available on a particular resource
136
+ unit: count
137
+ aggregation-method: none
138
+ vcpus-allocated:
139
+ description: number of vcpus allocated to particular resource
140
+ unit: count
141
+ aggregation-method: none
142
+ outputs:
143
+ vcpu-ratio:
144
+ description: Ratio of vCPUs
145
+ unit: none
146
+ aggregation-method: none
147
+ correct-cpu-energy-for-vcpu-ratio:
148
+ method: Divide
149
+ path: "builtin"
150
+ global-config:
151
+ numerator: cpu-energy-raw
152
+ denominator: vcpu-ratio
153
+ output: cpu-energy-kwh
154
+ parameter-metadata:
155
+ inputs:
156
+ cpu-energy-raw:
157
+ description: Raw energy used by CPU in kWh
158
+ unit: kWh
159
+ aggregation-method: sum
160
+ vcpu-ratio:
161
+ description: Ratio of vCPUs
162
+ unit: none
163
+ aggregation-method: none
164
+ outputs:
165
+ cpu-energy-kwh:
166
+ description: Corrected CPU energy in kWh
167
+ unit: kWh
168
+ aggregation-method: sum
169
+ sci-embodied:
170
+ path: "builtin"
171
+ method: SciEmbodied
172
+ operational-carbon:
173
+ method: Multiply
174
+ path: builtin
175
+ global-config:
176
+ input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
177
+ output-parameter: "carbon-operational"
178
+ parameter-metadata:
179
+ inputs:
180
+ cpu-energy-kwh:
181
+ description: Corrected CPU energy in kWh
182
+ unit: kWh
183
+ aggregation-method: sum
184
+ grid/carbon-intensity:
185
+ description: Carbon intensity for the grid
186
+ unit: gCO2eq/kWh
187
+ aggregation-method: avg
188
+ outputs:
189
+ carbon-operational:
190
+ description: Operational carbon footprint
191
+ unit: gCO2eq
192
+ aggregation-method: sum
193
+ sum-carbon:
194
+ path: "builtin"
195
+ method: Sum
196
+ global-config:
197
+ input-parameters:
198
+ - carbon-operational
199
+ - carbon-embodied
200
+ output-parameter: carbon
201
+ parameter-metadata:
202
+ inputs:
203
+ carbon-operational:
204
+ description: Operational carbon footprint
205
+ unit: gCO2eq
206
+ aggregation-method: sum
207
+ carbon-embodied:
208
+ description: Embodied carbon footprint
209
+ unit: gCO2eq
210
+ aggregation-method: sum
211
+ outputs:
212
+ carbon:
213
+ description: Total carbon footprint
214
+ unit: gCO2eq
215
+ aggregation-method: sum
216
+ sci:
217
+ path: "builtin"
218
+ method: Sci
219
+ global-config:
220
+ functional-unit: "requests"
221
+ parameter-metadata:
222
+ inputs:
223
+ requests:
224
+ description: expressed the final SCI value
225
+ unit: none
226
+ aggregation-method: sum
227
+ outputs:
228
+ sci:
229
+ description: Scientific Carbon Intensity
230
+ unit: none
231
+ aggregation-method: none
232
+ time-sync:
233
+ method: TimeSync
234
+ path: "builtin"
235
+ global-config:
236
+ start-time: "2023-12-12T00:00:00.000Z"
237
+ end-time: "2023-12-12T00:01:00.000Z"
238
+ interval: 5
239
+ allow-padding: true
240
+ tree:
241
+ children:
242
+ child-1:
243
+ pipeline:
244
+ observe:
245
+ - mock-observations
246
+ regroup:
247
+ - cloud/region
248
+ - cloud/instance-type
249
+ compute:
250
+ - interpolate
251
+ - cpu-factor-to-wattage
252
+ - wattage-times-duration
253
+ - wattage-to-energy-kwh
254
+ - calculate-vcpu-ratio
255
+ - correct-cpu-energy-for-vcpu-ratio
256
+ - sci-embodied
257
+ - operational-carbon
258
+ - sum-carbon
259
+ - time-sync
260
+ - sci
261
+ defaults:
262
+ cpu/thermal-design-power: 100
263
+ grid/carbon-intensity: 800
264
+ device/emissions-embodied: 1533.120 # gCO2eq
265
+ time-reserved: 3600 # 1hr in seconds
266
+ device/expected-lifespan: 94608000 # 3 years in seconds
267
+ vcpus-total: 8
268
+ vcpus-allocated: 1
269
+ inputs:
270
+ child-2:
271
+ pipeline:
272
+ observe:
273
+ - mock-observations
274
+ regroup:
275
+ - cloud/region
276
+ - cloud/instance-type
277
+ compute:
278
+ - interpolate
279
+ - cpu-factor-to-wattage
280
+ - wattage-times-duration
281
+ - wattage-to-energy-kwh
282
+ - calculate-vcpu-ratio
283
+ - correct-cpu-energy-for-vcpu-ratio
284
+ - sci-embodied
285
+ - operational-carbon
286
+ - sum-carbon
287
+ - time-sync
288
+ - sci
289
+ defaults:
290
+ cpu/thermal-design-power: 100
291
+ grid/carbon-intensity: 800
292
+ device/emissions-embodied: 1533.120 # gCO2eq
293
+ time-reserved: 3600 # 1hr in seconds
294
+ device/expected-lifespan: 94608000 # 3 years in seconds
295
+ vcpus-total: 8
296
+ vcpus-allocated: 1
297
+ inputs:
@@ -1,8 +1,7 @@
1
- name: mock-observation-demo
2
- description: a manifest demonstrating how to use the mock observations feature
1
+ name: demo
2
+ description: demo for observe feat
3
3
  tags:
4
4
  initialize:
5
- outputs: ['yaml']
6
5
  plugins:
7
6
  mock-observations:
8
7
  kind: plugin
@@ -10,8 +9,8 @@ initialize:
10
9
  path: "builtin"
11
10
  global-config:
12
11
  timestamp-from: 2023-07-06T00:00
13
- timestamp-to: 2023-07-06T00:10
14
- duration: 0
12
+ timestamp-to: 2023-07-06T00:01
13
+ duration: 60
15
14
  components:
16
15
  - cloud/instance-type: A1
17
16
  - cloud/instance-type: B1
@@ -30,5 +29,6 @@ tree:
30
29
  children:
31
30
  child:
32
31
  pipeline:
33
- - mock-observations
34
- inputs:
32
+ observe:
33
+ - mock-observations
34
+ inputs: null
@@ -0,0 +1,52 @@
1
+ name: regroup demo
2
+ description:
3
+ initialize:
4
+ plugins:
5
+ interpolate:
6
+ method: Interpolation
7
+ path: "builtin"
8
+ global-config:
9
+ method: linear
10
+ x: [0, 10, 50, 100]
11
+ y: [0.12, 0.32, 0.75, 1.02]
12
+ input-parameter: "cpu/utilization"
13
+ output-parameter: "cpu-factor"
14
+ tree:
15
+ children:
16
+ child:
17
+ pipeline:
18
+ observe:
19
+ regroup:
20
+ - cloud/region
21
+ - cloud/instance-type
22
+ inputs:
23
+ - timestamp: 2023-07-06T00:00
24
+ duration: 300
25
+ cloud/instance-type: A1
26
+ cloud/region: uk-west
27
+ cpu/utilization: 99
28
+ - timestamp: 2023-07-06T05:00
29
+ duration: 300
30
+ cloud/instance-type: A1
31
+ cloud/region: uk-west
32
+ cpu/utilization: 23
33
+ - timestamp: 2023-07-06T10:00
34
+ duration: 300
35
+ cloud/instance-type: A1
36
+ cloud/region: uk-west
37
+ cpu/utilization: 12
38
+ - timestamp: 2023-07-06T00:00 # note this time restarts at the start timstamp
39
+ duration: 300
40
+ cloud/instance-type: B1
41
+ cloud/region: uk-west
42
+ cpu/utilization: 11
43
+ - timestamp: 2023-07-06T05:00
44
+ duration: 300
45
+ cloud/instance-type: B1
46
+ cloud/region: uk-west
47
+ cpu/utilization: 67
48
+ - timestamp: 2023-07-06T10:00
49
+ duration: 300
50
+ cloud/instance-type: B1
51
+ cloud/region: uk-west
52
+ cpu/utilization: 1