Repository navigation
Systematic External Service Validation Plan #91
Description
Objective
Systematically validate ALL external dependencies in Clustrix to ensure they work in practice, not just in theory.
Background
This comprehensive validation plan was developed to ensure all external APIs, services, and integrations function correctly in real-world scenarios.
Resumable Validation Workflow
Phase 1: Immediate Tests (No Credentials Required)
- Azure Retail Prices API
- Public API, no authentication required
- Test endpoint:
https://prices.azure.com/api/retail/prices - Should work immediately
Phase 2: Cloud Provider APIs (Require Setup)
-
AWS Pricing API
- Requires AWS credentials
- Need
pricing:GetProductspermission - Can use AWS free tier
-
GCP Cloud Billing Catalog API
- Requires GCP service account
- Need billing account setup
- Can use GCP free tier
Phase 3: SSH & Cluster Access (Require External Resources)
-
SSH Key Generation/Deployment
- Need target server for testing
- Could use local VM or cloud instance
-
SLURM/PBS/SGE Integration
- Need access to academic/research clusters
- May require institutional access
Phase 4: Container & K8s (Require Setup)
-
Docker Integration
- Need Docker daemon access
- Test image building and registry push
-
Kubernetes Integration
- Need K8s cluster (minikube, kind, or cloud)
- Test job submission and monitoring
Validation Session Template
Session Start Checklist:
- Update GitHub issue with current focus
- Create/update validation notes file
- Set up test environment
- Gather required credentials
During Validation:
- Write minimal test script for the service
- Test happy path scenarios
- Test error conditions
- Document any surprises or differences from expected behavior
- Note required permissions, setup steps, etc.
Session End Checklist:
- Update GitHub issue with results
- Commit any test scripts or documentation updates
- Mark service as ✅ VALIDATED or ❌ FAILED in tracker
- Document next steps needed
Documentation Requirements
For each validated service, document:
-
Setup Instructions:
- Required credentials/accounts
- Minimum permissions needed
- Environment setup steps
-
Working Examples:
- Minimal code that successfully calls the service
- Sample inputs and expected outputs
- Error handling examples
-
Gotchas & Quirks:
- Undocumented API behavior
- Regional differences
- Rate limiting or quota issues
- Authentication edge cases
Quick Start Example
Test Azure Retail Prices API (no setup required):
import requests
response = requests.get('https://prices.azure.com/api/retail/prices',
params={'api-version': '2021-10-01-preview'})
print(f'Status: {response.status_code}')
print(f'Response: {response.json()[:100] if response.status_code == 200 else response.text}')Recovery Strategy
When resuming work:
- Check this GitHub issue for current status
- Read latest validation notes in
notes/directory - Continue from where "Currently Working On" indicates
- Update issue immediately when resuming work
Progress Tracking
Use this issue as the central tracker. After each validation session:
- Update the status table below
- Add a timestamped comment with findings
- Link to any new issues or documentation created
- Identify the next priority for validation
Status Table
| Service | Status | Notes |
|---|---|---|
| Azure Pricing API | ⏳ TODO | Public API, start here |
| AWS Pricing API | ⏳ TODO | Requires credentials |
| GCP Billing API | ⏳ TODO | Requires service account |
| SSH Integration | ⏳ TODO | Need test server |
| SLURM Integration | ⏳ TODO | Need cluster access |
| Docker Integration | ⏳ TODO | Need Docker daemon |
| Kubernetes Integration | ⏳ TODO | Need K8s cluster |
Priority: High
Impact: System Reliability, External Dependencies
Source: Content preserved from notes/archive/external-validation-plan.md during Issue #74 content preservation automation.
Activity
Issue #74: Complete content preservation automation
jeremymanning commentedon Aug 17, 2026
Status correction (audit 2026-08-17): the status table in this issue is stale.
The body lists all 7 external services as "⏳ TODO". In fact validation tests exist on
origin/masterfor most of them:tests/real_world/test_azure_pricing_real.py,test_aws_pricing_real.py,test_gcp_pricing_real.py,test_lambda_pricing_real.py,test_ssh_real.py,test_slurm_job_submission_real.py,test_kubernetes_*.pyBut "the test exists" is not "the service is validated", and that distinction is the whole point of this issue. None of these have demonstrably passed against the live services: the scheduled real-world workflow has failed on every one of its last 60 runs, and
fast_ci.ymlhas been failing since 2025-09-03.Recommended rescope — replace the TODO table with a table whose columns are "test exists" and "last observed green against the live service (date + run link)". Only the second column counts as validation under the project's own external-validation rule.
New capability that unblocks part of this: HuggingFace Jobs is now confirmed working for the
contextlaborg (academia plan) — verified end-to-end today by running a real container that returnedCLUSTRIX_HF_OK 3.12.14 x86_64. Flavors fromcpu-basicthroughh100x8are reachable. This gives the project an on-demand real remote-execution target that needs no cluster reservation, VPN, or SSH credentials — a far more reliable CI substrate than the institutional hosts the current real-world tests depend on.jeremymanning commentedon Aug 20, 2026
Closed — five of the seven rows target deleted code
clustrix/cloud_providers/,cost_providers/,pricing_clients/andkubernetes/contain only__pycache__;git ls-filesreturns nothing for any of them. No docker or pricing tests remain. Those rows cannot be validated because the subjects are gone.The rows that survive are validated, with committed evidence: SSH, SLURM and HuggingFace Jobs in
docs/evidence/usecase-matrix.txt, regenerated byscripts/verify_cluster_usecases.py.Recurring live validation is tracked by #118 and #127 rather than here.