Overview
User Workspaces Server (UWS) is a REST API service that manages user workspaces and computational jobs in scientific computing environments. It provides a unified interface for workspace lifecycle management, job execution, and resource allocation across different authentication providers and compute platforms.
Key Features
Multi-tenant Workspace Management: Create, manage, and share user workspaces with configurable quotas
Pluggable Authentication: Support for multiple authentication backends (Globus, PSC API, LDAP, Local)
Flexible Storage: Configurable storage backends (Local Filesystem, HuBMAP-specific storage)
Compute Resource Integration: Support for different job execution environments (Local, SLURM)
Real-time Updates: WebSocket support for live job status updates
Background Task Processing: Asynchronous task handling with Django-Q
Collaborative Features: Workspace sharing and collaborative access
Core Concepts
Workspaces
Workspaces are user environments contained in directories that provide:
Isolated file storage with configurable quotas
User-specific configuration and state
Integration with compute resources for job execution
Support for sharing between users
Jobs
Jobs represent computational tasks that:
Execute within the context of a workspace
Can be of different types (JupyterLab, custom applications)
Provide real-time status updates
Track resource usage (CPU hours, memory)
Architecture Principles
Configuration-Driven: Components are loaded dynamically based on JSON configuration
Plugin Architecture: Extensible through abstract base classes and implementations
Dependency Injection: Controllers receive dependencies during initialization
Asynchronous Processing: Background tasks for long-running operations
RESTful API: Standard HTTP methods with JSON payloads
Real-time Communication: WebSocket support for interactive features