Hi Everyone
@mnakao First a big Thank for this amazing tool.
It’s not working properly for me, certainly due to the format of my forms.
Here an example:
---
cluster: "Onyxia"
title: "MATLAB on Baobab"
attributes:
num_cores:
widget: "number_field"
label: "Number of cores"
value: 1
help: "Maximum of 6 cpu on public-interactive-cpu partition"
min: 1
max: 6
step: 1
bc_num_hours:
value: 1
min: 1
max: 8
step: 1
help: "Maximum public-interactive-cpu walltime: 8 hours"
[...]
form:
- auto_modules_MATLAB
- num_cores
- bc_num_hours
- memtask
- auto_accounts
- auto_queues
- bc_vnc_resolution
- bc_email_on_started
I got the error message:
App 2502393 output: 37.170.42.108 - - [23/Jan/2025:12:15:34 +0100] "GET /pun/dev/OpenComposer/MatLab HTTP/1.1" 500 30 0.0186
App 2502393 output: 2025-01-23 12:18:19 - NoMethodError - undefined method `each_key' for ["modules", "modulesextra", "extra_jupyter_args", "auto_accounts", "auto_queues", "bc_num_hours", "cpu", "memory", "gpu", "bc_email_on_started"]:Array
App 2502393 output:
App 2502393 output: invalid_keys = @body["form"].each_key.reject { |key| key.match?(/^[a-zA-Z][a-zA-Z0-9_]*$/) }
Because form
is a list and not a dictionary.
like in the example: sample_apps/Slurm/form.yml
---
form:
partition:
widget: select
label: Partition
options:
- [ gpu1, gpu1, set-label-cores: Number of cores (1 - 72), set-max-cores: 72, set-label-memory: Memory (up to 186GB), set-max-memory: 186, set-label-time_1: Maximum run time hours (0 - 3), set-max-time_1: 3 ]
- [ gpu2, gpu2, set-label-cores: Number of cores (1 - 36), set-max-cores: 36, set-label-memory: Memory (up to 93GB), set-max-memory: 93 ]
- [ mem1, mem1, set-label-cores: Number of cores (1 - 224), set-max-cores: 224, set-label-memory: Memory (up to 5020GB), set-max-memory: 5020, set-label-time_1: Maximum run time hours (0 - 3), set-max-time_1: 3 ]
- [ mem2, mem2, set-label-cores: Number of cores (1 - 56), set-max-cores: 56, set-label-memory: Memory (up to 1500GB), set-max-memory: 1500 ]
- [ ondemand-reserved, ondemand-reserved, set-cores-label: Number of cores (1 - 8), set-max-cores: 8, set-label-memory: Memory, set-label-time_1: Maximum run time hours (0 - 720), set-max-time_1: 720 ]
cores:
widget: number
value: 1
time:
widget: number
label: [ Maximum run time hours (0 - 24), Maximum run minutes (0 - 59) ]
size: 2
value: [ 1, 0 ]
min: [ 0, 0 ]
max: [ 24, 59 ]
step: [ 1, 1 ]
I use the attributes
to fix all my variabless and the form
to list what should be display in interactive app selection.
But while I am writting this post, The great Light is lighting me up… There is no sense to request an interactive app with Job Composer which use sbatch. Am I right ?
So my question, should we create distinct apps and interactives app directories and then create a form compatible with JobComposer ?
Thank your for your Lights 