Content example

My OOD is 3.1.1 OS is CentOS 8

I’m using this documentation:

https://osc.github.io/ood-documentation/latest/reference/files/submit-yml/script.html

And there is no example for content:

I’m trying to submit with simple hostname. My submit is:

script:
native:

  • “–job-name”
  • “<%= job_name %>”
  • “–ntasks”
  • “<%= num_cores %>”

<%-
license = if solver == “Ansys - Linear” || solver == “Ansys - Thermal”
“mech_1@slurmdb:1,anshpc@slurmdb:#{num_cores}”
elsif solver == “Ansys - Non-Linear”
“meba@slurmdb:1,anshpc@slurmdb:#{num_cores}”
elsif solver == “CFX” || solver == “Fluent”
“cfd_solve_level1@slurmdb:1,cfd_solve_level2@slurmdb:1,cfd_solve_level3@slurmdb:1,anshpc@slurmdb:#{num_cores}”
elsif solver == “Star-CCM+”
“ccmppower@slurmdb:1”
end
-%>

  • “–license”

  • “<%= license %>”
    <%-
    chdir = File.dirname(select_sim_file)
    -%>

  • “–chdir”

  • “<%= chdir %>”

  • “–error”

  • “%x.%j.out”

  • “–output”

  • “%x.%j.out”
    content: "#!/bin/bash

        hostname"
    

I don’t have any problems submitting and Slurm reports status of the job completed.

But I don’t see hostname in the out file. So I’m not sure if it’s working. My out file:

/var/spool/slurmd/job3637448/slurm_script: line 0: unalias: squeue: not found
/var/spool/slurmd/job3637448/slurm_script: line 0: unalias: smap: not found
/var/spool/slurmd/job3637448/slurm_script: line 0: unalias: watch: not found
/var/spool/slurmd/job3637448/slurm_script: line 0: unalias: sinfo: not found
Script starting…
Generating connection YAML file…
Cleaning up…

Is there any example on how to use content?

I was able to run hostname in template/script.sh

Is it possible to pass variables from form.yml or submit.yml to template/script.sh?

Hi! Yes, you can pass the variables from the form. I’ll show you an example of how I did it.

In my form.yml I have for example this declared:

attributes
output_path:
label: ‘Output Path’
data-filepicker: true
# Optionally set a static starting directory by setting the value
value: …

Once we have this now we are moving to submit.yml.erb and add a new section like this:

parameters:

  • name: OUTPUT_PATH
    value: “<%= output_path %>”

And now we can use this value in the template/script in the next way:

…–output=<%= context.output_path %>… for example.

You need to add the “context.” to reach it but I think that in this way you will be able to pass the variable from form to script.

I hope this works for you!

Thank you so much for your reply. It’s kinda makes sense, but from Ondemand docs it looks like main script template/script.sh must be bash.

How I can pass variable to the bash script.

I have modules variable which I set successfully in submit.yml.erb script. I see it in out put json file:

 {
  "job_name": "sys/dashboard/dev/submit-ansys-job",
  "workdir": "ondemand/data/sys/dashboard/batch_connect/dev/submit-ansys-job/output/f59559df-5858-4451-a485-61f6d4d93594",
  "output_path": "ondemand/data/sys/dashboard/batch_connect/dev/submit-ansys-job/output/f59559df-5858-4451-a485-61f6d4d93594/output.log",
  "shell_path": "/bin/bash",
  "queue_name": "epyc,sky,bdw",
  "qos": "lowprio_8job",
  "wall_time": 86400,
  "email_on_started": false,
  "modules": "ansys/22.2",
  "native": [
    "--job-name",
    "context.modules",
    "--ntasks",
    "8",
    "--license",
    "mech_1@slurmdb:1,anshpc@slurmdb:8",
    "--chdir",
    "/cluster/data/misc/admins/sofya",
    "--error",
    "%x.%j.out",
    "--output",
    "%x.%j.out"
  ]
}

but if I do something like this in template/script.sh

#!/bin/bash -l
module load <%= context.modules %>

I see the following error:

Generating connection YAML file...
ondemand/data/sys/dashboard/batch_connect/dev/submit-ansys-job/output/f59559df-5858-4451-a485-61f6d4d93594/script.sh: line 5: syntax error near unexpected token `newline'
ondemand/data/sys/dashboard/batch_connect/dev/submit-ansys-job/output/f59559df-5858-4451-a485-61f6d4d93594/script.sh: line 5: `module load <%= context.modules %>'
Cleaning up...

Yea sorry for not replying. Those docs are mainly for completeness, so I’m guessing we should remove somethings given you can’t override them in the OOD batch connect application.

What that ends up being set to for OOD batch connect applications is the job_script_content.sh you see in the working directory.

You likely need to append a .erb extension to the script.sh so that it’s ERB rendered.

I’m getting error

undefined method `modules’ for #<BatchConnect::SessionContext:0x00007efc020ba6a8

I think because I don’t have modules in the form.yml I create in submit.yml.erb depending on user input:

script:
  <%-
          modules = if solver == "Ansys - Linear" || solver == "Ansys - Thermal" || solver == "Ansys - Non-Linear"
                "#{auto_modules_ansys}"
              elsif solver == "CFX"
                "#{auto_modules_cfx}"
              elsif solver == "Fluent"
                "#{auto_modules_fluent}"
              elsif solver == "Star-CCM+"
                "#{auto_modules_starccm}"
              end
  -%>
  modules: "<%= modules %>"

My script.sh.erb

#!/bin/bash

module load <%= context.modules %>
module list

Should I move this code to form.yml.erb?


  <%-
          modules = if solver == "Ansys - Linear" || solver == "Ansys - Thermal" || solver == "Ansys - Non-Linear"
                "#{auto_modules_ansys}"
              elsif solver == "CFX"
                "#{auto_modules_cfx}"
              elsif solver == "Fluent"
                "#{auto_modules_fluent}"
              elsif solver == "Star-CCM+"
                "#{auto_modules_starccm}"
              end
  -%>
  modules: "<%= modules %>"

Is it possible? If it’s possible and should be there. Does anyone has an example?

@jeff.ohrstrom

I created an if statement in script.sh.erb file:

<%- if context.solver ~ /Ansys - Linear/ -%>
module load <%=“#{context.auto_modules_ansys}” %>
<%- end -%>

However I’m getting an error:

undefined local variable or method auto_modules_ansys’ for #<struct BatchConnect::Session::TemplateBinding session=#<BatchConnect::Session:0x00007f5f46a5da00 @id=“678242fa-9a2b-4b49-98a2-10b97a046907”, @token=“dev/submit-ansys-job”, @title=“Submit Ansys Job”, @created_at=1710262408, @cluster_id=“viking”, @errors=#<ActiveModel::Errors:0x00007f5f469ac750 @base=#<BatchConnect::Session:0x00007f5f46a5da00 …>, @errors=>>, context=#<BatchConnect::SessionContext:0x00007f5f46a53910 @attributes=[#<SmartAttributes::Attribute:0x00007f5f471c5540 @id=“cluster”, @opts={:value=>“viking”, :fixed=>true}>, #<SmartAttributes::Attribute:0x00007f5f471c5428 @id=“job_name”, @opts={:widget=>“text_field”, :required=>true, :value=>“context.modules”}>, #<SmartAttributes::Attribute:0x00007f5f471c52e8 @id=“solver”, @opts={:required=>true, :widget=>“select”, :options=>[[“Ansys - Linear”, {:“data-hide-auto-modules-cfx”=>true}, {:“data-hide-auto-modules-fluent”=>true}, {:“data-hide-auto-modules-starccm”=>true}, {:“data-hide-sim-type”=>true}], [“Ansys - Non-Linear”, {:“data-hide-auto-modules-cfx”=>true}, {:“data-hide-auto-modules-fluent”=>true}, {:“data-hide-auto-modules-starccm”=>true}, {:“data-hide-sim-type”=>true}], [“Ansys - Thermal”, {:“data-hide-auto-modules-cfx”=>true}, {:“data-hide-auto-modules-fluent”=>true}, {:“data-hide-auto-modules-starccm”=>true}, {:“data-hide-sim-type”=>true}], [“CFX”, {:“data-hide-auto-modules-ansys”=>true}, {:“data-hide-auto-modules-fluent”=>true}, {:“data-hide-auto-modules-starccm”=>true}, {:“data-hide-sim-type”=>true}], [“Fluent”, {:“data-hide-auto-modules-ansys”=>true}, {:“data-hide-auto-modules-cfx”=>true}, {:“data-hide-auto-modules-starccm”=>true}], [“Star-CCM+”, {:“data-hide-auto-modules-ansys”=>true}, {:“data-hide-auto-modules-cfx”=>true}, {:“data-hide-auto-modules-fluent”=>true}, {:“data-hide-sim-type”=>true}]], :value=>“Ansys - Linear”}>, #<SmartAttributes::Attributes::AutoModules:0x00007f5f471c4f78 @id=“auto_modules_ansys”, @opts={:required=>true, :help=>“Default version is 22.1”, :module=>“ansys”, :value=>“ansys/22.2”}, @hpc_module=“ansys”>, #<SmartAttributes::Attributes::AutoModules:0x00007f5f471c4cd0 @id=“auto_modules_cfx”, @opts={:required=>true, :help=>“Default version is 22.1”, :module=>“cfx”, :value=>“cfx”}, @hpc_module=“cfx”>, #<SmartAttributes::Attributes::AutoModules:0x00007f5f471c4a28 @id=“auto_modules_fluent”, @opts={:required=>true, :help=>“Default version is 22.1”, :module=>“fluent”, :value=>“fluent”}, @hpc_module=“fluent”>, #<SmartAttributes::Attributes::AutoModules:0x00007f5f471c4780 @id=“auto_modules_starccm”, @opts={:required=>true, :help=>“Default version is 18.04.008”, :module=>“starccm”, :value=>“starccm”}, @hpc_module=“starccm”>, #<SmartAttributes::Attribute:0x00007f5f471c45c8 @id=“sim_type”, @opts={:required=>true, :widget=>“select”, :options=>[[“3ddp”], [“2ddp”]], :value=>“2ddp”}>, #<SmartAttributes::Attributes::BcQueue:0x00007f5f471c44d8 @id=“bc_queue”, @opts={:required=>true, :help=>“Available partitions are: bdw, epyc, hsw, sky, snb, smp. You may submit to multipe partitions by typing list with the names sperated by comas. | Example: sky,epyc,bdw”, :value=>“epyc,sky,bdw”}>, #<SmartAttributes::Attributes::AutoQos:0x00007f5f442194e0 @id=“auto_qos”, @opts={:options=>[[“highprio_1job”, “highprio_1job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_2job”, “highprio_2job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_3job”, “highprio_3job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_4job”, “highprio_4job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_6job”, “highprio_6job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_8job”, “highprio_8job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_nolim”, “highprio_nolim”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_1job”, “lowprio_1job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_2job”, “lowprio_2job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_3job”, “lowprio_3job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_4job”, “lowprio_4job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_6job”, “lowprio_6job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_8job”, “lowprio_8job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“lowprio_nolim”, “lowprio_nolim”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_1job”, “medprio_1job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_2job”, “medprio_2job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_3job”, “medprio_3job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_4job”, “medprio_4job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_6job”, “medprio_6job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_8job”, “medprio_8job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“medprio_nolim”, “medprio_nolim”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“modelcheck”, “modelcheck”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“test”, “test”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-viking”=>false, “data-option-for-auto-accounts-satellites”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_1job”, “highprio_1job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-phoenix”=>false, “data-option-for-auto-accounts-flamingo”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_2job”, “highprio_2job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-phoenix”=>false, “data-option-for-auto-accounts-flamingo”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_3job”, “highprio_3job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-phoenix”=>false, “data-option-for-auto-accounts-flamingo”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_4job”, “highprio_4job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-phoenix”=>false, “data-option-for-auto-accounts-flamingo”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_6job”, “highprio_6job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-phoenix”=>false, “data-option-for-auto-accounts-flamingo”=>false, “data-option-for-auto-accounts-admins”=>false}], [“highprio_8job”, “highprio_8job”, {“data-option-for-cluster-amp”=>false, “data-option-for-cluster-phoenix”=>false, “data-option-for-auto-accounts-flamingo”=>false, "data-option-for-auto-accounts-ad`

I see auto_modules_ansys in my json file:

{
“job_name”: “context.modules”,
“solver”: “Ansys - Linear”,
“auto_modules_ansys”: “ansys/22.2”,
“auto_modules_cfx”: “cfx”,
“auto_modules_fluent”: “fluent”,
“auto_modules_starccm”: “starccm”,
“sim_type”: “2ddp”,
“bc_queue”: “epyc,sky,bdw”,
“auto_qos”: “lowprio_8job”,
“num_cores”: “8”,
“bc_num_hours”: “24”,
“select_sim_file”: “/cluster/data/misc/admins/sofya/Driver_tall_fairing.bg_switch”,
“select_file”: “”,
“bc_email_on_started”: “0”
}

What am I doing wrong?

This worked

<%- if context.solver == "Ansys - Linear" || context.solver == "Ansys - Non-Linear" || context.solver == "Ansys - Thermal" -%>
	module load <%= context.auto_modules_ansys %>
<%- elsif context.solver == "CFX"  -%>
	module load <%= context.auto_modules_cfx %>
<%- elsif context.solver == "Fluent" %>
        module load <%= context.auto_modules_fluent %>
<%- elsif context.solver == "Star-CCM+" %>
        module load <%= context.auto_modules_starccm %>
<%- end -%>