Difference between revisions of "Access control scripts (admission rules)"
From Supercomputación y Cálculo Científico UIS
Line 1: | Line 1: | ||
Back to [[OAR]] | Back to [[OAR]] | ||
− | '''These scripts must be entered in the sql table called "admission_rules": | + | '''These scripts must be entered in the sql table called "admission_rules" or can be added using oaradmin: |
+ | {{Command|<nowiki> | ||
+ | oaradmin -a [rule_id] [-f file] | ||
+ | </nowiki>}} | ||
+ | |||
+ | To edit a rule: | ||
+ | {{Command|<nowiki> | ||
+ | oaradmin -e [rule_id] [-f file] | ||
+ | </nowiki>}} | ||
1. Maximum walltime: passive 336 hours, interactive 2 hours. | 1. Maximum walltime: passive 336 hours, interactive 2 hours. |
Revision as of 21:43, 6 February 2015
Back to OAR
These scripts must be entered in the sql table called "admission_rules" or can be added using oaradmin:
oaradmin -a [rule_id] [-f file]
To edit a rule:
oaradmin -e [rule_id] [-f file]
1. Maximum walltime: passive 336 hours, interactive 2 hours.
NOTE: The following script works in oar version 2.5
my $max_interactive_walltime = OAR::IO::sql_to_duration("2:00:00"); # 7 days = 168 hours my $max_batch_walltime = OAR::IO::sql_to_duration("336:00:00"); foreach my $mold (@{$ref_resource_list}){ if (defined($mold->[1])){ if (($jobType eq "INTERACTIVE") and ($reservationField eq "None") and ($max_interactive_walltime < $mold->[1])){ print("[ADMISSION RULE] Walltime too big for an INTERACTIVE job so it is set to $max_interactive_walltime.\n"); $mold->[1] = $max_interactive_walltime; }elsif ($max_batch_walltime < $mold->[1]){ print("[ADMISSION RULE] Walltime too big for a BATCH job so it is set to $max_batch_walltime.\n"); $mold->[1] = $max_batch_walltime; } } }
NOTE: The following script works in oar version 2.4
update admission_rules set rule= 'my $max_interactive_walltime = iolib::sql_to_duration("2:00:00")\; # 14 days = 336 hours my $max_batch_walltime = iolib::sql_to_duration("336:00:00")\; foreach my $mold (@{$ref_resource_list}){ if (defined($mold->[1])){ if (($jobType eq "INTERACTIVE") and ($reservationField eq "None") and ($max_interactive_walltime < $mold->[1])){ print("[ADMISSION RULE] Walltime too big for an INTERACTIVE job so it is set to $max_interactive_walltime.\n")\; $mold->[1] = $max_interactive_walltime\; }elsif ($max_batch_walltime < $mold->[1]){ print("[ADMISSION RULE] Walltime too big for a BATCH job so it is set to $max_batch_walltime.\n")\; $mold->[1] = $max_batch_walltime\; } } }' where id=11;
NOTE: The previous script replaces the original rule 11 (in the current guane setup) That original rule is presented below:
# Set the maximum walltime my $max_walltime = iolib::sql_to_duration("12:00:00"); if (($jobType eq "INTERACTIVE") and ($reservationField eq "None")){ foreach my $mold (@{$ref_resource_list}){ if ((defined($mold->[1])) and ($max_walltime < $mold->[1])){ print("[ADMISSION RULE] Walltime to big for an INTERACTIVE job so it is set to $max_walltime.\n"); $mold->[1] = $max_walltime; } } }
2. Limit jobs to allow at least one interactive job.
To be continued.
source [1]