OpenPortal integration
Overview
OpenPortal is a distributed agent-based infrastructure management protocol that enables Waldur to integrate with remote HPC centres and resource providers. The integration supports award/project management, user provisioning, resource allocation, and usage reporting across institutional boundaries.
Note
OpenPortal is developed by the University of Bristol's Isambard Supercomputing Centre. Source code and documentation: github.com/isambard-sc/openportal
Architecture
1 2 3 4 5 6 7 8 | |
Components
| Component | Location | Purpose |
|---|---|---|
| Waldur OpenPortal module | waldur_openportal/ |
Backend integration with OpenPortal protocol |
| Marketplace OpenPortal Remote | marketplace_openportal_remote/ |
Marketplace processors for order/resource lifecycle |
| OpenPortal Bridge | External service | HTTP bridge between Waldur and OpenPortal network |
| Cluster Agent | HPC centre | Manages local accounts, quotas, and usage |
Capabilities
Supported operations
| Operation | Direction | OpenPortal Instruction |
|---|---|---|
| Create project/award | Waldur → Remote | create_project / create_award |
| Update project | Waldur → Remote | update_project / update_award |
| Delete project | Waldur → Remote | remove_project |
| Add user to project | Waldur → Remote | add_user |
| Remove user | Waldur → Remote | remove_user |
| Set resource limits | Waldur → Remote | set_limit |
| Get resource limits | Remote → Waldur | get_limit |
| Get usage reports | Remote → Waldur | get_usage_report / get_usage_reports |
| Get storage reports | Remote → Waldur | get_storage_report / get_storage_reports |
| Set project quota | Waldur → Remote | set_project_quota |
| Sync offerings | Remote → Waldur | sync_offerings |
Award metadata (AwardDetails)
When creating or updating projects, the following metadata is transmitted:
- name, description: Project identification
- start_date, end_date: Project timeline
- members: Map of email → role
- allocation: Resource allocation amount with units (CPU-HR, GPU-HR, NHR, etc.)
- breakdown: Component-level allocation (e.g.,
gpu_hours,interactive_cpu_hours,project_storage) - award: Link to award record on funding body system
- call: Link to the funding call
- project_link: Link to project page on awarding portal
- renewal: Link to renewal/extension request page
- notes: Append-only timestamped messages between portals
- membership_control: Policy for membership changes (
open,members_only,roles_only,locked)
Usage reporting
The integration supports pulling compute and storage usage:
- Compute usage: Daily per-user CPU/GPU/node usage
- Storage usage: Quota and consumption snapshots per volume
- Date range filtering: Query specific time periods
- Report remapping: Translate component names between systems
Configuration
Prerequisites
- OpenPortal Bridge deployed and accessible via HTTP
- Cluster agent(s) configured on remote HPC centres
- Waldur
waldur_openportalmodule enabled
Helm configuration
Add the following to your Waldur Helm values:
1 2 3 4 5 | |
Creating a remote allocation offering
- Navigate to Service Provider settings
- Create a new offering with type OpenPortal Remote
- Configure:
- Bridge URL and authentication
- Remote project identifier mapping
- Component definitions (CPU, GPU, RAM, storage)
Monitoring
Health checks
The integration includes a health check endpoint:
1 2 3 | |
Usage synchronization
Usage data is pulled periodically via Celery tasks:
sync_usage: Pulls latest usage reports from remote clusterspull_allocation: Full synchronization of single allocationsend_notifications: Sends project expiration notifications
Notification frequency
Per-project notification frequency is configurable to avoid notification fatigue:
- Notifications tracked per project with last-sent timestamps
- Configurable minimum interval between notifications
Data flow for marketplace orders
- User creates order →
CreateRemoteAllocationProcessor→create_allocation()on bridge - Limits change →
UpdateRemoteAllocationLimitsProcessor→set_resource_limits()on bridge - User added → Signal handler →
sync_users()→add_user()on bridge - Usage sync → Periodic task →
get_usage_report()from bridge →ComponentUsageupdate
Version compatibility
| OpenPortal Version | Waldur Module | Key Features |
|---|---|---|
| 0.27.x | Current | AwardDetails with links, notes, membership control |
| 0.26.x | Supported | Date range filtering on reports |
| 0.25.x | Supported | Report remapping |