@@ -128,6 +128,51 @@ export const Converter = (config: YourGlobalConfig) => {
128
128
return inputs ;
129
129
} ;
130
130
131
+ /** Returns summed or component parameters for cpu and/or memory energy */
132
+ const getEnergyOutputParams = (
133
+ cpuEnergy ?: number ,
134
+ memoryEnergy ?: number
135
+ ) : any => {
136
+ const cpuParam = cpuEnergy ? { 'cpu/energy' : cpuEnergy } : { } ;
137
+ const memoryParam = memoryEnergy ? { 'memory/energy' : memoryEnergy } : { } ;
138
+ const componentParams = {
139
+ ...cpuParam ,
140
+ ...memoryParam ,
141
+ } ;
142
+ cpuEnergy ??= 0 ;
143
+ memoryEnergy ??= 0 ;
144
+ return useEnergySum ? { energy : cpuEnergy + memoryEnergy } : componentParams ;
145
+ } ;
146
+
147
+ /** Returns summed or component parameters for operational and embodied emissions */
148
+ const getEmissionOutputParams = (
149
+ operatingEmissions : number ,
150
+ embodiedEmissions ?: number
151
+ ) : any => {
152
+ if ( ! includeCarbonEmissions ) return { } ;
153
+
154
+ const operationalParam = { 'carbon-operational' : operatingEmissions } ;
155
+ const embodiedParam = embodiedEmissions
156
+ ? { 'carbon-embodied' : embodiedEmissions }
157
+ : { } ;
158
+
159
+ const componentParams = {
160
+ ...operationalParam ,
161
+ ...embodiedParam ,
162
+ } ;
163
+ embodiedEmissions ??= 0 ;
164
+
165
+ return useCarbonSum
166
+ ? { carbon : operatingEmissions + embodiedEmissions }
167
+ : componentParams ;
168
+ } ;
169
+
170
+ /** Returns carbon intensity parameter for given electical energy */
171
+ const getCarbonIntensityParam = ( kgCO2e : number , energyKW : number ) : any => {
172
+ if ( ! includeCarbonIntensity ) return { } ;
173
+ return { 'carbon-intensity' : ( kgCO2e / energyKW ) * 1000 } ;
174
+ } ;
175
+
131
176
/** Returns enriched output array based on input plugin params and VMInstance batch results */
132
177
const getVMInstanceOutputs = (
133
178
inputs : PluginParams [ ] ,
@@ -137,35 +182,21 @@ export const Converter = (config: YourGlobalConfig) => {
137
182
const result = response . results [ index ] ;
138
183
139
184
if ( result . error ) throw new Error ( `Climatiq - ${ result . message } ` ) ;
140
-
141
- const cpu_energy : number = result . calculation_details . energy_used_cpu ;
142
- const memory_energy : number =
185
+ const cpuEnergy : number = result . calculation_details . energy_used_cpu ;
186
+ const memoryEnergy : number =
143
187
result . calculation_details . energy_used_memory ;
144
- const energy : number = cpu_energy + memory_energy ;
145
188
const operatingEmissions =
146
189
result . memory_estimate . co2e + result . cpu_estimate . co2e ;
147
190
const embodiedEmissions = result . embodied_cpu_estimate . co2e ;
148
- const carbonIntensity = getGridCarbonIntensity (
149
- operatingEmissions ,
150
- energy
151
- ) ;
152
191
153
192
return {
154
193
...input ,
155
- ...( useEnergySum
156
- ? { energy : energy }
157
- : { 'cpu/energy' : cpu_energy , 'memory/energy' : memory_energy } ) ,
158
- ...( includeCarbonEmissions
159
- ? useCarbonSum
160
- ? { carbon : result . total_co2e }
161
- : {
162
- 'carbon-operational' : operatingEmissions ,
163
- 'carbon-embodied' : embodiedEmissions ,
164
- }
165
- : { } ) ,
166
- ...( includeCarbonIntensity
167
- ? { 'carbon-intensity' : carbonIntensity }
168
- : { } ) ,
194
+ ...getEnergyOutputParams ( cpuEnergy , memoryEnergy ) ,
195
+ ...getEmissionOutputParams ( operatingEmissions , embodiedEmissions ) ,
196
+ ...getCarbonIntensityParam (
197
+ operatingEmissions ,
198
+ cpuEnergy + memoryEnergy
199
+ ) ,
169
200
} ;
170
201
} ) ;
171
202
} ;
@@ -179,26 +210,14 @@ export const Converter = (config: YourGlobalConfig) => {
179
210
const result = response . results [ index ] ;
180
211
181
212
if ( result . error ) throw new Error ( `Climatiq - ${ result . message } ` ) ;
182
-
183
- const cpu_energy : number = result . activity_data . activity_value ;
184
- const energy : number = cpu_energy ;
213
+ const cpuEnergy : number = result . activity_data . activity_value ;
185
214
const operatingEmissions = result . co2e ;
186
- const carbonIntensity = getGridCarbonIntensity (
187
- operatingEmissions ,
188
- energy
189
- ) ;
190
215
191
216
return {
192
217
...input ,
193
- ...( useEnergySum ? { energy : energy } : { 'cpu/energy' : energy } ) ,
194
- ...( includeCarbonEmissions
195
- ? useCarbonSum
196
- ? { carbon : operatingEmissions }
197
- : { 'carbon-operational' : operatingEmissions }
198
- : { } ) ,
199
- ...( includeCarbonIntensity
200
- ? { 'carbon-intensity' : carbonIntensity }
201
- : { } ) ,
218
+ ...getEnergyOutputParams ( cpuEnergy ) ,
219
+ ...getEmissionOutputParams ( operatingEmissions ) ,
220
+ ...getCarbonIntensityParam ( operatingEmissions , cpuEnergy ) ,
202
221
} ;
203
222
} ) ;
204
223
} ;
@@ -212,26 +231,14 @@ export const Converter = (config: YourGlobalConfig) => {
212
231
const result = response . results [ index ] ;
213
232
214
233
if ( result . error ) throw new Error ( `Climatiq - ${ result . message } ` ) ;
215
-
216
- const memory_energy : number = result . activity_data . activity_value ;
217
- const energy : number = memory_energy ;
234
+ const memoryEnergy : number = result . activity_data . activity_value ;
218
235
const operatingEmissions = result . co2e ;
219
- const carbonIntensity = getGridCarbonIntensity (
220
- operatingEmissions ,
221
- energy
222
- ) ;
223
236
224
237
return {
225
238
...input ,
226
- ...( useEnergySum ? { energy : energy } : { 'memory/energy' : memory_energy } ) ,
227
- ...( includeCarbonEmissions
228
- ? useCarbonSum
229
- ? { carbon : operatingEmissions }
230
- : { 'carbon-operational' : operatingEmissions }
231
- : { } ) ,
232
- ...( includeCarbonIntensity
233
- ? { 'carbon-intensity' : carbonIntensity }
234
- : { } ) ,
239
+ ...getEnergyOutputParams ( undefined , memoryEnergy ) ,
240
+ ...getEmissionOutputParams ( operatingEmissions ) ,
241
+ ...getCarbonIntensityParam ( operatingEmissions , memoryEnergy ) ,
235
242
} ;
236
243
} ) ;
237
244
} ;
@@ -245,34 +252,18 @@ export const Converter = (config: YourGlobalConfig) => {
245
252
const result = response . results [ index ] ;
246
253
247
254
if ( result . error ) throw new Error ( `Climatiq - ${ result . message } ` ) ;
248
-
249
255
const energy : number = result . activity_data . activity_value ;
250
256
const operatingEmissions = result . co2e ;
251
- const carbonIntensity = getGridCarbonIntensity (
252
- operatingEmissions ,
253
- energy
254
- ) ;
255
257
256
258
return {
257
259
...input ,
258
260
energy : energy ,
259
- ...( includeCarbonEmissions
260
- ? useCarbonSum
261
- ? { carbon : operatingEmissions }
262
- : { 'carbon-operational' : operatingEmissions }
263
- : { } ) ,
264
- ...( includeCarbonIntensity
265
- ? { 'carbon-intensity' : carbonIntensity }
266
- : { } ) ,
261
+ ...getEmissionOutputParams ( operatingEmissions ) ,
262
+ ...getCarbonIntensityParam ( operatingEmissions , energy ) ,
267
263
} ;
268
264
} ) ;
269
265
} ;
270
266
271
- /** Calculates the carbon intensity of the given electical energy */
272
- const getGridCarbonIntensity = ( kgCO2e : number , energyKW : number ) : number => {
273
- return ( kgCO2e / energyKW ) * 1000 ;
274
- } ;
275
-
276
267
return {
277
268
toRequestBatch,
278
269
toVMInstance,
0 commit comments