@grnsft/if 0.0.6 → 0.1.1

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 (182) hide show
  1. package/.examples/ompls/azure.yml +205 -0
  2. package/.github/workflows/nodejs-ci.yml +0 -8
  3. package/README.md +48 -9
  4. package/build/index.js +1 -2
  5. package/coverage/clover.xml +132 -1118
  6. package/coverage/coverage-final.json +9 -26
  7. package/coverage/lcov-report/config/config.ts.html +3 -66
  8. package/coverage/lcov-report/config/index.html +15 -15
  9. package/coverage/lcov-report/config/index.ts.html +3 -3
  10. package/coverage/lcov-report/config/strings.ts.html +82 -19
  11. package/coverage/lcov-report/index.html +36 -231
  12. package/coverage/lcov-report/lib/index.html +43 -13
  13. package/coverage/lcov-report/lib/models-universe.ts.html +433 -0
  14. package/coverage/lcov-report/lib/observatory.ts.html +187 -0
  15. package/coverage/lcov-report/lib/supercomputer.ts.html +553 -0
  16. package/coverage/lcov-report/util/args.ts.html +23 -8
  17. package/coverage/lcov-report/util/errors.ts.html +157 -0
  18. package/coverage/lcov-report/util/index.html +20 -50
  19. package/coverage/lcov-report/util/yaml.ts.html +17 -11
  20. package/coverage/lcov.info +225 -2004
  21. package/examples/impls/test/azure.yml +8 -8
  22. package/examples/impls/test/ccf.yml +5 -3
  23. package/examples/impls/test/if-demo.yml +19 -9
  24. package/examples/impls/test/metadata.yml +3 -2
  25. package/examples/impls/test/nesting.yml +10 -13
  26. package/examples/impls/test/sci-e.yml +1 -1
  27. package/examples/impls/test/sci-m.yml +2 -2
  28. package/examples/impls/test/sci-o.yml +2 -4
  29. package/examples/impls/test/sci.yml +38 -15
  30. package/examples/impls/test/shell.yml +2 -1
  31. package/examples/impls/{tdp-finder-test.yml → test/tdp-finder.yml} +8 -8
  32. package/examples/ompls/ccf.yml +3 -1
  33. package/examples/ompls/if-demo.yml +46 -22
  34. package/package.json +15 -7
  35. package/tsconfig.build.json +7 -0
  36. package/tsconfig.build.tsbuildinfo +1 -0
  37. package/build/__mocks__/azure/index.d.ts +0 -11
  38. package/build/__mocks__/azure/index.js +0 -132
  39. package/build/__mocks__/boavizta/countries.json +0 -138
  40. package/build/__mocks__/boavizta/instance_types.json +0 -625
  41. package/build/__mocks__/boavizta/providers.json +0 -1
  42. package/build/__mocks__/fs/index.d.ts +0 -3
  43. package/build/__mocks__/fs/index.js +0 -56
  44. package/build/__mocks__/model-universe/index.d.ts +0 -31
  45. package/build/__mocks__/model-universe/index.js +0 -64
  46. package/build/__mocks__/watt-time/data.json +0 -119
  47. package/build/__tests__/integration/ompl/index.test.d.ts +0 -1
  48. package/build/__tests__/integration/ompl/index.test.js +0 -61
  49. package/build/__tests__/unit/lib/azure-importer/index.test.d.ts +0 -1
  50. package/build/__tests__/unit/lib/azure-importer/index.test.js +0 -152
  51. package/build/__tests__/unit/lib/boavizta/index.test.d.ts +0 -1
  52. package/build/__tests__/unit/lib/boavizta/index.test.js +0 -579
  53. package/build/__tests__/unit/lib/case-studies/aveva.test.d.ts +0 -1
  54. package/build/__tests__/unit/lib/case-studies/aveva.test.js +0 -36
  55. package/build/__tests__/unit/lib/case-studies/emem.test.d.ts +0 -1
  56. package/build/__tests__/unit/lib/case-studies/emem.test.js +0 -108
  57. package/build/__tests__/unit/lib/case-studies/eshoppen.test.d.ts +0 -1
  58. package/build/__tests__/unit/lib/case-studies/eshoppen.test.js +0 -53
  59. package/build/__tests__/unit/lib/case-studies/sci-accenture.test.d.ts +0 -1
  60. package/build/__tests__/unit/lib/case-studies/sci-accenture.test.js +0 -23
  61. package/build/__tests__/unit/lib/ccf/index.test.d.ts +0 -1
  62. package/build/__tests__/unit/lib/ccf/index.test.js +0 -223
  63. package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.d.ts +0 -1
  64. package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.js +0 -73
  65. package/build/__tests__/unit/lib/models-universe.test.d.ts +0 -1
  66. package/build/__tests__/unit/lib/models-universe.test.js +0 -193
  67. package/build/__tests__/unit/lib/observatory.test.d.ts +0 -1
  68. package/build/__tests__/unit/lib/observatory.test.js +0 -99
  69. package/build/__tests__/unit/lib/sci/index.test.d.ts +0 -1
  70. package/build/__tests__/unit/lib/sci/index.test.js +0 -106
  71. package/build/__tests__/unit/lib/sci-e/index.test.d.ts +0 -1
  72. package/build/__tests__/unit/lib/sci-e/index.test.js +0 -30
  73. package/build/__tests__/unit/lib/sci-m/index.test.d.ts +0 -1
  74. package/build/__tests__/unit/lib/sci-m/index.test.js +0 -58
  75. package/build/__tests__/unit/lib/sci-o/index.test.d.ts +0 -1
  76. package/build/__tests__/unit/lib/sci-o/index.test.js +0 -42
  77. package/build/__tests__/unit/lib/shell-imp/index.test.d.ts +0 -1
  78. package/build/__tests__/unit/lib/shell-imp/index.test.js +0 -21
  79. package/build/__tests__/unit/lib/supercomputer.test.d.ts +0 -1
  80. package/build/__tests__/unit/lib/supercomputer.test.js +0 -231
  81. package/build/__tests__/unit/lib/tdp-finder/index.test.d.ts +0 -1
  82. package/build/__tests__/unit/lib/tdp-finder/index.test.js +0 -62
  83. package/build/__tests__/unit/lib/teads-aws/index.test.d.ts +0 -1
  84. package/build/__tests__/unit/lib/teads-aws/index.test.js +0 -170
  85. package/build/__tests__/unit/lib/teads-curve/index.test.d.ts +0 -1
  86. package/build/__tests__/unit/lib/teads-curve/index.test.js +0 -146
  87. package/build/__tests__/unit/lib/watt-time/index.test.d.ts +0 -1
  88. package/build/__tests__/unit/lib/watt-time/index.test.js +0 -106
  89. package/build/__tests__/unit/util/args.test.d.ts +0 -1
  90. package/build/__tests__/unit/util/args.test.js +0 -92
  91. package/build/__tests__/unit/util/models-universe.test.d.ts +0 -1
  92. package/build/__tests__/unit/util/models-universe.test.js +0 -193
  93. package/build/__tests__/unit/util/observatory.test.d.ts +0 -1
  94. package/build/__tests__/unit/util/observatory.test.js +0 -99
  95. package/build/__tests__/unit/util/supercomputer.test.d.ts +0 -1
  96. package/build/__tests__/unit/util/supercomputer.test.js +0 -231
  97. package/build/__tests__/unit/util/yaml.test.d.ts +0 -1
  98. package/build/__tests__/unit/util/yaml.test.js +0 -59
  99. package/build/config/config.d.ts +0 -9
  100. package/build/config/config.js +0 -51
  101. package/build/lib/azure-importer/index.d.ts +0 -55
  102. package/build/lib/azure-importer/index.js +0 -314
  103. package/build/lib/boavizta/index.d.ts +0 -53
  104. package/build/lib/boavizta/index.js +0 -254
  105. package/build/lib/case-studies/aveva-model.d.ts +0 -29
  106. package/build/lib/case-studies/aveva-model.js +0 -53
  107. package/build/lib/case-studies/emem-model.d.ts +0 -42
  108. package/build/lib/case-studies/emem-model.js +0 -93
  109. package/build/lib/case-studies/eshoppen-model.d.ts +0 -24
  110. package/build/lib/case-studies/eshoppen-model.js +0 -123
  111. package/build/lib/case-studies/index.d.ts +0 -4
  112. package/build/lib/case-studies/index.js +0 -21
  113. package/build/lib/case-studies/sci-accenture-model.d.ts +0 -10
  114. package/build/lib/case-studies/sci-accenture-model.js +0 -37
  115. package/build/lib/ccf/aws-embodied.json +0 -5591
  116. package/build/lib/ccf/aws-instances.json +0 -21116
  117. package/build/lib/ccf/aws-use.json +0 -79
  118. package/build/lib/ccf/azure-embodied.json +0 -6547
  119. package/build/lib/ccf/azure-instances.json +0 -8332
  120. package/build/lib/ccf/azure-use.json +0 -58
  121. package/build/lib/ccf/gcp-embodied.json +0 -3049
  122. package/build/lib/ccf/gcp-instances.json +0 -3880
  123. package/build/lib/ccf/gcp-use.json +0 -58
  124. package/build/lib/ccf/index.d.ts +0 -63
  125. package/build/lib/ccf/index.js +0 -338
  126. package/build/lib/cloud-instance-metadata/aws-instances.json +0 -1
  127. package/build/lib/cloud-instance-metadata/azure-instances.json +0 -1
  128. package/build/lib/cloud-instance-metadata/index.d.ts +0 -15
  129. package/build/lib/cloud-instance-metadata/index.js +0 -104
  130. package/build/lib/index.d.ts +0 -14
  131. package/build/lib/index.js +0 -32
  132. package/build/lib/interfaces/ccf.d.ts +0 -19
  133. package/build/lib/interfaces/ccf.js +0 -3
  134. package/build/lib/interfaces/index.d.ts +0 -7
  135. package/build/lib/interfaces/index.js +0 -18
  136. package/build/lib/observatory.d.ts +0 -20
  137. package/build/lib/observatory.js +0 -31
  138. package/build/lib/sci/index.d.ts +0 -13
  139. package/build/lib/sci/index.js +0 -131
  140. package/build/lib/sci-e/index.d.ts +0 -38
  141. package/build/lib/sci-e/index.js +0 -85
  142. package/build/lib/sci-m/index.d.ts +0 -10
  143. package/build/lib/sci-m/index.js +0 -124
  144. package/build/lib/sci-o/index.d.ts +0 -17
  145. package/build/lib/sci-o/index.js +0 -52
  146. package/build/lib/shell-imp/index.d.ts +0 -32
  147. package/build/lib/shell-imp/index.js +0 -82
  148. package/build/lib/tdp-finder/index.d.ts +0 -19
  149. package/build/lib/tdp-finder/index.js +0 -98
  150. package/build/lib/teads-aws/aws-embodied.json +0 -1
  151. package/build/lib/teads-aws/aws-instances.json +0 -1
  152. package/build/lib/teads-aws/index.d.ts +0 -58
  153. package/build/lib/teads-aws/index.js +0 -208
  154. package/build/lib/teads-curve/index.d.ts +0 -52
  155. package/build/lib/teads-curve/index.js +0 -158
  156. package/build/lib/watt-time/index.d.ts +0 -18
  157. package/build/lib/watt-time/index.js +0 -204
  158. package/build/types/model-interface.d.ts +0 -16
  159. package/build/types/model-interface.js +0 -3
  160. package/build/types/process-args.d.ts +0 -7
  161. package/build/types/process-args.js +0 -3
  162. package/build/types/supercomputer.d.ts +0 -4
  163. package/build/types/supercomputer.js +0 -3
  164. package/build/util/args.js +0 -48
  165. package/build/util/errors.d.ts +0 -6
  166. package/build/util/errors.js +0 -22
  167. package/build/util/helpers.js +0 -18
  168. package/build/util/models-universe.d.ts +0 -28
  169. package/build/util/models-universe.js +0 -95
  170. package/build/util/observatory.d.ts +0 -20
  171. package/build/util/observatory.js +0 -31
  172. package/build/util/supercomputer.d.ts +0 -30
  173. package/build/util/supercomputer.js +0 -109
  174. package/docs/implementations/tdp-finder.md +0 -36
  175. package/examples/impls/test/complex-pipeline.yml +0 -67
  176. package/examples/impls/test/toto.yaml +0 -22
  177. package/src/__mocks__/boavizta/countries.json +0 -138
  178. package/src/__mocks__/boavizta/instance_types.json +0 -625
  179. package/src/__mocks__/boavizta/providers.json +0 -1
  180. package/src/__mocks__/watt-time/data.json +0 -119
  181. package/tsconfig.tsbuildinfo +0 -1
  182. package/yarn-error.log +0 -5854
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Supercomputer = void 0;
4
- const observatory_1 = require("./observatory");
5
- const errors_1 = require("./errors");
6
- const config_1 = require("../config");
7
- const { ImplValidationError } = errors_1.ERRORS;
8
- const { STRUCTURE_MALFORMED } = config_1.STRINGS;
9
- /**
10
- * Computer for `impl` documents.
11
- */
12
- class Supercomputer {
13
- constructor(impl, modelsHandbook) {
14
- this.olderChild = { name: '', info: {} };
15
- this.impl = impl;
16
- this.modelsHandbook = modelsHandbook;
17
- }
18
- /**
19
- * Flattens config entries.
20
- */
21
- flattenConfigValues(config) {
22
- if (!config) {
23
- return {};
24
- }
25
- const configModelNames = Object.keys(config);
26
- const values = configModelNames.reduce((acc, name) => {
27
- acc = {
28
- ...acc,
29
- ...config[name],
30
- };
31
- return acc;
32
- }, {});
33
- return values;
34
- }
35
- /**
36
- * Adds config entries to each obsercation object passed.
37
- */
38
- enrichInputs(inputs, config, nestedConfig) {
39
- const configValues = this.flattenConfigValues(config);
40
- const nestedConfigValues = this.flattenConfigValues(nestedConfig);
41
- return inputs.map((input) => ({
42
- ...input,
43
- ...configValues,
44
- ...nestedConfigValues,
45
- }));
46
- }
47
- /**
48
- * If child is top level, then initializes `this.olderChild`.
49
- * If `children` object contains `children` property, it means inputs are nested (calls compute again).
50
- * Otherwise enriches inputs, passes them to Observatory.
51
- * For each model from pipeline Observatory gathers inputs. Then results are stored.
52
- */
53
- async calculateOutputsForChild(childrenObject, params) {
54
- const { childName, areChildrenNested } = params;
55
- if (!areChildrenNested) {
56
- this.olderChild = {
57
- name: childName,
58
- info: this.impl.graph.children[childName],
59
- };
60
- }
61
- const { pipeline, inputs, config } = this.olderChild.info;
62
- if ('children' in childrenObject[childName]) {
63
- return this.compute(childrenObject[childName].children);
64
- }
65
- if (!('inputs' in childrenObject[childName])) {
66
- throw new ImplValidationError(STRUCTURE_MALFORMED(childName));
67
- }
68
- const specificInputs = areChildrenNested
69
- ? childrenObject[childName].inputs
70
- : inputs;
71
- const childrenConfig = childrenObject[childName].config || {};
72
- const enrichedInputs = this.enrichInputs(specificInputs, config, childrenConfig);
73
- const observatory = new observatory_1.Observatory(enrichedInputs);
74
- for (const modelName of pipeline) {
75
- const params = config && config[modelName];
76
- const modelInstance = await this.modelsHandbook.getInitializedModel(modelName, params);
77
- await observatory.doInvestigationsWith(modelInstance);
78
- }
79
- const outputs = observatory.getOutputs();
80
- if (areChildrenNested) {
81
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
82
- // @ts-ignore
83
- this.impl.graph.children[this.olderChild.name].children[childName].outputs = observatory.getOutputs();
84
- return;
85
- }
86
- this.impl.graph.children[this.olderChild.name].outputs = outputs;
87
- return;
88
- }
89
- /**
90
- * Checks if object is top level children or nested, then runs through all children and calculates outputs.
91
- */
92
- async compute(childrenObject) {
93
- const implOrChildren = childrenObject || this.impl;
94
- const areChildrenNested = !!childrenObject;
95
- const children = areChildrenNested
96
- ? implOrChildren
97
- : implOrChildren.graph.children;
98
- const childrenNames = Object.keys(children);
99
- for (const childName of childrenNames) {
100
- await this.calculateOutputsForChild(children, {
101
- childName,
102
- areChildrenNested,
103
- });
104
- }
105
- return this.impl;
106
- }
107
- }
108
- exports.Supercomputer = Supercomputer;
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJjb21wdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3N1cGVyY29tcHV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0NBQTBDO0FBRTFDLHFDQUFnQztBQUVoQyxzQ0FBa0M7QUFLbEMsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZUFBTSxDQUFDO0FBRXJDLE1BQU0sRUFBQyxtQkFBbUIsRUFBQyxHQUFHLGdCQUFPLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFLeEIsWUFBWSxJQUFVLEVBQUUsY0FBOEI7UUFKOUMsZUFBVSxHQUFxQixFQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO1FBSzFELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQixDQUFDLE1BQWM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ2hFLEdBQUcsR0FBRztnQkFDSixHQUFHLEdBQUc7Z0JBQ04sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO2FBQ2hCLENBQUM7WUFFRixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVQLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNLLFlBQVksQ0FDbEIsTUFBcUIsRUFDckIsTUFBYyxFQUNkLFlBQW9CO1FBRXBCLE1BQU0sWUFBWSxHQUFH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SUFBSSxDQUFDLElBQUksQ0FBQztRQUNuRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQWEsaUJBQWlCO1lBQzFDLENBQUMsQ0FBQyxjQUFjO1lBQ2hCLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTVDLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRTtnQkFDNUMsU0FBUztnQkFDVCxpQkFBaUI7YUFDbEIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBMUlELHNDQTBJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxzVW5pdmVyc2V9IGZyb20gJy4vbW9kZWxzLXVuaXZlcnNlJztcbmltcG9ydCB7T2JzZXJ2YXRvcnl9IGZyb20gJy4vb2JzZXJ2YXRvcnknO1xuXG5pbXBvcnQge0VSUk9SU30gZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQge1NUUklOR1N9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmltcG9ydCB7Q2hpbGRJbmZvcm1hdGlvbn0gZnJvbSAnLi4vdHlwZXMvc3VwZXJjb21wdXRlcic7XG5pbXBvcnQge0NoaWxkcmVuLCBDb25maWcsIEltcGwsIE1vZGVsUGFyYW1zfSBmcm9tICcuLi90eXBlcy9pbXBsJztcblxuY29uc3Qge0ltcGxWYWxpZGF0aW9uRXJyb3J9ID0gRVJST1JTO1xuXG5jb25zdCB7U1RSVUNUVVJFX01BTEZPUk1FRH0gPSBTVFJJTkdTO1xuXG4vKipcbiAqIENvbXB1dGVyIGZvciBgaW1wbGAgZG9jdW1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU3VwZXJjb21wdXRlciB7XG4gIHByaXZhdGUgb2xkZXJDaGlsZDogQ2hpbGRJbmZvcm1hdGlvbiA9IHtuYW1lOiAnJywgaW5mbzoge319O1xuICBwcml2YXRlIGltcGw6IEltcGw7XG4gIHByaXZhdGUgbW9kZWxzSGFuZGJvb2s6IE1vZGVsc1VuaXZlcnNlO1xuXG4gIGNvbnN0cnVjdG9yKGltcGw6IEltcGwsIG1vZGVsc0hhbmRib29rOiBNb2RlbHNVbml2ZXJzZSkge1xuICAgIHRoaXMuaW1wbCA9IGltcGw7XG4gICAgdGhpcy5tb2RlbHNIYW5kYm9vayA9IG1vZGVsc0hhbmRib29rO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYXR0ZW5zIGNvbmZpZyBlbnRyaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBmbGF0dGVuQ29uZmlnVmFsdWVzKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWdNb2RlbE5hbWVzID0gT2JqZWN0LmtleXMoY29uZmlnKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb25maWdNb2RlbE5hbWVzLnJlZHVjZSgoYWNjOiBhbnksIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgYWNjID0ge1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIC4uLmNvbmZpZ1tuYW1lXSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNvbmZpZyBlbnRyaWVzIHRvIGVhY2ggb2JzZXJjYXRpb24gb2JqZWN0IHBhc3NlZC5cbiAgICovXG4gIHByaXZhdGUgZW5yaWNoSW5wdXRzKFxuICAgIGlucHV0czogTW9kZWxQYXJhbXNbXSxcbiAgICBjb25maWc6IENvbmZpZyxcbiAgICBuZXN0ZWRDb25maWc6IENvbmZpZ1xuICApIHtcbiAgICBjb25zdCBjb25maWdWYWx1ZXMgPSB0aGlzLmZsYXR0ZW5Db25maWdWYWx1ZXMoY29uZmlnKTtcbiAgICBjb25zdCBuZXN0ZWRDb25maWdWYWx1ZXMgPSB0aGlzLmZsYXR0ZW5Db25maWdWYWx1ZXMobmVzdGVkQ29uZmlnKTtcblxuICAgIHJldHVybiBpbnB1dHMubWFwKChpbnB1dDogYW55KSA9PiAoe1xuICAgICAgLi4uaW5wdXQsXG4gICAgICAuLi5jb25maWdWYWx1ZXMsXG4gICAgICAuLi5uZXN0ZWRDb25maWdWYWx1ZXMsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIGNoaWxkIGlzIHRvcCBsZXZlbCwgdGhlbiBpbml0aWFsaXplcyBgdGhpcy5vbGRlckNoaWxkYC5cbiAgICogSWYgYGNoaWxkcmVuYCBvYmplY3QgY29udGFpbnMgYGNoaWxkcmVuYCBwcm9wZXJ0eSwgaXQgbWVhbnMgaW5wdXRzIGFyZSBuZXN0ZWQgKGNhbGxzIGNvbXB1dGUgYWdhaW4pLlxuICAgKiBPdGhlcndpc2UgZW5yaWNoZXMgaW5wdXRzLCBwYXNzZXMgdGhlbSB0byBPYnNlcnZhdG9yeS5cbiAgICogRm9yIGVhY2ggbW9kZWwgZnJvbSBwaXBlbGluZSBPYnNlcnZhdG9yeSBnYXRoZXJzIGlucHV0cy4gVGhlbiByZXN1bHRzIGFyZSBzdG9yZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNhbGN1bGF0ZU91dHB1dHNGb3JDaGlsZChcbiAgICBjaGlsZHJlbk9iamVjdDogQ2hpbGRyZW4sXG4gICAgcGFyYW1zOiBhbnlcbiAgKSB7XG4gICAgY29uc3Qge2NoaWxkTmFtZSwgYXJlQ2hpbGRyZW5OZXN0ZWR9ID0gcGFyYW1zO1xuXG4gICAgaWYgKCFhcmVDaGlsZHJlbk5lc3RlZCkge1xuICAgICAgdGhpcy5vbGRlckNoaWxkID0ge1xuICAgICAgICBuYW1lOiBjaGlsZE5hbWUsXG4gICAgICAgIGluZm86IHRoaXMuaW1wbC5ncmFwaC5jaGlsZHJlbltjaGlsZE5hbWVdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7cGlwZWxpbmUsIGlucHV0cywgY29uZmlnfSA9IHRoaXMub2xkZXJDaGlsZC5pbmZvO1xuXG4gICAgaWYgKCdjaGlsZHJlbicgaW4gY2hpbGRyZW5PYmplY3RbY2hpbGROYW1lXSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZShjaGlsZHJlbk9iamVjdFtjaGlsZE5hbWVdLmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBpZiAoISgnaW5wdXRzJyBpbiBjaGlsZHJlbk9iamVjdFtjaGlsZE5hbWVdKSkge1xuICAgICAgdGhyb3cgbmV3IEltcGxWYWxpZGF0aW9uRXJyb3IoU1RSVUNUVVJFX01BTEZPUk1FRChjaGlsZE5hbWUpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjaWZpY0lucHV0cyA9IGFyZUNoaWxkcmVuTmVzdGVkXG4gICAgICA/IGNoaWxkcmVuT2JqZWN0W2NoaWxkTmFtZV0uaW5wdXRzXG4gICAgICA6IGlucHV0cztcblxuICAgIGNvbnN0IGNoaWxkcmVuQ29uZmlnID0gY2hpbGRyZW5PYmplY3RbY2hpbGROYW1lXS5jb25maWcgfHwge307XG5cbiAgICBjb25zdCBlbnJpY2hlZElucHV0cyA9IHRoaXMuZW5yaWNoSW5wdXRzKFxuICAgICAgc3BlY2lmaWNJbnB1dHMsXG4gICAgICBjb25maWcsXG4gICAgICBjaGlsZHJlbkNvbmZpZ1xuICAgICk7XG5cbiAgICBjb25zdCBvYnNlcnZhdG9yeSA9IG5ldyBPYnNlcnZhdG9yeShlbnJpY2hlZElucHV0cyk7XG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsTmFtZSBvZiBwaXBlbGluZSkge1xuICAgICAgY29uc3QgcGFyYW1zID0gY29uZmlnICYmIGNvbmZpZ1ttb2RlbE5hbWVdO1xuICAgICAgY29uc3QgbW9kZWxJbnN0YW5jZSA9IGF3YWl0IHRoaXMubW9kZWxzSGFuZGJvb2suZ2V0SW5pdGlhbGl6ZWRNb2RlbChcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBwYXJhbXNcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IG9ic2VydmF0b3J5LmRvSW52ZXN0aWdhdGlvbnNXaXRoKG1vZGVsSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHMgPSBvYnNlcnZhdG9yeS5nZXRPdXRwdXRzKCk7XG5cbiAgICBpZiAoYXJlQ2hpbGRyZW5OZXN0ZWQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuaW1wbC5ncmFwaC5jaGlsZHJlblt0aGlzLm9sZGVyQ2hpbGQubmFtZV0uY2hpbGRyZW5bXG4gICAgICAgIGNoaWxkTmFtZVxuICAgICAgXS5vdXRwdXRzID0gb2JzZXJ2YXRvcnkuZ2V0T3V0cHV0cygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbXBsLmdyYXBoLmNoaWxkcmVuW3RoaXMub2xkZXJDaGlsZC5uYW1lXS5vdXRwdXRzID0gb3V0cHV0cztcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG9iamVjdCBpcyB0b3AgbGV2ZWwgY2hpbGRyZW4gb3IgbmVzdGVkLCB0aGVuIHJ1bnMgdGhyb3VnaCBhbGwgY2hpbGRyZW4gYW5kIGNhbGN1bGF0ZXMgb3V0cHV0cy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjb21wdXRlKGNoaWxkcmVuT2JqZWN0PzogYW55KSB7XG4gICAgY29uc3QgaW1wbE9yQ2hpbGRyZW4gPSBjaGlsZHJlbk9iamVjdCB8fCB0aGlzLmltcGw7XG4gICAgY29uc3QgYXJlQ2hpbGRyZW5OZXN0ZWQgPSAhIWNoaWxkcmVuT2JqZWN0O1xuICAgIGNvbnN0IGNoaWxkcmVuOiBDaGlsZHJlbiA9IGFyZUNoaWxkcmVuTmVzdGVkXG4gICAgICA/IGltcGxPckNoaWxkcmVuXG4gICAgICA6IGltcGxPckNoaWxkcmVuLmdyYXBoLmNoaWxkcmVuO1xuICAgIGNvbnN0IGNoaWxkcmVuTmFtZXMgPSBPYmplY3Qua2V5cyhjaGlsZHJlbik7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkTmFtZSBvZiBjaGlsZHJlbk5hbWVzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhbGN1bGF0ZU91dHB1dHNGb3JDaGlsZChjaGlsZHJlbiwge1xuICAgICAgICBjaGlsZE5hbWUsXG4gICAgICAgIGFyZUNoaWxkcmVuTmVzdGVkLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW1wbDtcbiAgfVxufVxuIl19
@@ -1,36 +0,0 @@
1
- # TDP Finder Model
2
-
3
- ## Scope
4
-
5
- The TDP Finder model finds the thermal design power (TDP) of a given processor by looking it up in the model datasets. There are scenarios where the lookup can return multiple possible TDP values. In these cases, we return the maximum of the possible values. There are also cases where no TDP can be found for a specific processor. In these cases, we throw an error. The TDP is then used by other models to calculate the `energy-cpu` value.
6
-
7
- ## Used DataSets
8
-
9
-
10
- [./data.csv](./data.csv) Dataset from https://www.kaggle.com/datasets/lincolnzh/cpu-specifications-dataset Licensed under [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
11
-
12
- [./data2.csv](./data2.csv) Dataset from [Codecarbon](https://github.com/mlco2/codecarbon/blob/master/codecarbon/data/hardware/cpu_power.csv) Licensed under MIT
13
-
14
- [./boavizta_data.csv](./boavizta_data.csv) Dataset from Boavizta API [Data Source](https://github.com/Boavizta/boaviztapi/blob/main/boaviztapi/data/crowdsourcing/cpu_specs.csv) Licensed under MIT
15
-
16
-
17
- ## Implementation
18
-
19
- IEF implements the plugin based on the logic described above.
20
-
21
- ## Usage with IMPL
22
- * Model Name: `tdp-finder`
23
- ```yaml
24
- input:
25
- - physical-processor: Intel Xeon Platinum 8175M, AMD A8-9600
26
- ```
27
-
28
- ## Output in OMPL
29
- ```yaml
30
- input:
31
- - physical-processor: Intel Xeon Platinum 8175M
32
- output:
33
- - physical-processor: Intel Xeon Platinum 8175M
34
- tdp: 165
35
- ```
36
-
@@ -1,67 +0,0 @@
1
- name: gsf-demo-pipeline
2
- description:
3
- More complex pipeline example
4
- tags:
5
- kind: web
6
- complexity: moderate
7
- category: cloud
8
- initialize:
9
- models:
10
- - name: teads-curve
11
- kind: builtin
12
- - name: sci-m
13
- kind: builtin
14
- - name: sci-o
15
- kind: builtin
16
- - name: sci-e
17
- kind: builtin
18
- - name: eshoppen-net
19
- kind: builtin
20
- - name: eshoppen-mem
21
- kind: builtin
22
- - name: eshoppen-cpu
23
- kind: builtin
24
- - name: sampler
25
- kind: shell
26
- graph:
27
- children:
28
- child:
29
- pipeline:
30
- - eshoppen-mem
31
- - eshoppen-cpu
32
- - eshoppen-net
33
- - sci-e
34
- - sci-o
35
- - sampler
36
- config:
37
- teads-curve:
38
- thermal-design-power: 1
39
- sampler:
40
- executable: python3 /usr/local/bin/sampler
41
- inputs:
42
- - timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
43
- processor: Intel® Core™ i7-1185G7
44
- data-in: 1
45
- data-out: 1
46
- net-energy: 1
47
- n-hours: 1
48
- n-chips: 1
49
- tdp-mem: 1
50
- tdp-coeff: 1
51
- duration: 3600 # Secs
52
- thermal-design-power: 28 # W
53
- cpu-util: 18.392
54
- grid-carbon-intensity: 951 # gCO2e/kWh
55
- - timestamp: 2023-08-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
56
- processor: Intel® Core™ i7-1185G7
57
- data-in: 1
58
- data-out: 1
59
- net-energy: 1
60
- n-hours: 1
61
- n-chips: 1
62
- tdp-mem: 1
63
- tdp-coeff: 1
64
- duration: 3600 # Secs
65
- thermal-design-power: 20 # W
66
- cpu-util: 16
67
- grid-carbon-intensity: 800 # gCO2e/kWh
@@ -1,22 +0,0 @@
1
- name: ccf-demo
2
- description: example impl invoking CCF model
3
- initialize:
4
- models:
5
- - name: azure-importer
6
- kind: builtin
7
- graph:
8
- children:
9
- child:
10
- pipeline:
11
- - azure-importer
12
- config:
13
- azure-importer:
14
- metric: Percentage CPU
15
- interval: PT1M
16
- aggregation: avg
17
- observations:
18
- - null
19
- impacts:
20
- - metric: Percentage CPU
21
- interval: PT1M
22
- aggregation: avg
@@ -1,138 +0,0 @@
1
- {
2
- "0-Global": "WOR",
3
- "1-Europe": "EEE",
4
- "Albania": "ALB",
5
- "Algeria": "DZA",
6
- "Angola": "AGO",
7
- "Argentina": "ARG",
8
- "Armenia": "ARM",
9
- "Australia": "AUS",
10
- "Austria": "AUT",
11
- "Azerbaijan": "AZE",
12
- "Bahrain": "BHR",
13
- "Bangladesh": "BGD",
14
- "Belarus": "BLR",
15
- "Belgium": "BEL",
16
- "Benin": "BEN",
17
- "Bolivia": "BOL",
18
- "Bosnia and Herzegovina": "BIH",
19
- "Botswana": "BWA",
20
- "Brazil": "BRA",
21
- "Brunei": "BRN",
22
- "Bulgaria": "BGR",
23
- "Cambodia": "KHM",
24
- "Cameroon": "CMR",
25
- "Canada": "CAN",
26
- "Chile": "CHL",
27
- "China": "CHN",
28
- "Colombia": "COL",
29
- "Congo": "COG",
30
- "Costa Rica": "CRI",
31
- "Croatia": "HRV",
32
- "Cuba": "CUB",
33
- "Cyprus": "CYP",
34
- "Czech Republic": "CZE",
35
- "Denmark": "DNK",
36
- "Dominican Republic": "DOM",
37
- "DR Congo": "COD",
38
- "Ecuador": "ECU",
39
- "Egypt": "EGY",
40
- "El Salvador": "SLV",
41
- "Eritrea": "ERI",
42
- "Estonia": "EST",
43
- "Ethiopia": "ETH",
44
- "Finland": "FIN",
45
- "France": "FRA",
46
- "Gabon": "GAB",
47
- "Georgia": "GEO",
48
- "Germany": "DEU",
49
- "Ghana": "GHA",
50
- "Greece": "GRC",
51
- "Guatemala": "GTM",
52
- "Haiti": "HTI",
53
- "Honduras": "HND",
54
- "Hungary": "HUN",
55
- "Iceland": "ISL",
56
- "India": "IND",
57
- "Indonesia": "IDN",
58
- "Iran": "IRN",
59
- "Iraq": "IRQ",
60
- "Ireland": "IRL",
61
- "Israel": "ISR",
62
- "Italy": "ITA",
63
- "Ivory Coast": "CIV",
64
- "Jamaica": "JAM",
65
- "Japan": "JPN",
66
- "Jordan": "JOR",
67
- "Kazakhstan": "KAZ",
68
- "Kenya": "KEN",
69
- "Kuwait": "KWT",
70
- "Kyrgyzstan": "KGZ",
71
- "Latvia": "LVA",
72
- "Lebanon": "LBN",
73
- "Libyan Arab Jamahiriya": "LBY",
74
- "Lithuania": "LTU",
75
- "Luxembourg": "LUX",
76
- "Malaysia": "MYS",
77
- "Malta": "MLT",
78
- "Mexico": "MEX",
79
- "Moldova": "MDA",
80
- "Mongolia": "MNG",
81
- "Morocco": "MAR",
82
- "Mozambique": "MOZ",
83
- "Myanmar": "MMR",
84
- "Namibia": "NAM",
85
- "Nepal": "NPL",
86
- "Netherlands": "NLD",
87
- "New Zealand": "NZL",
88
- "Nicaragua": "NIC",
89
- "Nigeria": "NGA",
90
- "North Korea": "PRK",
91
- "North Macedonia": "MKD",
92
- "Norway": "NOR",
93
- "Oman": "OMN",
94
- "Pakistan": "PAK",
95
- "Panama": "PAN",
96
- "Paraguay": "PRY",
97
- "Peru": "PER",
98
- "Philippines": "PHL",
99
- "Poland": "POL",
100
- "Portugal": "PRT",
101
- "Qatar": "QAT",
102
- "Romania": "ROU",
103
- "Russian Federation": "RUS",
104
- "Saudi Arabia": "SAU",
105
- "Senegal": "SEN",
106
- "Serbia": "SCG",
107
- "Singapore": "SGP",
108
- "Slovakia": "SVK",
109
- "Slovenia": "SVN",
110
- "South Africa": "ZAF",
111
- "South Korea": "KOR",
112
- "Spain": "ESP",
113
- "Sri Lanka": "LKA",
114
- "Sudan": "SDN",
115
- "Sweden": "SWE",
116
- "Switzerland": "CHE",
117
- "Syrian Arab Republic": "SYR",
118
- "Taiwan": "TWN",
119
- "Tajikistan": "TJK",
120
- "Tanzania": "TZA",
121
- "Thailand": "THA",
122
- "Togo": "TGO",
123
- "Trinidad and Tobago": "TTO",
124
- "Tunisia": "TUN",
125
- "Turkey": "TUR",
126
- "Turkmenistan": "TKM",
127
- "Ukraine": "UKR",
128
- "United Arab Emirates": "ARE",
129
- "United Kingdom": "GBR",
130
- "United States of America": "USA",
131
- "Uruguay": "URY",
132
- "Uzbekistan": "UZB",
133
- "Venezuela": "VEN",
134
- "Vietnam": "VNM",
135
- "Yemen": "YEM",
136
- "Zambia": "ZMB",
137
- "Zimbabwe": "ZWE"
138
- }