Skip to content

Commit 938e688

Browse files
authored
Merge pull request #17 from Endava/develop
Merge Develop to Main
2 parents 22ed3d8 + 6aa575d commit 938e688

File tree

4 files changed

+66
-73
lines changed

4 files changed

+66
-73
lines changed

.github/workflows/sonarcloud.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,6 @@ jobs:
6363
-Dsonar.sources=src
6464
-Dsonar.tests=src/__tests__
6565
-Dsonar.test.inclusions=src/**/*.test*.ts
66+
-Dsonar.cpd.exclusions=src/__mocks__/*.ts
6667
-Dsonar.javascript.lcov.reportPaths=./coverage/lcov.info
6768
projectBaseDir: .

sonar-project.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ sonar.scm.provider=git
55
sonar.sources=src
66
sonar.tests=src/__tests__
77
sonar.test.inclusions=src/**/*.test*.ts
8+
sonar.cpd.exclusions=src/__mocks__/*.ts
89
sonar.javascript.lcov.reportPaths=./coverage/lcov.info

src/converter.ts

Lines changed: 63 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,51 @@ export const Converter = (config: YourGlobalConfig) => {
128128
return inputs;
129129
};
130130

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+
131176
/** Returns enriched output array based on input plugin params and VMInstance batch results */
132177
const getVMInstanceOutputs = (
133178
inputs: PluginParams[],
@@ -137,35 +182,21 @@ export const Converter = (config: YourGlobalConfig) => {
137182
const result = response.results[index];
138183

139184
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 =
143187
result.calculation_details.energy_used_memory;
144-
const energy: number = cpu_energy + memory_energy;
145188
const operatingEmissions =
146189
result.memory_estimate.co2e + result.cpu_estimate.co2e;
147190
const embodiedEmissions = result.embodied_cpu_estimate.co2e;
148-
const carbonIntensity = getGridCarbonIntensity(
149-
operatingEmissions,
150-
energy
151-
);
152191

153192
return {
154193
...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+
),
169200
};
170201
});
171202
};
@@ -179,26 +210,14 @@ export const Converter = (config: YourGlobalConfig) => {
179210
const result = response.results[index];
180211

181212
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;
185214
const operatingEmissions = result.co2e;
186-
const carbonIntensity = getGridCarbonIntensity(
187-
operatingEmissions,
188-
energy
189-
);
190215

191216
return {
192217
...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),
202221
};
203222
});
204223
};
@@ -212,26 +231,14 @@ export const Converter = (config: YourGlobalConfig) => {
212231
const result = response.results[index];
213232

214233
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;
218235
const operatingEmissions = result.co2e;
219-
const carbonIntensity = getGridCarbonIntensity(
220-
operatingEmissions,
221-
energy
222-
);
223236

224237
return {
225238
...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),
235242
};
236243
});
237244
};
@@ -245,34 +252,18 @@ export const Converter = (config: YourGlobalConfig) => {
245252
const result = response.results[index];
246253

247254
if (result.error) throw new Error(`Climatiq - ${result.message}`);
248-
249255
const energy: number = result.activity_data.activity_value;
250256
const operatingEmissions = result.co2e;
251-
const carbonIntensity = getGridCarbonIntensity(
252-
operatingEmissions,
253-
energy
254-
);
255257

256258
return {
257259
...input,
258260
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),
267263
};
268264
});
269265
};
270266

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-
276267
return {
277268
toRequestBatch,
278269
toVMInstance,

src/validator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const Validator = () => {
2525
const ERROR_RAMALLOC_REQUIRED =
2626
'RAM Allocation parameter is required, and should be a number';
2727

28-
const getZodErrorMessages = (error: z.ZodError): String => {
28+
const getZodErrorMessages = (error: z.ZodError): string => {
2929
const messages = error.issues.map((issue: ZodIssue) => {
3030
return issue.message;
3131
});

0 commit comments

Comments
 (0)