@grnsft/if 0.0.5 → 0.1.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.
- package/.examples/ompls/azure.yml +205 -0
- package/.github/workflows/nodejs-ci.yml +0 -8
- package/README.md +48 -9
- package/build/config/config.d.ts +0 -23
- package/build/config/config.js +1 -24
- package/build/index.js +3 -4
- package/build/lib/models-universe.js +95 -0
- package/build/lib/observatory.js +31 -0
- package/build/lib/supercomputer.js +109 -0
- package/examples/impls/test/azure.yml +8 -8
- package/examples/impls/test/ccf.yml +5 -3
- package/examples/impls/test/if-demo.yml +19 -9
- package/examples/impls/test/metadata.yml +3 -2
- package/examples/impls/test/nesting.yml +10 -13
- package/examples/impls/test/sci-e.yml +1 -1
- package/examples/impls/test/sci-m.yml +2 -2
- package/examples/impls/test/sci-o.yml +2 -4
- package/examples/impls/test/sci.yml +1 -2
- package/examples/impls/test/shell.yml +2 -1
- package/examples/impls/{tdp-finder-test.yml → test/tdp-finder.yml} +8 -8
- package/examples/ompls/ccf.yml +3 -1
- package/examples/ompls/if-demo.yml +46 -22
- package/package.json +12 -5
- package/tsconfig.build.json +7 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/build/__mocks__/azure/index.d.ts +0 -11
- package/build/__mocks__/azure/index.js +0 -132
- package/build/__mocks__/boavizta/countries.json +0 -138
- package/build/__mocks__/boavizta/instance_types.json +0 -625
- package/build/__mocks__/boavizta/providers.json +0 -1
- package/build/__mocks__/fs/index.d.ts +0 -3
- package/build/__mocks__/fs/index.js +0 -56
- package/build/__mocks__/model-universe/index.d.ts +0 -31
- package/build/__mocks__/model-universe/index.js +0 -64
- package/build/__mocks__/watt-time/data.json +0 -119
- package/build/__tests__/integration/ompl/index.test.d.ts +0 -1
- package/build/__tests__/integration/ompl/index.test.js +0 -61
- package/build/__tests__/unit/lib/azure-importer/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/azure-importer/index.test.js +0 -152
- package/build/__tests__/unit/lib/boavizta/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/boavizta/index.test.js +0 -579
- package/build/__tests__/unit/lib/case-studies/aveva.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/aveva.test.js +0 -36
- package/build/__tests__/unit/lib/case-studies/emem.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/emem.test.js +0 -108
- package/build/__tests__/unit/lib/case-studies/eshoppen.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/eshoppen.test.js +0 -53
- package/build/__tests__/unit/lib/case-studies/sci-accenture.test.d.ts +0 -1
- package/build/__tests__/unit/lib/case-studies/sci-accenture.test.js +0 -23
- package/build/__tests__/unit/lib/ccf/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/ccf/index.test.js +0 -223
- package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/cloud-instance-metadata/index.test.js +0 -73
- package/build/__tests__/unit/lib/sci/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci/index.test.js +0 -106
- package/build/__tests__/unit/lib/sci-e/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-e/index.test.js +0 -30
- package/build/__tests__/unit/lib/sci-m/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-m/index.test.js +0 -58
- package/build/__tests__/unit/lib/sci-o/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/sci-o/index.test.js +0 -42
- package/build/__tests__/unit/lib/shell-imp/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/shell-imp/index.test.js +0 -21
- package/build/__tests__/unit/lib/tdp-finder/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/tdp-finder/index.test.js +0 -62
- package/build/__tests__/unit/lib/teads-aws/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/teads-aws/index.test.js +0 -170
- package/build/__tests__/unit/lib/teads-curve/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/teads-curve/index.test.js +0 -146
- package/build/__tests__/unit/lib/watt-time/index.test.d.ts +0 -1
- package/build/__tests__/unit/lib/watt-time/index.test.js +0 -106
- package/build/__tests__/unit/util/args.test.d.ts +0 -1
- package/build/__tests__/unit/util/args.test.js +0 -92
- package/build/__tests__/unit/util/models-universe.test.d.ts +0 -1
- package/build/__tests__/unit/util/models-universe.test.js +0 -193
- package/build/__tests__/unit/util/observatory.test.d.ts +0 -1
- package/build/__tests__/unit/util/observatory.test.js +0 -99
- package/build/__tests__/unit/util/supercomputer.test.d.ts +0 -1
- package/build/__tests__/unit/util/supercomputer.test.js +0 -231
- package/build/__tests__/unit/util/yaml.test.d.ts +0 -1
- package/build/__tests__/unit/util/yaml.test.js +0 -59
- package/build/lib/azure-importer/index.d.ts +0 -55
- package/build/lib/azure-importer/index.js +0 -314
- package/build/lib/boavizta/index.d.ts +0 -53
- package/build/lib/boavizta/index.js +0 -254
- package/build/lib/case-studies/aveva-model.d.ts +0 -29
- package/build/lib/case-studies/aveva-model.js +0 -53
- package/build/lib/case-studies/emem-model.d.ts +0 -42
- package/build/lib/case-studies/emem-model.js +0 -93
- package/build/lib/case-studies/eshoppen-model.d.ts +0 -24
- package/build/lib/case-studies/eshoppen-model.js +0 -123
- package/build/lib/case-studies/index.d.ts +0 -4
- package/build/lib/case-studies/index.js +0 -21
- package/build/lib/case-studies/sci-accenture-model.d.ts +0 -10
- package/build/lib/case-studies/sci-accenture-model.js +0 -37
- package/build/lib/ccf/aws-embodied.json +0 -5591
- package/build/lib/ccf/aws-instances.json +0 -21116
- package/build/lib/ccf/aws-use.json +0 -79
- package/build/lib/ccf/azure-embodied.json +0 -6547
- package/build/lib/ccf/azure-instances.json +0 -8332
- package/build/lib/ccf/azure-use.json +0 -58
- package/build/lib/ccf/gcp-embodied.json +0 -3049
- package/build/lib/ccf/gcp-instances.json +0 -3880
- package/build/lib/ccf/gcp-use.json +0 -58
- package/build/lib/ccf/index.d.ts +0 -63
- package/build/lib/ccf/index.js +0 -338
- package/build/lib/cloud-instance-metadata/aws-instances.json +0 -1
- package/build/lib/cloud-instance-metadata/azure-instances.json +0 -1
- package/build/lib/cloud-instance-metadata/index.d.ts +0 -15
- package/build/lib/cloud-instance-metadata/index.js +0 -104
- package/build/lib/index.d.ts +0 -14
- package/build/lib/index.js +0 -32
- package/build/lib/interfaces/ccf.d.ts +0 -19
- package/build/lib/interfaces/ccf.js +0 -3
- package/build/lib/interfaces/index.d.ts +0 -7
- package/build/lib/interfaces/index.js +0 -18
- package/build/lib/sci/index.d.ts +0 -13
- package/build/lib/sci/index.js +0 -131
- package/build/lib/sci-e/index.d.ts +0 -38
- package/build/lib/sci-e/index.js +0 -85
- package/build/lib/sci-m/index.d.ts +0 -10
- package/build/lib/sci-m/index.js +0 -124
- package/build/lib/sci-o/index.d.ts +0 -17
- package/build/lib/sci-o/index.js +0 -52
- package/build/lib/shell-imp/index.d.ts +0 -32
- package/build/lib/shell-imp/index.js +0 -82
- package/build/lib/tdp-finder/index.d.ts +0 -19
- package/build/lib/tdp-finder/index.js +0 -98
- package/build/lib/teads-aws/aws-embodied.json +0 -1
- package/build/lib/teads-aws/aws-instances.json +0 -1
- package/build/lib/teads-aws/index.d.ts +0 -58
- package/build/lib/teads-aws/index.js +0 -208
- package/build/lib/teads-curve/index.d.ts +0 -52
- package/build/lib/teads-curve/index.js +0 -158
- package/build/lib/watt-time/index.d.ts +0 -18
- package/build/lib/watt-time/index.js +0 -204
- package/build/util/models-universe.js +0 -95
- package/build/util/observatory.js +0 -31
- package/build/util/supercomputer.js +0 -109
- package/docs/implementations/tdp-finder.md +0 -36
- package/examples/impls/test/complex-pipeline.yml +0 -67
- package/examples/impls/test/toto.yaml +0 -22
- package/tsconfig.tsbuildinfo +0 -1
- /package/build/{util → lib}/models-universe.d.ts +0 -0
- /package/build/{util → lib}/observatory.d.ts +0 -0
- /package/build/{util → lib}/supercomputer.d.ts +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
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("../util/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwZXJjb21wdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3VwZXJjb21wdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrQ0FBMEM7QUFFMUMsMkNBQXNDO0FBRXRDLHNDQUFrQztBQUtsQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsR0FBRyxlQUFNLENBQUM7QUFFckMsTUFBTSxFQUFDLG1CQUFtQixFQUFDLEdBQUcsZ0JBQU8sQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUt4QixZQUFZLElBQVUsRUFBRSxjQUE4QjtRQUo5QyxlQUFVLEdBQXFCLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFLMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsTUFBYztRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDaEUsR0FBRyxHQUFHO2dCQUNKLEdBQUcsR0FBRztnQkFDTixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDaEIsQ0FBQztZQUVGLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUNsQixNQUFxQixFQUNyQixNQUFjLEVBQ2QsWUFBb0I7UUFFcEIsTUFBTSxZQUFZLEdBQUcs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QUFJLENBQUMsSUFBSSxDQUFDO1FBQ25ELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxNQUFNLFFBQVEsR0FBYSxpQkFBaUI7WUFDMUMsQ0FBQyxDQUFDLGNBQWM7WUFDaEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUMsS0FBSyxNQUFNLFNBQVMsSUFBSSxhQUFhLEVBQUU7WUFDckMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFO2dCQUM1QyxTQUFTO2dCQUNULGlCQUFpQjthQUNsQixDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUExSUQsc0NBMElDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbHNVbml2ZXJzZX0gZnJvbSAnLi9tb2RlbHMtdW5pdmVyc2UnO1xuaW1wb3J0IHtPYnNlcnZhdG9yeX0gZnJvbSAnLi9vYnNlcnZhdG9yeSc7XG5cbmltcG9ydCB7RVJST1JTfSBmcm9tICcuLi91dGlsL2Vycm9ycyc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtDaGlsZEluZm9ybWF0aW9ufSBmcm9tICcuLi90eXBlcy9zdXBlcmNvbXB1dGVyJztcbmltcG9ydCB7Q2hpbGRyZW4sIENvbmZpZywgSW1wbCwgTW9kZWxQYXJhbXN9IGZyb20gJy4uL3R5cGVzL2ltcGwnO1xuXG5jb25zdCB7SW1wbFZhbGlkYXRpb25FcnJvcn0gPSBFUlJPUlM7XG5cbmNvbnN0IHtTVFJVQ1RVUkVfTUFMRk9STUVEfSA9IFNUUklOR1M7XG5cbi8qKlxuICogQ29tcHV0ZXIgZm9yIGBpbXBsYCBkb2N1bWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdXBlcmNvbXB1dGVyIHtcbiAgcHJpdmF0ZSBvbGRlckNoaWxkOiBDaGlsZEluZm9ybWF0aW9uID0ge25hbWU6ICcnLCBpbmZvOiB7fX07XG4gIHByaXZhdGUgaW1wbDogSW1wbDtcbiAgcHJpdmF0ZSBtb2RlbHNIYW5kYm9vazogTW9kZWxzVW5pdmVyc2U7XG5cbiAgY29uc3RydWN0b3IoaW1wbDogSW1wbCwgbW9kZWxzSGFuZGJvb2s6IE1vZGVsc1VuaXZlcnNlKSB7XG4gICAgdGhpcy5pbXBsID0gaW1wbDtcbiAgICB0aGlzLm1vZGVsc0hhbmRib29rID0gbW9kZWxzSGFuZGJvb2s7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgY29uZmlnIGVudHJpZXMuXG4gICAqL1xuICBwcml2YXRlIGZsYXR0ZW5Db25maWdWYWx1ZXMoY29uZmlnOiBDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ01vZGVsTmFtZXMgPSBPYmplY3Qua2V5cyhjb25maWcpO1xuICAgIGNvbnN0IHZhbHVlcyA9IGNvbmZpZ01vZGVsTmFtZXMucmVkdWNlKChhY2M6IGFueSwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBhY2MgPSB7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgLi4uY29uZmlnW25hbWVdLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgY29uZmlnIGVudHJpZXMgdG8gZWFjaCBvYnNlcmNhdGlvbiBvYmplY3QgcGFzc2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBlbnJpY2hJbnB1dHMoXG4gICAgaW5wdXRzOiBNb2RlbFBhcmFtc1tdLFxuICAgIGNvbmZpZzogQ29uZmlnLFxuICAgIG5lc3RlZENvbmZpZzogQ29uZmlnXG4gICkge1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlcyA9IHRoaXMuZmxhdHRlbkNvbmZpZ1ZhbHVlcyhjb25maWcpO1xuICAgIGNvbnN0IG5lc3RlZENvbmZpZ1ZhbHVlcyA9IHRoaXMuZmxhdHRlbkNvbmZpZ1ZhbHVlcyhuZXN0ZWRDb25maWcpO1xuXG4gICAgcmV0dXJuIGlucHV0cy5tYXAoKGlucHV0OiBhbnkpID0+ICh7XG4gICAgICAuLi5pbnB1dCxcbiAgICAgIC4uLmNvbmZpZ1ZhbHVlcyxcbiAgICAgIC4uLm5lc3RlZENvbmZpZ1ZhbHVlcyxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgY2hpbGQgaXMgdG9wIGxldmVsLCB0aGVuIGluaXRpYWxpemVzIGB0aGlzLm9sZGVyQ2hpbGRgLlxuICAgKiBJZiBgY2hpbGRyZW5gIG9iamVjdCBjb250YWlucyBgY2hpbGRyZW5gIHByb3BlcnR5LCBpdCBtZWFucyBpbnB1dHMgYXJlIG5lc3RlZCAoY2FsbHMgY29tcHV0ZSBhZ2FpbikuXG4gICAqIE90aGVyd2lzZSBlbnJpY2hlcyBpbnB1dHMsIHBhc3NlcyB0aGVtIHRvIE9ic2VydmF0b3J5LlxuICAgKiBGb3IgZWFjaCBtb2RlbCBmcm9tIHBpcGVsaW5lIE9ic2VydmF0b3J5IGdhdGhlcnMgaW5wdXRzLiBUaGVuIHJlc3VsdHMgYXJlIHN0b3JlZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlT3V0cHV0c0ZvckNoaWxkKFxuICAgIGNoaWxkcmVuT2JqZWN0OiBDaGlsZHJlbixcbiAgICBwYXJhbXM6IGFueVxuICApIHtcbiAgICBjb25zdCB7Y2hpbGROYW1lLCBhcmVDaGlsZHJlbk5lc3RlZH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIWFyZUNoaWxkcmVuTmVzdGVkKSB7XG4gICAgICB0aGlzLm9sZGVyQ2hpbGQgPSB7XG4gICAgICAgIG5hbWU6IGNoaWxkTmFtZSxcbiAgICAgICAgaW5mbzogdGhpcy5pbXBsLmdyYXBoLmNoaWxkcmVuW2NoaWxkTmFtZV0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHtwaXBlbGluZSwgaW5wdXRzLCBjb25maWd9ID0gdGhpcy5vbGRlckNoaWxkLmluZm87XG5cbiAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjaGlsZHJlbk9iamVjdFtjaGlsZE5hbWVdKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wdXRlKGNoaWxkcmVuT2JqZWN0W2NoaWxkTmFtZV0uY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIGlmICghKCdpbnB1dHMnIGluIGNoaWxkcmVuT2JqZWN0W2NoaWxkTmFtZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgSW1wbFZhbGlkYXRpb25FcnJvcihTVFJVQ1RVUkVfTUFMRk9STUVEKGNoaWxkTmFtZSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpZmljSW5wdXRzID0gYXJlQ2hpbGRyZW5OZXN0ZWRcbiAgICAgID8gY2hpbGRyZW5PYmplY3RbY2hpbGROYW1lXS5pbnB1dHNcbiAgICAgIDogaW5wdXRzO1xuXG4gICAgY29uc3QgY2hpbGRyZW5Db25maWcgPSBjaGlsZHJlbk9iamVjdFtjaGlsZE5hbWVdLmNvbmZpZyB8fCB7fTtcblxuICAgIGNvbnN0IGVucmljaGVkSW5wdXRzID0gdGhpcy5lbnJpY2hJbnB1dHMoXG4gICAgICBzcGVjaWZpY0lucHV0cyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGNoaWxkcmVuQ29uZmlnXG4gICAgKTtcblxuICAgIGNvbnN0IG9ic2VydmF0b3J5ID0gbmV3IE9ic2VydmF0b3J5KGVucmljaGVkSW5wdXRzKTtcblxuICAgIGZvciAoY29uc3QgbW9kZWxOYW1lIG9mIHBpcGVsaW5lKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBjb25maWcgJiYgY29uZmlnW21vZGVsTmFtZV07XG4gICAgICBjb25zdCBtb2RlbEluc3RhbmNlID0gYXdhaXQgdGhpcy5tb2RlbHNIYW5kYm9vay5nZXRJbml0aWFsaXplZE1vZGVsKFxuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIHBhcmFtc1xuICAgICAgKTtcblxuICAgICAgYXdhaXQgb2JzZXJ2YXRvcnkuZG9JbnZlc3RpZ2F0aW9uc1dpdGgobW9kZWxJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0cyA9IG9ic2VydmF0b3J5LmdldE91dHB1dHMoKTtcblxuICAgIGlmIChhcmVDaGlsZHJlbk5lc3RlZCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5pbXBsLmdyYXBoLmNoaWxkcmVuW3RoaXMub2xkZXJDaGlsZC5uYW1lXS5jaGlsZHJlbltcbiAgICAgICAgY2hpbGROYW1lXG4gICAgICBdLm91dHB1dHMgPSBvYnNlcnZhdG9yeS5nZXRPdXRwdXRzKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmltcGwuZ3JhcGguY2hpbGRyZW5bdGhpcy5vbGRlckNoaWxkLm5hbWVdLm91dHB1dHMgPSBvdXRwdXRzO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgb2JqZWN0IGlzIHRvcCBsZXZlbCBjaGlsZHJlbiBvciBuZXN0ZWQsIHRoZW4gcnVucyB0aHJvdWdoIGFsbCBjaGlsZHJlbiBhbmQgY2FsY3VsYXRlcyBvdXRwdXRzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNvbXB1dGUoY2hpbGRyZW5PYmplY3Q/OiBhbnkpIHtcbiAgICBjb25zdCBpbXBsT3JDaGlsZHJlbiA9IGNoaWxkcmVuT2JqZWN0IHx8IHRoaXMuaW1wbDtcbiAgICBjb25zdCBhcmVDaGlsZHJlbk5lc3RlZCA9ICEhY2hpbGRyZW5PYmplY3Q7XG4gICAgY29uc3QgY2hpbGRyZW46IENoaWxkcmVuID0gYXJlQ2hpbGRyZW5OZXN0ZWRcbiAgICAgID8gaW1wbE9yQ2hpbGRyZW5cbiAgICAgIDogaW1wbE9yQ2hpbGRyZW4uZ3JhcGguY2hpbGRyZW47XG4gICAgY29uc3QgY2hpbGRyZW5OYW1lcyA9IE9iamVjdC5rZXlzKGNoaWxkcmVuKTtcblxuICAgIGZvciAoY29uc3QgY2hpbGROYW1lIG9mIGNoaWxkcmVuTmFtZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2FsY3VsYXRlT3V0cHV0c0ZvckNoaWxkKGNoaWxkcmVuLCB7XG4gICAgICAgIGNoaWxkTmFtZSxcbiAgICAgICAgYXJlQ2hpbGRyZW5OZXN0ZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbXBsO1xuICB9XG59XG4iXX0=
|
|
@@ -4,7 +4,7 @@ tags:
|
|
|
4
4
|
initialize:
|
|
5
5
|
models:
|
|
6
6
|
- name: azure-importer
|
|
7
|
-
path: if-models
|
|
7
|
+
path: "@grnsft/if-unofficial-models"
|
|
8
8
|
model: AzureImporterModel
|
|
9
9
|
kind: plugin
|
|
10
10
|
graph:
|
|
@@ -15,12 +15,12 @@ graph:
|
|
|
15
15
|
config:
|
|
16
16
|
azure-importer:
|
|
17
17
|
inputs:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
- timestamp: '2023-11-02T10:35:31.820Z'
|
|
19
|
+
duration: 3600
|
|
20
|
+
azure-observation-window: 5 min # value and unit must be space separated
|
|
21
|
+
azure-observation-aggregation: 'average'
|
|
22
|
+
azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
|
|
23
|
+
azure-resource-group: vm1_group
|
|
24
|
+
azure-vm-name: vm1
|
|
25
25
|
|
|
26
26
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
name: ccf-demo
|
|
2
2
|
description: example impl invoking CCF model
|
|
3
|
+
tags:
|
|
3
4
|
initialize:
|
|
4
5
|
models:
|
|
5
6
|
- name: ccf
|
|
6
|
-
|
|
7
|
+
model: CloudCarbonFootprint
|
|
8
|
+
path: "@grnsft/if-unofficial-models"
|
|
7
9
|
graph:
|
|
8
10
|
children:
|
|
9
11
|
child:
|
|
@@ -11,8 +13,8 @@ graph:
|
|
|
11
13
|
- ccf
|
|
12
14
|
config:
|
|
13
15
|
ccf:
|
|
14
|
-
vendor: aws
|
|
15
|
-
instance-type: m5n.large
|
|
16
|
+
vendor: 'aws'
|
|
17
|
+
instance-type: 'm5n.large'
|
|
16
18
|
inputs:
|
|
17
19
|
- timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
|
|
18
20
|
duration: 1
|
|
@@ -4,21 +4,29 @@ tags:
|
|
|
4
4
|
initialize:
|
|
5
5
|
models:
|
|
6
6
|
- name: azure-importer
|
|
7
|
-
|
|
7
|
+
model: AzureImporterModel
|
|
8
|
+
path: "@grnsft/if-unofficial-models"
|
|
8
9
|
- name: cloud-instance-metadata
|
|
9
|
-
|
|
10
|
+
model: CloudInstanceMetadataModel
|
|
11
|
+
path: "@grnsft/if-models"
|
|
10
12
|
- name: teads-curve
|
|
11
|
-
|
|
13
|
+
model: TeadsCurveModel
|
|
14
|
+
path: "@grnsft/if-unofficial-models"
|
|
12
15
|
- name: sci-e
|
|
13
|
-
|
|
16
|
+
model: SciEModel
|
|
17
|
+
path: "@grnsft/if-models"
|
|
14
18
|
- name: sci-o
|
|
15
|
-
|
|
19
|
+
model: SciOModel
|
|
20
|
+
path: "@grnsft/if-models"
|
|
16
21
|
- name: sci-e
|
|
17
|
-
|
|
22
|
+
model: SciEModel
|
|
23
|
+
path: "@grnsft/if-models"
|
|
18
24
|
- name: sci-m
|
|
19
|
-
|
|
25
|
+
model: SciMModel
|
|
26
|
+
path: "@grnsft/if-models"
|
|
20
27
|
- name: sci
|
|
21
|
-
|
|
28
|
+
model: SciModel
|
|
29
|
+
path: "@grnsft/if-models"
|
|
22
30
|
graph:
|
|
23
31
|
children:
|
|
24
32
|
child:
|
|
@@ -31,6 +39,8 @@ graph:
|
|
|
31
39
|
- sci-m
|
|
32
40
|
- sci
|
|
33
41
|
config:
|
|
42
|
+
sci-o:
|
|
43
|
+
grid-carbon-intensity: 951
|
|
34
44
|
sci:
|
|
35
45
|
functional-unit: ''
|
|
36
46
|
functional-unit-time: hour
|
|
@@ -43,9 +53,9 @@ graph:
|
|
|
43
53
|
azure-subscription-id: 9de7e19f-8a18-4e73-9451-45fc74e7d0d3
|
|
44
54
|
azure-resource-group: vm1_group
|
|
45
55
|
azure-vm-name: vm1
|
|
46
|
-
grid-carbon-intensity: 951
|
|
47
56
|
total-embodied-emissions: 1533.12
|
|
48
57
|
time-reserved: 300
|
|
49
58
|
expected-lifespan: 94348800 # 3 yrs in seconds
|
|
50
59
|
resources-reserved: 1
|
|
51
60
|
total-resources: 64
|
|
61
|
+
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
name:
|
|
1
|
+
name: cloud-instance-metadata
|
|
2
2
|
description: simple demo invoking metadata lookup
|
|
3
3
|
tags: null
|
|
4
4
|
initialize:
|
|
5
5
|
models:
|
|
6
6
|
- name: cloud-instance-metadata
|
|
7
|
-
|
|
7
|
+
model: CloudInstanceMetadataModel
|
|
8
|
+
path: "@grnsft/if-models"
|
|
8
9
|
graph:
|
|
9
10
|
children:
|
|
10
11
|
child:
|
|
@@ -7,23 +7,20 @@ tags:
|
|
|
7
7
|
initialize:
|
|
8
8
|
models:
|
|
9
9
|
- name: teads-curve
|
|
10
|
-
|
|
10
|
+
model: TeadsCurveModel
|
|
11
|
+
path: "@grnsft/if-unofficial-models"
|
|
11
12
|
- name: sci-e
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
path: ''
|
|
13
|
+
model: SciEModel
|
|
14
|
+
path: "@grnsft/if-models"
|
|
15
15
|
- name: sci-m
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
path: ''
|
|
16
|
+
path: "@grnsft/if-models"
|
|
17
|
+
model: SciMModel
|
|
19
18
|
- name: sci-o
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
path: ''
|
|
19
|
+
model: SciOModel
|
|
20
|
+
path: "@grnsft/if-models"
|
|
23
21
|
- name: sci
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
path: ''
|
|
22
|
+
model: SciModel
|
|
23
|
+
path: "@grnsft/if-models"
|
|
27
24
|
graph:
|
|
28
25
|
children:
|
|
29
26
|
child: # an advanced grouping node
|
|
@@ -5,14 +5,12 @@ initialize:
|
|
|
5
5
|
models:
|
|
6
6
|
- name: sci-e
|
|
7
7
|
kind: plugin
|
|
8
|
-
verbose: false
|
|
9
8
|
model: SciEModel
|
|
10
|
-
path: if-models
|
|
9
|
+
path: "@grnsft/if-models"
|
|
11
10
|
- name: sci-o
|
|
12
|
-
kind: plugin
|
|
13
11
|
verbose: false
|
|
14
12
|
model: SciOModel
|
|
15
|
-
path: if-models
|
|
13
|
+
path: "@grnsft/if-models"
|
|
16
14
|
graph:
|
|
17
15
|
children:
|
|
18
16
|
child:
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
name: tdp-
|
|
1
|
+
name: tdp-finder
|
|
2
|
+
description: demo
|
|
3
|
+
tags:
|
|
2
4
|
initialize:
|
|
3
5
|
models:
|
|
4
6
|
- name: tdp-finder # a model that returns an embodied value given the sci embodied attribution equation.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
path: ''
|
|
7
|
+
model: TdpFinderModel
|
|
8
|
+
path: "@grnsft/if-models"
|
|
8
9
|
graph:
|
|
9
10
|
children:
|
|
10
|
-
|
|
11
|
+
child:
|
|
11
12
|
pipeline:
|
|
12
13
|
- tdp-finder
|
|
13
14
|
config:
|
|
14
|
-
|
|
15
|
-
tdp:
|
|
16
|
-
observations:
|
|
15
|
+
inputs:
|
|
17
16
|
- timestamp: 2023-07-06T00:00
|
|
17
|
+
duration: 300
|
|
18
18
|
physical-processor: AMD 3020e
|
|
19
19
|
|