diff --git a/boaviztapi/dto/consumption_profile/consumption_profile.py b/boaviztapi/dto/consumption_profile/consumption_profile.py index fe005659..8fb8bb84 100644 --- a/boaviztapi/dto/consumption_profile/consumption_profile.py +++ b/boaviztapi/dto/consumption_profile/consumption_profile.py @@ -38,7 +38,7 @@ def mapper_cp_cpu(cp_dto: ConsumptionProfileCPU) -> Tuple[CPUConsumptionProfileM manufacturer, model_range, family = None, None, None if cp_dto.cpu.name is not None: - name, manufacturer, family, model_range, tdp, cores, total_die_size, total_die_size_source, source = attributes_from_cpu_name(cp_dto.cpu.name) + name, manufacturer, family, model_range, tdp, cores, threads, die_size, die_size_source, source = attributes_from_cpu_name(cp_dto.cpu.name) if cp_dto.cpu.manufacturer is not None: cpu.manufacturer.set_input(cp_dto.cpu.manufacturer) diff --git a/docs/docs/contributing/cloud_instance.md b/docs/docs/contributing/cloud_instance.md index e1b18b94..84dc74fe 100644 --- a/docs/docs/contributing/cloud_instance.md +++ b/docs/docs/contributing/cloud_instance.md @@ -32,4 +32,4 @@ The `platform` field must match one of the `id` of the available server archetyp ### Value ranges -Some values can be inputted using ranges like the following: `default;min;max`. For example, if the value is `default;2;8`, it means that the default value is `2` and the range is from `2` to `8`. If the value is `2;1;4`, it means that the default value is `2` and the range is from `1` to `2`. \ No newline at end of file +Some values can be inputted using ranges like the following: `default;min;max`. For example, if the value is `2;1;8`, it means that the default value is `2` and the range is from `1` to `8`. diff --git a/docs/docs/contributing/server.md b/docs/docs/contributing/server.md index 9f66b6b1..aa1bec9d 100644 --- a/docs/docs/contributing/server.md +++ b/docs/docs/contributing/server.md @@ -12,10 +12,10 @@ All available servers are stored in a CSV file named `servers.csv` located at `b | manufacturer | | | Server manufacturer | | | case_type | **Required** | | Server case type | rack | | CPU.units | **Required** | unit | Number of CPU | 2 | -| CPU.name | | | CPU name | | +| CPU.name [^1] | | | CPU name | | | CPU.core_units | | unit | Number of CPU cores per CPU | 24 | | CPU.die_size_per_core | | mm² | Die size per CPU core | 8 | -| CPU.threads | | unit | Number of vCPU per CPU | 32 | +| CPU.vcpu | | unit | Number of vCPU per CPU | 32 | | RAM.units | **Required** | unit | Number of RAM | 1 | | RAM.capacity | | GB | RAM quantity | 1000 | | SSD.units | **Required** | unit | Number of SSD | 0 | @@ -25,20 +25,22 @@ All available servers are stored in a CSV file named `servers.csv` located at `b | GPU.units | **Required** | unit | GPU quantity (not supported yet) | 0 | | GPU.name | | | GPU name | | | GPU.memory_capacity | | GB | GPU memory capacity | | -| POWER_SUPPLY.units | **Required** | unit | Number of power supply[^1] | 2 | -| POWER_SUPPLY.unit_weight | **Required** | kg | Power supply weight[^1] | 2.99;1;5 | -| USAGE.time_workload | **Required** | % | Time workload [^2] | 50;0;100 | -| USAGE.use_time_ratio | **Required** | /1 | Use time ratio[^3] | 1 | +| POWER_SUPPLY.units | **Required** | unit | Number of power supply[^2] | 2 | +| POWER_SUPPLY.unit_weight | **Required** | kg | Power supply weight[^2] | 2.99;1;5 | +| USAGE.time_workload | **Required** | % | Time workload [^3] | 50;0;100 | +| USAGE.use_time_ratio | **Required** | /1 | Use time ratio[^4] | 1 | | USAGE.hours_life_time | **Required** | hours | Hours life time | 35040 | | USAGE.other_consumption_ratio | **Required** | /1 | Other consumption ratio | 0.33 | | WARNINGS | | | Warnings | | -[^1]: (Usually power supply duplicated so POWER_SUPPLY.units = 2. Usually POWER_SUPPLY.unit_weight is unknown, in that case use a range such as 2.99;1;5) +[^1]: If CPU.name is set and the CPU is available in [cpu_specs.csv](./cpu.md), you do not need to fill in the other CPU attributes. The API will complete them based on the CPU.name. -[^2]: (Should be a range between 0 and 100 (50;0;100) without valid justification) +[^2]: (Usually power supply duplicated so POWER_SUPPLY.units = 2. Usually POWER_SUPPLY.unit_weight is unknown, in that case use a range such as 2.99;1;5) -[^3]: (Should be 100% without valid justification so USAGE.use_time_ratio = 1) +[^3]: (Should be a range between 0 and 100 (50;0;100) without valid justification) + +[^4]: (Should be 100% without valid justification so USAGE.use_time_ratio = 1) ### Value ranges -Some values can be inputted using ranges like the following: `default;min;max`. For example, if the value is `4;2;8`, it means that the default value is `4` and the range is from `2` to `8`. \ No newline at end of file +Some values can be inputted using ranges like the following: `default;min;max`. For example, if the value is `4;2;8`, it means that the default value is `4` and the range is from `2` to `8`. diff --git a/docs/docs/getting_started/consumption_profile.md b/docs/docs/getting_started/consumption_profile.md index 5d0afde8..70b2112f 100644 --- a/docs/docs/getting_started/consumption_profile.md +++ b/docs/docs/getting_started/consumption_profile.md @@ -32,10 +32,10 @@ The API will select the average xeon gold consumption profile and adapt it with ```json { - "a": 35.5688, - "b": 0.2438, - "c": 9.6694, - "d": -0.6087 + "a": 35.5688, + "b": 0.2438, + "c": 9.6694, + "d": -0.6087 } ``` @@ -81,10 +81,10 @@ The API will select the average xeon gold consumption profile and adapt it to ma ```json { - "a": 88.92199999999995, - "b": 0.13034943934208817, - "c": 13.521235682053703, - "d": -0.6456240344253034 + "a": 105.9490625645529, + "b": 0.08276489427342926, + "c": 19.892145752325938, + "d": -0.7237683566860724 } ``` diff --git a/docs/docs/getting_started/cpu_component.md b/docs/docs/getting_started/cpu_component.md index ba380bcf..d9abcb99 100644 --- a/docs/docs/getting_started/cpu_component.md +++ b/docs/docs/getting_started/cpu_component.md @@ -34,63 +34,62 @@ Result : ```json { - "gwp": { - "embedded": { - "value": 13.2, - "significant_figures": 5, - "min": 13.062, - "max": 13.594, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 944.95, - "significant_figures": 5, - "min": 57.195, - "max": 2814.0 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 0.020401, - "significant_figures": 5, - "min": 0.020401, - "max": 0.020401, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.00015973, - "significant_figures": 5, - "min": 3.2924e-05, - "max": 0.00066041 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "embedded": { - "value": 210.62, - "significant_figures": 5, - "min": 208.76, - "max": 215.92, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 32012.0, - "significant_figures": 5, - "min": 32.327, - "max": 1164200.0 - }, - "unit": "MJ", - "description": "Consumption of primary energy" - } + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 23.78, + "min": 23.78, + "max": 23.78, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 900.0, + "min": 57.19, + "max": 2814.0 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 0.0204, + "min": 0.0204, + "max": 0.0204, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 0.00016, + "min": 3.292e-05, + "max": 0.0006604 + } + }, + "pe": { + "unit": "MJ", + "description": "Consumption of primary energy", + "embedded": { + "value": 352.9, + "min": 352.9, + "max": 352.9, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 30000.0, + "min": 32.33, + "max": 1164000.0, + "warnings": [ + "Uncertainty from technical characteristics is very important. Results should be interpreted with caution (see min and max values)" + ] + } + } + } } ``` @@ -117,147 +116,155 @@ Result : ```json { - "impacts": { - "gwp": { - "embedded": { - "value": 13.2, - "significant_figures": 5, - "min": 13.062, - "max": 13.594, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 944.95, - "significant_figures": 5, - "min": 57.195, - "max": 2814.0 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - } - }, - "verbose": { "impacts": { - "gwp": { - "embedded": { - "value": 13.2, - "significant_figures": 5, - "min": 13.062, - "max": 13.594, - "warnings": [ - "End of life is not included in the calculation" - ] + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 23.78, + "min": 23.78, + "max": 23.78, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 900.0, + "min": 57.19, + "max": 2814.0 + } + } + }, + "verbose": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 23.78, + "min": 23.78, + "max": 23.78, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 900.0, + "min": 57.19, + "max": 2814.0 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": "not implemented", + "use": "not implemented" + }, + "pe": { + "unit": "MJ", + "description": "Consumption of primary energy", + "embedded": "not implemented", + "use": "not implemented" + } }, - "use": { - "value": 944.95, - "significant_figures": 5, - "min": 57.195, - "max": 2814.0 + "units": { + "value": 1.0, + "status": "ARCHETYPE", + "min": 1.0, + "max": 1.0 }, - "unit": "kgCO2eq", - "description": "Total climate change" - } - }, - "units": { - "value": 1.0, - "status": "ARCHETYPE", - "min": 1.0, - "max": 1.0 - }, - "die_size": { - "value": 157, - "status": "COMPLETED", - "unit": "mm2", - "source": "Average value for Skylake", - "min": 150, - "max": 177 - }, - "model_range": { - "value": "Xeon Gold", - "status": "COMPLETED", - "source": "Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", - "min": "Xeon Gold", - "max": "Xeon Gold" - }, - "manufacturer": { - "value": "Intel", - "status": "COMPLETED", - "source": "Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", - "min": "Intel", - "max": "Intel" - }, - "family": { - "value": "Skylake", - "status": "COMPLETED", - "source": "Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", - "min": "Skylake", - "max": "Skylake" - }, - "name": { - "value": "Intel Xeon Gold 6134", - "status": "COMPLETED", - "source": "fuzzy match", - "min": "Intel Xeon Gold 6134", - "max": "Intel Xeon Gold 6134" - }, - "duration": { - "value": 26280.0, - "unit": "hours" - }, - "avg_power": { - "value": 94.624, - "status": "COMPLETED", - "unit": "W", - "min": 94.624, - "max": 94.624 - }, - "time_workload": { - "value": 50.0, - "status": "ARCHETYPE", - "unit": "%", - "min": 0.0, - "max": 100.0 - }, - "usage_location": { - "value": "EEE", - "status": "DEFAULT", - "unit": "CodSP3 - NCS Country Codes - NATO" - }, - "use_time_ratio": { - "value": 1.0, - "status": "ARCHETYPE", - "unit": "/1", - "min": 1.0, - "max": 1.0 - }, - "hours_life_time": { - "value": 26280.0, - "status": "ARCHETYPE", - "unit": "hours", - "min": 26280.0, - "max": 26280.0 - }, - "params": { - "value": { - "a": 35.5688, - "b": 0.2438, - "c": 9.6694, - "d": -0.6087 - }, - "status": "COMPLETED", - "source": "From CPU model range" - }, - "gwp_factor": { - "value": 0.38, - "status": "DEFAULT", - "unit": "kg CO2eq/kWh", - "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", - "min": 0.023, - "max": 1.13161 + "die_size": { + "value": 694, + "status": "COMPLETED", + "unit": "mm2", + "source": "Max value of cpu_manufacture https://en.wikichip.org/wiki/intel/microarchitectures/skylake_(server)#Extreme_Core_Count_.28XCC.29 : Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", + "min": 694, + "max": 694 + }, + "model_range": { + "value": "Xeon Gold", + "status": "COMPLETED", + "source": "Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", + "min": "Xeon Gold", + "max": "Xeon Gold" + }, + "manufacturer": { + "value": "Intel", + "status": "COMPLETED", + "source": "Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", + "min": "Intel", + "max": "Intel" + }, + "family": { + "value": "Skylake", + "status": "COMPLETED", + "source": "Completed from name name based on https://github.com/cloud-carbon-footprint/cloud-carbon-coefficients/tree/main/data.", + "min": "Skylake", + "max": "Skylake" + }, + "name": { + "value": "Intel Xeon Gold 6134", + "status": "COMPLETED", + "source": "fuzzy match", + "min": "Intel Xeon Gold 6134", + "max": "Intel Xeon Gold 6134" + }, + "duration": { + "value": 26280.0, + "unit": "hours" + }, + "avg_power": { + "value": 94.624, + "status": "COMPLETED", + "unit": "W", + "min": 94.624, + "max": 94.624 + }, + "time_workload": { + "value": 50.0, + "status": "ARCHETYPE", + "unit": "%", + "min": 0.0, + "max": 100.0 + }, + "usage_location": { + "value": "EEE", + "status": "DEFAULT", + "unit": "CodSP3 - NCS Country Codes - NATO" + }, + "use_time_ratio": { + "value": 1.0, + "status": "ARCHETYPE", + "unit": "/1", + "min": 1.0, + "max": 1.0 + }, + "hours_life_time": { + "value": 26280.0, + "status": "ARCHETYPE", + "unit": "hours", + "min": 26280.0, + "max": 26280.0 + }, + "params": { + "value": { + "a": 35.5688, + "b": 0.2438, + "c": 9.6694, + "d": -0.6087 + }, + "status": "COMPLETED", + "source": "From CPU model range" + }, + "gwp_factor": { + "value": 0.38, + "status": "DEFAULT", + "unit": "kg CO2eq/kWh", + "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", + "min": 0.023, + "max": 1.13161 + } } - } } ``` @@ -282,172 +289,170 @@ Result : ```json { - "impacts": { - "gwp": { - "embedded": { - "value": 18.913, - "significant_figures": 5, - "min": 18.913, - "max": 18.913, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 1819.8, - "significant_figures": 5, - "min": 110.15, - "max": 5419.3 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 0.020403, - "significant_figures": 5, - "min": 0.020403, - "max": 0.020403, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.00030761, - "significant_figures": 5, - "min": 6.3406e-05, - "max": 0.0012718 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - } - }, - "verbose": { "impacts": { - "gwp": { - "embedded": { - "value": 18.913, - "significant_figures": 5, - "min": 18.913, - "max": 18.913, - "warnings": [ - "End of life is not included in the calculation" - ] + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 22.22, + "min": 22.22, + "max": 22.22, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 1800.0, + "min": 110.1, + "max": 5419.0 + } }, - "use": { - "value": 1819.8, - "significant_figures": 5, - "min": 110.15, - "max": 5419.3 + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 0.0204, + "min": 0.0204, + "max": 0.0204, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 0.0003, + "min": 6.341e-05, + "max": 0.001272 + } + } + }, + "verbose": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 22.22, + "min": 22.22, + "max": 22.22, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 1800.0, + "min": 110.1, + "max": 5419.0 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 0.0204, + "min": 0.0204, + "max": 0.0204, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 0.0003, + "min": 6.341e-05, + "max": 0.001272 + } + }, + "pe": { + "unit": "MJ", + "description": "Consumption of primary energy", + "embedded": "not implemented", + "use": "not implemented" + } }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 0.020403, - "significant_figures": 5, - "min": 0.020403, - "max": 0.020403, - "warnings": [ - "End of life is not included in the calculation" - ] + "units": { + "value": 1.0, + "status": "ARCHETYPE", + "min": 1.0, + "max": 1.0 }, - "use": { - "value": 0.00030761, - "significant_figures": 5, - "min": 6.3406e-05, - "max": 0.0012718 + "core_units": { + "value": 24, + "status": "INPUT" }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - } - }, - "units": { - "value": 1.0, - "status": "ARCHETYPE", - "min": 1.0, - "max": 1.0 - }, - "core_units": { - "value": 24, - "status": "INPUT" - }, - "die_size": { - "value": 447, - "status": "COMPLETED", - "unit": "mm2", - "source": "Linear regression on Skylake", - "min": 447, - "max": 447 - }, - "family": { - "value": "Skylake", - "status": "CHANGED" - }, - "duration": { - "value": 26280.0, - "unit": "hours" - }, - "avg_power": { - "value": 182.23, - "status": "COMPLETED", - "unit": "W", - "min": 182.23, - "max": 182.23 - }, - "time_workload": { - "value": 50.0, - "status": "ARCHETYPE", - "unit": "%", - "min": 0.0, - "max": 100.0 - }, - "usage_location": { - "value": "EEE", - "status": "DEFAULT", - "unit": "CodSP3 - NCS Country Codes - NATO" - }, - "use_time_ratio": { - "value": 1.0, - "status": "ARCHETYPE", - "unit": "/1", - "min": 1.0, - "max": 1.0 - }, - "hours_life_time": { - "value": 26280.0, - "status": "ARCHETYPE", - "unit": "hours", - "min": 26280.0, - "max": 26280.0 - }, - "params": { - "value": { - "a": 171.2, - "b": 0.0354, - "c": 36.89, - "d": -10.13 - }, - "status": "ARCHETYPE" - }, - "gwp_factor": { - "value": 0.38, - "status": "DEFAULT", - "unit": "kg CO2eq/kWh", - "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", - "min": 0.023, - "max": 1.13161 - }, - "adp_factor": { - "value": 6.42317e-08, - "status": "DEFAULT", - "unit": "kg Sbeq/kWh", - "source": "ADEME Base IMPACTS ®", - "min": 1.324e-08, - "max": 2.65575e-07 + "die_size": { + "value": 615.0, + "status": "COMPLETED", + "unit": "mm2", + "source": "Average value of Skylake with 24 cores", + "min": 615.0, + "max": 615.0 + }, + "family": { + "value": "Skylake", + "status": "CHANGED" + }, + "duration": { + "value": 26280.0, + "unit": "hours" + }, + "avg_power": { + "value": 182.23, + "status": "COMPLETED", + "unit": "W", + "min": 182.23, + "max": 182.23 + }, + "time_workload": { + "value": 50.0, + "status": "ARCHETYPE", + "unit": "%", + "min": 0.0, + "max": 100.0 + }, + "usage_location": { + "value": "EEE", + "status": "DEFAULT", + "unit": "CodSP3 - NCS Country Codes - NATO" + }, + "use_time_ratio": { + "value": 1.0, + "status": "ARCHETYPE", + "unit": "/1", + "min": 1.0, + "max": 1.0 + }, + "hours_life_time": { + "value": 26280.0, + "status": "ARCHETYPE", + "unit": "hours", + "min": 26280.0, + "max": 26280.0 + }, + "params": { + "value": { + "a": 171.2, + "b": 0.0354, + "c": 36.89, + "d": -10.13 + }, + "status": "ARCHETYPE" + }, + "gwp_factor": { + "value": 0.38, + "status": "DEFAULT", + "unit": "kg CO2eq/kWh", + "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", + "min": 0.023, + "max": 1.13161 + }, + "adp_factor": { + "value": 6.42317e-08, + "status": "DEFAULT", + "unit": "kg Sbeq/kWh", + "source": "ADEME Base IMPACTS \u00ae", + "min": 1.324e-08, + "max": 2.65575e-07 + } } - } } ``` @@ -477,25 +482,25 @@ Result : ```json { - "gwp": { - "embedded": { - "value": 0.0010046, - "significant_figures": 5, - "min": 0.00099408, - "max": 0.0010346, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.02352, - "significant_figures": 5, - "min": 0.02352, - "max": 0.02352 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - } + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 0.00181, + "min": 0.00181, + "max": 0.00181, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 0.02352, + "min": 0.02352, + "max": 0.02352 + } + } + } } ``` @@ -525,25 +530,25 @@ Result : ```json { - "gwp": { - "embedded": { - "value": 13.2, - "significant_figures": 5, - "min": 13.062, - "max": 13.594, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 205.09, - "significant_figures": 5, - "min": 205.09, - "max": 205.09 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - } + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 23.78, + "min": 23.78, + "max": 23.78, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 193.6, + "min": 193.6, + "max": 193.6 + } + } + } } ``` diff --git a/docs/docs/getting_started/end_user_devices.md b/docs/docs/getting_started/end_user_devices.md index 90bc2d76..c1309a95 100644 --- a/docs/docs/getting_started/end_user_devices.md +++ b/docs/docs/getting_started/end_user_devices.md @@ -30,47 +30,33 @@ Result : ```json { - "gwp": { - "embedded": { - "value": 181, - "significant_figures": 3, - "min": 181, - "max": 181, - "warnings": [ - "Generic data used for impact calculation." - ] - }, - "use": { - "value": 299.59, - "significant_figures": 5, - "min": 12.089, - "max": 1189.5 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": "not implemented", - "use": { - "value": 5.064e-05, - "significant_figures": 5, - "min": 6.9589e-06, - "max": 0.00027917 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "embedded": "not implemented", - "use": { - "value": 10149, - "significant_figures": 5, - "min": 6.8328, - "max": 492120 - }, - "unit": "MJ", - "description": "Consumption of primary energy" - } + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 181.0, + "min": 181.0, + "max": 181.0, + "warnings": [ + "Generic data used for impact calculation." + ] + }, + "use": "not implemented" + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": "not implemented", + "use": "not implemented" + }, + "pe": { + "unit": "MJ", + "description": "Consumption of primary energy", + "embedded": "not implemented", + "use": "not implemented" + } + } } ``` @@ -101,92 +87,82 @@ This query returns : ```json { - "impacts": { - "gwp": { - "embedded": { - "value": 46.2, - "significant_figures": 3, - "min": 46.2, - "max": 46.2, - "warnings": [ - "Generic data used for impact calculation." - ] - }, - "use": { - "value": 18.028, - "significant_figures": 5, - "min": 18.028, - "max": 18.028 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": "not implemented", - "use": { - "value": 8.9367e-06, - "significant_figures": 5, - "min": 8.9367e-06, - "max": 8.9367e-06 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - } - }, - "verbose": { - "duration": { - "value": 8760, - "unit": "hours" + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 277.0, + "min": 277.0, + "max": 277.0, + "warnings": [ + "Generic data used for impact calculation." + ] + }, + "use": { + "value": 18.03, + "min": 18.03, + "max": 18.03 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": "not implemented", + "use": { + "value": 8.937e-06, + "min": 8.937e-06, + "max": 8.937e-06 + } + } }, - "avg_power": { - "value": 70, - "status": "INPUT", - "unit": "W" - }, - "usage_location": { - "value": "FRA", - "status": "INPUT", - "unit": "CodSP3 - NCS Country Codes - NATO" - }, - "use_time_ratio": { - "value": 0.3, - "status": "INPUT", - "unit": "/1" - }, - "hours_life_time": { - "value": 52560, - "status": "ARCHETYPE", - "unit": "hours", - "min": 52560, - "max": 52560 - }, - "gwp_factor": { - "value": 0.098, - "status": "COMPLETED", - "unit": "kg CO2eq/kWh", - "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", - "min": 0.098, - "max": 0.098 - }, - "adp_factor": { - "value": 4.85798e-08, - "status": "COMPLETED", - "unit": "kg Sbeq/kWh", - "source": "ADEME Base IMPACTS ®", - "min": 4.85798e-08, - "max": 4.85798e-08 - }, - "units": { - "value": 1, - "status": "ARCHETYPE", - "min": 1, - "max": 1 - }, - "type": { - "value": "pro", - "status": "ARCHETYPE" + "verbose": { + "duration": { + "value": 8760.0, + "unit": "hours" + }, + "avg_power": { + "value": 70.0, + "status": "INPUT", + "unit": "W" + }, + "usage_location": { + "value": "FRA", + "status": "INPUT", + "unit": "CodSP3 - NCS Country Codes - NATO" + }, + "use_time_ratio": { + "value": 0.3, + "status": "INPUT", + "unit": "/1" + }, + "gwp_factor": { + "value": 0.098, + "status": "COMPLETED", + "unit": "kg CO2eq/kWh", + "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", + "min": 0.098, + "max": 0.098 + }, + "adp_factor": { + "value": 4.85798e-08, + "status": "COMPLETED", + "unit": "kg Sbeq/kWh", + "source": "ADEME Base IMPACTS \u00ae", + "min": 4.85798e-08, + "max": 4.85798e-08 + }, + "type": { + "value": "pro", + "status": "ARCHETYPE" + }, + "units": { + "value": 1, + "status": "ARCHETYPE", + "min": 1, + "max": 1 + } } - } } ``` For further information see : [The explanation page on terminal and peripherals](../Explanations/devices/terminals_&_peripherals.md) \ No newline at end of file diff --git a/docs/docs/getting_started/single_cloud_instance.md b/docs/docs/getting_started/single_cloud_instance.md index edb655e3..a91880b4 100644 --- a/docs/docs/getting_started/single_cloud_instance.md +++ b/docs/docs/getting_started/single_cloud_instance.md @@ -23,15 +23,972 @@ Results: ```json [ - "r6g.xlarge", - "c5a.4xlarge", - "r5b.xlarge", - "r5dn.metal", - "r5ad.12xlarge", - "r6gd.xlarge", - ... - "m5ad.2xlarge", - "r6g.medium" + "a1.medium", + "a1.large", + "a1.xlarge", + "a1.2xlarge", + "a1.4xlarge", + "a1.metal", + "c1.medium", + "c1.xlarge", + "c3.large", + "c3.xlarge", + "c3.2xlarge", + "c3.4xlarge", + "c3.8xlarge", + "c4.large", + "c4.large.elasticsearch", + "c4.xlarge", + "c4.xlarge.elasticsearch", + "c4.2xlarge", + "c4.2xlarge.elasticsearch", + "c4.4xlarge", + "c4.4xlarge.elasticsearch", + "c4.8xlarge", + "c4.8xlarge.elasticsearch", + "c5.large", + "c5.large.elasticsearch", + "c5.xlarge", + "c5.xlarge.elasticsearch", + "c5.2xlarge", + "c5.2xlarge.elasticsearch", + "c5.4xlarge", + "c5.4xlarge.elasticsearch", + "c5.9xlarge", + "c5.9xlarge.elasticsearch", + "c5.12xlarge", + "c5.18xlarge", + "c5.18xlarge.elasticsearch", + "c5.24xlarge", + "c5.metal", + "c5a.large", + "c5a.xlarge", + "c5a.2xlarge", + "c5a.4xlarge", + "c5a.8xlarge", + "c5a.12xlarge", + "c5a.16xlarge", + "c5a.24xlarge", + "c5ad.large", + "c5ad.xlarge", + "c5ad.2xlarge", + "c5ad.4xlarge", + "c5ad.8xlarge", + "c5ad.12xlarge", + "c5ad.16xlarge", + "c5ad.24xlarge", + "c5d.large", + "c5d.xlarge", + "c5d.2xlarge", + "c5d.4xlarge", + "c5d.9xlarge", + "c5d.12xlarge", + "c5d.18xlarge", + "c5d.24xlarge", + "c5d.metal", + "c5n.large", + "c5n.xlarge", + "c5n.2xlarge", + "c5n.4xlarge", + "c5n.9xlarge", + "c5n.18xlarge", + "c5n.metal", + "c6a.large", + "c6a.xlarge", + "c6a.2xlarge", + "c6a.4xlarge", + "c6a.8xlarge", + "c6a.12xlarge", + "c6a.16xlarge", + "c6a.24xlarge", + "c6a.32xlarge", + "c6a.48xlarge", + "c6a.metal", + "c6g.medium", + "c6g.large", + "c6g.large.elasticsearch", + "c6g.xlarge", + "c6g.xlarge.elasticsearch", + "c6g.2xlarge", + "c6g.2xlarge.elasticsearch", + "c6g.4xlarge", + "c6g.4xlarge.elasticsearch", + "c6g.8xlarge", + "c6g.8xlarge.elasticsearch", + "c6g.12xlarge", + "c6g.12xlarge.elasticsearch", + "c6g.16xlarge", + "c6g.metal", + "c6gd.medium", + "c6gd.large", + "c6gd.xlarge", + "c6gd.2xlarge", + "c6gd.4xlarge", + "c6gd.8xlarge", + "c6gd.12xlarge", + "c6gd.16xlarge", + "c6gd.metal", + "c6gn.medium", + "c6gn.large", + "c6gn.xlarge", + "c6gn.2xlarge", + "c6gn.4xlarge", + "c6gn.8xlarge", + "c6gn.12xlarge", + "c6gn.16xlarge", + "c6i.large", + "c6i.xlarge", + "c6i.2xlarge", + "c6i.4xlarge", + "c6i.8xlarge", + "c6i.12xlarge", + "c6i.16xlarge", + "c6i.24xlarge", + "c6i.32xlarge", + "c6i.metal", + "c6id.large", + "c6id.xlarge", + "c6id.2xlarge", + "c6id.4xlarge", + "c6id.8xlarge", + "c6id.12xlarge", + "c6id.16xlarge", + "c6id.24xlarge", + "c6id.32xlarge", + "c6id.metal", + "c6in.large", + "c6in.xlarge", + "c6in.2xlarge", + "c6in.4xlarge", + "c6in.8xlarge", + "c6in.12xlarge", + "c6in.16xlarge", + "c6in.24xlarge", + "c6in.32xlarge", + "c6in.metal", + "c7a.medium", + "c7a.large", + "c7a.xlarge", + "c7a.2xlarge", + "c7a.4xlarge", + "c7a.8xlarge", + "c7a.12xlarge", + "c7a.16xlarge", + "c7a.24xlarge", + "c7a.32xlarge", + "c7a.48xlarge", + "c7a.metal-48xl", + "c7g.medium", + "c7g.large", + "c7g.xlarge", + "c7g.2xlarge", + "c7g.4xlarge", + "c7g.8xlarge", + "c7g.12xlarge", + "c7g.16xlarge", + "c7g.metal", + "c7gd.medium", + "c7gd.large", + "c7gd.xlarge", + "c7gd.2xlarge", + "c7gd.4xlarge", + "c7gd.8xlarge", + "c7gd.12xlarge", + "c7gd.16xlarge", + "c7gn.medium", + "c7gn.large", + "c7gn.xlarge", + "c7gn.2xlarge", + "c7gn.4xlarge", + "c7gn.8xlarge", + "c7gn.12xlarge", + "c7gn.16xlarge", + "c7i.large", + "c7i.xlarge", + "c7i.2xlarge", + "c7i.4xlarge", + "c7i.8xlarge", + "c7i.12xlarge", + "c7i.16xlarge", + "c7i.24xlarge", + "c7i.48xlarge", + "cc2.8xlarge", + "cr1.8xlarge", + "d2.xlarge", + "d2.2xlarge", + "d2.4xlarge", + "d2.8xlarge", + "d3.xlarge", + "d3.2xlarge", + "d3.4xlarge", + "d3.8xlarge", + "d3en.xlarge", + "d3en.2xlarge", + "d3en.4xlarge", + "d3en.6xlarge", + "d3en.8xlarge", + "d3en.12xlarge", + "dc2.large", + "dc2.8xlarge", + "dl1.24xlarge", + "ds2.xlarge", + "ds2.8xlarge", + "f1.2xlarge", + "f1.4xlarge", + "f1.16xlarge", + "g2.2xlarge", + "g2.8xlarge", + "g3.4xlarge", + "g3.8xlarge", + "g3.16xlarge", + "g3s.xlarge", + "g4ad.xlarge", + "g4ad.2xlarge", + "g4ad.4xlarge", + "g4ad.8xlarge", + "g4ad.16xlarge", + "g4dn.xlarge", + "g4dn.2xlarge", + "g4dn.4xlarge", + "g4dn.8xlarge", + "g4dn.12xlarge", + "g4dn.16xlarge", + "g4dn.metal", + "g5.xlarge", + "g5.2xlarge", + "g5.4xlarge", + "g5.8xlarge", + "g5.12xlarge", + "g5.16xlarge", + "g5.24xlarge", + "g5.48xlarge", + "g5g.xlarge", + "g5g.2xlarge", + "g5g.4xlarge", + "g5g.8xlarge", + "g5g.16xlarge", + "g5g.metal", + "h1.2xlarge", + "h1.4xlarge", + "h1.8xlarge", + "h1.16xlarge", + "hpc7g.4xlarge", + "hpc7g.8xlarge", + "hpc7g.16xlarge", + "hs1.8xlarge", + "i2.large", + "i2.xlarge", + "i2.xlarge.elasticsearch", + "i2.2xlarge", + "i2.2xlarge.elasticsearch", + "i2.4xlarge", + "i2.8xlarge", + "i3.large", + "i3.large.elasticsearch", + "i3.xlarge", + "i3.xlarge.elasticsearch", + "i3.2xlarge", + "i3.2xlarge.elasticsearch", + "i3.4xlarge", + "i3.4xlarge.elasticsearch", + "i3.8xlarge", + "i3.8xlarge.elasticsearch", + "i3.16xlarge", + "i3.16xlarge.elasticsearch", + "i3.metal", + "i3en.large", + "i3en.xlarge", + "i3en.2xlarge", + "i3en.3xlarge", + "i3en.6xlarge", + "i3en.12xlarge", + "i3en.24xlarge", + "i3en.metal", + "i4g.large", + "i4g.xlarge", + "i4g.2xlarge", + "i4g.4xlarge", + "i4g.8xlarge", + "i4g.16xlarge", + "i4i.large", + "i4i.xlarge", + "i4i.2xlarge", + "i4i.4xlarge", + "i4i.8xlarge", + "i4i.16xlarge", + "i4i.32xlarge", + "i4i.metal", + "im4gn.large", + "im4gn.xlarge", + "im4gn.2xlarge", + "im4gn.4xlarge", + "im4gn.8xlarge", + "im4gn.16xlarge", + "inf1.xlarge", + "inf1.2xlarge", + "inf1.6xlarge", + "inf1.24xlarge", + "inf2.xlarge", + "inf2.8xlarge", + "inf2.24xlarge", + "inf2.48xlarge", + "is4gen.medium", + "is4gen.large", + "is4gen.xlarge", + "is4gen.2xlarge", + "is4gen.4xlarge", + "is4gen.8xlarge", + "db.m1.medium", + "m1.medium", + "db.m1.small", + "m1.small", + "db.m1.large", + "m1.large", + "db.m1.xlarge", + "m1.xlarge", + "db.m2.xlarge", + "m2.xlarge", + "db.m2.2xlarge", + "m2.2xlarge", + "db.m2.4xlarge", + "m2.4xlarge", + "cache.m3.medium", + "db.m3.medium", + "m3.medium", + "m3.medium.elasticsearch", + "db.m3.large", + "m3.large", + "m3.large.elasticsearch", + "db.m3.xlarge", + "m3.xlarge", + "m3.xlarge.elasticsearch", + "db.m3.2xlarge", + "m3.2xlarge", + "m3.2xlarge.elasticsearch", + "cache.m4.large", + "db.m4.large", + "m4.large", + "m4.large.elasticsearch", + "cache.m4.xlarge", + "db.m4.xlarge", + "m4.xlarge", + "m4.xlarge.elasticsearch", + "cache.m4.2xlarge", + "db.m4.2xlarge", + "m4.2xlarge", + "m4.2xlarge.elasticsearch", + "cache.m4.4xlarge", + "db.m4.4xlarge", + "m4.4xlarge", + "m4.4xlarge.elasticsearch", + "cache.m4.10xlarge", + "db.m4.10xlarge", + "m4.10xlarge", + "m4.10xlarge.elasticsearch", + "db.m4.16xlarge", + "m4.16xlarge", + "m5.large", + "cache.m5.large", + "db.m5.large", + "m5.large.elasticsearch", + "m5.xlarge", + "cache.m5.xlarge", + "db.m5.xlarge", + "m5.xlarge.elasticsearch", + "m5.2xlarge", + "cache.m5.2xlarge", + "db.m5.2xlarge", + "m5.2xlarge.elasticsearch", + "m5.4xlarge", + "cache.m5.4xlarge", + "db.m5.4xlarge", + "m5.4xlarge.elasticsearch", + "db.m5.8xlarge", + "m5.8xlarge", + "m5.12xlarge", + "cache.m5.12xlarge", + "db.m5.12xlarge", + "m5.12xlarge.elasticsearch", + "m5.16xlarge", + "db.m5.16xlarge", + "m5.24xlarge", + "cache.m5.24xlarge", + "db.m5.24xlarge", + "m5.metal", + "m5a.large", + "m5a.xlarge", + "m5a.2xlarge", + "m5a.4xlarge", + "m5a.8xlarge", + "m5a.12xlarge", + "m5a.16xlarge", + "m5a.24xlarge", + "m5ad.large", + "m5ad.xlarge", + "m5ad.2xlarge", + "m5ad.4xlarge", + "m5ad.8xlarge", + "m5ad.12xlarge", + "m5ad.16xlarge", + "m5ad.24xlarge", + "m5d.large", + "m5d.xlarge", + "m5d.2xlarge", + "m5d.4xlarge", + "m5d.8xlarge", + "m5d.12xlarge", + "m5d.16xlarge", + "m5d.24xlarge", + "m5d.metal", + "m5dn.large", + "m5dn.xlarge", + "m5dn.2xlarge", + "m5dn.4xlarge", + "m5dn.8xlarge", + "m5dn.12xlarge", + "m5dn.16xlarge", + "m5dn.24xlarge", + "m5dn.metal", + "m5n.large", + "m5n.xlarge", + "m5n.2xlarge", + "m5n.4xlarge", + "m5n.8xlarge", + "m5n.12xlarge", + "m5n.16xlarge", + "m5n.24xlarge", + "m5n.metal", + "m5zn.large", + "m5zn.xlarge", + "m5zn.2xlarge", + "m5zn.3xlarge", + "m5zn.6xlarge", + "m5zn.12xlarge", + "m5zn.metal", + "m6a.large", + "m6a.xlarge", + "m6a.2xlarge", + "m6a.4xlarge", + "m6a.8xlarge", + "m6a.12xlarge", + "m6a.16xlarge", + "m6a.24xlarge", + "m6a.32xlarge", + "m6a.48xlarge", + "m6a.metal", + "m6g.medium", + "cache.m6g.large", + "db.m6g.large", + "m6g.large", + "m6g.large.elasticsearch", + "cache.m6g.xlarge", + "db.m6g.xlarge", + "m6g.xlarge", + "m6g.xlarge.elasticsearch", + "cache.m6g.2xlarge", + "db.m6g.2xlarge", + "m6g.2xlarge", + "m6g.2xlarge.elasticsearch", + "cache.m6g.4xlarge", + "db.m6g.4xlarge", + "m6g.4xlarge", + "m6g.4xlarge.elasticsearch", + "cache.m6g.8xlarge", + "db.m6g.8xlarge", + "m6g.8xlarge", + "m6g.8xlarge.elasticsearch", + "cache.m6g.12xlarge", + "db.m6g.12xlarge", + "m6g.12xlarge", + "m6g.12xlarge.elasticsearch", + "cache.m6g.16xlarge", + "db.m6g.16xlarge", + "m6g.16xlarge", + "m6g.metal", + "m6gd.medium", + "m6gd.large", + "m6gd.xlarge", + "m6gd.2xlarge", + "m6gd.4xlarge", + "m6gd.8xlarge", + "m6gd.12xlarge", + "m6gd.16xlarge", + "m6gd.metal", + "m6i.large", + "m6i.xlarge", + "m6i.2xlarge", + "m6i.4xlarge", + "m6i.8xlarge", + "m6i.12xlarge", + "m6i.16xlarge", + "m6i.24xlarge", + "m6i.32xlarge", + "m6i.metal", + "m6id.large", + "m6id.xlarge", + "m6id.2xlarge", + "m6id.4xlarge", + "m6id.8xlarge", + "m6id.12xlarge", + "m6id.16xlarge", + "m6id.24xlarge", + "m6id.32xlarge", + "m6id.metal", + "m6idn.large", + "m6idn.xlarge", + "m6idn.2xlarge", + "m6idn.4xlarge", + "m6idn.8xlarge", + "m6idn.12xlarge", + "m6idn.16xlarge", + "m6idn.24xlarge", + "m6idn.32xlarge", + "m6idn.metal", + "m6in.large", + "m6in.xlarge", + "m6in.2xlarge", + "m6in.4xlarge", + "m6in.8xlarge", + "m6in.12xlarge", + "m6in.16xlarge", + "m6in.24xlarge", + "m6in.32xlarge", + "m6in.metal", + "m7a.medium", + "m7a.large", + "m7a.xlarge", + "m7a.2xlarge", + "m7a.4xlarge", + "m7a.8xlarge", + "m7a.12xlarge", + "m7a.16xlarge", + "m7a.24xlarge", + "m7a.32xlarge", + "m7a.48xlarge", + "m7a.metal-48xl", + "m7g.medium", + "m7g.large", + "m7g.xlarge", + "m7g.2xlarge", + "m7g.4xlarge", + "m7g.8xlarge", + "m7g.12xlarge", + "m7g.16xlarge", + "m7g.metal", + "m7gd.medium", + "m7gd.large", + "m7gd.xlarge", + "m7gd.2xlarge", + "m7gd.4xlarge", + "m7gd.8xlarge", + "m7gd.12xlarge", + "m7gd.16xlarge", + "m7i.large", + "m7i.xlarge", + "m7i.2xlarge", + "m7i.4xlarge", + "m7i.8xlarge", + "m7i.12xlarge", + "m7i.16xlarge", + "m7i.24xlarge", + "m7i.48xlarge", + "m7i-flex.large", + "m7i-flex.xlarge", + "m7i-flex.2xlarge", + "m7i-flex.4xlarge", + "m7i-flex.8xlarge", + "mac1.metal", + "mac2.metal", + "p2.xlarge", + "p2.8xlarge", + "p2.16xlarge", + "p3.2xlarge", + "p3.8xlarge", + "p3.16xlarge", + "p3dn.24xlarge", + "p4d.24xlarge", + "p4de.24xlarge", + "p5.48xlarge", + "db.r3.large", + "r3.large", + "r3.large.elasticsearch", + "db.r3.xlarge", + "r3.xlarge", + "r3.xlarge.elasticsearch", + "cache.r3.2xlarge", + "db.r3.2xlarge", + "r3.2xlarge", + "r3.2xlarge.elasticsearch", + "db.r3.4xlarge", + "r3.4xlarge", + "r3.4xlarge.elasticsearch", + "db.r3.8xlarge", + "r3.8xlarge", + "r3.8xlarge.elasticsearch", + "cache.r4.large", + "db.r4.large", + "r4.large", + "r4.large.elasticsearch", + "cache.r4.xlarge", + "db.r4.xlarge", + "r4.xlarge", + "r4.xlarge.elasticsearch", + "cache.r4.2xlarge", + "db.r4.2xlarge", + "r4.2xlarge", + "r4.2xlarge.elasticsearch", + "cache.r4.4xlarge", + "db.r4.4xlarge", + "r4.4xlarge", + "r4.4xlarge.elasticsearch", + "cache.r4.8xlarge", + "db.r4.8xlarge", + "r4.8xlarge", + "r4.8xlarge.elasticsearch", + "cache.r4.16xlarge", + "db.r4.16xlarge", + "r4.16xlarge", + "r4.16xlarge.elasticsearch", + "cache.r5.large", + "db.r5.large", + "r5.large", + "r5.large.elasticsearch", + "cache.r5.xlarge", + "db.r5.xlarge", + "r5.xlarge", + "r5.xlarge.elasticsearch", + "cache.r5.2xlarge", + "db.r5.2xlarge", + "r5.2xlarge", + "r5.2xlarge.elasticsearch", + "cache.r5.4xlarge", + "db.r5.4xlarge", + "r5.4xlarge", + "r5.4xlarge.elasticsearch", + "db.r5.8xlarge", + "r5.8xlarge", + "cache.r5.12xlarge", + "db.r5.12xlarge", + "r5.12xlarge", + "r5.12xlarge.elasticsearch", + "db.r5.16xlarge", + "r5.16xlarge", + "cache.r5.24xlarge", + "db.r5.24xlarge", + "r5.24xlarge", + "r5.metal", + "r5a.large", + "r5a.xlarge", + "r5a.2xlarge", + "r5a.4xlarge", + "r5a.8xlarge", + "r5a.12xlarge", + "r5a.16xlarge", + "r5a.24xlarge", + "r5ad.large", + "r5ad.xlarge", + "r5ad.2xlarge", + "r5ad.4xlarge", + "r5ad.8xlarge", + "r5ad.12xlarge", + "r5ad.16xlarge", + "r5ad.24xlarge", + "r5b.large", + "r5b.xlarge", + "r5b.2xlarge", + "r5b.4xlarge", + "r5b.8xlarge", + "r5b.12xlarge", + "r5b.16xlarge", + "r5b.24xlarge", + "r5b.metal", + "r5d.large", + "r5d.xlarge", + "r5d.2xlarge", + "r5d.4xlarge", + "r5d.8xlarge", + "r5d.12xlarge", + "r5d.16xlarge", + "r5d.24xlarge", + "r5d.metal", + "r5dn.large", + "r5dn.xlarge", + "r5dn.2xlarge", + "r5dn.4xlarge", + "r5dn.8xlarge", + "r5dn.12xlarge", + "r5dn.16xlarge", + "r5dn.24xlarge", + "r5dn.metal", + "r5n.large", + "r5n.xlarge", + "r5n.2xlarge", + "r5n.4xlarge", + "r5n.8xlarge", + "r5n.12xlarge", + "r5n.16xlarge", + "r5n.24xlarge", + "r5n.metal", + "r6a.large", + "r6a.xlarge", + "r6a.2xlarge", + "r6a.4xlarge", + "r6a.8xlarge", + "r6a.12xlarge", + "r6a.16xlarge", + "r6a.24xlarge", + "r6a.32xlarge", + "r6a.48xlarge", + "r6a.metal", + "r6g.medium", + "cache.r6g.large", + "db.r6g.large", + "r6g.large", + "r6g.large.elasticsearch", + "cache.r6g.xlarge", + "db.r6g.xlarge", + "r6g.xlarge", + "r6g.xlarge.elasticsearch", + "cache.r6g.2xlarge", + "db.r6g.2xlarge", + "r6g.2xlarge", + "r6g.2xlarge.elasticsearch", + "cache.r6g.4xlarge", + "db.r6g.4xlarge", + "r6g.4xlarge", + "r6g.4xlarge.elasticsearch", + "cache.r6g.8xlarge", + "r6g.8xlarge", + "r6g.8xlarge.elasticsearch", + "cache.r6g.12xlarge", + "db.r6g.12xlarge", + "r6g.12xlarge", + "r6g.12xlarge.elasticsearch", + "cache.r6g.16xlarge", + "db.r6g.16xlarge", + "r6g.16xlarge", + "r6g.metal", + "r6gd.medium", + "r6gd.large", + "r6gd.large.elasticsearch", + "r6gd.xlarge", + "r6gd.xlarge.elasticsearch", + "r6gd.2xlarge", + "r6gd.2xlarge.elasticsearch", + "r6gd.4xlarge", + "r6gd.4xlarge.elasticsearch", + "r6gd.8xlarge", + "r6gd.8xlarge.elasticsearch", + "r6gd.12xlarge", + "r6gd.12xlarge.elasticsearch", + "r6gd.16xlarge", + "r6gd.16xlarge.elasticsearch", + "r6gd.metal", + "r6i.large", + "r6i.xlarge", + "r6i.2xlarge", + "r6i.4xlarge", + "r6i.8xlarge", + "r6i.12xlarge", + "r6i.16xlarge", + "r6i.24xlarge", + "r6i.32xlarge", + "r6i.metal", + "r6id.large", + "r6id.xlarge", + "r6id.2xlarge", + "r6id.4xlarge", + "r6id.8xlarge", + "r6id.12xlarge", + "r6id.16xlarge", + "r6id.24xlarge", + "r6id.32xlarge", + "r6id.metal", + "r6idn.large", + "r6idn.xlarge", + "r6idn.2xlarge", + "r6idn.4xlarge", + "r6idn.8xlarge", + "r6idn.12xlarge", + "r6idn.16xlarge", + "r6idn.24xlarge", + "r6idn.32xlarge", + "r6idn.metal", + "r6in.large", + "r6in.xlarge", + "r6in.2xlarge", + "r6in.4xlarge", + "r6in.8xlarge", + "r6in.12xlarge", + "r6in.16xlarge", + "r6in.24xlarge", + "r6in.32xlarge", + "r6in.metal", + "r7a.medium", + "r7a.large", + "r7a.xlarge", + "r7a.2xlarge", + "r7a.4xlarge", + "r7a.8xlarge", + "r7a.12xlarge", + "r7a.16xlarge", + "r7a.24xlarge", + "r7a.32xlarge", + "r7a.48xlarge", + "r7a.metal-48xl", + "r7g.medium", + "r7g.large", + "r7g.xlarge", + "r7g.2xlarge", + "r7g.4xlarge", + "r7g.8xlarge", + "r7g.12xlarge", + "r7g.16xlarge", + "r7g.metal", + "r7gd.medium", + "r7gd.large", + "r7gd.xlarge", + "r7gd.2xlarge", + "r7gd.4xlarge", + "r7gd.8xlarge", + "r7gd.12xlarge", + "r7gd.16xlarge", + "r7iz.large", + "r7iz.xlarge", + "r7iz.2xlarge", + "r7iz.4xlarge", + "r7iz.8xlarge", + "r7iz.12xlarge", + "r7iz.16xlarge", + "r7iz.32xlarge", + "ra3.4xlarge", + "ra3.16xlarge", + "t1.micro", + "cache.t2.micro", + "db.t2.micro", + "cache.t2.small", + "db.t2.small", + "t2.micro", + "t2.micro.elasticsearch", + "t2.nano", + "t2.small", + "t2.small.elasticsearch", + "db.t2.large", + "cache.t2.medium", + "db.t2.medium", + "t2.large", + "t2.medium", + "t2.medium.elasticsearch", + "db.t2.xlarge", + "t2.xlarge", + "db.t2.2xlarge", + "t2.2xlarge", + "db.t3.large", + "t3.large", + "cache.t3.medium", + "db.t3.medium", + "t3.medium", + "t3.medium.elasticsearch", + "cache.t3.micro", + "db.t3.micro", + "t3.micro", + "t3.nano", + "cache.t3.small", + "db.t3.small", + "t3.small", + "t3.small.elasticsearch", + "db.t3.xlarge", + "t3.xlarge", + "db.t3.2xlarge", + "t3.2xlarge", + "t3a.large", + "t3a.medium", + "t3a.micro", + "t3a.nano", + "t3a.small", + "t3a.xlarge", + "t3a.2xlarge", + "t4g.large", + "t4g.medium", + "t4g.micro", + "t4g.nano", + "t4g.small", + "t4g.xlarge", + "t4g.2xlarge", + "trn1.2xlarge", + "trn1.32xlarge", + "trn1n.32xlarge", + "u-12tb1.112xlarge", + "u-12tb1.metal", + "u-18tb1.112xlarge", + "u-18tb1.metal", + "u-24tb1.112xlarge", + "u-24tb1.metal", + "u-3tb1.56xlarge", + "u-6tb1.56xlarge", + "u-6tb1.112xlarge", + "u-6tb1.metal", + "u-9tb1.112xlarge", + "u-9tb1.metal", + "vt1.3xlarge", + "vt1.6xlarge", + "vt1.24xlarge", + "db.x1.16xlarge", + "x1.16xlarge", + "db.x1.32xlarge", + "x1.32xlarge", + "db.x1e.xlarge", + "x1e.xlarge", + "db.x1e.2xlarge", + "x1e.2xlarge", + "db.x1e.4xlarge", + "x1e.4xlarge", + "db.x1e.8xlarge", + "x1e.8xlarge", + "db.x1e.16xlarge", + "x1e.16xlarge", + "db.x1e.32xlarge", + "x1e.32xlarge", + "x2gd.medium", + "x2gd.large", + "x2gd.xlarge", + "x2gd.2xlarge", + "x2gd.4xlarge", + "x2gd.8xlarge", + "x2gd.12xlarge", + "x2gd.16xlarge", + "x2gd.metal", + "x2idn.16xlarge", + "x2idn.24xlarge", + "x2idn.32xlarge", + "x2idn.metal", + "x2iedn.xlarge", + "x2iedn.2xlarge", + "x2iedn.4xlarge", + "x2iedn.8xlarge", + "x2iedn.16xlarge", + "x2iedn.24xlarge", + "x2iedn.32xlarge", + "x2iedn.metal", + "x2iezn.2xlarge", + "x2iezn.4xlarge", + "x2iezn.6xlarge", + "x2iezn.8xlarge", + "x2iezn.12xlarge", + "x2iezn.metal", + "db.z1d.large", + "z1d.large", + "db.z1d.xlarge", + "z1d.xlarge", + "db.z1d.2xlarge", + "z1d.2xlarge", + "db.z1d.3xlarge", + "z1d.3xlarge", + "db.z1d.6xlarge", + "z1d.6xlarge", + "db.z1d.12xlarge", + "z1d.12xlarge", + "z1d.metal" ] ``` @@ -57,25 +1014,25 @@ Results: ```json { - "gwp": { - "embedded": { - "value": 5.3747, - "significant_figures": 5, - "min": 3.0632, - "max": 9.2604, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 17.747, - "significant_figures": 5, - "min": 0.96917, - "max": 63.578 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - } + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 5.4, + "min": 3.063, + "max": 9.26, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 18.0, + "min": 0.9733, + "max": 63.85 + } + } + } } ``` @@ -807,63 +1764,592 @@ Results: ```json { - "gwp": { - "embedded": { - "value": 0.0012271, - "significant_figures": 5, - "min": 0.00069936, - "max": 0.0021142, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.00085713, - "significant_figures": 5, - "min": 0.00077335, - "max": 0.0010311 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 1.31e-07, - "significant_figures": 5, - "min": 9.0536e-08, - "max": 1.9033e-07, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 4.24891e-10, - "significant_figures": 6, - "min": 3.8336e-10, - "max": 5.11147e-10 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "embedded": { - "value": 0.015979, - "significant_figures": 5, - "min": 0.0090939, - "max": 0.027168, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.098736, - "significant_figures": 5, - "min": 0.089085, - "max": 0.11878 + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 5.4, + "min": 3.063, + "max": 9.26, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 18.0, + "min": 0.9733, + "max": 63.85 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 0.00057, + "min": 0.0003965, + "max": 0.0008337, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 3e-06, + "min": 5.603e-07, + "max": 1.498e-05 + } + } }, - "unit": "MJ", - "description": "Consumption of primary energy" - } + "verbose": { + "units": { + "value": 1, + "status": "ARCHETYPE", + "min": 1, + "max": 1 + }, + "vcpu": { + "value": 1.0, + "status": "ARCHETYPE" + }, + "memory": { + "value": 8.0, + "status": "ARCHETYPE", + "unit": "GB" + }, + "avg_power": { + "value": 5.354039687499999, + "status": "COMPLETED", + "unit": "W", + "min": 4.8307125, + "max": 6.44095 + }, + "duration": { + "value": 8760.0, + "unit": "hours" + }, + "ASSEMBLY-1": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 0.02609, + "min": 0.02609, + "max": 0.02609, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 5.508e-09, + "min": 5.508e-09, + "max": 5.508e-09, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + } + }, + "units": { + "value": 1, + "status": "ARCHETYPE", + "min": 1, + "max": 1 + }, + "duration": { + "value": 8760.0, + "unit": "hours" + } + }, + "CPU-1": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 0.07465, + "min": 0.07465, + "max": 0.07465, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 6.0, + "min": 0.3533, + "max": 17.38 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 7.97e-05, + "min": 7.97e-05, + "max": 7.97e-05, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 1e-06, + "min": 2.034e-07, + "max": 4.08e-06 + } + } + }, + "units": { + "value": 1.0, + "status": "ARCHETYPE", + "min": 1.0, + "max": 1.0 + }, + "core_units": { + "value": 64, + "status": "COMPLETED", + "source": "Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": 64, + "max": 64 + }, + "die_size": { + "value": 457, + "status": "COMPLETED", + "unit": "mm2", + "source": "Value of cpu_manufacture https://en.wikichip.org/wiki/annapurna_labs/alpine/alc12b00 : Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": 457, + "max": 457 + }, + "model_range": { + "value": "Graviton2", + "status": "COMPLETED", + "source": "Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": "Graviton2", + "max": "Graviton2" + }, + "manufacturer": { + "value": "Annapurna Labs", + "status": "COMPLETED", + "source": "Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": "Annapurna Labs", + "max": "Annapurna Labs" + }, + "family": { + "value": "Graviton2", + "status": "COMPLETED", + "source": "Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": "Graviton2", + "max": "Graviton2" + }, + "name": { + "value": "Annapurna Labs Graviton2", + "status": "COMPLETED", + "source": "fuzzy match", + "min": "Annapurna Labs Graviton2", + "max": "Annapurna Labs Graviton2" + }, + "tdp": { + "value": 150, + "status": "COMPLETED", + "unit": "W", + "source": "Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": 150, + "max": 150 + }, + "threads": { + "value": 64, + "status": "COMPLETED", + "source": "Completed from name name based on https://docs.google.com/spreadsheets/d/1DqYgQnEDLQVQm5acMAhLgHLD8xXCG9BIrk-_Nv6jF3k/edit#gid=224728652.", + "min": 64, + "max": 64 + }, + "duration": { + "value": 8760.0, + "unit": "hours" + }, + "avg_power": { + "value": 1.75359375, + "status": "COMPLETED", + "unit": "W", + "min": 1.75359375, + "max": 1.75359375 + }, + "time_workload": { + "value": 50.0, + "status": "ARCHETYPE", + "unit": "%", + "min": 0.0, + "max": 100.0 + }, + "usage_location": { + "value": "EEE", + "status": "DEFAULT", + "unit": "CodSP3 - NCS Country Codes - NATO" + }, + "use_time_ratio": { + "value": 1.0, + "status": "ARCHETYPE", + "unit": "/1", + "min": 1.0, + "max": 1.0 + }, + "hours_life_time": { + "value": 35040.0, + "status": "COMPLETED", + "unit": "hours", + "source": "from device", + "min": 35040.0, + "max": 35040.0 + }, + "workloads": { + "value": [ + { + "load_percentage": 0, + "power_watt": 18.0 + }, + { + "load_percentage": 10, + "power_watt": 48.0 + }, + { + "load_percentage": 50, + "power_watt": 112.5 + }, + { + "load_percentage": 100, + "power_watt": 153.0 + } + ], + "status": "COMPLETED", + "unit": "workload_rate:W" + }, + "params": { + "value": { + "a": 76.2719009422506, + "b": 0.06416377550196647, + "c": 20.45110311208281, + "d": -2.8366153241302814 + }, + "status": "COMPLETED", + "source": "From TDP" + }, + "gwp_factor": { + "value": 0.38, + "status": "DEFAULT", + "unit": "kg CO2eq/kWh", + "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", + "min": 0.023, + "max": 1.13161 + }, + "adp_factor": { + "value": 6.42317e-08, + "status": "DEFAULT", + "unit": "kg Sbeq/kWh", + "source": "ADEME Base IMPACTS \u00ae", + "min": 1.324e-08, + "max": 2.65575e-07 + } + }, + "RAM-1": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 3.9, + "min": 2.179, + "max": 7.366, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 120.0, + "min": 7.324, + "max": 360.4 + } + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 0.00021, + "min": 0.0001587, + "max": 0.0003072, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": { + "value": 2e-05, + "min": 4.216e-06, + "max": 8.457e-05 + } + } + }, + "units": { + "value": 16.0, + "status": "ARCHETYPE", + "min": 16.0, + "max": 16.0 + }, + "capacity": { + "value": 32.0, + "status": "ARCHETYPE", + "unit": "GB", + "min": 32.0, + "max": 32.0 + }, + "density": { + "value": 1.2443636363636363, + "status": "COMPLETED", + "unit": "GB/cm2", + "source": "Average of 11 rows", + "min": 0.625, + "max": 2.375 + }, + "duration": { + "value": 8760.0, + "unit": "hours" + }, + "avg_power": { + "value": 2.272, + "status": "COMPLETED", + "unit": "W", + "min": 2.272, + "max": 2.272 + }, + "time_workload": { + "value": 50.0, + "status": "ARCHETYPE", + "unit": "%", + "min": 0.0, + "max": 100.0 + }, + "usage_location": { + "value": "EEE", + "status": "DEFAULT", + "unit": "CodSP3 - NCS Country Codes - NATO" + }, + "use_time_ratio": { + "value": 1.0, + "status": "ARCHETYPE", + "unit": "/1", + "min": 1.0, + "max": 1.0 + }, + "hours_life_time": { + "value": 35040.0, + "status": "COMPLETED", + "unit": "hours", + "source": "from device", + "min": 35040.0, + "max": 35040.0 + }, + "params": { + "value": { + "a": 9.088 + }, + "status": "COMPLETED", + "source": "(ram_electrical_factor_per_go : 0.284) * (ram_capacity: 32.0) " + }, + "gwp_factor": { + "value": 0.38, + "status": "DEFAULT", + "unit": "kg CO2eq/kWh", + "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", + "min": 0.023, + "max": 1.13161 + }, + "adp_factor": { + "value": 6.42317e-08, + "status": "DEFAULT", + "unit": "kg Sbeq/kWh", + "source": "ADEME Base IMPACTS \u00ae", + "min": 1.324e-08, + "max": 2.65575e-07 + } + }, + "POWER_SUPPLY-1": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 0.57, + "min": 0.1898, + "max": 0.9492, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 0.00019, + "min": 6.484e-05, + "max": 0.0003242, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + } + }, + "units": { + "value": 2.0, + "status": "ARCHETYPE", + "min": 2.0, + "max": 2.0 + }, + "unit_weight": { + "value": 2.99, + "status": "ARCHETYPE", + "unit": "kg", + "min": 1.0, + "max": 5.0 + }, + "duration": { + "value": 8760.0, + "unit": "hours" + } + }, + "CASE-1": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 0.59, + "min": 0.3355, + "max": 0.5859, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 7.9e-05, + "min": 7.891e-05, + "max": 0.0001081, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + } + }, + "units": { + "value": 1, + "status": "ARCHETYPE", + "min": 1, + "max": 1 + }, + "case_type": { + "value": "rack", + "status": "ARCHETYPE" + }, + "duration": { + "value": 8760.0, + "unit": "hours" + } + }, + "MOTHERBOARD-1": { + "impacts": { + "gwp": { + "unit": "kgCO2eq", + "description": "Total climate change", + "embedded": { + "value": 0.2582, + "min": 0.2582, + "max": 0.2582, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + }, + "adp": { + "unit": "kgSbeq", + "description": "Use of minerals and fossil ressources", + "embedded": { + "value": 1.441e-05, + "min": 1.441e-05, + "max": 1.441e-05, + "warnings": [ + "End of life is not included in the calculation" + ] + }, + "use": "not implemented" + } + }, + "units": { + "value": 1, + "status": "ARCHETYPE", + "min": 1, + "max": 1 + }, + "duration": { + "value": 8760.0, + "unit": "hours" + } + }, + "usage_location": { + "value": "EEE", + "status": "DEFAULT", + "unit": "CodSP3 - NCS Country Codes - NATO" + }, + "use_time_ratio": { + "value": 1.0, + "status": "ARCHETYPE", + "unit": "/1", + "min": 1.0, + "max": 1.0 + }, + "hours_life_time": { + "value": 35040.0, + "status": "COMPLETED", + "unit": "hours", + "source": "from device", + "min": 35040.0, + "max": 35040.0 + }, + "other_consumption_ratio": { + "value": 0.33, + "status": "ARCHETYPE", + "unit": "ratio /1", + "min": 0.2, + "max": 0.6 + }, + "gwp_factor": { + "value": 0.38, + "status": "DEFAULT", + "unit": "kg CO2eq/kWh", + "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", + "min": 0.023, + "max": 1.13161 + }, + "adp_factor": { + "value": 6.42317e-08, + "status": "DEFAULT", + "unit": "kg Sbeq/kWh", + "source": "ADEME Base IMPACTS \u00ae", + "min": 1.324e-08, + "max": 2.65575e-07 + } + } } ``` diff --git a/docs/docs/getting_started/single_server.md b/docs/docs/getting_started/single_server.md index 434ceade..f6b1d784 100644 --- a/docs/docs/getting_started/single_server.md +++ b/docs/docs/getting_started/single_server.md @@ -14,8 +14,7 @@ Query: ```bash # Query the data for `compute_medium` curl -X 'GET' \ - '{{ endpoint }}/v1/server/?archetype=compute_medium&verbose=false' - -H 'accept: application/json' + '{{ endpoint }}/v1/server/?archetype=compute_medium&verbose=false' -H 'accept: application/json' ``` This query returns : @@ -29,63 +28,7 @@ Results: ```json { - "gwp": { - "embedded": { - "value": 661.28, - "significant_figures": 5, - "min": 256.4, - "max": 1980.9, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 6937.1, - "significant_figures": 5, - "min": 193.81, - "max": 48551 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 0.13048, - "significant_figures": 5, - "min": 0.060814, - "max": 0.24361, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.00117259, - "significant_figures": 6, - "min": 0.000111569, - "max": 0.0113943 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "embedded": { - "value": 9035.9, - "significant_figures": 5, - "min": 3480, - "max": 25941, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 235000, - "significant_figures": 5, - "min": 109.55, - "max": 20086000 - }, - "unit": "MJ", - "description": "Consumption of primary energy" - } + "detail": "compute_medium not found" } ``` @@ -601,63 +544,7 @@ curl -X 'POST' \ Result : ```json { - "gwp": { - "embedded": { - "value": 1501.4, - "significant_figures": 5, - "min": 1501.4, - "max": 1501.4, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 10317, - "significant_figures": 5, - "min": 563.41, - "max": 36960 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 0.16588, - "significant_figures": 5, - "min": 0.16588, - "max": 0.16588, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.00174387, - "significant_figures": 6, - "min": 0.000324327, - "max": 0.00867403 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "embedded": { - "value": 19475, - "significant_figures": 5, - "min": 19475, - "max": 19475, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 349500, - "significant_figures": 5, - "min": 318.45, - "max": 15290000 - }, - "unit": "MJ", - "description": "Consumption of primary energy" - } + "detail": "compute_medium not found" } ``` @@ -699,101 +586,8 @@ Result : ```json { - "impacts": { - "gwp": { - "other": { - "value": 660, - "significant_figures": 2, - "min": 350, - "max": 1100 - }, - "use": { - "value": 220, - "significant_figures": 2, - "min": 220, - "max": 220 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "other": { - "value": 0.13, - "significant_figures": 2, - "min": 0.064, - "max": 0.22 - }, - "use": { - "value": 0.000107, - "significant_figures": 3, - "min": 0.000107, - "max": 0.000107 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "other": { - "value": 9000, - "significant_figures": 2, - "min": 4600, - "max": 15000 - }, - "use": { - "value": 24800, - "significant_figures": 3, - "min": 24800, - "max": 24800 - }, - "unit": "MJ", - "description": "Consumption of primary energy" - } - }, - "verbose": { - ... - "avg_power": { - "value": 250, - "status": "INPUT", - "unit": "W" - }, - "usage_location": { - "value": "FRA", - "status": "INPUT", - "unit": "CodSP3 - NCS Country Codes - NATO" - }, - "use_time": { - "value": 8785, - "status": "INPUT", - "unit": "hours" - }, - "gwp_factor": { - "value": 0.098, - "status": "COMPLETED", - "unit": "kg CO2eq/kWh", - "source": "https://www.sciencedirect.com/science/article/pii/S0306261921012149", - "min": 0.098, - "max": 0.098 - }, - "adp_factor": { - "value": 4.86e-08, - "status": "COMPLETED", - "unit": "kg Sbeq/kWh", - "source": "ADEME BASE IMPACT", - "min": 4.86e-08, - "max": 4.86e-08 - }, - "pe_factor": { - "value": 11.289, - "status": "COMPLETED", - "unit": "MJ/kWh", - "source": "ADPf / (1-%renewable_energy)", - "min": 11.289, - "max": 11.289 - } - } + "detail": "compute_medium not found" } - - ``` ## Retrieve the impacts with a custom workload @@ -825,78 +619,7 @@ curl -X 'POST' \ Result : ```json { - "impacts": { - "gwp": { - "embedded": { - "value": 165.32, - "significant_figures": 5, - "min": 64.099, - "max": 495.23, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 595.3, - "significant_figures": 5, - "min": 273.24, - "max": 1407.3 - }, - "unit": "kgCO2eq", - "description": "Total climate change" - }, - "adp": { - "embedded": { - "value": 0.032619, - "significant_figures": 5, - "min": 0.015204, - "max": 0.060903, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 0.0002951, - "significant_figures": 6, - "min": 0.000135448, - "max": 0.000697639 - }, - "unit": "kgSbeq", - "description": "Use of minerals and fossil ressources" - }, - "pe": { - "embedded": { - "value": 2259, - "significant_figures": 5, - "min": 870.01, - "max": 6485.2, - "warnings": [ - "End of life is not included in the calculation" - ] - }, - "use": { - "value": 68575, - "significant_figures": 5, - "min": 31476, - "max": 162120 - }, - "unit": "MJ", - "description": "Consumption of primary energy" - } - }, - "verbose": { - "duration": { - "value": 8760, - "unit": "hours" - }, - ... - "units": { - "value": 1, - "status": "ARCHETYPE", - "min": 1, - "max": 1 - } - } + "detail": "compute_medium not found" } ``` diff --git a/docs/docs/release_notes.md b/docs/docs/release_notes.md index 74abf988..c4495293 100644 --- a/docs/docs/release_notes.md +++ b/docs/docs/release_notes.md @@ -1,11 +1,9 @@ -## v1.2.0 +## v1.2.1 ## What's Changed Adding new cloud instances is now easier. Simply define the resources they reserve and identify the server archetype on which the instance will be hosted. Refer to the [contribution](contributing) documentation for more information. -**Full Changelog**: https://github.com/Boavizta/boaviztapi/compare/v1.1.0...v1.2.0 - ### Internal changes * Externalizing impacts computation outside the asset's model by creating a service for this purpose (boaviztapi/service/impacts_computation.py) @@ -20,6 +18,11 @@ Adding new cloud instances is now easier. Simply define the resources they reser * https://github.com/Boavizta/boaviztapi/pull/243 * https://github.com/Boavizta/boaviztapi/pull/248 +### Breaking changes + +* 'instance_per_instance' is no longer included in the verbose output of the cloud route. +* Previously, the verbose returned the impacts of each platform's components in their entirety. Now, only the impacts associated with the instance are returned for each component. Components impacts returned by cloud router shouldn't be divided by ```instance_per_instance```. + ## Contributors ### New Contributors @@ -33,7 +36,6 @@ Adding new cloud instances is now easier. Simply define the resources they reser @samuelrince @JacobValdemar - ## v1.1.0 ## What's Changed @@ -390,4 +392,4 @@ https://boavizta.cmakers.io/blog/numerique-et-environnement-comment-evaluer-l-em * Integrate Boavizta database * Implement new devices * Support use case implementations -* Implement scope 1 & 2 \ No newline at end of file +* Implement scope 1 & 2 diff --git a/docs/utils/__init__.py b/docs/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/docs/utils/script_tutorial_output_automation.py b/docs/utils/script_tutorial_output_automation.py new file mode 100644 index 00000000..64c84ccd --- /dev/null +++ b/docs/utils/script_tutorial_output_automation.py @@ -0,0 +1,87 @@ +import json +import os +import re +import subprocess +import typing + +""" +script_tutorial_output_automation.py + +Description : This file contains all the functions needed for automate the "getting started" part of the documentation. +The code iterates over all doc files of this part, and search for every curl command in bash code bloc on the markdown, +execute them and replace the nearest json after the curl command by the result of the command. +""" + + +def change_json_to_tempvalue(read_file: str,index_to_change): + regex_to_find_json_in_md = r"```json\w*[^`]+```*" + json_to_change = read_file[index_to_change:] + file_until_json = read_file[:index_to_change] + json_to_change = re.sub(regex_to_find_json_in_md, "changeThis", json_to_change,count=1) + return f"{file_until_json}{json_to_change}" + +def find_curl_commands(read_file: str): + regex_to_find_curl_in_md = r"```bash\s*([\s\S]*?)```" + result = re.finditer(regex_to_find_curl_in_md, read_file) + curl_command = [] + for bash_command in result: + bash_found = bash_command.group() + if "curl" in bash_found: + bash_found = re.sub(r'^```bash\n|\n```|#.*\n', '', bash_found) + curl_command.append([bash_found,bash_command.end()]) + return curl_command + + +def replace_curl_with_localhost(read_curl: typing.List[str]): + for i in range(0, len(read_curl)): + read_curl[i] = read_curl[i].replace("{{ endpoint }}", "http://localhost:5000") + return read_curl + + +def execute_curl(curl_to_execute: str): + curl_to_execute = f"curl --no-progress-meter {curl_to_execute[4::]}" + return subprocess.check_output(curl_to_execute, shell=True).decode("utf-8") + + +def parse_result_to_json(result: str): + result = json.loads(result) + result = json.dumps(result, sort_keys=False, indent=4) + result = f"```json\n{result}\n```" + return result + + +def replace_placeholder_by_json(curl_results: str, file_to_replace: str): + return file_to_replace.replace("changeThis", curl_results, 1) + + +def add_all_json_results_to_md(found_curl_commands: typing.List[str], read_file_to_replace: str, index_of_curl_commands: +typing.List[str]): + for i in range(0, len(found_curl_commands)): + read_file_to_replace = change_json_to_tempvalue(read_file_to_replace,int(index_of_curl_commands[i])) + curl_result = execute_curl(found_curl_commands[i]) + curl_result = parse_result_to_json(curl_result) + read_file_to_replace = replace_placeholder_by_json(curl_result, read_file_to_replace) + return read_file_to_replace + + +def change_one_read_file(file_content: str): + found_curl_commands = find_curl_commands(file_content) + list_of_curl_commands = [curl_commands[0] for curl_commands in found_curl_commands] + index_curl_commands = [index[1] for index in found_curl_commands] + found_curl_commands = replace_curl_with_localhost(list_of_curl_commands) + return add_all_json_results_to_md(found_curl_commands, file_content,index_curl_commands) + + +def generate_tutorial_output(directory_to_check: str): + list_of_files = [file for file in os.listdir(directory_to_check) if file.endswith(".md")] + for file_name in list_of_files: + with(open(f"{directory_to_check}/{file_name}", "r+") as file): + changed_file = change_one_read_file(file.read()) + file.seek(0) + file.write(changed_file) + file.truncate() + + +if __name__ == "__main__" : + # run the script + generate_tutorial_output("../docs/getting_started") \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 87e62ff5..c5734d59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "boaviztapi" -version = "1.1.0" +version = "1.2.2" description = "An API to access Boavizta's methodologies and footprint reference data" authors = [] readme = "README.md" diff --git a/tests/api/test_cp.py b/tests/api/test_cp.py new file mode 100644 index 00000000..ecce1826 --- /dev/null +++ b/tests/api/test_cp.py @@ -0,0 +1,14 @@ +import pytest +from httpx import AsyncClient + +from boaviztapi.main import app + +pytest_plugins = ('pytest_asyncio',) + + +@pytest.mark.asyncio +async def test_complete_cpu(): + async with AsyncClient(app=app, base_url="http://test") as ac: + res = await ac.post('/v1/consumption_profile/cpu', json={"cpu": {"name": "intel xeon gold 6134", "tdp": 130}}) + + assert res.json() == {'a': 35.5688, 'b': 0.2438, 'c': 9.6694, 'd': -0.6087} \ No newline at end of file diff --git a/tests/utils/unit/tutorial_output_unit_tests.py b/tests/utils/unit/tutorial_output_unit_tests.py new file mode 100644 index 00000000..41f0a0a4 --- /dev/null +++ b/tests/utils/unit/tutorial_output_unit_tests.py @@ -0,0 +1,69 @@ +import filecmp +import shutil + +import pytest + +from docs.utils.script_tutorial_output_automation import * + + +def test_change_json(): + json_md_test = '```json\n {\n "a": "b",\n "b": "c"\n }\n ```' + assert change_json_to_tempvalue(json_md_test,0) == "changeThis" + json_md_not_good = '```json\n {\n "a": "b",\n "b": "c"\n }\n' + assert change_json_to_tempvalue(json_md_not_good,0) != "changeThis" + + +def test_find_curl_commands(): + curl_to_find = "```bash\ncurl https://www.google.com\n``` \n ```bash\ncurl -I https://www.google.com\n```" + found_curl_commands = [x[0] for x in find_curl_commands(curl_to_find)] + assert found_curl_commands == ['curl https://www.google.com', 'curl -I https://www.google.com'] + incorrect_bash_command = "```bash\n ping https://www.google.com\n``` \n ```bash\ncurl -I https://www.google.com\n```" + found_curl_commands = [x[0] for x in find_curl_commands(incorrect_bash_command)] + assert found_curl_commands == ['curl -I https://www.google.com'] + + +def test_execute_curl(): + curl_to_test = """curl -X 'POST' \ + 'http://localhost:5000/v1/consumption_profile/cpu' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "cpu": { + "name": "intel xeon gold 6134", + "tdp": 130 + } + }' +""" + assert execute_curl(curl_to_test) == '{"a":35.5688,"b":0.2438,"c":9.6694,"d":-0.6087}' # Change to verify if valid json is returned + + +def test_replace_curl_command(): + curl_commands = ["""curl -X 'POST' + '{{ endpoint }}/v1/component/cpu?verbose=false&allocation=TOTAL' + -H 'accept: application/json' + -H 'Content-Type: application/json' + -d '{ + "name": "intel xeon gold 6134" +}'"""] + curl_commands = replace_curl_with_localhost(curl_commands) + + assert "localhost:5000" in curl_commands[0] + + +def test_parse_result_to_json(): + result = '{"a":35.5688,"b":0.2438,"c":9.6694,"d":-0.6087}' + assert parse_result_to_json(result) == """```json +{ + "a": 35.5688, + "b": 0.2438, + "c": 9.6694, + "d": -0.6087 +} +```""" + + +def test_replace_placeholder_by_json(): + json_exemple = '{\n "a": 35.5688,\n "b": 0.2438,\n "c": 9.6694,\n "d": -0.6087\n}' + placeholder_to_change = "changeThis" + assert replace_placeholder_by_json(json_exemple, placeholder_to_change) == json_exemple +