@grnsft/if 0.3.1 → 0.3.3-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 (115) hide show
  1. package/.commitlintrc.js +3 -0
  2. package/.release-it.json +18 -0
  3. package/CONTRIBUTING.md +82 -1
  4. package/README.md +34 -23
  5. package/build/builtins/export-csv-raw.js +5 -5
  6. package/build/builtins/export-csv.js +17 -7
  7. package/build/builtins/export-log.js +26 -2
  8. package/build/builtins/export-yaml.js +3 -3
  9. package/build/builtins/group-by.js +20 -5
  10. package/build/builtins/time-sync.js +2 -1
  11. package/build/config/config.d.ts +3 -3
  12. package/build/config/config.js +23 -27
  13. package/build/config/strings.d.ts +1 -0
  14. package/build/config/strings.js +9 -5
  15. package/build/index.js +24 -15
  16. package/build/lib/compute.js +8 -8
  17. package/build/lib/environment.d.ts +5 -0
  18. package/build/lib/environment.js +69 -0
  19. package/build/lib/exhaust.d.ts +2 -1
  20. package/build/lib/exhaust.js +11 -9
  21. package/build/lib/initialize.d.ts +2 -2
  22. package/build/lib/initialize.js +5 -5
  23. package/build/lib/load.d.ts +1 -29
  24. package/build/lib/load.js +6 -7
  25. package/build/lib/parameterize.d.ts +2 -1
  26. package/build/lib/parameterize.js +4 -4
  27. package/build/types/compute.d.ts +2 -2
  28. package/build/types/compute.js +1 -1
  29. package/build/types/environment.d.ts +18 -0
  30. package/build/types/environment.js +3 -0
  31. package/build/types/manifest.d.ts +1 -0
  32. package/build/types/manifest.js +1 -1
  33. package/build/types/process-args.d.ts +13 -1
  34. package/build/types/process-args.js +1 -1
  35. package/build/util/aggregation-helper.js +4 -4
  36. package/build/util/args.d.ts +3 -5
  37. package/build/util/args.js +14 -10
  38. package/build/util/errors.d.ts +1 -1
  39. package/build/util/errors.js +4 -5
  40. package/build/util/helpers.d.ts +8 -2
  41. package/build/util/helpers.js +19 -15
  42. package/build/util/os-checker.d.ts +7 -0
  43. package/build/util/os-checker.js +97 -0
  44. package/build/util/validations.d.ts +90 -4
  45. package/build/util/validations.js +14 -2
  46. package/github-processes.md +168 -0
  47. package/{examples/manifests/pipeline-demo-2.yml → manifests/bugs/aggregation-error-wrong-metric.yml} +18 -39
  48. package/manifests/bugs/azure-importer-ignoring-defaults.yml +61 -0
  49. package/manifests/bugs/azure-importer-incorrect-calculation.yml +56 -0
  50. package/manifests/bugs/initialize-error-no-config.yml +27 -0
  51. package/manifests/bugs/initialize-error-no-path.yml +28 -0
  52. package/manifests/bugs/initialize-error-no-plugins.yml +23 -0
  53. package/manifests/bugs/input-error-missing-duration.yml +21 -0
  54. package/manifests/bugs/pipeline-error-naming-mismatch.yml +28 -0
  55. package/manifests/bugs/pipeline-error-uninitialized-plugin.yml +29 -0
  56. package/{examples/manifests/pipeline-teads-sci.yml → manifests/bugs/pipeline-ordering-error.yml} +15 -15
  57. package/{examples/manifests → manifests/examples}/basic.yml +3 -2
  58. package/{examples/manifests → manifests/examples}/generics.yml +16 -16
  59. package/{examples/manifests/asim-demo.yml → manifests/examples/mock-cpu-util-to-carbon.yml} +3 -7
  60. package/{examples/manifests → manifests/examples}/nesting.yml +19 -18
  61. package/{examples/manifests/pipeline-demo-1.yml → manifests/examples/pipeline-teads-sci.yml} +10 -13
  62. package/{examples/manifests/pipeline-demo.yml → manifests/examples/pipeline-with-aggregate.yml} +12 -12
  63. package/{examples/manifests → manifests/examples}/pipeline-with-mocks.yml +26 -25
  64. package/manifests/features/aggregate-horizontal.yml +44 -0
  65. package/manifests/features/aggregate-vertical.yml +44 -0
  66. package/manifests/features/aggregate.yml +44 -0
  67. package/manifests/integrations/mock-obs-groupby.yml +39 -0
  68. package/manifests/integrations/mock-obs-time-sync.yml +65 -0
  69. package/manifests/plugins/cloud-metadata/failure-invalid-vendor.yaml +21 -0
  70. package/{examples/manifests/cim.yml → manifests/plugins/cloud-metadata/success.yml} +3 -2
  71. package/manifests/plugins/coefficient/failure-invalid-config-input-param.yml +24 -0
  72. package/{examples/manifests/coefficient.yml → manifests/plugins/coefficient/success.yml} +2 -1
  73. package/manifests/plugins/divide/failure-invalid-config-denominator.yml +39 -0
  74. package/manifests/plugins/divide/success.yml +39 -0
  75. package/manifests/plugins/groupby/failure-invalid-config-group.yml +47 -0
  76. package/{examples/manifests/group-by.yml → manifests/plugins/groupby/success.yml} +24 -23
  77. package/manifests/plugins/mock-observations/failure-invalid-config-cpu-range.yml +34 -0
  78. package/{examples/manifests/mock-observation.yml → manifests/plugins/mock-observations/success.yml} +2 -1
  79. package/manifests/plugins/multiply/failure-input-parameter-is-missing.yml +24 -0
  80. package/{examples/manifests/multiply.yml → manifests/plugins/multiply/success.yml} +3 -2
  81. package/manifests/plugins/regex/failure-missing-input-param.yml +24 -0
  82. package/{examples/manifests/regex.yml → manifests/plugins/regex/success.yml} +3 -2
  83. package/manifests/plugins/sci/failure-invalid-config-value.yml +28 -0
  84. package/{examples/manifests/sci.yml → manifests/plugins/sci/success.yml} +3 -2
  85. package/manifests/plugins/sci-m/failure-invalid-default-emission-value.yml +24 -0
  86. package/{examples/manifests/sci-m.yml → manifests/plugins/sci-m/success.yml} +2 -1
  87. package/manifests/plugins/shell/failure-invalid-command.yml +21 -0
  88. package/{examples/manifests/shell.yml → manifests/plugins/shell/success.yml} +3 -2
  89. package/manifests/plugins/sum/failure-missing-input-param.yml +24 -0
  90. package/{examples/manifests/sum.yml → manifests/plugins/sum/success.yml} +3 -2
  91. package/manifests/plugins/tdp-finder/failure-missing-input-param.yml +18 -0
  92. package/{examples/manifests/tdp-finder.yml → manifests/plugins/tdp-finder/success.yml} +2 -1
  93. package/manifests/plugins/time-sync/failure-config-start-later-end.yml +34 -0
  94. package/{examples/manifests/time-sync.yml → manifests/plugins/time-sync/success.yml} +4 -2
  95. package/package.json +4 -2
  96. package/src/builtins/README.md +40 -44
  97. package/examples/manifests/azure-importer.yml +0 -24
  98. package/examples/manifests/basic-demo.yml +0 -70
  99. package/examples/manifests/boavizta-cloud.yml +0 -20
  100. package/examples/manifests/boavizta-pipeline.yml +0 -85
  101. package/examples/manifests/boavizta.yml +0 -26
  102. package/examples/manifests/ccf.yml +0 -20
  103. package/examples/manifests/cloud-metadata.yml +0 -41
  104. package/examples/manifests/co2js.yml +0 -30
  105. package/examples/manifests/csv-export.yml +0 -34
  106. package/examples/manifests/e-mem.yml +0 -21
  107. package/examples/manifests/e-net.yml +0 -22
  108. package/examples/manifests/nesting-demo.yml +0 -89
  109. package/examples/manifests/pipeline-with-generics.yml +0 -147
  110. package/examples/manifests/sci-e.yml +0 -19
  111. package/examples/manifests/sci-o.yml +0 -26
  112. package/examples/manifests/teads-aws.yml +0 -22
  113. package/examples/manifests/teads-curve.yml +0 -20
  114. package/examples/manifests/watt-time.yml +0 -42
  115. /package/{examples/manifests/divide.yml → manifests/integrations/cloud-metadata-divide-boavizta.yml} +0 -0
@@ -1,5 +1,5 @@
1
- name: nesting-demo
2
- description: null
1
+ name: nesting
2
+ description: a manifest that includes nested child components
3
3
  tags:
4
4
  kind: web
5
5
  complexity: moderate
@@ -11,6 +11,7 @@ aggregation:
11
11
  type: "both"
12
12
  params:
13
13
  initialize:
14
+ outputs: ['yaml']
14
15
  plugins:
15
16
  teads-curve:
16
17
  path: "@grnsft/if-unofficial-plugins"
@@ -66,7 +67,7 @@ tree:
66
67
  inputs:
67
68
  - timestamp: "2023-12-12T00:00:00.000Z"
68
69
  cloud/instance-type: A1
69
- region: uk-west
70
+ cloud/region: uk-west
70
71
  duration: 1
71
72
  cpu/utilization: 50
72
73
  network/energy: 0.000001
@@ -74,18 +75,18 @@ tree:
74
75
  duration: 5
75
76
  cpu/utilization: 20
76
77
  cloud/instance-type: A1
77
- region: uk-west
78
+ cloud/region: uk-west
78
79
  network/energy: 0.000001
79
80
  - timestamp: "2023-12-12T00:00:06.000Z"
80
81
  duration: 7
81
82
  cpu/utilization: 15
82
83
  cloud/instance-type: A1
83
- region: uk-west
84
+ cloud/region: uk-west
84
85
  network/energy: 0.000001
85
86
  - timestamp: "2023-12-12T00:00:13.000Z"
86
87
  duration: 30
87
88
  cloud/instance-type: A1
88
- region: uk-west
89
+ cloud/region: uk-west
89
90
  cpu/utilization: 15
90
91
  network/energy: 0.000001
91
92
  child-1:
@@ -107,7 +108,7 @@ tree:
107
108
  inputs:
108
109
  - timestamp: "2023-12-12T00:00:00.000Z"
109
110
  cloud/instance-type: A1
110
- region: uk-west
111
+ cloud/region: uk-west
111
112
  duration: 1
112
113
  cpu/utilization: 50
113
114
  network/energy: 0.000001
@@ -115,18 +116,18 @@ tree:
115
116
  duration: 5
116
117
  cpu/utilization: 20
117
118
  cloud/instance-type: A1
118
- region: uk-west
119
+ cloud/region: uk-west
119
120
  network/energy: 0.000001
120
121
  - timestamp: "2023-12-12T00:00:06.000Z"
121
122
  duration: 7
122
123
  cpu/utilization: 15
123
124
  cloud/instance-type: A1
124
- region: uk-west
125
+ cloud/region: uk-west
125
126
  network/energy: 0.000001
126
127
  - timestamp: "2023-12-12T00:00:13.000Z"
127
128
  duration: 30
128
129
  cloud/instance-type: A1
129
- region: uk-west
130
+ cloud/region: uk-west
130
131
  cpu/utilization: 15
131
132
  network/energy: 0.000001
132
133
  child-2:
@@ -150,7 +151,7 @@ tree:
150
151
  inputs:
151
152
  - timestamp: "2023-12-12T00:00:00.000Z"
152
153
  cloud/instance-type: A1
153
- region: uk-west
154
+ cloud/region: uk-west
154
155
  duration: 1
155
156
  cpu/utilization: 50
156
157
  network/energy: 0.000001
@@ -158,18 +159,18 @@ tree:
158
159
  duration: 5
159
160
  cpu/utilization: 20
160
161
  cloud/instance-type: A1
161
- region: uk-west
162
+ cloud/region: uk-west
162
163
  network/energy: 0.000001
163
164
  - timestamp: "2023-12-12T00:00:06.000Z"
164
165
  duration: 7
165
166
  cpu/utilization: 15
166
167
  cloud/instance-type: A1
167
- region: uk-west
168
+ cloud/region: uk-west
168
169
  network/energy: 0.000001
169
170
  - timestamp: "2023-12-12T00:00:13.000Z"
170
171
  duration: 30
171
172
  cloud/instance-type: A1
172
- region: uk-west
173
+ cloud/region: uk-west
173
174
  cpu/utilization: 15
174
175
  network/energy: 0.000001
175
176
  child-2-1:
@@ -191,7 +192,7 @@ tree:
191
192
  inputs:
192
193
  - timestamp: "2023-12-12T00:00:00.000Z"
193
194
  cloud/instance-type: A1
194
- region: uk-west
195
+ cloud/region: uk-west
195
196
  duration: 1
196
197
  cpu/utilization: 50
197
198
  network/energy: 0.000001
@@ -199,17 +200,17 @@ tree:
199
200
  duration: 5
200
201
  cpu/utilization: 20
201
202
  cloud/instance-type: A1
202
- region: uk-west
203
+ cloud/region: uk-west
203
204
  network/energy: 0.000001
204
205
  - timestamp: "2023-12-12T00:00:06.000Z"
205
206
  duration: 7
206
207
  cpu/utilization: 15
207
208
  cloud/instance-type: A1
208
- region: uk-west
209
+ cloud/region: uk-west
209
210
  network/energy: 0.000001
210
211
  - timestamp: "2023-12-12T00:00:13.000Z"
211
212
  duration: 30
212
213
  cloud/instance-type: A1
213
- region: uk-west
214
+ cloud/region: uk-west
214
215
  cpu/utilization: 15
215
216
  network/energy: 0.000001
@@ -1,14 +1,13 @@
1
- name: pipeline-demo
2
- description:
1
+ name: pipeline-teads-sci
2
+ description: a full pipeline seeded with some hardcoded input data and yielding an SCI score
3
3
  tags:
4
4
  initialize:
5
5
  plugins:
6
- boavizta-cpu:
7
- method: BoaviztaCpuOutput
6
+ "teads-curve":
8
7
  path: "@grnsft/if-unofficial-plugins"
8
+ method: TeadsCurve
9
9
  global-config:
10
- allocation: LINEAR
11
- verbose: true
10
+ interpolation: spline
12
11
  "sum":
13
12
  path: "@grnsft/if-plugins"
14
13
  method: Sum
@@ -41,7 +40,7 @@ tree:
41
40
  children:
42
41
  child-1:
43
42
  pipeline:
44
- - boavizta-cpu
43
+ - teads-curve
45
44
  - sum
46
45
  - sci-m
47
46
  - sci-o
@@ -56,12 +55,10 @@ tree:
56
55
  device/expected-lifespan: 94608000 # 3 years in seconds
57
56
  resources-reserved: 1
58
57
  resources-total: 8
59
- cpu/number-cores: 24
60
- cpu/name: Intel® Core™ i7-1185G7
61
58
  inputs:
62
59
  - timestamp: "2023-12-12T00:00:00.000Z"
63
60
  cloud/instance-type: A1
64
- region: uk-west
61
+ cloud/region: uk-west
65
62
  duration: 1
66
63
  cpu/utilization: 50
67
64
  network/energy: 0.000001
@@ -69,17 +66,17 @@ tree:
69
66
  duration: 5
70
67
  cpu/utilization: 20
71
68
  cloud/instance-type: A1
72
- region: uk-west
69
+ cloud/region: uk-west
73
70
  network/energy: 0.000001
74
71
  - timestamp: "2023-12-12T00:00:06.000Z"
75
72
  duration: 7
76
73
  cpu/utilization: 15
77
74
  cloud/instance-type: A1
78
- region: uk-west
75
+ cloud/region: uk-west
79
76
  network/energy: 0.000001
80
77
  - timestamp: "2023-12-12T00:00:13.000Z"
81
78
  duration: 30
82
79
  cloud/instance-type: A1
83
- region: uk-west
80
+ cloud/region: uk-west
84
81
  cpu/utilization: 15
85
82
  network/energy: 0.000001
@@ -1,5 +1,5 @@
1
- name: realistic-pipeline-demo
2
- description:
1
+ name: pipeline-with-aggregate
2
+ description: a full pipeline with the aggregate feature enabled
3
3
  tags:
4
4
  aggregation:
5
5
  metrics:
@@ -51,7 +51,7 @@ tree:
51
51
  config:
52
52
  group-by:
53
53
  group:
54
- - region
54
+ - cloud/region
55
55
  - cloud/instance-type
56
56
  defaults:
57
57
  cpu/thermal-design-power: 100
@@ -65,23 +65,23 @@ tree:
65
65
  inputs:
66
66
  - timestamp: "2023-12-12T00:00:00.000Z"
67
67
  cloud/instance-type: A1
68
- region: uk-west
68
+ cloud/region: uk-west
69
69
  duration: 1
70
70
  cpu/utilization: 10
71
71
  - timestamp: "2023-12-12T00:00:01.000Z"
72
72
  duration: 5
73
73
  cpu/utilization: 20
74
74
  cloud/instance-type: A1
75
- region: uk-west
75
+ cloud/region: uk-west
76
76
  - timestamp: "2023-12-12T00:00:06.000Z"
77
77
  duration: 7
78
78
  cpu/utilization: 15
79
79
  cloud/instance-type: A1
80
- region: uk-west
80
+ cloud/region: uk-west
81
81
  - timestamp: "2023-12-12T00:00:13.000Z"
82
82
  duration: 30
83
83
  cloud/instance-type: A1
84
- region: uk-west
84
+ cloud/region: uk-west
85
85
  cpu/utilization: 15
86
86
  child-2:
87
87
  pipeline:
@@ -94,7 +94,7 @@ tree:
94
94
  config:
95
95
  group-by:
96
96
  group:
97
- - region
97
+ - cloud/region
98
98
  - cloud/instance-type
99
99
  defaults:
100
100
  cpu/thermal-design-power: 100
@@ -110,19 +110,19 @@ tree:
110
110
  duration: 1
111
111
  cpu/utilization: 30
112
112
  cloud/instance-type: A1
113
- region: uk-west
113
+ cloud/region: uk-west
114
114
  - timestamp: "2023-12-12T00:00:01.000Z"
115
115
  duration: 5
116
116
  cpu/utilization: 28
117
117
  cloud/instance-type: A1
118
- region: uk-west
118
+ cloud/region: uk-west
119
119
  - timestamp: "2023-12-12T00:00:06.000Z"
120
120
  duration: 7
121
121
  cpu/utilization: 40
122
122
  cloud/instance-type: A1
123
- region: uk-west
123
+ cloud/region: uk-west
124
124
  - timestamp: "2023-12-12T00:00:13.000Z"
125
125
  duration: 30
126
126
  cpu/utilization: 33
127
127
  cloud/instance-type: A1
128
- region: uk-west
128
+ cloud/region: uk-west
@@ -1,16 +1,16 @@
1
- name: pipeline-with-mock-obs-demo
2
- description:
1
+ name: pipeline-with-mocks
2
+ description: a full pipeline seeded with data from mock-observations feature
3
3
  tags:
4
4
  aggregation:
5
5
  metrics:
6
- - 'carbon'
7
- type: 'both'
6
+ - "carbon"
7
+ type: "both"
8
8
  initialize:
9
9
  plugins:
10
10
  mock-observations:
11
11
  kind: plugin
12
12
  method: MockObservations
13
- path: '@grnsft/if-plugins'
13
+ path: "@grnsft/if-plugins"
14
14
  global-config:
15
15
  timestamp-from: 2023-07-06T00:00
16
16
  timestamp-to: 2023-07-06T00:10
@@ -19,7 +19,7 @@ initialize:
19
19
  - cloud/instance-type: A1
20
20
  generators:
21
21
  common:
22
- region: uk-west
22
+ cloud/region: uk-west
23
23
  common-key: common-val
24
24
  randint:
25
25
  cpu/utilization:
@@ -53,9 +53,10 @@ initialize:
53
53
  end-time: "2023-12-12T00:01:00.000Z"
54
54
  interval: 5
55
55
  allow-padding: true
56
- 'group-by':
56
+ "group-by":
57
57
  path: builtin
58
58
  method: GroupBy
59
+ outputs: ['yaml']
59
60
  tree:
60
61
  children:
61
62
  child-1:
@@ -69,7 +70,7 @@ tree:
69
70
  config:
70
71
  group-by:
71
72
  group:
72
- - region
73
+ - cloud/region
73
74
  - instance-type
74
75
  defaults:
75
76
  cpu/thermal-design-power: 100
@@ -82,24 +83,24 @@ tree:
82
83
  functional-unit-time: "1 min"
83
84
  inputs:
84
85
  - timestamp: "2023-12-12T00:00:00.000Z"
85
- cloud/instance-type: A1
86
- region: uk-west
86
+ cloud/instance-type: A1
87
+ cloud/region: uk-west
87
88
  duration: 1
88
89
  cpu/utilization: 10
89
90
  - timestamp: "2023-12-12T00:00:01.000Z"
90
91
  duration: 5
91
92
  cpu/utilization: 20
92
- cloud/instance-type: A1
93
- region: uk-west
93
+ cloud/instance-type: A1
94
+ cloud/region: uk-west
94
95
  - timestamp: "2023-12-12T00:00:06.000Z"
95
96
  duration: 7
96
97
  cpu/utilization: 15
97
- cloud/instance-type: A1
98
- region: uk-west
98
+ cloud/instance-type: A1
99
+ cloud/region: uk-west
99
100
  - timestamp: "2023-12-12T00:00:13.000Z"
100
101
  duration: 30
101
- cloud/instance-type: A1
102
- region: uk-west
102
+ cloud/instance-type: A1
103
+ cloud/region: uk-west
103
104
  cpu/utilization: 15
104
105
  child-2:
105
106
  pipeline:
@@ -112,7 +113,7 @@ tree:
112
113
  config:
113
114
  group-by:
114
115
  group:
115
- - region
116
+ - cloud/region
116
117
  - cloud/instance-type
117
118
  defaults:
118
119
  cpu/thermal-design-power: 100
@@ -127,20 +128,20 @@ tree:
127
128
  - timestamp: "2023-12-12T00:00:00.000Z"
128
129
  duration: 1
129
130
  cpu/utilization: 30
130
- cloud/instance-type: A1
131
- region: uk-west
131
+ cloud/instance-type: A1
132
+ cloud/region: uk-west
132
133
  - timestamp: "2023-12-12T00:00:01.000Z"
133
134
  duration: 5
134
135
  cpu/utilization: 28
135
- cloud/instance-type: A1
136
- region: uk-west
136
+ cloud/instance-type: A1
137
+ cloud/region: uk-west
137
138
  - timestamp: "2023-12-12T00:00:06.000Z"
138
139
  duration: 7
139
140
  cpu/utilization: 40
140
- cloud/instance-type: A1
141
- region: uk-west
141
+ cloud/instance-type: A1
142
+ cloud/region: uk-west
142
143
  - timestamp: "2023-12-12T00:00:13.000Z"
143
144
  duration: 30
144
145
  cpu/utilization: 33
145
- cloud/instance-type: A1
146
- region: uk-west
146
+ cloud/instance-type: A1
147
+ cloud/region: uk-west
@@ -0,0 +1,44 @@
1
+ name: Aggregation
2
+ description: Apply `horizontal` aggregation
3
+ aggregation:
4
+ metrics:
5
+ - 'cpu/utilization'
6
+ type: 'horizontal'
7
+ initialize:
8
+ plugins:
9
+ cloud-metadata:
10
+ method: CloudMetadata
11
+ path: "@grnsft/if-plugins"
12
+ tree:
13
+ children:
14
+ application:
15
+ pipeline:
16
+ - cloud-metadata
17
+ children:
18
+ uk-west:
19
+ children:
20
+ server-1:
21
+ inputs:
22
+ - timestamp: '2024-02-26 00:00:00'
23
+ duration: 300
24
+ cloud/instance-type: m5n.large
25
+ cloud/vendor: aws
26
+ cpu/utilization: 89
27
+ - timestamp: '2024-02-26 00:05:00'
28
+ duration: 300
29
+ cloud/instance-type: m5n.large
30
+ cloud/vendor: aws
31
+ cpu/utilization: 59
32
+ server-2:
33
+ inputs:
34
+ - timestamp: '2024-02-26 00:00:00'
35
+ duration: 300
36
+ cloud/instance-type: m5n.large
37
+ cloud/vendor: aws
38
+ cpu/utilization: 24
39
+ - timestamp: '2024-02-26 00:05:00'
40
+ duration: 300
41
+ cloud/instance-type: m5n.large
42
+ cloud/vendor: aws
43
+ cpu/utilization: 27
44
+
@@ -0,0 +1,44 @@
1
+ name: Aggregation
2
+ description: Apply `vertical` aggregation
3
+ aggregation:
4
+ metrics:
5
+ - 'cpu/utilization'
6
+ type: 'vertical'
7
+ initialize:
8
+ plugins:
9
+ cloud-metadata:
10
+ method: CloudMetadata
11
+ path: "@grnsft/if-plugins"
12
+ tree:
13
+ children:
14
+ application:
15
+ pipeline:
16
+ - cloud-metadata
17
+ children:
18
+ uk-west:
19
+ children:
20
+ server-1:
21
+ inputs:
22
+ - timestamp: '2024-02-26 00:00:00'
23
+ duration: 300
24
+ cloud/instance-type: m5n.large
25
+ cloud/vendor: aws
26
+ cpu/utilization: 89
27
+ - timestamp: '2024-02-26 00:05:00'
28
+ duration: 300
29
+ cloud/instance-type: m5n.large
30
+ cloud/vendor: aws
31
+ cpu/utilization: 59
32
+ server-2:
33
+ inputs:
34
+ - timestamp: '2024-02-26 00:00:00'
35
+ duration: 300
36
+ cloud/instance-type: m5n.large
37
+ cloud/vendor: aws
38
+ cpu/utilization: 24
39
+ - timestamp: '2024-02-26 00:05:00'
40
+ duration: 300
41
+ cloud/instance-type: m5n.large
42
+ cloud/vendor: aws
43
+ cpu/utilization: 27
44
+
@@ -0,0 +1,44 @@
1
+ name: Aggregation
2
+ description: Apply both `horizontal` and `vertical` aggregations
3
+ aggregation:
4
+ metrics:
5
+ - 'cpu/utilization'
6
+ type: 'both'
7
+ initialize:
8
+ plugins:
9
+ cloud-metadata:
10
+ method: CloudMetadata
11
+ path: "@grnsft/if-plugins"
12
+ tree:
13
+ children:
14
+ application:
15
+ pipeline:
16
+ - cloud-metadata
17
+ children:
18
+ uk-west:
19
+ children:
20
+ server-1:
21
+ inputs:
22
+ - timestamp: '2024-02-26 00:00:00'
23
+ duration: 300
24
+ cloud/instance-type: m5n.large
25
+ cloud/vendor: aws
26
+ cpu/utilization: 89
27
+ - timestamp: '2024-02-26 00:05:00'
28
+ duration: 300
29
+ cloud/instance-type: m5n.large
30
+ cloud/vendor: aws
31
+ cpu/utilization: 59
32
+ server-2:
33
+ inputs:
34
+ - timestamp: '2024-02-26 00:00:00'
35
+ duration: 300
36
+ cloud/instance-type: m5n.large
37
+ cloud/vendor: aws
38
+ cpu/utilization: 24
39
+ - timestamp: '2024-02-26 00:05:00'
40
+ duration: 300
41
+ cloud/instance-type: m5n.large
42
+ cloud/vendor: aws
43
+ cpu/utilization: 27
44
+
@@ -0,0 +1,39 @@
1
+ name: Mock observations + Group by
2
+ description: Integration of `mock observations` + `groupby plugins`
3
+ initialize:
4
+ plugins:
5
+ mock-observations:
6
+ path: '@grnsft/if-plugins'
7
+ method: MockObservations
8
+ global-config:
9
+ timestamp-from: '2024-03-05T00:00:00.000Z'
10
+ timestamp-to: '2024-03-05T00:01:00.000Z'
11
+ duration: 10
12
+ components:
13
+ - name: server-1
14
+ cloud/instance-type: Standard_E64_v3
15
+ cloud/region: westus3
16
+ - name: server-2
17
+ cloud/instance-type: Standard_E64_v3
18
+ cloud/region: france
19
+ generators:
20
+ common:
21
+ cloud/vendor: azure
22
+ randint:
23
+ cpu/utilization:
24
+ min: 1
25
+ max: 99
26
+ group-by:
27
+ path: 'builtin'
28
+ method: GroupBy
29
+ tree:
30
+ pipeline:
31
+ - mock-observations
32
+ - group-by
33
+ defaults:
34
+ config:
35
+ group-by:
36
+ group:
37
+ - cloud/region
38
+ - name
39
+ inputs: null
@@ -0,0 +1,65 @@
1
+ name: Mock observation and time sync integration
2
+ description: Integration of `mock observation` + `time sync`
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ mock-observations:
7
+ kind: plugin
8
+ method: MockObservations
9
+ path: "@grnsft/if-plugins"
10
+ global-config:
11
+ timestamp-from: 2023-07-06T00:00
12
+ timestamp-to: 2023-07-06T00:10
13
+ duration: 60
14
+ components:
15
+ - cloud/instance-type: A1
16
+ generators:
17
+ common:
18
+ cloud/region: uk-west
19
+ common-key: common-val
20
+ randint:
21
+ cpu/utilization:
22
+ min: 1
23
+ max: 99
24
+ "teads-curve":
25
+ path: "@grnsft/if-unofficial-plugins"
26
+ method: TeadsCurve
27
+ global-config:
28
+ interpolation: spline
29
+ "time-sync":
30
+ method: TimeSync
31
+ path: "builtin"
32
+ global-config:
33
+ start-time: "2023-12-12T00:00:00.000Z"
34
+ end-time: "2023-12-12T00:01:00.000Z"
35
+ interval: 5
36
+ allow-padding: true
37
+ tree:
38
+ children:
39
+ child-1:
40
+ pipeline:
41
+ - teads-curve
42
+ - time-sync
43
+ defaults:
44
+ cpu/thermal-design-power: 100
45
+ inputs:
46
+ - timestamp: "2023-12-12T00:00:00.000Z"
47
+ cloud/instance-type: A1
48
+ cloud/region: uk-west
49
+ duration: 1
50
+ cpu/utilization: 10
51
+ - timestamp: "2023-12-12T00:00:01.000Z"
52
+ duration: 5
53
+ cpu/utilization: 20
54
+ cloud/instance-type: A1
55
+ cloud/region: uk-west
56
+ - timestamp: "2023-12-12T00:00:06.000Z"
57
+ duration: 7
58
+ cpu/utilization: 15
59
+ cloud/instance-type: A1
60
+ cloud/region: uk-west
61
+ - timestamp: "2023-12-12T00:00:13.000Z"
62
+ duration: 30
63
+ cloud/instance-type: A1
64
+ cloud/region: uk-west
65
+ cpu/utilization: 15
@@ -0,0 +1,21 @@
1
+ name: cloud-metadata
2
+ description: failure with invalid `inputs.cloud/vendor`
3
+ tags:
4
+ initialize:
5
+ outputs: ['yaml']
6
+ plugins:
7
+ cloud-metadata:
8
+ method: CloudMetadata
9
+ path: "@grnsft/if-plugins"
10
+ tree:
11
+ children:
12
+ child:
13
+ pipeline:
14
+ - cloud-metadata
15
+ config:
16
+ inputs:
17
+ - timestamp: 2023-07-06T00:00 # [KEYWORD] [NO-SUBFIELDS] time when measurement occurred
18
+ cloud/vendor: gcp
19
+ cloud/instance-type: m5n.large
20
+ duration: 100
21
+ cpu/utilization: 10
@@ -1,7 +1,8 @@
1
- name: cloud-instance-metadata
2
- description: example impl invoking Cloud Instance Metadata plugin
1
+ name: cloud-metadata
2
+ description: successful path
3
3
  tags:
4
4
  initialize:
5
+ outputs: ['yaml']
5
6
  plugins:
6
7
  cloud-metadata:
7
8
  method: CloudMetadata