@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
@@ -2,11 +2,17 @@ name: divide
2
2
  description: success path
3
3
  tags:
4
4
  initialize:
5
- # outputs: ['yaml']
5
+ # outputs: ['yaml']
6
6
  plugins:
7
7
  cloud-metadata:
8
- method: CloudMetadata
9
- path: "@grnsft/if-plugins"
8
+ path: builtin
9
+ method: CSVLookup
10
+ global-config:
11
+ filepath: >-
12
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
13
+ query:
14
+ instance-class: cloud/instance-type
15
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
10
16
  divide:
11
17
  method: Divide
12
18
  path: "builtin"
@@ -14,19 +20,12 @@ initialize:
14
20
  numerator: vcpus-allocated
15
21
  denominator: 2
16
22
  output: cpu/number-cores
17
- boavizta-cpu:
18
- method: BoaviztaCpuOutput
19
- path: "@grnsft/if-unofficial-plugins"
20
- global-config:
21
- allocation: LINEAR
22
- verbose: true
23
23
  tree:
24
24
  children:
25
25
  child:
26
26
  pipeline:
27
27
  - cloud-metadata
28
28
  - divide
29
- - boavizta-cpu
30
29
  config:
31
30
  divide:
32
31
  defaults:
@@ -0,0 +1,25 @@
1
+ name: exponent demo
2
+ description:
3
+ tags:
4
+ initialize:
5
+ # outputs: [yaml]
6
+ plugins:
7
+ exponent:
8
+ method: Exponent
9
+ path: 'builtin'
10
+ global-config:
11
+ input-parameter: 'cpu/energy'
12
+ exponent: 2
13
+ output-parameter: 'energy'
14
+ tree:
15
+ children:
16
+ child:
17
+ pipeline:
18
+ - exponent
19
+ config:
20
+ exponent:
21
+ inputs:
22
+ - timestamp: 2023-08-06T00:00
23
+ duration: 3600
24
+ cpu/energy: 0.001
25
+ network/energy: 0.001
@@ -1,7 +1,7 @@
1
1
  name: groupby
2
2
  description: successful path
3
3
  initialize:
4
- outputs: ['yaml']
4
+ # outputs: ['yaml']
5
5
  plugins:
6
6
  group-by:
7
7
  path: "builtin"
@@ -0,0 +1,23 @@
1
+ name: interpolation-demo
2
+ description: simple demo of interpolation plugin
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ interpolation:
7
+ method: Interpolation
8
+ path: "builtin"
9
+ global-config:
10
+ method: linear
11
+ x: [0, 10, 50, 100]
12
+ y: [0.12, 0.32, 0.75, 1.02]
13
+ input-parameter: "cpu/utilization"
14
+ output-parameter: "result"
15
+ tree:
16
+ children:
17
+ child:
18
+ pipeline:
19
+ - interpolation
20
+ inputs:
21
+ - timestamp: 2023-07-06T00:00
22
+ duration: 3600
23
+ cpu/utilization: 45
@@ -8,17 +8,13 @@ initialize:
8
8
  kind: plugin
9
9
  method: Sci
10
10
  path: "builtin"
11
- # global-config:
12
- # functional-unit: requests
11
+ global-config:
12
+ functional-unit: requests
13
13
  tree:
14
14
  children:
15
15
  child:
16
16
  pipeline:
17
17
  - sci
18
- config:
19
- sci:
20
- functional-unit-time: 1 sec
21
- functional-unit: requests # factor to convert per time to per f.unit
22
18
  inputs:
23
19
  - timestamp: 2023-07-06T00:00
24
20
  duration: 3600
@@ -16,9 +16,6 @@ tree:
16
16
  pipeline:
17
17
  - sci
18
18
  config:
19
- sci:
20
- functional-unit-time: 1 sec
21
- functional-unit: requests # factor to convert per time to per f.unit
22
19
  inputs:
23
20
  - timestamp: 2023-07-06T00:00
24
21
  duration: 3600
@@ -0,0 +1,24 @@
1
+ name: subtract demo
2
+ description:
3
+ tags:
4
+ initialize:
5
+ # outputs: ['yaml']
6
+ plugins:
7
+ subtract:
8
+ method: Subtract
9
+ path: 'builtin'
10
+ global-config:
11
+ input-parameters: ['cpu/energy', 'network/energy']
12
+ output-parameter: 'energy/diff'
13
+ tree:
14
+ children:
15
+ child:
16
+ pipeline:
17
+ - subtract
18
+ config:
19
+ subtract:
20
+ inputs:
21
+ - timestamp: 2023-08-06T00:00
22
+ duration: 3600
23
+ cpu/energy: 0.003
24
+ network/energy: 0.001
@@ -2,7 +2,7 @@ name: sum
2
2
  description: successful path
3
3
  tags:
4
4
  initialize:
5
- outputs: ['yaml']
5
+ # outputs: ['yaml']
6
6
  plugins:
7
7
  sum:
8
8
  method: Sum
@@ -2,25 +2,55 @@ name: generics
2
2
  description: a pipeline that does arbitrary calculations using our generic arithmetic builtins
3
3
  tags:
4
4
  initialize:
5
+ # outputs: [yaml]
5
6
  plugins:
6
- teads-curve:
7
- path: "@grnsft/if-unofficial-plugins"
8
- method: TeadsCurve
7
+ "interpolate":
8
+ method: Interpolation
9
+ path: 'builtin'
9
10
  global-config:
10
- interpolation: spline
11
- "sum":
11
+ method: linear
12
+ x: [0, 10, 50, 100]
13
+ y: [0.12, 0.32, 0.75, 1.02]
14
+ input-parameter: 'cpu/utilization'
15
+ output-parameter: 'cpu-factor'
16
+ "cpu-factor-to-wattage":
17
+ method: Multiply
18
+ path: builtin
19
+ global-config:
20
+ input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
21
+ output-parameter: "cpu-wattage"
22
+ "wattage-times-duration":
23
+ method: Multiply
24
+ path: builtin
25
+ global-config:
26
+ input-parameters: ["cpu-wattage", "duration"]
27
+ output-parameter: "cpu-wattage-times-duration"
28
+ "wattage-to-energy-kwh":
29
+ method: Divide
30
+ path: "builtin"
31
+ global-config:
32
+ numerator: cpu-wattage-times-duration
33
+ denominator: 3600000
34
+ output: cpu-energy-raw
35
+ "calculate-vcpu-ratio":
36
+ method: Divide
37
+ path: "builtin"
38
+ global-config:
39
+ numerator: vcpus-total
40
+ denominator: vcpus-allocated
41
+ output: vcpu-ratio
42
+ "correct-cpu-energy-for-vcpu-ratio":
43
+ method: Divide
12
44
  path: "builtin"
13
- method: Sum
14
45
  global-config:
15
- input-parameters:
16
- - cpu/energy
17
- - network/energy
18
- output-parameter: energy-sum
46
+ numerator: cpu-energy-raw
47
+ denominator: vcpu-ratio
48
+ output: cpu-energy-kwh
19
49
  "coefficient":
20
50
  path: "builtin"
21
51
  method: Coefficient
22
52
  global-config:
23
- input-parameter: energy
53
+ input-parameter: cpu-energy-kwh
24
54
  coefficient: 2
25
55
  output-parameter: energy-doubled
26
56
  "multiply":
@@ -33,13 +63,19 @@ tree:
33
63
  children:
34
64
  child-1:
35
65
  pipeline:
36
- - teads-curve
37
- - sum
66
+ - interpolate
67
+ - cpu-factor-to-wattage
68
+ - wattage-times-duration
69
+ - wattage-to-energy-kwh
70
+ - calculate-vcpu-ratio
71
+ - correct-cpu-energy-for-vcpu-ratio
38
72
  - coefficient
39
73
  - multiply
40
74
  config:
41
75
  defaults:
42
76
  cpu/thermal-design-power: 100
77
+ vcpus-allocated: 1
78
+ vcpus-total: 8
43
79
  inputs:
44
80
  - timestamp: "2023-12-12T00:00:00.000Z"
45
81
  cloud/instance-type: A1
@@ -7,31 +7,62 @@ tags:
7
7
  aggregation:
8
8
  metrics:
9
9
  - "carbon"
10
- - "energy"
11
10
  type: "both"
12
11
  params:
13
12
  initialize:
14
- outputs: ['yaml']
13
+ # outputs: ['yaml']
15
14
  plugins:
16
- teads-curve:
17
- path: "@grnsft/if-unofficial-plugins"
18
- method: TeadsCurve
15
+ "interpolate":
16
+ method: Interpolation
17
+ path: 'builtin'
19
18
  global-config:
20
- interpolation: spline
21
- sum:
19
+ method: linear
20
+ x: [0, 10, 50, 100]
21
+ y: [0.12, 0.32, 0.75, 1.02]
22
+ input-parameter: 'cpu/utilization'
23
+ output-parameter: 'cpu-factor'
24
+ "cpu-factor-to-wattage":
25
+ method: Multiply
26
+ path: builtin
27
+ global-config:
28
+ input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
29
+ output-parameter: "cpu-wattage"
30
+ "wattage-times-duration":
31
+ method: Multiply
32
+ path: builtin
33
+ global-config:
34
+ input-parameters: ["cpu-wattage", "duration"]
35
+ output-parameter: "cpu-wattage-times-duration"
36
+ "wattage-to-energy-kwh":
37
+ method: Divide
22
38
  path: "builtin"
23
- method: Sum
24
39
  global-config:
25
- input-parameters:
26
- - cpu/energy
27
- - network/energy
28
- output-parameter: energy
40
+ numerator: cpu-wattage-times-duration
41
+ denominator: 3600000
42
+ output: cpu-energy-raw
43
+ "calculate-vcpu-ratio":
44
+ method: Divide
45
+ path: "builtin"
46
+ global-config:
47
+ numerator: vcpus-total
48
+ denominator: vcpus-allocated
49
+ output: vcpu-ratio
50
+ "correct-cpu-energy-for-vcpu-ratio":
51
+ method: Divide
52
+ path: "builtin"
53
+ global-config:
54
+ numerator: cpu-energy-raw
55
+ denominator: vcpu-ratio
56
+ output: cpu-energy-kwh
29
57
  sci-embodied:
30
58
  path: "builtin"
31
59
  method: SciEmbodied
32
- sci-o:
33
- path: "@grnsft/if-plugins"
34
- method: SciO
60
+ "operational-carbon":
61
+ method: Multiply
62
+ path: builtin
63
+ global-config:
64
+ input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
65
+ output-parameter: "carbon-operational"
35
66
  sci:
36
67
  path: "builtin"
37
68
  method: Sci
@@ -62,13 +93,17 @@ tree:
62
93
  device/emissions-embodied: 1533.120 # gCO2eq
63
94
  time-reserved: 3600 # 1hr in seconds
64
95
  device/expected-lifespan: 94608000 # 3 years in seconds
65
- resources-reserved: 1
66
- resources-total: 8
96
+ vcpus-allocated: 1
97
+ vcpus-total: 8
67
98
  pipeline:
68
- - teads-curve
69
- - sum
99
+ - interpolate
100
+ - cpu-factor-to-wattage
101
+ - wattage-times-duration
102
+ - wattage-to-energy-kwh
103
+ - calculate-vcpu-ratio
104
+ - correct-cpu-energy-for-vcpu-ratio
70
105
  - sci-embodied
71
- - sci-o
106
+ - operational-carbon
72
107
  - sum-carbon
73
108
  - time-sync
74
109
  - sci
@@ -108,13 +143,17 @@ tree:
108
143
  device/emissions-embodied: 1533.120 # gCO2eq
109
144
  time-reserved: 3600 # 1hr in seconds
110
145
  device/expected-lifespan: 94608000 # 3 years in seconds
111
- resources-reserved: 1
112
- resources-total: 8
146
+ vcpus-allocated: 1
147
+ vcpus-total: 8
113
148
  pipeline:
114
- - teads-curve
115
- - sum
149
+ - interpolate
150
+ - cpu-factor-to-wattage
151
+ - wattage-times-duration
152
+ - wattage-to-energy-kwh
153
+ - calculate-vcpu-ratio
154
+ - correct-cpu-energy-for-vcpu-ratio
116
155
  - sci-embodied
117
- - sci-o
156
+ - operational-carbon
118
157
  - sum-carbon
119
158
  - time-sync
120
159
  - sci
@@ -156,13 +195,17 @@ tree:
156
195
  device/emissions-embodied: 1533.120 # gCO2eq
157
196
  time-reserved: 3600 # 1hr in seconds
158
197
  device/expected-lifespan: 94608000 # 3 years in seconds
159
- resources-reserved: 1
160
- resources-total: 8
198
+ vcpus-allocated: 1
199
+ vcpus-total: 8
161
200
  pipeline:
162
- - teads-curve
163
- - sum
201
+ - interpolate
202
+ - cpu-factor-to-wattage
203
+ - wattage-times-duration
204
+ - wattage-to-energy-kwh
205
+ - calculate-vcpu-ratio
206
+ - correct-cpu-energy-for-vcpu-ratio
164
207
  - sci-embodied
165
- - sci-o
208
+ - operational-carbon
166
209
  - sum-carbon
167
210
  - time-sync
168
211
  - sci
@@ -202,13 +245,17 @@ tree:
202
245
  device/emissions-embodied: 1533.120 # gCO2eq
203
246
  time-reserved: 3600 # 1hr in seconds
204
247
  device/expected-lifespan: 94608000 # 3 years in seconds
205
- resources-reserved: 1
206
- resources-total: 8
248
+ vcpus-allocated: 1
249
+ vcpus-total: 8
207
250
  pipeline:
208
- - teads-curve
209
- - sum
251
+ - interpolate
252
+ - cpu-factor-to-wattage
253
+ - wattage-times-duration
254
+ - wattage-to-energy-kwh
255
+ - calculate-vcpu-ratio
256
+ - correct-cpu-energy-for-vcpu-ratio
210
257
  - sci-embodied
211
- - sci-o
258
+ - operational-carbon
212
259
  - sum-carbon
213
260
  - time-sync
214
261
  - sci
@@ -3,25 +3,57 @@ description: a full pipeline seeded with some hardcoded input data and yielding
3
3
  tags:
4
4
  initialize:
5
5
  plugins:
6
- "teads-curve":
7
- path: "@grnsft/if-unofficial-plugins"
8
- method: TeadsCurve
6
+ "interpolate":
7
+ method: Interpolation
8
+ path: 'builtin'
9
9
  global-config:
10
- interpolation: spline
11
- "sum":
10
+ method: linear
11
+ x: [0, 10, 50, 100]
12
+ y: [0.12, 0.32, 0.75, 1.02]
13
+ input-parameter: 'cpu/utilization'
14
+ output-parameter: 'cpu-factor'
15
+ "cpu-factor-to-wattage":
16
+ method: Multiply
17
+ path: builtin
18
+ global-config:
19
+ input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
20
+ output-parameter: "cpu-wattage"
21
+ "wattage-times-duration":
22
+ method: Multiply
23
+ path: builtin
24
+ global-config:
25
+ input-parameters: ["cpu-wattage", "duration"]
26
+ output-parameter: "cpu-wattage-times-duration"
27
+ "wattage-to-energy-kwh":
28
+ method: Divide
12
29
  path: "builtin"
13
- method: Sum
14
30
  global-config:
15
- input-parameters:
16
- - cpu/energy
17
- - network/energy
18
- output-parameter: energy
31
+ numerator: cpu-wattage-times-duration
32
+ denominator: 3600000
33
+ output: cpu-energy-raw
34
+ "calculate-vcpu-ratio":
35
+ method: Divide
36
+ path: "builtin"
37
+ global-config:
38
+ numerator: vcpus-total
39
+ denominator: vcpus-allocated
40
+ output: vcpu-ratio
41
+ "correct-cpu-energy-for-vcpu-ratio":
42
+ method: Divide
43
+ path: "builtin"
44
+ global-config:
45
+ numerator: cpu-energy-raw
46
+ denominator: vcpu-ratio
47
+ output: cpu-energy-kwh
19
48
  "sci-embodied":
20
49
  path: "builtin"
21
50
  method: SciEmbodied
22
- "sci-o":
23
- path: "@grnsft/if-plugins"
24
- method: SciO
51
+ "operational-carbon":
52
+ method: Multiply
53
+ path: builtin
54
+ global-config:
55
+ input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
56
+ output-parameter: "carbon-operational"
25
57
  "sci":
26
58
  path: "builtin"
27
59
  method: Sci
@@ -47,10 +79,14 @@ tree:
47
79
  children:
48
80
  child-1:
49
81
  pipeline:
50
- - teads-curve
51
- - sum
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
52
88
  - sci-embodied
53
- - sci-o
89
+ - operational-carbon
54
90
  - sum-carbon
55
91
  - sci
56
92
  config:
@@ -60,8 +96,8 @@ tree:
60
96
  device/emissions-embodied: 1533.120 # gCO2eq
61
97
  time-reserved: 3600 # 1hr in seconds
62
98
  device/expected-lifespan: 94608000 # 3 years in seconds
63
- resources-reserved: 1
64
- resources-total: 8
99
+ vcpus-total: 8
100
+ vcpus-allocated: 1
65
101
  component: 1
66
102
  inputs:
67
103
  - timestamp: "2023-12-12T00:00:00.000Z"
@@ -7,25 +7,62 @@ aggregation:
7
7
  type: "both"
8
8
  initialize:
9
9
  plugins:
10
- "teads-curve":
11
- path: "@grnsft/if-unofficial-plugins"
12
- method: TeadsCurve
10
+ "interpolate":
11
+ method: Interpolation
12
+ path: 'builtin'
13
13
  global-config:
14
- interpolation: spline
15
- "sci-e":
16
- path: "@grnsft/if-plugins"
17
- method: SciE
14
+ method: linear
15
+ x: [0, 10, 50, 100]
16
+ y: [0.12, 0.32, 0.75, 1.02]
17
+ input-parameter: 'cpu/utilization'
18
+ output-parameter: 'cpu-factor'
19
+ "cpu-factor-to-wattage":
20
+ method: Multiply
21
+ path: builtin
22
+ global-config:
23
+ input-parameters: ["cpu-factor", "cpu/thermal-design-power"]
24
+ output-parameter: "cpu-wattage"
25
+ "wattage-times-duration":
26
+ method: Multiply
27
+ path: builtin
28
+ global-config:
29
+ input-parameters: ["cpu-wattage", "duration"]
30
+ output-parameter: "cpu-wattage-times-duration"
31
+ "wattage-to-energy-kwh":
32
+ method: Divide
33
+ path: "builtin"
34
+ global-config:
35
+ numerator: cpu-wattage-times-duration
36
+ denominator: 3600000
37
+ output: cpu-energy-raw
38
+ "calculate-vcpu-ratio":
39
+ method: Divide
40
+ path: "builtin"
41
+ global-config:
42
+ numerator: vcpus-total
43
+ denominator: vcpus-allocated
44
+ output: vcpu-ratio
45
+ "correct-cpu-energy-for-vcpu-ratio":
46
+ method: Divide
47
+ path: "builtin"
48
+ global-config:
49
+ numerator: cpu-energy-raw
50
+ denominator: vcpu-ratio
51
+ output: cpu-energy-kwh
18
52
  "sci-embodied":
19
53
  path: "builtin"
20
54
  method: SciEmbodied
21
- "sci-o":
22
- path: "@grnsft/if-plugins"
23
- method: SciO
55
+ "operational-carbon":
56
+ method: Multiply
57
+ path: builtin
58
+ global-config:
59
+ input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
60
+ output-parameter: "carbon-operational"
24
61
  "sci":
25
62
  path: "builtin"
26
63
  method: Sci
27
64
  global-config:
28
- functional-unit: "requests"
65
+ functional-unit: requests # factor to convert per time to per f.unit
29
66
  "sum-carbon":
30
67
  path: "builtin"
31
68
  method: Sum
@@ -42,17 +79,18 @@ initialize:
42
79
  end-time: "2023-12-12T00:01:00.000Z"
43
80
  interval: 5
44
81
  allow-padding: true
45
- "group-by":
46
- path: builtin
47
- method: GroupBy
48
82
  tree:
49
83
  children:
50
84
  child-1:
51
85
  pipeline:
52
- - teads-curve
53
- - sci-e
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
54
92
  - sci-embodied
55
- - sci-o
93
+ - operational-carbon
56
94
  - sum-carbon
57
95
  - time-sync
58
96
  - sci
@@ -67,8 +105,8 @@ tree:
67
105
  device/emissions-embodied: 1533.120 # gCO2eq
68
106
  time-reserved: 3600 # 1hr in seconds
69
107
  device/expected-lifespan: 94608000 # 3 years in seconds
70
- resources-reserved: 1
71
- resources-total: 8
108
+ vcpus-total: 8
109
+ vcpus-allocated: 1
72
110
  inputs:
73
111
  - timestamp: "2023-12-12T00:00:00.000Z"
74
112
  cloud/instance-type: A1
@@ -96,10 +134,14 @@ tree:
96
134
  requests: 30
97
135
  child-2:
98
136
  pipeline:
99
- - teads-curve
100
- - sci-e
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
101
143
  - sci-embodied
102
- - sci-o
144
+ - operational-carbon
103
145
  - sum-carbon
104
146
  - time-sync
105
147
  - sci
@@ -114,8 +156,8 @@ tree:
114
156
  device/emissions-embodied: 1533.120 # gCO2eq
115
157
  time-reserved: 3600 # 1hr in seconds
116
158
  device/expected-lifespan: 94608000 # 3 years in seconds
117
- resources-reserved: 1
118
- resources-total: 8
159
+ vcpus-total: 8
160
+ vcpus-allocated: 1
119
161
  inputs:
120
162
  - timestamp: "2023-12-12T00:00:00.000Z"
121
163
  duration: 1
@@ -140,4 +182,4 @@ tree:
140
182
  cpu/utilization: 33
141
183
  cloud/instance-type: A1
142
184
  cloud/region: uk-west
143
- requests: 180
185
+ requests: 180