Skip to content

Releases: It4innovations/HEAppE

V6.1.1

20 Nov 14:03

Choose a tag to compare

Fixed

  • Incorrect handling of Slurm status updates for array jobs submitted paralelly under the same account. This caused tasks to be incorrectly marked as failed despite the underlying Slurm jobs being PENDING, RUNNING, or COMPLETED.

V6.1.0

19 Nov 11:49

Choose a tag to compare

Added

  • Bearer authentication for LEXIS – implemented support for JWT bearer tokens and introspection for federated identity providers.
  • SSH CA support – added API endpoints and authentication mechanism for SSH Certificate Authority (SSH CA) access on clusters.
  • Management automation enhancements:
    • Background worker now automatically performs database backups according to configured schedule.
    • Automatic detection and tracking of stored account statuses.
    • Status checks are performed via dry-run jobs for verification without execution.
  • New Management endpoints for database maintenance:
    • GET /heappe/Management/Backups – List database backups
    • POST /heappe/Management/BackupDatabase – Perform full database backup
    • POST /heappe/Management/BackupDatabaseTransactionLogs – Backup database transaction logs
    • POST /heappe/Management/RestoreDatabase – Restore database from a specified backup file
  • DataTransfer endpoint for large payloads:
    • POST /heappe/DataTransfer/HttpPostToJobNodeStream – Stream large HTTP POST requests to the job node, designed for AI inference use cases.

Changed

  • Updated Swagger documentation to include new Management endpoints.
  • Extended internal ManagementService with backup and restore functionalities.

Fixed

  • Minor stability and logging improvements.

New Endpoints: 7


POST /heappe/DataTransfer/HttpPostToJobNodeStream
POST /heappe/Management/BackupDatabase
POST /heappe/Management/BackupDatabaseTransactionLogs
GET /heappe/Management/Backups
POST /heappe/Management/RestoreDatabase
POST /heappe/Management/Status
POST /heappe/Management/StatusErrorLogs

Deleted Endpoints: 4


DELETE /heappe/Management/SecureShellKey
POST /heappe/Management/SecureShellKey
PUT /heappe/Management/SecureShellKey
POST /heappe/Management/TestClusterAccessForAccount

Modified Endpoints: 3


GET /heappe/ClusterInformation/ListAvailableClusters

  • Modified query param: SessionCode
    • Required changed from true to false

POST /heappe/FileTransfer/RequestFileTransfer

  • Responses changed
    • Modified response: 200
      • Content changed
        • Modified media type: application/json
          • Schema changed
            • Properties changed
              • Modified property: Credentials
                • Properties changed
                  • Modified property: CredentialsAuthType
                    • New enum values: [10 11]

V6.0.0

14 Oct 11:49

Choose a tag to compare

Changed

  • Enhanced logging in DataTransfer endpoints
  • Redefined Job Execution and Job Log Archive path (dedicated to specific HEAppE instance and cluster user)
  • Redefined path to cluster scripts and setup for each ClusterAuthenticationCredential and Project
  • Management/InitializeClusterScriptDirectory body and business logic
  • Response structure of the TestClusterAccessForAccount (added info/check about specific access to the cluster)
  • Unify Attribute Names in CopyJobDataToTemp and CopyJobDataFromTemp endpoint payloads
  • Optimized ListAvailableClusters endpoint and enhanced caching

Added

  • 1:1 user mapping to SSH key at Project level
  • Possibility to send application/json payload with HttpPostToJobNode
  • Support for the EdDSA - ED25519 SSH key pair generation
  • Options ConnectionRetryAttempts and ConnectionTimeout for SSH client component are now configurable from appsettings.json
  • API HTTP Request logging with payload (redacted output on Sensitive data)
  • Add /heappe/Health check endpoint
  • Health checks are not visible in swagger
  • Reason attribute propagation from the HPC job (in the HEAppE Task)
  • IsInitialized attribute for ClusterAuthenticationCredentials with check for all endpoints which uses ClusterAuthenticationCredential to connect HPC
  • Endpoints for bulk listing of ClusterNodeTypes, FileTransferMethods, Projects, ClusterNodeTypeAggregationAccountings
  • Endpoint to Reset ListAvailableClusters Memory Cache
  • Automatic cluster account initialization feature configurable from appsettings.json

Fixed

  • External UsageType model conversion to Internal UsageType model (enum)
  • Fixed wrong error messages for CommandTemplateParameters methods in ManagementService
  • Typo in TaskParallelizationParameters in the HEAppE Task specificaton in CreateJob endpoint
  • Corrected the SubmittedJobInfoId field to SubmittedTaskInfoId in REST API endpoints heappe/DataTransfer/RequestDataTransfer, heappe/DataTransfer/HttpPostToJobNode, and heappe/DataTransfer/HttpGetToJobNode to reflect that these endpoints operate on Submitted Task according to the service and business logic tier
  • Implemented logic to automatically split SSH command requests to remove SSH keys in the Background Worker when exceeding the maximum SSH.NET packet size, ensuring complete removal of temporary keys without encountering the error.
  • Multiple SSH Tunnel creation support and port allocation when using heappe/DataTransfer/RequestDataTransfer endpoint
  • SessionCode regeneration method

New Endpoints: 11


POST /heappe/ClusterInformation/ListAvailableClustersClearCache
GET /heappe/Health
GET /heappe/Management/Accountings
GET /heappe/Management/ClusterAccountStatus
GET /heappe/Management/ClusterNodeTypeAggregationAccountings
GET /heappe/Management/ClusterNodeTypes
GET /heappe/Management/ClusterProxyConnections
GET /heappe/Management/FileTransferMethods
PUT /heappe/Management/ModifyClusterAuthenticationCredential
GET /heappe/Management/ProjectAssignmentToClusters
GET /heappe/Management/Projects

Deleted Endpoints: None


Modified Endpoints: 17


GET /heappe/ClusterInformation/ListAvailableClusters

  • New query param: ForceRefresh

POST /heappe/DataTransfer/HttpGetToJobNode

POST /heappe/DataTransfer/HttpPostToJobNode

POST /heappe/DataTransfer/RequestDataTransfer

POST /heappe/JobManagement/CopyJobDataToTemp

POST /heappe/JobManagement/CreateJob

GET /heappe/JobReporting/JobsDetailedReport

  • New query param: TimeFrom
  • New query param: TimeTo
  • Modified query param: SessionCode
    • Description changed from 'Session code' to ''
  • Modified query param: SubProjects
    • Description changed from 'SubProjects' to ''

DELETE /heappe/Management/CommandTemplateParameter

  • Summary changed from 'Remove Static Command Template' to 'Remove an existing Command Template Parameter'

GET /heappe/Management/CommandTemplateParameter

  • Summary changed from 'Get CommandTemplateParameter by id' to 'Get Command Template Parameter by id'

POST /heappe/Management/CommandTemplateParameter

  • Summary changed from 'Create Static Command Template' to 'Create a new Command Template Parameter'

PUT /heappe/Management/CommandTemplateParameter

  • Summary changed from 'Modify Static Command Template' to 'Modify an existing Command Template Parameter'

POST /heappe/Management/InitializeClusterScriptDirectory

POST /heappe/Management/Project

PUT /heappe/Management/Project

POST /heappe/Management/ProjectAssignmentToCluster

PUT /heappe/Management/ProjectAssignmentToCluster

GET /heappe/Management/TestClusterAccessForAccount

  • Responses changed
    • Modified response: 200
      • Extensions changed
        • Modified extension: schema
          • Added /items with value: 'map[$ref:#/definitions/ClusterAccessReportExt]'
          • Modified /type from 'string' to 'array'

Other Changes

Extensions changed

  • Modified extension: definitions
    • Added /ClusterAccessReportExt with value: 'map[additionalProperties:false properties:map[ClusterName:map[description:Cluster name type:string] IsClusterAccessible:map[description:Is cluster accessible type:boolean]] type:object]'
    • Added /ClusterAccountStatusExt with value: 'map[additionalProperties:false properties:map[Cluster:map[$ref:#/definitions/ClusterExt] IsInitialized:map[description:Is initialized type:boolean] Project:map[$ref:#/definitions/ProjectExt]] type:object]'
    • Added /ClusterExt/properties/FileTransferMethodIds with value: 'map[description:File transfer ids items:map[format:int64 type:integer] type:array]'
    • Added /ClusterNodeTypeExt/properties/ClusterId with value: 'map[description:Cluster id format:int64 type:integer]'
    • Removed /ClusterProjectExt/properties/LocalBasepath with value: 'map[description:Local base path maxLength:100 minLength:0 type:string]'
    • Added /ClusterProjectExt/properties/PermanentStoragePath with value: 'map[description:Permanent Storage Path maxLength:100 minLength:0 type:string]'
    • Added /ClusterProjectExt/properties/ScratchStoragePath with value: 'map[description:Scratch Storage Path maxLength:100 minLength:0 type:string]'
    • Modified /CommandTemplateParameterValueExt/properties/ParameterValue/maxLength from '1000' to '100000'
    • Added /CopyJobDataToTempModel/properties/CreatedJobInfoId with value: 'map[description:Created job info id format:int64 type:integer]'
    • Removed /CopyJobDataToTempModel/properties/SubmittedJobInfoId with value: 'map[description:Subbmited job info id format:int64 type:integer]'
    • Removed /CreateProjectAssignmentToClusterModel/properties/LocalBasepath with value: 'map[description:Local base path maxLength:100 minLength:0 type:string]'
    • Added /CreateProjectAssignmentToClusterModel/properties/PermanentStoragePath with value: 'map[description:Permanent Storage Path maxLength:100 minLength:0 type:string]'
    • Added /CreateProjectAssignmentToClusterModel/properties/ScratchStoragePath with value: 'map[description:Scratch Storage Path maxLength:100 minLength:0 type:string]'
    • Added /CreateProjectModel/properties/IsOneToOneMapping with value: 'map[description:Map user account to exact robot account type:boolean]'
    • Added /Database_ with value: 'map[additionalProperties:false properties:map[IsHealthy:map[description:Database is healthy type:boolean]] type:object]'
    • Added /ExtendedClusterExt/properties/FileTransferMethodIds with value: 'map[description:File transfer ids items:map[format:int64 type:integer] type:array]'
    • Modified /FileTransferCipherTypeExt/enum/0 from '0' to '1'
    • Modified /FileTransferCipherTypeExt/enum/1 from '1' to '2'
    • Modified /FileTransferCipherTypeExt/enum/2 from '2' to '3'
    • Modified /FileTransferCipherTypeExt/enum/3 from '3' to '4'
    • Modified /FileTransferCipherTypeExt/enum/4 from '4' to '5'
    • Modified /FileTransferCipherTypeExt/enum/5 from '5' to '6'
    • Added /FileTransferMethodNoCredentialsExt/properties/ClusterId with value: 'map[description:Cluster id format:int64 type:integer]'
    • Removed /GetDataTransferMethodModel/properties/SubmittedJobInfoId with value: 'map[description:Subbmited job info id format:int64 type:integer]'
    • Added /GetDataTransferMethodModel/properties/SubmittedTaskInfoId with value: 'map[description:Submitted task info id format:int64 type:integer]'
    • Added /HealthComponent_ with value: 'map[additionalProperties:false properties:map[Database:map[$ref:#/definitions/Database_] Vault:map[$ref:#/definitions/Vault_]] type:object]'
    • Added /HealthExt with value: 'map[additionalProperties:false properties:map[Component:map[$ref:#/definitions/HealthComponent_] IsHealthy:map[description:IsHealthy type:boolean] Timestamp:map[description:Timestamp format:date-time type:string] Version:map[description:Version type:string]] type:object]'
    • Removed /HttpGetToJobNodeModel/properties/SubmittedJobInfoId with value: 'map[description:Subbmited job info id format:int64 type:integer]'
    • Added /HttpGetToJobNodeModel/properties/SubmittedTaskInfoId with value: 'map[description:Submitted task info id format:int64 type:integer]'
    • Removed /HttpPostToJobNodeModel/properties/SubmittedJobInfoId with value: 'map[description:Subbmited job info id format:int64 type:integer]'
    • Added /HttpPostToJobNodeModel/properties/SubmittedTaskInfoId with value: 'map[description:Submitted task info id format:int64 type:integer]'
    • Removed /InitializeClusterScriptDirectoryModel/properties/ClusterProjectRootDirectory with value: 'map[description:Cluster project root directory type:string]'
    • Added /InitializeClusterScriptDirectoryModel/properties/OverwriteExistingProjectRootDirectory with value: 'map[description:Overwrite existing cluster project root directory type:boolean]'
    • Added /InitializeClusterScriptDirectoryModel/properties/Username with value: 'map[description:Username type:string]'
    • Added /Mod...
Read more

V5.0.0

09 Apr 07:20

Choose a tag to compare

Changed

  • Updated to the .NET 9
  • Allowed to DeleteJob in state Configuring or WaitingForServiceAccount

Added

  • Automatic docker compose Vault initialization and unsealing procedure
  • Propagation of JobState Deleted into JobSpecification
  • HPC job archive option at DeleteJob endpoint
  • Job Log archive access from FileTransfer endpoints
  • ListChangedFilesForJob endpoint job logs archive listing when HPC Job deleted and archived
  • Feature to enable or disable CommandTemplate by IsEnabled property
  • Advanced filter for ListavailableClusters endpoint
  • JobState filter for ListJobsForCurrentUser
  • Management endpoints for HEAppE entities

Fixed

  • An issue where creating and submitting a job with MaxCores missing
  • Concurrent auth token evaluation issue and role mapping (by single user)
  • Swagger models description

V4.3.0

16 Sep 10:15

Choose a tag to compare

Added

  • Hashicorp Credentials Vault implementation as secure storage for HPC credentials
  • Scripts to initialize vault and migrate data from database to vault
  • SubProjects for logical organization of the Jobs under the Projects
  • SubProject management via API
  • Aggregation of the Cluster Node Types
  • Accounting & Reporting by specific accounting formula
  • Asynchronous accounting computation endpoint and accounting state monitoring endpoint

Fixed

  • Wrong relative path propagation as result of FileTransfer/ListChangedFilesForJob endpoint when using ClusterTaskSubdirectory
  • Internal error when cancelling jobs
  • Internal error when using an expired session code

Changed

  • Enhanced JobReporting endpoints outputs and ability of filtering
  • JobManagement/CreateJob endpoint body extended by optional parameter SubProjectIdentifier in the JobSpecification section

V4.2.1

27 Jun 08:05

Choose a tag to compare

Added

  • Command Template management via API

Fixed

  • Initialize Cluster Script Directory method
  • LEXIS V2 AAI
  • Problem with SSH connection (.SSH Net Library)
  • Cancel job functionality in exclusive mode

Changed

  • Session exception handling

Security

  • Packages update due to vulnerability

V4.2.0

05 Mar 09:32

Choose a tag to compare

Added

  • HyperQueue scheduler support
  • API Project Management support
  • LEXIS V2 AAI support
  • Shared pool mode support
  • Cluster Scripts initialization via API
  • Enhanced Exception handling
  • Enhanced HPC project information
  • User role management improvement

Fixed

  • SFTP interactive mode
  • HPC Identities rotation

V4.1.1

01 Sep 07:27

Choose a tag to compare

Fixed

  • Fix Regex

V4.1.0

28 Jul 09:02

Choose a tag to compare

Added

  • Adding SSH key for HPC identity via API
  • DataStaging independent API endpoint

V4.0.0

16 May 12:58

Choose a tag to compare

Added

  • Multi-HPC projects support
  • SLURM scheduler QOS attribute support

Changed

  • API methods updated