Marketplace Software Catalogs
This guide covers the software catalog system in Waldur's marketplace, using the European Environment for Scientific Software Installations (EESSI) as a primary example.
Overview
The software catalog system allows marketplace offerings to expose large collections of scientific and HPC software packages from external catalogs like EESSI. Instead of manually tracking individual software installations, offerings can reference comprehensive software catalogs with thousands of packages.
Architecture
The system uses relational models for efficient storage and querying:
- SoftwareCatalog: Represents a software catalog (e.g., EESSI 2023.06)
- SoftwarePackage: Individual software packages within catalogs
- SoftwareVersion: Specific versions of packages
- SoftwareTarget: Architecture/platform-specific installations
- OfferingSoftwareCatalog: Links offerings to available catalogs
Loading EESSI Catalog Data
1. Download EESSI Data
First, download the latest EESSI software catalog data:
1 2 | |
2. Load Software Catalog Data
Use the EESSI management command to load catalog data:
1 2 3 4 5 6 7 8 | |
This creates:
- SoftwareCatalog entry for EESSI with detected version
- SoftwarePackage entries for each software package
- SoftwareVersion entries for each package version
- SoftwareTarget entries for each architecture/platform combination
3. Associate Catalogs with Offerings
Link the loaded software catalogs to your marketplace offerings:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Understanding EESSI Architecture Targets
EESSI provides software optimized for different CPU architectures and microarchitectures:
Common Targets
x86_64/generic- General x86_64 compatibilityx86_64/intel/haswell- Intel Haswell and newerx86_64/intel/skylake_avx512- Intel Skylake with AVX-512x86_64/amd/zen2- AMD Zen2 architecturex86_64/amd/zen3- AMD Zen3 architectureaarch64/generic- General ARM64 compatibilityaarch64/neoverse_n1- ARM Neoverse N1 cores
Why Targets Matter
- Performance: Architecture-specific builds can be 20-50% faster
- Compatibility: Ensures software runs on target hardware
- Instruction Sets: Leverages specific CPU features (AVX, NEON, etc.)
- HPC Requirements: Critical for scientific computing workloads
API Usage
Browse Available Catalogs
1 2 3 4 5 | |
Example response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Browse Software Packages
1 2 3 4 5 6 7 8 | |
Example response:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Browse Software Versions
1 2 3 4 5 | |
Browse Installation Targets
1 2 3 4 5 | |
Linking Catalogs to Offerings
Associate Catalog with Offering
1 2 3 4 5 6 7 8 9 10 | |
Query Offering Software
1 2 3 4 5 | |
Command Options
The load_eessi_catalog command supports several options:
--json-file: Path to EESSI JSON file (default: eessi.model.json)--catalog-name: Name of the software catalog (default: EESSI)--catalog-version: EESSI catalog version (auto-detected from JSON if not provided)--dry-run: Show what would be done without making changes--update-existing: Update existing catalog data if it exists--no-sync: Disable synchronization (default: sync enabled to remove missing records)
Synchronization Behavior
By default, the command synchronizes the database with the JSON file:
- Adds new packages, versions, and targets from the JSON
- Removes packages, versions, and targets not present in the JSON
- Preserves existing records that match the JSON data
Use --no-sync to disable removal of missing records and only add new data.
Permissions
Catalog Management (Staff Only)
- SoftwareCatalog: Only staff can create/modify catalogs
- SoftwarePackage: Only staff can manage package information
- SoftwareVersion: Only staff can manage version data
- SoftwareTarget: Only staff can manage target information
Offering Integration (Offering Managers)
- OfferingSoftwareCatalog: Offering managers can associate catalogs with their offerings
EESSI Integration Details
EESSI Data Structure
EESSI provides software in a structured format:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Offering Partitions
Offering partitions represent SLURM partitions associated with marketplace offerings. They define resource limits, scheduling policies, and access controls for different compute partitions.
Partition Configuration
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Partition Parameters
CPU Configuration
cpu_bind: Default task binding policy (SLURM cpu_bind)def_cpu_per_gpu: Default CPUs allocated per GPUmax_cpus_per_node: Maximum allocated CPUs per nodemax_cpus_per_socket: Maximum allocated CPUs per socket
Memory Configuration (in MB)
def_mem_per_cpu: Default memory per CPUdef_mem_per_gpu: Default memory per GPUdef_mem_per_node: Default memory per nodemax_mem_per_cpu: Maximum memory per CPUmax_mem_per_node: Maximum memory per node
Time Limits
default_time: Default time limit in minutesmax_time: Maximum time limit in minutesgrace_time: Preemption grace time in seconds
Node Configuration
max_nodes: Maximum nodes per jobmin_nodes: Minimum nodes per jobexclusive_topo: Exclusive topology access requiredexclusive_user: Exclusive user access required
Scheduling Configuration
priority_tier: Priority tier for scheduling and preemptionqos: Quality of Service (QOS) namereq_resv: Require reservation for job allocation
Linking Software Catalogs to Partitions
Software catalogs can be associated with specific partitions to control software availability:
1 2 3 4 5 6 7 8 9 10 11 | |
Query Partitions
1 2 3 4 5 6 7 8 | |
Updated Field Names
Important: The field names have been updated to use more precise terminology:
Old vs New Field Names
| Old Field Name | New Field Name | Description |
|---|---|---|
enabled_architectures |
enabled_cpu_family |
CPU architecture families (x86_64, aarch64) |
enabled_platforms |
enabled_cpu_microarchitectures |
CPU microarchitectures (generic, zen3, neoverse_n1) |
architecture |
cpu_family |
In SoftwareTarget model |
platform |
cpu_microarchitecture |
In SoftwareTarget model |
API Examples with Updated Fields
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |