task/WA-193: Develop a dynamic profile system for dynamic exec system apps#1312
task/WA-193: Develop a dynamic profile system for dynamic exec system apps#1312fnets wants to merge 10 commits into
Conversation
…mic execution system and push it to replace the existing profile blob.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1312 +/- ##
==========================================
+ Coverage 64.09% 64.11% +0.01%
==========================================
Files 461 461
Lines 13793 13808 +15
Branches 2750 2752 +2
==========================================
+ Hits 8841 8853 +12
- Misses 4603 4606 +3
Partials 349 349
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
| const selectedSystem = app.definition.notes.dynamicExecSystems.find( | ||
| (s) => s.systemId === job.execSystemId | ||
| ); | ||
| const profileName = selectedSystem?.profileName; | ||
| job.parameterSet.schedulerOptions.push({ | ||
| name: 'TACC Scheduler Profile', | ||
| description: 'Scheduler profile for HPC clusters at TACC', | ||
| include: true, | ||
| arg: `--tapis-profile ${profileName}`, | ||
| }); |
There was a problem hiding this comment.
If you find a matching profile for the chosen exec system, do we want to replace the profile that's in the definition? We might need to in the case the default system for jupyter hpc is vista, but has dynamic systems, and the user chooses stampede3 - we'll want to use the stampede3 profile instead of the vista profile
There was a problem hiding this comment.
Now using .filter() to replace the existing scheduler options for --tapis-profile
| const selectedSystem = app.definition.notes.dynamicExecSystems.find( | ||
| (s) => s.systemId === job.execSystemId | ||
| ); | ||
| const profileName = selectedSystem?.profileName; |
There was a problem hiding this comment.
If no profile name is found, we'll want to skip the .push below right?
There was a problem hiding this comment.
Added a check for profileName
| job.parameterSet.schedulerOptions = []; | ||
| } | ||
| //pick the right profile for the right exec system | ||
| const selectedSystem = app.definition.notes.dynamicExecSystems.find( |
There was a problem hiding this comment.
If the dynamicExecSystems field does not correspond to our expectations as an array of objects, we'll need to handle those cases here
There was a problem hiding this comment.
Added a check for isValidDynamicExecSystems
Co-authored-by: Sal Tijerina <r.sal.tijerina@gmail.com>
…k to make sure dynamicsystems were written correctly in app definition and provide an error message
Overview
On each HPC system, profile requirements may differ between apps, needing different specialized profiles between the same app across systems. Develop a dynamic system to load a profile depending on the system given an app, using the existing field in notes for dynamicSystems.
Related
Changes
This checks if there is a
dynamicExecSystemsblob in thenotesfield in an app's definition. The blob snippet should look like below. Then, it uses that to find the system to find the assigned scheduler profile and insert it into the app's tapis job submission.Testing
tacc-apptaineris used as the TACC Scheduler Profile.UI
Notes