| 173 | |
| 174 | |
| 175 | def detect_cloud_provider() -> str: |
| 176 | if os.environ.get("SYS_JOB_NAME"): |
| 177 | return "PDC" |
| 178 | # Try detecting through vendor file |
| 179 | vendor_files = [ |
| 180 | "/sys/class/dmi/id/product_version", |
| 181 | "/sys/class/dmi/id/bios_vendor", |
| 182 | "/sys/class/dmi/id/product_name", |
| 183 | "/sys/class/dmi/id/chassis_asset_tag", |
| 184 | "/sys/class/dmi/id/sys_vendor", |
| 185 | ] |
| 186 | # Mapping of identifiable strings to cloud providers |
| 187 | cloud_identifiers = { |
| 188 | "amazon": "AWS", |
| 189 | "microsoft corporation": "AZURE", |
| 190 | "google": "GCP", |
| 191 | "oraclecloud": "OCI", |
| 192 | } |
| 193 | |
| 194 | for vendor_file in vendor_files: |
| 195 | path = Path(vendor_file) |
| 196 | if path.is_file(): |
| 197 | file_content = path.read_text().lower() |
| 198 | for identifier, provider in cloud_identifiers.items(): |
| 199 | if identifier in file_content: |
| 200 | return provider |
| 201 | |
| 202 | # Try detecting through environment variables |
| 203 | env_to_cloud_provider = { |
| 204 | "RUNPOD_DC_ID": "RUNPOD", |
| 205 | } |
| 206 | for env_var, provider in env_to_cloud_provider.items(): |
| 207 | if os.environ.get(env_var): |
| 208 | return provider |
| 209 | |
| 210 | return "Unknown" |
| 211 | |
| 212 | |
| 213 | def simple_convert(obj): |