{"id":24375214,"url":"https://github.com/enricopesce/ocareport","last_synced_at":"2026-04-12T08:35:30.386Z","repository":{"id":239290291,"uuid":"798704176","full_name":"enricopesce/ocareport","owner":"enricopesce","description":"CLI tool to check Oracle Cloud compute shape availability - find GPU capacity (A100, H100) across regions  ","archived":false,"fork":false,"pushed_at":"2026-02-22T22:26:06.000Z","size":25,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-23T03:28:21.238Z","etag":null,"topics":["a100","capacity-planning","cli","cloud-computing","devops","gpu","h100","nvidia","oci","oracle-cloud","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enricopesce.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-05-10T10:11:12.000Z","updated_at":"2026-02-22T22:26:09.000Z","dependencies_parsed_at":"2024-06-05T12:11:14.525Z","dependency_job_id":null,"html_url":"https://github.com/enricopesce/ocareport","commit_stats":null,"previous_names":["enricopesce/ocareport"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/enricopesce/ocareport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricopesce%2Focareport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricopesce%2Focareport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricopesce%2Focareport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricopesce%2Focareport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enricopesce","download_url":"https://codeload.github.com/enricopesce/ocareport/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enricopesce%2Focareport/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31709294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a100","capacity-planning","cli","cloud-computing","devops","gpu","h100","nvidia","oci","oracle-cloud","python"],"created_at":"2025-01-19T05:54:17.181Z","updated_at":"2026-04-12T08:35:30.380Z","avatar_url":"https://github.com/enricopesce.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OCI Compute Capacity Report (ocareport)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![OCI SDK](https://img.shields.io/badge/OCI%20SDK-2.149.0+-orange.svg)](https://oracle-cloud-infrastructure-python-sdk.readthedocs.io/)\n[![Tests](https://github.com/enricopesce/ocareport/actions/workflows/ci.yml/badge.svg)](https://github.com/enricopesce/ocareport/actions/workflows/ci.yml)\n\n**Check Oracle Cloud Infrastructure compute shape availability across all regions instantly.**\n\nA command-line tool that queries the OCI Compute Capacity Report API to find available compute resources including VMs, bare metal instances, and GPU shapes (NVIDIA A100, H100, A10, L40S) across regions, availability domains, and fault domains.\n\n## Features\n\n- **Multi-Region Support** - Check capacity in your home region, a specific region, or all subscribed regions at once\n- **Flexible Authentication** - Auto-detects CloudShell, config file, or Instance Principals authentication\n- **Granular Results** - Shows availability down to the Fault Domain level\n- **Flex Shape Support** - Specify custom OCPU and memory configurations\n- **GPU Discovery** - Find available GPU instances (A100, H100, A10, V100, L40S) across OCI\n- **Rich Output** - Color-coded terminal output with formatted tables\n\n## Quick Start\n\n```bash\n# Install dependencies\npip install -r requirements.txt\n\n# Check shape availability in your home region\npython ocareport.py -shape VM.Standard.E5.Flex\n\n# Check GPU availability across all regions\npython ocareport.py -shape BM.GPU.H100.8 -region all\n```\n\n## Installation\n\n### From Source\n\n```bash\ngit clone https://github.com/enricopesce/ocareport.git\ncd ocareport\npip install -r requirements.txt\n```\n\n### Using pip (editable mode)\n\n```bash\ngit clone https://github.com/enricopesce/ocareport.git\ncd ocareport\npip install -e .\n```\n\n## Output Status Meanings\n\n| Status | Description |\n|--------|-------------|\n| **AVAILABLE** | The capacity for the specified shape is currently available |\n| **HARDWARE_NOT_SUPPORTED** | The necessary hardware has not yet been deployed in this region |\n| **OUT_OF_HOST_CAPACITY** | Additional hardware is currently being deployed in this region |\n\n## How It Works\n\nWhen no authentication method is specified, the tool **automatically** tries authentication methods in this order:\n\n1. **CloudShell** - Uses delegation token (when running in OCI CloudShell)\n2. **Config File** - Uses local `~/.oci/config` file\n3. **Instance Principals** - Uses VM identity (when running on OCI compute)\n\nIf all methods fail, the tool prompts for a custom config file path.\n\n## Authentication Methods\n\n| Method | Flag | Description |\n|--------|------|-------------|\n| Auto-detect | (none) | Tries all methods automatically |\n| CloudShell | `-auth cs` | Uses OCI CloudShell delegation token |\n| Config File | `-auth cf` | Uses local OCI config file |\n| Instance Principals | `-auth ip` | Uses OCI compute instance identity |\n\n## Command Line Options\n\n| Argument | Parameter | Description |\n|----------|-----------|-------------|\n| `-auth` | `cs`, `cf`, `ip` | Force specific authentication method |\n| `-config_file` | path | Path to OCI config file (default: `~/.oci/config`) |\n| `-profile` | name | Config file profile section (default: `DEFAULT`) |\n| `-region` | region_name | Region to analyze, or `all` for all regions (default: home region) |\n| `-shape` | shape_name | **Required.** Compute shape name to check |\n| `-ocpus` | number | OCPU count for flex shapes (default: 1) |\n| `-memory` | number | Memory in GB for flex shapes (default: 1) |\n\n## Usage Examples\n\n### Check shape in home region (auto-detect auth)\n```bash\npython ocareport.py -shape VM.Standard.E5.Flex\n```\n\n### Check GPU availability with config file auth\n```bash\npython ocareport.py -auth cf -shape VM.GPU.A10.2\n```\n\n### Check in a specific region\n```bash\npython ocareport.py -shape VM.Standard.E5.Flex -region eu-frankfurt-1\n```\n\n### Check all subscribed regions\n```bash\npython ocareport.py -shape VM.Standard.E5.Flex -region all\n```\n\n### Flex shape with specific OCPU and memory\n```bash\npython ocareport.py -shape VM.Standard.E5.Flex -ocpus 24 -memory 512\n```\n\n### Using custom config file and profile\n```bash\npython ocareport.py -auth cf -config_file ~/my-config -profile PROD -shape BM.GPU.H100.8\n```\n\n### Full example with all options\n```bash\npython ocareport.py \\\n  -auth cf \\\n  -config_file ~/.oci/config \\\n  -profile DEFAULT \\\n  -region eu-paris-1 \\\n  -shape VM.Standard.E5.Flex \\\n  -ocpus 16 \\\n  -memory 128\n```\n\n## Setup for Instance Principals\n\nIf running from an OCI compute instance, configure Instance Principals authentication:\n\n### 1. Create a Dynamic Group\n\nCreate a Dynamic Group called `OCI_Scripting` with this matching rule:\n\n```\nANY {instance.id = 'ocid1.instance.oc1.xxx.your_instance_ocid'}\n```\n\n### 2. Create a Policy\n\nCreate a policy in the root compartment:\n\n```\nallow dynamic-group 'YourDomain'/'OCI_Scripting' to read all-resources in tenancy\n```\n\n## Common GPU Shapes\n\n| Shape | GPU | Count | Use Case |\n|-------|-----|-------|----------|\n| `VM.GPU.A10.1` | NVIDIA A10 | 1 | AI inference, graphics |\n| `VM.GPU.A10.2` | NVIDIA A10 | 2 | AI inference, graphics |\n| `VM.GPU3.1` | NVIDIA V100 | 1 | Deep learning, HPC |\n| `VM.GPU3.2` | NVIDIA V100 | 2 | Deep learning, HPC |\n| `VM.GPU3.4` | NVIDIA V100 | 4 | Deep learning, HPC |\n| `BM.GPU4.8` | NVIDIA A100 40GB | 8 | Large AI models, HPC |\n| `BM.GPU.A100-v2.8` | NVIDIA A100 80GB | 8 | LLM training, large models |\n| `BM.GPU.H100.8` | NVIDIA H100 | 8 | Frontier AI, LLM training |\n| `BM.GPU.L40S.4` | NVIDIA L40S | 4 | AI inference, rendering |\n\n## Running Tests\n\n```bash\npip install -r requirements.txt\npytest test_ocareport.py -v\n```\n\n## Project Structure\n\n```\nocareport/\n├── ocareport.py          # Main CLI tool\n├── modules/\n│   ├── __init__.py\n│   ├── identity.py       # Authentication and OCI identity functions\n│   └── utils.py          # Terminal colors and formatting\n├── test_ocareport.py     # Unit tests\n├── requirements.txt      # Python dependencies\n├── pyproject.toml        # Package configuration\n├── LICENSE               # MIT License\n├── README.md             # This file\n├── CHANGELOG.md          # Version history\n└── CONTRIBUTING.md       # Contribution guidelines\n```\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Credits\n\nInspired by [OCI_ComputeCapacityReport](https://github.com/Olygo/OCI_ComputeCapacityReport) by Florian Bonneville.\n\n## Contact\n\nEnrico Pesce - [@LinkedIn](https://www.linkedin.com/in/enricopesce/) - [@Blog](https://www.enricopesce.it/)\n\nProject Link: [https://github.com/enricopesce/ocareport](https://github.com/enricopesce/ocareport)\n\n---\n\n**Keywords:** OCI, Oracle Cloud Infrastructure, compute capacity, GPU availability, NVIDIA A100, NVIDIA H100, cloud computing, capacity planning, DevOps, CLI tool\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenricopesce%2Focareport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenricopesce%2Focareport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenricopesce%2Focareport/lists"}