Skip to content

Systematic External Service Validation Plan #91

Closed

Description

@jeremymanning

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)

  1. 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)

  1. AWS Pricing API

    • Requires AWS credentials
    • Need pricing:GetProducts permission
    • Can use AWS free tier
  2. 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)

  1. SSH Key Generation/Deployment

    • Need target server for testing
    • Could use local VM or cloud instance
  2. SLURM/PBS/SGE Integration

    • Need access to academic/research clusters
    • May require institutional access

Phase 4: Container & K8s (Require Setup)

  1. Docker Integration

    • Need Docker daemon access
    • Test image building and registry push
  2. 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:

  1. Setup Instructions:

    • Required credentials/accounts
    • Minimum permissions needed
    • Environment setup steps
  2. Working Examples:

    • Minimal code that successfully calls the service
    • Sample inputs and expected outputs
    • Error handling examples
  3. 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:

  1. Check this GitHub issue for current status
  2. Read latest validation notes in notes/ directory
  3. Continue from where "Currently Working On" indicates
  4. Update issue immediately when resuming work

Progress Tracking

Use this issue as the central tracker. After each validation session:

  1. Update the status table below
  2. Add a timestamped comment with findings
  3. Link to any new issues or documentation created
  4. 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

  1. added a commit that references this issue on Aug 24, 2025
  2. jeremymanning commented on Aug 17, 2026

    @jeremymanning
    MemberAuthor

    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/master for 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_*.py

    But "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.yml has 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 contextlab org (academia plan) — verified end-to-end today by running a real container that returned CLUSTRIX_HF_OK 3.12.14 x86_64. Flavors from cpu-basic through h100x8 are 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.

  3. jeremymanning commented on Aug 20, 2026

    @jeremymanning
    MemberAuthor

    Closed — five of the seven rows target deleted code

    clustrix/cloud_providers/, cost_providers/, pricing_clients/ and kubernetes/ contain only __pycache__; git ls-files returns 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 by scripts/verify_cluster_usecases.py.

    Recurring live validation is tracked by #118 and #127 rather than here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions