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