@grnsft/if 1.0.1 → 1.1.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 (319) hide show
  1. package/.dockerignore +10 -0
  2. package/CONTAINER.md +148 -0
  3. package/Dockerfile +73 -0
  4. package/HELM_CHART.md +96 -0
  5. package/README.md +56 -0
  6. package/bin/docker-entrypoint.sh +15 -0
  7. package/build/common/types/manifest.d.ts +1 -0
  8. package/build/common/types/manifest.js +1 -1
  9. package/build/common/util/debug-logger.js +4 -18
  10. package/build/common/util/helpers.d.ts +3 -2
  11. package/build/common/util/helpers.js +6 -18
  12. package/build/common/util/storage.d.ts +9 -0
  13. package/build/common/util/storage.js +24 -0
  14. package/build/if-api/config/config.d.ts +9 -0
  15. package/build/if-api/config/config.js +58 -0
  16. package/build/if-api/config/index.d.ts +2 -0
  17. package/build/if-api/config/index.js +8 -0
  18. package/build/if-api/config/strings.d.ts +16 -0
  19. package/build/if-api/config/strings.js +20 -0
  20. package/build/if-api/index.d.ts +2 -0
  21. package/build/if-api/index.js +268 -0
  22. package/build/if-api/types/process-args.d.ts +18 -0
  23. package/build/if-api/types/process-args.js +3 -0
  24. package/build/if-api/util/args.d.ts +5 -0
  25. package/build/if-api/util/args.js +42 -0
  26. package/build/if-check/index.js +1 -11
  27. package/build/if-check/util/npm.d.ts +1 -1
  28. package/build/if-check/util/npm.js +31 -74
  29. package/build/if-metadata-check/config/config.d.ts +5 -0
  30. package/build/if-metadata-check/config/config.js +26 -0
  31. package/build/if-metadata-check/config/strings.d.ts +5 -0
  32. package/build/if-metadata-check/config/strings.js +9 -0
  33. package/build/if-metadata-check/index.d.ts +2 -0
  34. package/build/if-metadata-check/index.js +30 -0
  35. package/build/if-metadata-check/types/plugin.d.ts +7 -0
  36. package/build/if-metadata-check/types/plugin.js +3 -0
  37. package/build/if-metadata-check/types/process-args.d.ts +5 -0
  38. package/build/if-metadata-check/types/process-args.js +3 -0
  39. package/build/if-metadata-check/util/args.d.ts +57 -0
  40. package/build/if-metadata-check/util/args.js +29 -0
  41. package/build/if-metadata-check/util/metadata-checker.d.ts +44 -0
  42. package/build/if-metadata-check/util/metadata-checker.js +99 -0
  43. package/build/if-run/builtins/divide/index.js +2 -2
  44. package/build/if-run/builtins/sci/index.js +2 -2
  45. package/build/if-run/config/strings.js +3 -3
  46. package/build/if-run/index.js +1 -1
  47. package/build/if-run/lib/aggregate.d.ts +2 -2
  48. package/build/if-run/lib/aggregate.js +5 -19
  49. package/build/if-run/lib/compute.d.ts +1 -1
  50. package/build/if-run/lib/compute.js +10 -9
  51. package/build/if-run/lib/environment.d.ts +5 -1
  52. package/build/if-run/lib/environment.js +30 -29
  53. package/build/if-run/lib/initialize.d.ts +12 -0
  54. package/build/if-run/lib/initialize.js +37 -3
  55. package/build/if-run/lib/regroup.d.ts +3 -2
  56. package/build/if-run/lib/regroup.js +13 -9
  57. package/build/if-run/types/compute.d.ts +1 -1
  58. package/build/if-run/types/compute.js +1 -1
  59. package/build/if-run/util/os-checker.js +14 -10
  60. package/helm-chart/.helmignore +23 -0
  61. package/helm-chart/Chart.yaml +24 -0
  62. package/helm-chart/templates/NOTES.txt +22 -0
  63. package/helm-chart/templates/_helpers.tpl +62 -0
  64. package/helm-chart/templates/additionalPlugins.yaml +13 -0
  65. package/helm-chart/templates/deployment.yaml +144 -0
  66. package/helm-chart/templates/disabledPlugins.yaml +11 -0
  67. package/helm-chart/templates/env-configmap.yaml +10 -0
  68. package/helm-chart/templates/env-secret.yaml +10 -0
  69. package/helm-chart/templates/hpa.yaml +32 -0
  70. package/helm-chart/templates/ingress.yaml +43 -0
  71. package/helm-chart/templates/npmrc.yaml +11 -0
  72. package/helm-chart/templates/service.yaml +24 -0
  73. package/helm-chart/templates/serviceaccount.yaml +13 -0
  74. package/helm-chart/templates/tests/test-connection.yaml +15 -0
  75. package/helm-chart/values.yaml +175 -0
  76. package/jest.config.js +6 -2
  77. package/manifests/examples/bugs/aggregation-error-wrong-metric.yml +173 -0
  78. package/manifests/examples/bugs/input-error-missing-duration.yml +25 -0
  79. package/manifests/examples/bugs/mock-observations-failure-duration-is-zero.yml +33 -0
  80. package/manifests/examples/bugs/pipeline-error-naming-mismatch.yml +32 -0
  81. package/manifests/examples/bugs/pipeline-error-uninitialized-plugin.yml +33 -0
  82. package/manifests/examples/bugs/pipeline-ordering-error.yml +91 -0
  83. package/manifests/examples/builtins/divide/success-denominator-equal-zero.yml +36 -0
  84. package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +0 -1
  85. package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +0 -1
  86. package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +0 -1
  87. package/manifests/examples/builtins/mock-observations/success.yml +0 -1
  88. package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +0 -1
  89. package/manifests/examples/builtins/sci/failure-missing-input-param.yml +0 -1
  90. package/manifests/examples/builtins/sci/success.yml +0 -1
  91. package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +22 -0
  92. package/manifests/examples/builtins/time-sync/failure-missing-config.yml +0 -2
  93. package/manifests/examples/builtins/time-sync/success.yml +0 -2
  94. package/manifests/examples/features/aggregate-failure-invalid-metrics.yml +50 -0
  95. package/manifests/examples/features/aggregate-failure-missing-metric-in-inputs.yml +50 -0
  96. package/manifests/examples/features/aggregate-horizontal.yml +58 -0
  97. package/manifests/examples/features/aggregate-vertical.yml +58 -0
  98. package/manifests/examples/features/aggregate.yml +58 -0
  99. package/manifests/examples/pipelines/cloud-metadata-divide.yml +36 -0
  100. package/manifests/examples/pipelines/pipeline-with-mocks.yml +0 -1
  101. package/manifests/examples/pipelines/scenario-5.yml +0 -1
  102. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +0 -1
  103. package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +0 -1
  104. package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +0 -1
  105. package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +0 -1
  106. package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +0 -1
  107. package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +0 -1
  108. package/manifests/outputs/builtins/time-sync/failure-missing-config.yaml +0 -2
  109. package/manifests/outputs/features/regroup/success.yaml +72 -0
  110. package/manifests/outputs/pipelines/pipeline-with-aggregate.yaml +1291 -0
  111. package/manifests/outputs/pipelines/scenario-3.yaml +126 -0
  112. package/openapi.yaml +424 -0
  113. package/package.json +17 -12
  114. package/with-plugins/Dockerfile +59 -0
  115. package/.env +0 -5
  116. package/coverage/clover.xml +0 -2062
  117. package/coverage/coverage-final.json +0 -58
  118. package/coverage/lcov-report/base.css +0 -224
  119. package/coverage/lcov-report/block-navigation.js +0 -87
  120. package/coverage/lcov-report/builtins/coefficient/index.html +0 -116
  121. package/coverage/lcov-report/builtins/coefficient/index.ts.html +0 -298
  122. package/coverage/lcov-report/builtins/csv-lookup/index.html +0 -116
  123. package/coverage/lcov-report/builtins/csv-lookup/index.ts.html +0 -826
  124. package/coverage/lcov-report/builtins/divide/index.html +0 -116
  125. package/coverage/lcov-report/builtins/divide/index.ts.html +0 -358
  126. package/coverage/lcov-report/builtins/exponent/index.html +0 -116
  127. package/coverage/lcov-report/builtins/exponent/index.ts.html +0 -361
  128. package/coverage/lcov-report/builtins/export-csv-raw.ts.html +0 -553
  129. package/coverage/lcov-report/builtins/export-csv.ts.html +0 -436
  130. package/coverage/lcov-report/builtins/export-log.ts.html +0 -148
  131. package/coverage/lcov-report/builtins/export-yaml.ts.html +0 -193
  132. package/coverage/lcov-report/builtins/group-by.ts.html +0 -370
  133. package/coverage/lcov-report/builtins/index.html +0 -206
  134. package/coverage/lcov-report/builtins/index.ts.html +0 -130
  135. package/coverage/lcov-report/builtins/interpolation/index.html +0 -116
  136. package/coverage/lcov-report/builtins/interpolation/index.ts.html +0 -676
  137. package/coverage/lcov-report/builtins/interpolation/types.ts.html +0 -100
  138. package/coverage/lcov-report/builtins/mock-observations/helpers/common-generator.ts.html +0 -184
  139. package/coverage/lcov-report/builtins/mock-observations/helpers/index.html +0 -131
  140. package/coverage/lcov-report/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -289
  141. package/coverage/lcov-report/builtins/mock-observations/index.html +0 -116
  142. package/coverage/lcov-report/builtins/mock-observations/index.ts.html +0 -619
  143. package/coverage/lcov-report/builtins/multiply/index.html +0 -116
  144. package/coverage/lcov-report/builtins/multiply/index.ts.html +0 -343
  145. package/coverage/lcov-report/builtins/regex/index.html +0 -116
  146. package/coverage/lcov-report/builtins/regex/index.ts.html +0 -373
  147. package/coverage/lcov-report/builtins/sci/config.ts.html +0 -205
  148. package/coverage/lcov-report/builtins/sci/index.html +0 -116
  149. package/coverage/lcov-report/builtins/sci/index.ts.html +0 -325
  150. package/coverage/lcov-report/builtins/sci-embodied/index.html +0 -116
  151. package/coverage/lcov-report/builtins/sci-embodied/index.ts.html +0 -478
  152. package/coverage/lcov-report/builtins/shell/index.html +0 -116
  153. package/coverage/lcov-report/builtins/shell/index.ts.html +0 -280
  154. package/coverage/lcov-report/builtins/subtract/index.html +0 -116
  155. package/coverage/lcov-report/builtins/subtract/index.ts.html +0 -379
  156. package/coverage/lcov-report/builtins/sum/index.html +0 -116
  157. package/coverage/lcov-report/builtins/sum/index.ts.html +0 -334
  158. package/coverage/lcov-report/builtins/time-sync.ts.html +0 -1462
  159. package/coverage/lcov-report/common/config/index.html +0 -131
  160. package/coverage/lcov-report/common/config/index.ts.html +0 -88
  161. package/coverage/lcov-report/common/config/strings.ts.html +0 -121
  162. package/coverage/lcov-report/common/lib/index.html +0 -116
  163. package/coverage/lcov-report/common/lib/load.ts.html +0 -139
  164. package/coverage/lcov-report/common/util/debug-logger.ts.html +0 -514
  165. package/coverage/lcov-report/common/util/fs.ts.html +0 -289
  166. package/coverage/lcov-report/common/util/helpers.ts.html +0 -355
  167. package/coverage/lcov-report/common/util/index.html +0 -191
  168. package/coverage/lcov-report/common/util/logger.ts.html +0 -151
  169. package/coverage/lcov-report/common/util/validations.ts.html +0 -628
  170. package/coverage/lcov-report/common/util/yaml.ts.html +0 -226
  171. package/coverage/lcov-report/config/config.ts.html +0 -463
  172. package/coverage/lcov-report/config/index.html +0 -161
  173. package/coverage/lcov-report/config/index.ts.html +0 -94
  174. package/coverage/lcov-report/config/params.ts.html +0 -697
  175. package/coverage/lcov-report/config/strings.ts.html +0 -490
  176. package/coverage/lcov-report/favicon.png +0 -0
  177. package/coverage/lcov-report/if-check/config/config.ts.html +0 -184
  178. package/coverage/lcov-report/if-check/config/index.html +0 -146
  179. package/coverage/lcov-report/if-check/config/index.ts.html +0 -91
  180. package/coverage/lcov-report/if-check/config/strings.ts.html +0 -142
  181. package/coverage/lcov-report/if-check/util/args.ts.html +0 -310
  182. package/coverage/lcov-report/if-check/util/helpers.ts.html +0 -136
  183. package/coverage/lcov-report/if-check/util/index.html +0 -146
  184. package/coverage/lcov-report/if-check/util/npm.ts.html +0 -376
  185. package/coverage/lcov-report/if-csv/util/args.ts.html +0 -256
  186. package/coverage/lcov-report/if-csv/util/helpers.ts.html +0 -346
  187. package/coverage/lcov-report/if-csv/util/index.html +0 -131
  188. package/coverage/lcov-report/if-diff/config/config.ts.html +0 -184
  189. package/coverage/lcov-report/if-diff/config/index.html +0 -146
  190. package/coverage/lcov-report/if-diff/config/index.ts.html +0 -91
  191. package/coverage/lcov-report/if-diff/config/strings.ts.html +0 -100
  192. package/coverage/lcov-report/if-diff/lib/compare.ts.html +0 -286
  193. package/coverage/lcov-report/if-diff/lib/index.html +0 -131
  194. package/coverage/lcov-report/if-diff/lib/load.ts.html +0 -199
  195. package/coverage/lcov-report/if-diff/util/args.ts.html +0 -274
  196. package/coverage/lcov-report/if-diff/util/helpers.ts.html +0 -337
  197. package/coverage/lcov-report/if-diff/util/index.html +0 -131
  198. package/coverage/lcov-report/if-env/config/config.ts.html +0 -211
  199. package/coverage/lcov-report/if-env/config/index.html +0 -146
  200. package/coverage/lcov-report/if-env/config/index.ts.html +0 -91
  201. package/coverage/lcov-report/if-env/config/strings.ts.html +0 -109
  202. package/coverage/lcov-report/if-env/util/args.ts.html +0 -256
  203. package/coverage/lcov-report/if-env/util/index.html +0 -131
  204. package/coverage/lcov-report/if-env/util/npm.ts.html +0 -526
  205. package/coverage/lcov-report/if-merge/util/args.ts.html +0 -301
  206. package/coverage/lcov-report/if-merge/util/helpers.ts.html +0 -313
  207. package/coverage/lcov-report/if-merge/util/index.html +0 -131
  208. package/coverage/lcov-report/if-run/builtins/coefficient/index.html +0 -116
  209. package/coverage/lcov-report/if-run/builtins/coefficient/index.ts.html +0 -286
  210. package/coverage/lcov-report/if-run/builtins/copy-param/index.html +0 -116
  211. package/coverage/lcov-report/if-run/builtins/copy-param/index.ts.html +0 -301
  212. package/coverage/lcov-report/if-run/builtins/csv-import/index.html +0 -116
  213. package/coverage/lcov-report/if-run/builtins/csv-import/index.ts.html +0 -364
  214. package/coverage/lcov-report/if-run/builtins/csv-lookup/index.html +0 -116
  215. package/coverage/lcov-report/if-run/builtins/csv-lookup/index.ts.html +0 -478
  216. package/coverage/lcov-report/if-run/builtins/divide/index.html +0 -116
  217. package/coverage/lcov-report/if-run/builtins/divide/index.ts.html +0 -346
  218. package/coverage/lcov-report/if-run/builtins/exponent/index.html +0 -116
  219. package/coverage/lcov-report/if-run/builtins/exponent/index.ts.html +0 -319
  220. package/coverage/lcov-report/if-run/builtins/export-csv-raw.ts.html +0 -553
  221. package/coverage/lcov-report/if-run/builtins/export-csv.ts.html +0 -436
  222. package/coverage/lcov-report/if-run/builtins/export-log.ts.html +0 -148
  223. package/coverage/lcov-report/if-run/builtins/export-yaml.ts.html +0 -193
  224. package/coverage/lcov-report/if-run/builtins/group-by.ts.html +0 -370
  225. package/coverage/lcov-report/if-run/builtins/index.html +0 -146
  226. package/coverage/lcov-report/if-run/builtins/index.ts.html +0 -136
  227. package/coverage/lcov-report/if-run/builtins/interpolation/index.html +0 -116
  228. package/coverage/lcov-report/if-run/builtins/interpolation/index.ts.html +0 -643
  229. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/common-generator.ts.html +0 -184
  230. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/index.html +0 -131
  231. package/coverage/lcov-report/if-run/builtins/mock-observations/helpers/rand-int-generator.ts.html +0 -289
  232. package/coverage/lcov-report/if-run/builtins/mock-observations/index.html +0 -116
  233. package/coverage/lcov-report/if-run/builtins/mock-observations/index.ts.html +0 -607
  234. package/coverage/lcov-report/if-run/builtins/multiply/index.html +0 -116
  235. package/coverage/lcov-report/if-run/builtins/multiply/index.ts.html +0 -289
  236. package/coverage/lcov-report/if-run/builtins/regex/index.html +0 -116
  237. package/coverage/lcov-report/if-run/builtins/regex/index.ts.html +0 -298
  238. package/coverage/lcov-report/if-run/builtins/sci/index.html +0 -116
  239. package/coverage/lcov-report/if-run/builtins/sci/index.ts.html +0 -418
  240. package/coverage/lcov-report/if-run/builtins/sci-embodied/index.html +0 -116
  241. package/coverage/lcov-report/if-run/builtins/sci-embodied/index.ts.html +0 -664
  242. package/coverage/lcov-report/if-run/builtins/shell/index.html +0 -116
  243. package/coverage/lcov-report/if-run/builtins/shell/index.ts.html +0 -256
  244. package/coverage/lcov-report/if-run/builtins/subtract/index.html +0 -116
  245. package/coverage/lcov-report/if-run/builtins/subtract/index.ts.html +0 -298
  246. package/coverage/lcov-report/if-run/builtins/sum/index.html +0 -116
  247. package/coverage/lcov-report/if-run/builtins/sum/index.ts.html +0 -238
  248. package/coverage/lcov-report/if-run/builtins/time-converter/config.ts.html +0 -205
  249. package/coverage/lcov-report/if-run/builtins/time-converter/index.html +0 -131
  250. package/coverage/lcov-report/if-run/builtins/time-converter/index.ts.html +0 -328
  251. package/coverage/lcov-report/if-run/builtins/time-sync/index.html +0 -116
  252. package/coverage/lcov-report/if-run/builtins/time-sync/index.ts.html +0 -1804
  253. package/coverage/lcov-report/if-run/builtins/time-sync.ts.html +0 -1462
  254. package/coverage/lcov-report/if-run/builtins/util/csv-helpers.ts.html +0 -376
  255. package/coverage/lcov-report/if-run/builtins/util/index.html +0 -116
  256. package/coverage/lcov-report/if-run/config/config.ts.html +0 -271
  257. package/coverage/lcov-report/if-run/config/index.html +0 -161
  258. package/coverage/lcov-report/if-run/config/index.ts.html +0 -94
  259. package/coverage/lcov-report/if-run/config/params.ts.html +0 -679
  260. package/coverage/lcov-report/if-run/config/strings.ts.html +0 -460
  261. package/coverage/lcov-report/if-run/lib/aggregate.ts.html +0 -577
  262. package/coverage/lcov-report/if-run/lib/compute.ts.html +0 -733
  263. package/coverage/lcov-report/if-run/lib/environment.ts.html +0 -373
  264. package/coverage/lcov-report/if-run/lib/exhaust.ts.html +0 -193
  265. package/coverage/lcov-report/if-run/lib/explain.ts.html +0 -484
  266. package/coverage/lcov-report/if-run/lib/index.html +0 -206
  267. package/coverage/lcov-report/if-run/lib/initialize.ts.html +0 -490
  268. package/coverage/lcov-report/if-run/lib/parameterize.ts.html +0 -322
  269. package/coverage/lcov-report/if-run/lib/regroup.ts.html +0 -349
  270. package/coverage/lcov-report/if-run/lib/time-sync.ts.html +0 -1510
  271. package/coverage/lcov-report/if-run/types/aggregation.ts.html +0 -94
  272. package/coverage/lcov-report/if-run/types/index.html +0 -146
  273. package/coverage/lcov-report/if-run/types/interface.ts.html +0 -112
  274. package/coverage/lcov-report/if-run/types/parameters.ts.html +0 -106
  275. package/coverage/lcov-report/if-run/util/aggregation-helper.ts.html +0 -277
  276. package/coverage/lcov-report/if-run/util/args.ts.html +0 -325
  277. package/coverage/lcov-report/if-run/util/helpers.ts.html +0 -208
  278. package/coverage/lcov-report/if-run/util/index.html +0 -191
  279. package/coverage/lcov-report/if-run/util/json.ts.html +0 -115
  280. package/coverage/lcov-report/if-run/util/log-memoize.ts.html +0 -145
  281. package/coverage/lcov-report/if-run/util/os-checker.ts.html +0 -421
  282. package/coverage/lcov-report/if-run/util/plugin-storage.ts.html +0 -202
  283. package/coverage/lcov-report/index.html +0 -551
  284. package/coverage/lcov-report/lib/aggregate.ts.html +0 -358
  285. package/coverage/lcov-report/lib/compare.ts.html +0 -286
  286. package/coverage/lcov-report/lib/compute.ts.html +0 -436
  287. package/coverage/lcov-report/lib/environment.ts.html +0 -376
  288. package/coverage/lcov-report/lib/exhaust.ts.html +0 -289
  289. package/coverage/lcov-report/lib/index.html +0 -221
  290. package/coverage/lcov-report/lib/initialize.ts.html +0 -430
  291. package/coverage/lcov-report/lib/load.ts.html +0 -268
  292. package/coverage/lcov-report/lib/parameterize.ts.html +0 -316
  293. package/coverage/lcov-report/prettify.css +0 -1
  294. package/coverage/lcov-report/prettify.js +0 -2
  295. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  296. package/coverage/lcov-report/sorter.js +0 -196
  297. package/coverage/lcov-report/types/aggregation.ts.html +0 -94
  298. package/coverage/lcov-report/types/index.html +0 -146
  299. package/coverage/lcov-report/types/interface.ts.html +0 -112
  300. package/coverage/lcov-report/types/parameters.ts.html +0 -106
  301. package/coverage/lcov-report/util/aggregation-helper.ts.html +0 -289
  302. package/coverage/lcov-report/util/args.ts.html +0 -649
  303. package/coverage/lcov-report/util/debug-logger.ts.html +0 -481
  304. package/coverage/lcov-report/util/errors.ts.html +0 -232
  305. package/coverage/lcov-report/util/fs.ts.html +0 -124
  306. package/coverage/lcov-report/util/helpers.ts.html +0 -895
  307. package/coverage/lcov-report/util/index.html +0 -296
  308. package/coverage/lcov-report/util/json.ts.html +0 -115
  309. package/coverage/lcov-report/util/log-memoize.ts.html +0 -145
  310. package/coverage/lcov-report/util/logger.ts.html +0 -151
  311. package/coverage/lcov-report/util/npm.ts.html +0 -499
  312. package/coverage/lcov-report/util/os-checker.ts.html +0 -421
  313. package/coverage/lcov-report/util/plugin-storage.ts.html +0 -202
  314. package/coverage/lcov-report/util/validations.ts.html +0 -544
  315. package/coverage/lcov-report/util/yaml.ts.html +0 -193
  316. package/coverage/lcov.info +0 -3548
  317. package/manifests/outputs/builtins/interpolation/interpolation.yaml +0 -81
  318. package/manifests/outputs/features/failure-invalid-regroup.yaml +0 -87
  319. package/manifests/outputs/features/failure-missing-cloud-instance-type.yaml +0 -86
@@ -0,0 +1,32 @@
1
+ {{- if .Values.autoscaling.enabled }}
2
+ apiVersion: autoscaling/v2
3
+ kind: HorizontalPodAutoscaler
4
+ metadata:
5
+ name: {{ include "if.fullname" . }}
6
+ labels:
7
+ {{- include "if.labels" . | nindent 4 }}
8
+ spec:
9
+ scaleTargetRef:
10
+ apiVersion: apps/v1
11
+ kind: Deployment
12
+ name: {{ include "if.fullname" . }}
13
+ minReplicas: {{ .Values.autoscaling.minReplicas }}
14
+ maxReplicas: {{ .Values.autoscaling.maxReplicas }}
15
+ metrics:
16
+ {{- with .Values.autoscaling.targetCPUUtilizationPercentage }}
17
+ - type: Resource
18
+ resource:
19
+ name: cpu
20
+ target:
21
+ type: Utilization
22
+ averageUtilization: {{ . }}
23
+ {{- end }}
24
+ {{- with .Values.autoscaling.targetMemoryUtilizationPercentage }}
25
+ - type: Resource
26
+ resource:
27
+ name: memory
28
+ target:
29
+ type: Utilization
30
+ averageUtilization: {{ . }}
31
+ {{- end }}
32
+ {{- end }}
@@ -0,0 +1,43 @@
1
+ {{- if .Values.ingress.enabled -}}
2
+ apiVersion: networking.k8s.io/v1
3
+ kind: Ingress
4
+ metadata:
5
+ name: {{ include "if.fullname" . }}
6
+ labels:
7
+ {{- include "if.labels" . | nindent 4 }}
8
+ {{- with .Values.ingress.annotations }}
9
+ annotations:
10
+ {{- toYaml . | nindent 4 }}
11
+ {{- end }}
12
+ spec:
13
+ {{- with .Values.ingress.className }}
14
+ ingressClassName: {{ . }}
15
+ {{- end }}
16
+ {{- if .Values.ingress.tls }}
17
+ tls:
18
+ {{- range .Values.ingress.tls }}
19
+ - hosts:
20
+ {{- range .hosts }}
21
+ - {{ . | quote }}
22
+ {{- end }}
23
+ secretName: {{ .secretName }}
24
+ {{- end }}
25
+ {{- end }}
26
+ rules:
27
+ {{- range .Values.ingress.hosts }}
28
+ - host: {{ .host | quote }}
29
+ http:
30
+ paths:
31
+ {{- range .paths }}
32
+ - path: {{ .path }}
33
+ {{- with .pathType }}
34
+ pathType: {{ . }}
35
+ {{- end }}
36
+ backend:
37
+ service:
38
+ name: {{ include "if.fullname" $ }}
39
+ port:
40
+ number: {{ $.Values.service.port }}
41
+ {{- end }}
42
+ {{- end }}
43
+ {{- end }}
@@ -0,0 +1,11 @@
1
+ {{- if .Values.npmrc -}}
2
+ apiVersion: v1
3
+ kind: Secret
4
+ metadata:
5
+ name: npmrc
6
+ labels:
7
+ {{- include "if.labels" . | nindent 4 }}
8
+ stringData:
9
+ .npmrc: |
10
+ {{- .Values.npmrc | nindent 4 }}
11
+ {{- end }}
@@ -0,0 +1,24 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: {{ include "if.fullname" . }}
5
+ labels:
6
+ {{- include "if.labels" . | nindent 4 }}
7
+ {{- with .Values.service.annotations }}
8
+ annotations:
9
+ {{- toYaml . | nindent 4 }}
10
+ {{- end }}
11
+ spec:
12
+ type: {{ .Values.service.type }}
13
+ ports:
14
+ - port: {{ .Values.service.port }}
15
+ targetPort: http
16
+ name: http
17
+ {{- with .Values.service.nodePort }}
18
+ nodePort: {{ . }}
19
+ {{- end }}
20
+ selector:
21
+ {{- include "if.selectorLabels" . | nindent 4 }}
22
+ {{- with .Values.service.loadBalancerClass }}
23
+ loadBalancerClass: {{ . }}
24
+ {{- end }}
@@ -0,0 +1,13 @@
1
+ {{- if .Values.serviceAccount.create -}}
2
+ apiVersion: v1
3
+ kind: ServiceAccount
4
+ metadata:
5
+ name: {{ include "if.serviceAccountName" . }}
6
+ labels:
7
+ {{- include "if.labels" . | nindent 4 }}
8
+ {{- with .Values.serviceAccount.annotations }}
9
+ annotations:
10
+ {{- toYaml . | nindent 4 }}
11
+ {{- end }}
12
+ automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
13
+ {{- end }}
@@ -0,0 +1,15 @@
1
+ apiVersion: v1
2
+ kind: Pod
3
+ metadata:
4
+ name: "{{ include "if.fullname" . }}-test-connection"
5
+ labels:
6
+ {{- include "if.labels" . | nindent 4 }}
7
+ annotations:
8
+ "helm.sh/hook": test
9
+ spec:
10
+ containers:
11
+ - name: wget
12
+ image: busybox
13
+ command: ['wget']
14
+ args: ['{{ include "if.fullname" . }}:{{ .Values.service.port }}']
15
+ restartPolicy: Never
@@ -0,0 +1,175 @@
1
+ # This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
2
+ replicaCount: 1
3
+
4
+ # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/
5
+ image:
6
+ repository: ghcr.io/green-software-foundation/if
7
+ # This sets the pull policy for images.
8
+ pullPolicy: IfNotPresent
9
+ # Overrides the image tag whose default is the chart appVersion.
10
+ tag: ""
11
+
12
+ # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
13
+ imagePullSecrets: []
14
+ # This is to override the chart name.
15
+ nameOverride: ""
16
+ fullnameOverride: ""
17
+
18
+ # This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/
19
+ serviceAccount:
20
+ # Specifies whether a service account should be created
21
+ create: true
22
+ # Automatically mount a ServiceAccount's API credentials?
23
+ automount: false
24
+ # Annotations to add to the service account
25
+ annotations: {}
26
+ # The name of the service account to use.
27
+ # If not set and create is true, a name is generated using the fullname template
28
+ name: ""
29
+
30
+ # This is for setting Kubernetes Annotations to a Pod.
31
+ # For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
32
+ podAnnotations: {}
33
+ # This is for setting Kubernetes Labels to a Pod.
34
+ # For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
35
+ podLabels: {}
36
+
37
+ podSecurityContext: {}
38
+ # fsGroup: 2000
39
+
40
+ securityContext:
41
+ capabilities:
42
+ drop:
43
+ - ALL
44
+ runAsNonRoot: true
45
+
46
+ # This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/
47
+ service:
48
+ # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
49
+ type: ClusterIP
50
+ # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
51
+ port: 3000
52
+ nodePort: ~
53
+ annotations: {}
54
+ loadBalancerClass: ""
55
+
56
+ # This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/
57
+ ingress:
58
+ enabled: false
59
+ className: ""
60
+ annotations: {}
61
+ # kubernetes.io/ingress.class: nginx
62
+ # kubernetes.io/tls-acme: "true"
63
+ hosts:
64
+ - host: if.local
65
+ paths:
66
+ - path: /v1
67
+ pathType: Prefix
68
+ tls: []
69
+ # - secretName: if-tls
70
+ # hosts:
71
+ # - if.local
72
+
73
+ resources: {}
74
+ # We usually recommend not to specify default resources and to leave this as a conscious
75
+ # choice for the user. This also increases chances charts run on environments with little
76
+ # resources, such as Minikube. If you do want to specify resources, uncomment the following
77
+ # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
78
+ # limits:
79
+ # cpu: 100m
80
+ # memory: 128Mi
81
+ # requests:
82
+ # cpu: 100m
83
+ # memory: 128Mi
84
+
85
+ # This is to setup the liveness, readiness and startup probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
86
+ livenessProbe:
87
+ httpGet:
88
+ path: /health
89
+ port: http
90
+ readinessProbe:
91
+ httpGet:
92
+ path: /health
93
+ port: http
94
+ failureThreshold: 1
95
+ startupProbe:
96
+ httpGet:
97
+ path: /health
98
+ port: http
99
+ failureThreshold: 30
100
+
101
+ # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/
102
+ autoscaling:
103
+ enabled: false
104
+ minReplicas: 1
105
+ maxReplicas: 100
106
+ targetCPUUtilizationPercentage: 80
107
+ # targetMemoryUtilizationPercentage: 80
108
+
109
+ # Additional volumes on the output Deployment definition.
110
+ volumes: []
111
+ # - name: foo
112
+ # secret:
113
+ # secretName: mysecret
114
+ # optional: false
115
+
116
+ # Additional volumeMounts on the output Deployment definition.
117
+ volumeMounts: []
118
+ # - name: foo
119
+ # mountPath: "/etc/foo"
120
+ # readOnly: true
121
+
122
+ nodeSelector: {}
123
+
124
+ tolerations: []
125
+
126
+ affinity: {}
127
+
128
+ # Specify external plugins to be installed at startup as an array.
129
+ # Used as arguments for npm install. For available formats, refer to: https://docs.npmjs.com/cli/v8/commands/npm-install
130
+ additionalPlugins: []
131
+
132
+ # Specify .npmrc content. Required in either of the following cases:
133
+ # - When external plugins or their dependencies are private.
134
+ # - When external plugins or their dependencies are in GitHub Packages.
135
+ npmrc: ""
136
+
137
+ # Specify environment variables.
138
+ env:
139
+ # Specify environment variables to be stored in a Secret.
140
+ secret: {}
141
+ # Specify environment variables to be stored in a ConfigMap.
142
+ configMap: {}
143
+ # Settings for using the contents of an existing Secret as environment variables.
144
+ existingSecret:
145
+ # Name of the existing Secret.
146
+ name: ""
147
+ # Prefix to add to environment variable names.
148
+ prefix: ""
149
+ # Settings for using the contents of an existing ConfigMap as environment variables.
150
+ existingConfigMap:
151
+ # Name of the existing ConfigMap.
152
+ name: ""
153
+ # Prefix to add to environment variable names.
154
+ prefix: ""
155
+
156
+ # Container startup command arguments
157
+ args:
158
+ - if-api
159
+ - --disabledPlugins
160
+ - /app/disabledPlugins.txt
161
+
162
+ # List of plugins to disable. Specify as an array in the form of "pluginPath:methodName".
163
+ # Plugins specified here cannot be used even if they are installed.
164
+ # Default values are builtin:Shell which can execute arbitrary commands, and
165
+ # builtin:CSVImport, builtin:CSVLookup which could potentially read files inside the container.
166
+ disabledPlugins:
167
+ - builtin:Shell
168
+ - builtin:CSVImport
169
+ - builtin:CSVLookup
170
+
171
+ # Suppress warnings in log when using external plugins
172
+ disableExternalPluginWarning: false
173
+
174
+ # Output debug logs
175
+ debug: false
package/jest.config.js CHANGED
@@ -2,6 +2,7 @@
2
2
  module.exports = {
3
3
  preset: 'ts-jest',
4
4
  testEnvironment: 'node',
5
+ testMatch: ['<rootDir>/src/__tests__/**/*.[jt]s'],
5
6
  transform: {
6
7
  '^.+\\.ts?$': [
7
8
  'ts-jest',
@@ -10,6 +11,9 @@ module.exports = {
10
11
  },
11
12
  ],
12
13
  },
13
- modulePathIgnorePatterns: ['./build'],
14
- coveragePathIgnorePatterns: ['src/.*/config/.*', 'src/.*/types/.*'],
14
+ modulePathIgnorePatterns: ['<rootDir>/build/'],
15
+ coveragePathIgnorePatterns: [
16
+ '<rootDir>/src/.*/config/.*',
17
+ '<rootDir>/src/.*/types/.*',
18
+ ],
15
19
  };
@@ -0,0 +1,173 @@
1
+ name: aggregation-error-wrong-metric
2
+ description: a negative test case that fails due to the aggregation feature being passed an incorrect metric
3
+ tags:
4
+ aggregation:
5
+ metrics:
6
+ - "dummy-param"
7
+ type: "both"
8
+ initialize:
9
+ plugins:
10
+ "interpolate":
11
+ method: Interpolation
12
+ path: 'builtin'
13
+ config:
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
+ 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
+ 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
+ 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
+ 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
+ config:
49
+ numerator: cpu-energy-raw
50
+ denominator: vcpu-ratio
51
+ output: cpu-energy-kwh
52
+ "sci-embodied":
53
+ path: "builtin"
54
+ method: SciEmbodied
55
+ "operational-carbon":
56
+ method: Multiply
57
+ path: builtin
58
+ config:
59
+ input-parameters: ["cpu-energy-kwh", "grid/carbon-intensity"]
60
+ output-parameter: "carbon"
61
+ "sci":
62
+ path: "builtin"
63
+ method: Sci
64
+ config:
65
+ functional-unit: "requests"
66
+ "time-sync":
67
+ method: TimeSync
68
+ path: "builtin"
69
+ config:
70
+ start-time: "2023-12-12T00:00:00.000Z"
71
+ end-time: "2023-12-12T00:01:00.000Z"
72
+ interval: 5
73
+ allow-padding: true
74
+ tree:
75
+ children:
76
+ child-1:
77
+ pipeline:
78
+ regroup:
79
+ - cloud/region
80
+ - cloud/instance-type
81
+ compute:
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
+ - time-sync
91
+ - sci
92
+ defaults:
93
+ cpu/thermal-design-power: 100
94
+ grid/carbon-intensity: 800
95
+ device/emissions-embodied: 1533.120 # gCO2eq
96
+ time-reserved: 3600 # 1hr in seconds
97
+ device/expected-lifespan: 94608000 # 3 years in seconds
98
+ vcpus-allocated: 1
99
+ vcpus-total: 8
100
+ inputs:
101
+ - timestamp: "2023-12-12T00:00:00.000Z"
102
+ cloud/instance-type: A1
103
+ cloud/region: uk-west
104
+ duration: 1
105
+ cpu/utilization: 10
106
+ requests: 100
107
+ - timestamp: "2023-12-12T00:00:01.000Z"
108
+ duration: 5
109
+ cpu/utilization: 20
110
+ cloud/instance-type: A1
111
+ cloud/region: uk-west
112
+ requests: 100
113
+ - timestamp: "2023-12-12T00:00:06.000Z"
114
+ duration: 7
115
+ cpu/utilization: 15
116
+ cloud/instance-type: A1
117
+ cloud/region: uk-west
118
+ requests: 100
119
+ - timestamp: "2023-12-12T00:00:13.000Z"
120
+ duration: 30
121
+ cloud/instance-type: A1
122
+ cloud/region: uk-west
123
+ cpu/utilization: 15
124
+ requests: 100
125
+ child-2:
126
+ pipeline:
127
+ regroup:
128
+ - cloud/region
129
+ - cloud/instance-type
130
+ compute:
131
+ - interpolate
132
+ - cpu-factor-to-wattage
133
+ - wattage-times-duration
134
+ - wattage-to-energy-kwh
135
+ - calculate-vcpu-ratio
136
+ - correct-cpu-energy-for-vcpu-ratio
137
+ - sci-embodied
138
+ - operational-carbon
139
+ - time-sync
140
+ - sci
141
+ defaults:
142
+ cpu/thermal-design-power: 100
143
+ grid/carbon-intensity: 800
144
+ device/emissions-embodied: 1533.120 # gCO2eq
145
+ time-reserved: 3600 # 1hr in seconds
146
+ device/expected-lifespan: 94608000 # 3 years in seconds
147
+ vcpus-allocated: 1
148
+ vcpus-total: 8
149
+ inputs:
150
+ - timestamp: "2023-12-12T00:00:00.000Z"
151
+ duration: 1
152
+ cpu/utilization: 30
153
+ cloud/instance-type: A1
154
+ cloud/region: uk-west
155
+ requests: 100
156
+ - timestamp: "2023-12-12T00:00:01.000Z"
157
+ duration: 5
158
+ cpu/utilization: 28
159
+ cloud/instance-type: A1
160
+ cloud/region: uk-west
161
+ requests: 100
162
+ - timestamp: "2023-12-12T00:00:06.000Z"
163
+ duration: 7
164
+ cpu/utilization: 40
165
+ cloud/instance-type: A1
166
+ cloud/region: uk-west
167
+ requests: 100
168
+ - timestamp: "2023-12-12T00:00:13.000Z"
169
+ duration: 30
170
+ cpu/utilization: 33
171
+ cloud/instance-type: A1
172
+ cloud/region: uk-west
173
+ requests: 100
@@ -0,0 +1,25 @@
1
+ name: input-error-missing-duration
2
+ description: a negative test case that fails due to the required `duration` field being omitted from input data
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ "interpolate":
7
+ method: Interpolation
8
+ path: builtin
9
+ 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: 'cpu-factor'
15
+ tree:
16
+ children:
17
+ child-0:
18
+ defaults:
19
+ cpu/thermal-design-power: 100
20
+ pipeline:
21
+ compute:
22
+ - interpolate
23
+ inputs:
24
+ - timestamp: 2023-07-06T00:00
25
+ cpu/utilization: 20
@@ -0,0 +1,33 @@
1
+ name: mock-observation-demo
2
+ description: a manifest demonstrating how to use the mock observations feature
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ mock-observations:
7
+ method: MockObservations
8
+ path: "builtin"
9
+ config:
10
+ timestamp-from: 2023-07-06T00:00
11
+ timestamp-to: 2023-07-06T00:10
12
+ duration: 0
13
+ components:
14
+ - cloud/instance-type: A1
15
+ - cloud/instance-type: B1
16
+ generators:
17
+ common:
18
+ region: uk-west
19
+ common-key: common-val
20
+ randint:
21
+ cpu/utilization:
22
+ min: 1
23
+ max: 99
24
+ memory/utilization:
25
+ min: 1
26
+ max: 99
27
+ tree:
28
+ children:
29
+ child:
30
+ pipeline:
31
+ observe:
32
+ - mock-observations
33
+ inputs:
@@ -0,0 +1,32 @@
1
+ name: pipeline-error-naming-mismatch
2
+ description: a negative test case that fails due to the plugin name in the pipeline not matching the name given in initialize
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ "interpolate":
7
+ method: Interpolation
8
+ path: builtin
9
+ 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: 'cpu-factor'
15
+ tree:
16
+ children:
17
+ child-0:
18
+ defaults:
19
+ cpu/thermal-design-power: 100
20
+ pipeline:
21
+ compute:
22
+ - wrong-name
23
+ inputs:
24
+ - timestamp: 2023-07-06T00:00
25
+ duration: 1
26
+ cpu/utilization: 20
27
+ - timestamp: 2023-07-06T00:01
28
+ duration: 1
29
+ cpu/utilization: 80
30
+ - timestamp: 2023-07-06T00:02
31
+ duration: 1
32
+ cpu/utilization: 20
@@ -0,0 +1,33 @@
1
+ name: pipeline-uninitialized-plugin-error
2
+ description: a negative test case that fails due to an uninitialized plugin being invoked in a pipeline
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ "interpolate":
7
+ method: Interpolation
8
+ path: builtin
9
+ 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: 'cpu-factor'
15
+ tree:
16
+ children:
17
+ child-0:
18
+ defaults:
19
+ cpu/thermal-design-power: 100
20
+ pipeline:
21
+ compute:
22
+ - interpolate
23
+ - multiply
24
+ inputs:
25
+ - timestamp: 2023-07-06T00:00
26
+ duration: 1
27
+ cpu/utilization: 20
28
+ - timestamp: 2023-07-06T00:01
29
+ duration: 1
30
+ cpu/utilization: 80
31
+ - timestamp: 2023-07-06T00:02
32
+ duration: 1
33
+ cpu/utilization: 20