1 unstable release
0.1.0 | Oct 31, 2024 |
---|
#656 in Network programming
1,207 downloads per month
Used in 3 crates
(via apollo-router)
46KB
1K
SLoC
apollo-environment-detector
This library provides two functions for easily detecting a ComputeEnvironment
based on a
given weighted threshold.
[dependencies]
apollo-environment-detector = "0.1"
Usage
use apollo_environment_detector::{detect, detect_one, MAX_INDIVIDUAL_WEIGHTING};
// Attempt to detect multiple environments based on a weighting.
let compute_envs = detect(MAX_INDIVIDUAL_WEIGHTING);
println!("{:?}", compute_envs);
// Attempt to detect a single environment based on a weighting.
let compute_env = detect_one(MAX_INDIVIDUAL_WEIGHTING);
println!("{:?}", compute_env);
Detectors
The following environments are able to be detected:
- Amazon Elastic Compute Cloud (EC2)
- Amazon Elastic Container Service (ECS)
- AWS Lambda
- Kubernetes on AWS
- Nomad on AWS
- Azure Containers Apps
- Azure Container Apps Job
- Azure Container Instance
- Kubernetes on Azure
- Azure VM
- Nomad on Azure
- Google Cloud Run (Gen1)
- Google Cloud Run (Gen2)
- Google Cloud Run (Job)
- Google Compute Engine
- Kubernetes on Google Cloud
- Nomad on Google Cloud
- Kubernetes
- Nomad
- QEMU
This library currently supports 2 detection methods: SMBIOS and Environment Variables.
SMBIOS
There are currently 3 data points read during detection on both Linux and Windows:
bios_vendor
product_name
sys_vendor
Threshold Weighting
A detection threshold is represented in the form of a u16
, which has a max of 65535
(2^16-1
) as defined in u16::MAX
.
As we supported multiple detectors, the maximum returned total weighting is 2^15
in order to avoid thresholding and overflows when using multiple detectors. This is exposed as a constant MAX_TOTAL_WEIGHTING
.
Dependencies
~0–23MB
~327K SLoC