@grnsft/if 1.0.2 → 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 (107) 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/storage.d.ts +9 -0
  11. package/build/common/util/storage.js +24 -0
  12. package/build/if-api/config/config.d.ts +9 -0
  13. package/build/if-api/config/config.js +58 -0
  14. package/build/if-api/config/index.d.ts +2 -0
  15. package/build/if-api/config/index.js +8 -0
  16. package/build/if-api/config/strings.d.ts +16 -0
  17. package/build/if-api/config/strings.js +20 -0
  18. package/build/if-api/index.d.ts +2 -0
  19. package/build/if-api/index.js +268 -0
  20. package/build/if-api/types/process-args.d.ts +18 -0
  21. package/build/if-api/types/process-args.js +3 -0
  22. package/build/if-api/util/args.d.ts +5 -0
  23. package/build/if-api/util/args.js +42 -0
  24. package/build/if-metadata-check/config/config.d.ts +5 -0
  25. package/build/if-metadata-check/config/config.js +26 -0
  26. package/build/if-metadata-check/config/strings.d.ts +5 -0
  27. package/build/if-metadata-check/config/strings.js +9 -0
  28. package/build/if-metadata-check/index.d.ts +2 -0
  29. package/build/if-metadata-check/index.js +30 -0
  30. package/build/if-metadata-check/types/plugin.d.ts +7 -0
  31. package/build/if-metadata-check/types/plugin.js +3 -0
  32. package/build/if-metadata-check/types/process-args.d.ts +5 -0
  33. package/build/if-metadata-check/types/process-args.js +3 -0
  34. package/build/if-metadata-check/util/args.d.ts +57 -0
  35. package/build/if-metadata-check/util/args.js +29 -0
  36. package/build/if-metadata-check/util/metadata-checker.d.ts +44 -0
  37. package/build/if-metadata-check/util/metadata-checker.js +99 -0
  38. package/build/if-run/index.js +1 -1
  39. package/build/if-run/lib/aggregate.d.ts +2 -2
  40. package/build/if-run/lib/aggregate.js +5 -19
  41. package/build/if-run/lib/compute.d.ts +1 -1
  42. package/build/if-run/lib/compute.js +10 -9
  43. package/build/if-run/lib/environment.d.ts +5 -1
  44. package/build/if-run/lib/environment.js +21 -16
  45. package/build/if-run/lib/initialize.d.ts +12 -0
  46. package/build/if-run/lib/initialize.js +37 -3
  47. package/build/if-run/lib/regroup.d.ts +3 -2
  48. package/build/if-run/lib/regroup.js +13 -9
  49. package/build/if-run/types/compute.d.ts +1 -1
  50. package/build/if-run/types/compute.js +1 -1
  51. package/helm-chart/.helmignore +23 -0
  52. package/helm-chart/Chart.yaml +24 -0
  53. package/helm-chart/templates/NOTES.txt +22 -0
  54. package/helm-chart/templates/_helpers.tpl +62 -0
  55. package/helm-chart/templates/additionalPlugins.yaml +13 -0
  56. package/helm-chart/templates/deployment.yaml +144 -0
  57. package/helm-chart/templates/disabledPlugins.yaml +11 -0
  58. package/helm-chart/templates/env-configmap.yaml +10 -0
  59. package/helm-chart/templates/env-secret.yaml +10 -0
  60. package/helm-chart/templates/hpa.yaml +32 -0
  61. package/helm-chart/templates/ingress.yaml +43 -0
  62. package/helm-chart/templates/npmrc.yaml +11 -0
  63. package/helm-chart/templates/service.yaml +24 -0
  64. package/helm-chart/templates/serviceaccount.yaml +13 -0
  65. package/helm-chart/templates/tests/test-connection.yaml +15 -0
  66. package/helm-chart/values.yaml +175 -0
  67. package/manifests/examples/bugs/aggregation-error-wrong-metric.yml +173 -0
  68. package/manifests/examples/bugs/input-error-missing-duration.yml +25 -0
  69. package/manifests/examples/bugs/mock-observations-failure-duration-is-zero.yml +33 -0
  70. package/manifests/examples/bugs/pipeline-error-naming-mismatch.yml +32 -0
  71. package/manifests/examples/bugs/pipeline-error-uninitialized-plugin.yml +33 -0
  72. package/manifests/examples/bugs/pipeline-ordering-error.yml +91 -0
  73. package/manifests/examples/builtins/divide/success-denominator-equal-zero.yml +36 -0
  74. package/manifests/examples/builtins/mock-observations/failure-invalid-config-cpu-range.yml +0 -1
  75. package/manifests/examples/builtins/mock-observations/failure-invalid-memory-utilization-range.yml +0 -1
  76. package/manifests/examples/builtins/mock-observations/failure-missing-timestamp-from-param.yml +0 -1
  77. package/manifests/examples/builtins/mock-observations/success.yml +0 -1
  78. package/manifests/examples/builtins/sci/failure-invalid-config-value.yml +0 -1
  79. package/manifests/examples/builtins/sci/failure-missing-input-param.yml +0 -1
  80. package/manifests/examples/builtins/sci/success.yml +0 -1
  81. package/manifests/examples/builtins/sci-embodied/failure-invalid-default-emission-value.yml +22 -0
  82. package/manifests/examples/builtins/time-sync/failure-missing-config.yml +0 -2
  83. package/manifests/examples/builtins/time-sync/success.yml +0 -2
  84. package/manifests/examples/features/aggregate-failure-invalid-metrics.yml +50 -0
  85. package/manifests/examples/features/aggregate-failure-missing-metric-in-inputs.yml +50 -0
  86. package/manifests/examples/features/aggregate-horizontal.yml +58 -0
  87. package/manifests/examples/features/aggregate-vertical.yml +58 -0
  88. package/manifests/examples/features/aggregate.yml +58 -0
  89. package/manifests/examples/pipelines/cloud-metadata-divide.yml +36 -0
  90. package/manifests/examples/pipelines/pipeline-with-mocks.yml +0 -1
  91. package/manifests/examples/pipelines/scenario-5.yml +0 -1
  92. package/manifests/outputs/bugs/mock-observations-failure-duration-is-zero.yaml +0 -1
  93. package/manifests/outputs/builtins/mock-observations/failure-invalid-config-cpu-range.yaml +0 -1
  94. package/manifests/outputs/builtins/mock-observations/failure-invalid-memory-utilization-range.yaml +0 -1
  95. package/manifests/outputs/builtins/mock-observations/failure-missing-timestamp-from-param.yaml +0 -1
  96. package/manifests/outputs/builtins/sci/failure-invalid-config-value.yaml +0 -1
  97. package/manifests/outputs/builtins/sci/failure-missing-input-param.yaml +0 -1
  98. package/manifests/outputs/builtins/time-sync/failure-missing-config.yaml +0 -2
  99. package/manifests/outputs/features/regroup/success.yaml +72 -0
  100. package/manifests/outputs/pipelines/pipeline-with-aggregate.yaml +1291 -0
  101. package/manifests/outputs/pipelines/scenario-3.yaml +126 -0
  102. package/openapi.yaml +424 -0
  103. package/package.json +8 -3
  104. package/with-plugins/Dockerfile +59 -0
  105. package/manifests/outputs/builtins/interpolation/interpolation.yaml +0 -81
  106. package/manifests/outputs/features/failure-invalid-regroup.yaml +0 -87
  107. package/manifests/outputs/features/failure-missing-cloud-instance-type.yaml +0 -86
@@ -4,7 +4,6 @@ tags:
4
4
  initialize:
5
5
  plugins:
6
6
  sci:
7
- kind: plugin
8
7
  method: Sci
9
8
  path: "builtin"
10
9
  # config:
@@ -5,7 +5,6 @@ initialize:
5
5
  #
6
6
  plugins:
7
7
  sci:
8
- kind: plugin
9
8
  method: Sci
10
9
  path: "builtin"
11
10
  config:
@@ -4,7 +4,6 @@ tags:
4
4
  initialize:
5
5
  plugins:
6
6
  sci:
7
- kind: plugin
8
7
  method: Sci
9
8
  path: "builtin"
10
9
  config:
@@ -0,0 +1,22 @@
1
+ name: sci-embodied
2
+ description: failure with `vCPUs` being string instead of number
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ "sci-embodied": # a model that calculates m from te, tir, el, rr and rtor
7
+ method: SciEmbodied
8
+ path: "builtin"
9
+ tree:
10
+ children:
11
+ child:
12
+ pipeline:
13
+ compute:
14
+ - sci-embodied # duration & config -> embodied
15
+ defaults:
16
+ vCPUs: fail
17
+ time-reserved: 3600 # 1hr in seconds
18
+ resources-reserved: 1
19
+ resources-total: 8
20
+ inputs:
21
+ - timestamp: 2023-07-06T00:00
22
+ duration: 3600
@@ -2,8 +2,6 @@ name: time-sync
2
2
  description: missing config
3
3
  tags:
4
4
  initialize:
5
- output:
6
- - yaml
7
5
  plugins:
8
6
  'time-sync':
9
7
  method: TimeSync
@@ -2,8 +2,6 @@ name: time-sync
2
2
  description: successful path
3
3
  tags:
4
4
  initialize:
5
- output:
6
- - yaml
7
5
  plugins:
8
6
  'time-sync':
9
7
  method: TimeSync
@@ -0,0 +1,50 @@
1
+ name: Aggregation
2
+ description: Fails with invalid metric.
3
+ aggregation:
4
+ metrics:
5
+ - 'test'
6
+ type: 'both'
7
+ initialize:
8
+ plugins:
9
+ cloud-metadata:
10
+ path: builtin
11
+ method: CSVLookup
12
+ config:
13
+ filepath: >-
14
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
15
+ query:
16
+ instance-class: cloud/instance-type
17
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
18
+ tree:
19
+ children:
20
+ application:
21
+ pipeline:
22
+ compute:
23
+ - cloud-metadata
24
+ children:
25
+ uk-west:
26
+ children:
27
+ server-1:
28
+ inputs:
29
+ - timestamp: '2024-02-26 00:00:00'
30
+ duration: 300
31
+ cloud/instance-type: m5n.large
32
+ cloud/vendor: aws
33
+ cpu/utilization: 89
34
+ - timestamp: '2024-02-26 00:05:00'
35
+ duration: 300
36
+ cloud/instance-type: m5n.large
37
+ cloud/vendor: aws
38
+ cpu/utilization: 59
39
+ server-2:
40
+ inputs:
41
+ - timestamp: '2024-02-26 00:00:00'
42
+ duration: 300
43
+ cloud/instance-type: m5n.large
44
+ cloud/vendor: aws
45
+ cpu/utilization: 24
46
+ - timestamp: '2024-02-26 00:05:00'
47
+ duration: 300
48
+ cloud/instance-type: m5n.large
49
+ cloud/vendor: aws
50
+ cpu/utilization: 27
@@ -0,0 +1,50 @@
1
+ name: Aggregation
2
+ description: Fails with missing metric in inputs.
3
+ aggregation:
4
+ metrics:
5
+ - 'cpu/utilization'
6
+ type: 'both'
7
+ initialize:
8
+ plugins:
9
+ cloud-metadata:
10
+ path: builtin
11
+ method: CSVLookup
12
+ config:
13
+ filepath: >-
14
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
15
+ query:
16
+ instance-class: cloud/instance-type
17
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
18
+ tree:
19
+ children:
20
+ application:
21
+ pipeline:
22
+ compute:
23
+ - cloud-metadata
24
+ children:
25
+ uk-west:
26
+ children:
27
+ server-1:
28
+ inputs:
29
+ - timestamp: '2024-01-26 00:00:00'
30
+ duration: 300
31
+ cloud/instance-type: m5n.large
32
+ cloud/vendor: aws
33
+ cpu/utilization: 89
34
+ - timestamp: '2024-02-26 00:05:00'
35
+ duration: 300
36
+ cloud/instance-type: m5n.large
37
+ cloud/vendor: aws
38
+ cpu/utilization: 59
39
+ server-2:
40
+ inputs:
41
+ - timestamp: '2024-02-26 00:00:00'
42
+ duration: 300
43
+ cloud/instance-type: m5n.large
44
+ cloud/vendor: aws
45
+ # cpu/utilization: 110
46
+ - timestamp: '2024-02-26 00:15:00'
47
+ duration: 300
48
+ cloud/instance-type: m5n.large
49
+ cloud/vendor: aws
50
+ cpu/utilization: 27
@@ -0,0 +1,58 @@
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
+ path: builtin
11
+ method: CSVLookup
12
+ config:
13
+ filepath: >-
14
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
15
+ query:
16
+ instance-class: cloud/instance-type
17
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
18
+ parameter-metadata:
19
+ inputs:
20
+ cpu/utilization:
21
+ unit: percentage
22
+ description: refers to CPU utilization.
23
+ aggregation-method:
24
+ time: avg
25
+ component: avg
26
+ tree:
27
+ children:
28
+ application:
29
+ pipeline:
30
+ compute:
31
+ - cloud-metadata
32
+ children:
33
+ uk-west:
34
+ children:
35
+ server-1:
36
+ inputs:
37
+ - timestamp: '2024-02-26 00:00:00'
38
+ duration: 300
39
+ cloud/instance-type: m5n.large
40
+ cloud/vendor: aws
41
+ cpu/utilization: 89
42
+ - timestamp: '2024-02-26 00:05:00'
43
+ duration: 300
44
+ cloud/instance-type: m5n.large
45
+ cloud/vendor: aws
46
+ cpu/utilization: 59
47
+ server-2:
48
+ inputs:
49
+ - timestamp: '2024-02-26 00:00:00'
50
+ duration: 300
51
+ cloud/instance-type: m5n.large
52
+ cloud/vendor: aws
53
+ cpu/utilization: 24
54
+ - timestamp: '2024-02-26 00:05:00'
55
+ duration: 300
56
+ cloud/instance-type: m5n.large
57
+ cloud/vendor: aws
58
+ cpu/utilization: 27
@@ -0,0 +1,58 @@
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
+ path: builtin
11
+ method: CSVLookup
12
+ config:
13
+ filepath: >-
14
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
15
+ query:
16
+ instance-class: cloud/instance-type
17
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
18
+ parameter-metadata:
19
+ inputs:
20
+ cpu/utilization:
21
+ unit: percentage
22
+ description: refers to CPU utilization.
23
+ aggregation-method:
24
+ time: avg
25
+ component: avg
26
+ tree:
27
+ children:
28
+ application:
29
+ pipeline:
30
+ compute:
31
+ - cloud-metadata
32
+ children:
33
+ uk-west:
34
+ children:
35
+ server-1:
36
+ inputs:
37
+ - timestamp: '2024-02-26 00:00:00'
38
+ duration: 300
39
+ cloud/instance-type: m5n.large
40
+ cloud/vendor: aws
41
+ cpu/utilization: 89
42
+ - timestamp: '2024-02-26 00:05:00'
43
+ duration: 300
44
+ cloud/instance-type: m5n.large
45
+ cloud/vendor: aws
46
+ cpu/utilization: 59
47
+ server-2:
48
+ inputs:
49
+ - timestamp: '2024-02-26 00:00:00'
50
+ duration: 300
51
+ cloud/instance-type: m5n.large
52
+ cloud/vendor: aws
53
+ cpu/utilization: 24
54
+ - timestamp: '2024-02-26 00:05:00'
55
+ duration: 300
56
+ cloud/instance-type: m5n.large
57
+ cloud/vendor: aws
58
+ cpu/utilization: 27
@@ -0,0 +1,58 @@
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
+ path: builtin
11
+ method: CSVLookup
12
+ config:
13
+ filepath: >-
14
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
15
+ query:
16
+ instance-class: cloud/instance-type
17
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
18
+ parameter-metadata:
19
+ inputs:
20
+ cpu/utilization:
21
+ unit: percentage
22
+ description: refers to CPU utilization.
23
+ aggregation-method:
24
+ time: avg
25
+ component: avg
26
+ tree:
27
+ children:
28
+ application:
29
+ pipeline:
30
+ compute:
31
+ - cloud-metadata
32
+ children:
33
+ uk-west:
34
+ children:
35
+ server-1:
36
+ inputs:
37
+ - timestamp: '2024-02-26 00:00:00'
38
+ duration: 300
39
+ cloud/instance-type: m5n.large
40
+ cloud/vendor: aws
41
+ cpu/utilization: 89
42
+ - timestamp: '2024-02-26 00:05:00'
43
+ duration: 300
44
+ cloud/instance-type: m5n.large
45
+ cloud/vendor: aws
46
+ cpu/utilization: 59
47
+ server-2:
48
+ inputs:
49
+ - timestamp: '2024-02-26 00:00:00'
50
+ duration: 300
51
+ cloud/instance-type: m5n.large
52
+ cloud/vendor: aws
53
+ cpu/utilization: 24
54
+ - timestamp: '2024-02-26 00:05:00'
55
+ duration: 300
56
+ cloud/instance-type: m5n.large
57
+ cloud/vendor: aws
58
+ cpu/utilization: 27
@@ -0,0 +1,36 @@
1
+ name: divide-demo
2
+ description:
3
+ tags:
4
+ initialize:
5
+ plugins:
6
+ cloud-metadata:
7
+ path: builtin
8
+ method: CSVLookup
9
+ config:
10
+ filepath: >-
11
+ https://raw.githubusercontent.com/Green-Software-Foundation/if-data/main/cloud-metdata-aws-instances.csv
12
+ query:
13
+ instance-class: cloud/instance-type
14
+ output: ['cpu-cores-utilized', 'vcpus-allocated']
15
+ divide:
16
+ method: Divide
17
+ path: "builtin"
18
+ config:
19
+ numerator: vcpus-allocated
20
+ denominator: 2
21
+ output: cpu/number-cores
22
+ tree:
23
+ children:
24
+ child:
25
+ pipeline:
26
+ compute:
27
+ - cloud-metadata
28
+ - divide
29
+ defaults:
30
+ cloud/vendor: aws
31
+ cloud/instance-type: m5n.large
32
+ cpu/name: Intel® Core™ i7-1185G7
33
+ inputs:
34
+ - timestamp: 2023-08-06T00:00
35
+ duration: 3600
36
+ cpu/utilization: 80
@@ -8,7 +8,6 @@ aggregation:
8
8
  initialize:
9
9
  plugins:
10
10
  mock-observations:
11
- kind: plugin
12
11
  method: MockObservations
13
12
  path: "builtin"
14
13
  config:
@@ -4,7 +4,6 @@ tags:
4
4
  initialize:
5
5
  plugins:
6
6
  mock-observations:
7
- kind: plugin
8
7
  method: MockObservations
9
8
  path: "builtin"
10
9
  config:
@@ -4,7 +4,6 @@ tags: null
4
4
  initialize:
5
5
  plugins:
6
6
  mock-observations:
7
- kind: plugin
8
7
  method: MockObservations
9
8
  path: builtin
10
9
  config:
@@ -6,7 +6,6 @@ tags: null
6
6
  initialize:
7
7
  plugins:
8
8
  mock-observations:
9
- kind: plugin
10
9
  method: MockObservations
11
10
  path: builtin
12
11
  config:
@@ -4,7 +4,6 @@ tags: null
4
4
  initialize:
5
5
  plugins:
6
6
  mock-observations:
7
- kind: plugin
8
7
  method: MockObservations
9
8
  path: builtin
10
9
  config:
@@ -4,7 +4,6 @@ tags: null
4
4
  initialize:
5
5
  plugins:
6
6
  mock-observations:
7
- kind: plugin
8
7
  method: MockObservations
9
8
  path: builtin
10
9
  config:
@@ -4,7 +4,6 @@ tags: null
4
4
  initialize:
5
5
  plugins:
6
6
  sci:
7
- kind: plugin
8
7
  method: Sci
9
8
  path: builtin
10
9
  execution:
@@ -4,7 +4,6 @@ tags: null
4
4
  initialize:
5
5
  plugins:
6
6
  sci:
7
- kind: plugin
8
7
  method: Sci
9
8
  path: builtin
10
9
  config:
@@ -2,8 +2,6 @@ name: time-sync
2
2
  description: missing config
3
3
  tags: null
4
4
  initialize:
5
- output:
6
- - yaml
7
5
  plugins:
8
6
  time-sync:
9
7
  method: TimeSync
@@ -0,0 +1,72 @@
1
+ name: regroup
2
+ description: successful path
3
+ initialize:
4
+ plugins: {}
5
+ execution:
6
+ command: >-
7
+ /usr/bin/node /home/mitsuru/if/build/if-run -m
8
+ manifests/examples/features/regroup/success.yml -o
9
+ manifests/outputs/features/regroup/success.yaml
10
+ environment:
11
+ if-version: 1.0.2
12
+ os: Ubuntu
13
+ os-version: 24.04.2 LTS
14
+ node-version: 18.19.1
15
+ date-time: 2025-06-03T00:12:17.558Z (UTC)
16
+ dependencies:
17
+ - '@grnsft/if-core@0.0.30'
18
+ - axios@1.8.3
19
+ - csv-parse@5.5.6
20
+ - csv-stringify@6.4.6
21
+ - express@5.1.0
22
+ - js-yaml@4.1.0
23
+ - luxon@3.4.4
24
+ - ts-command-line-args@2.5.1
25
+ - typescript-cubic-spline@1.0.1
26
+ - winston@3.11.0
27
+ - zod@3.23.8
28
+ status: success
29
+ tree:
30
+ children:
31
+ my-app:
32
+ pipeline:
33
+ regroup:
34
+ - cloud/region
35
+ - cloud/instance-type
36
+ children:
37
+ uk-west:
38
+ children:
39
+ A1:
40
+ inputs:
41
+ - timestamp: 2023-07-06T00:00
42
+ duration: 300
43
+ cloud/instance-type: A1
44
+ cloud/region: uk-west
45
+ cpu/utilization: 99
46
+ - timestamp: 2023-07-06T05:00
47
+ duration: 300
48
+ cloud/instance-type: A1
49
+ cloud/region: uk-west
50
+ cpu/utilization: 23
51
+ - timestamp: 2023-07-06T10:00
52
+ duration: 300
53
+ cloud/instance-type: A1
54
+ cloud/region: uk-west
55
+ cpu/utilization: 12
56
+ B1:
57
+ inputs:
58
+ - timestamp: 2023-07-06T00:00
59
+ duration: 300
60
+ cloud/instance-type: B1
61
+ cloud/region: uk-west
62
+ cpu/utilization: 11
63
+ - timestamp: 2023-07-06T05:00
64
+ duration: 300
65
+ cloud/instance-type: B1
66
+ cloud/region: uk-west
67
+ cpu/utilization: 67
68
+ - timestamp: 2023-07-06T10:00
69
+ duration: 300
70
+ cloud/instance-type: B1
71
+ cloud/region: uk-west
72
+ cpu/utilization: 1