[Swift-commit] r7391 - trunk/bin

davidk at ci.uchicago.edu davidk at ci.uchicago.edu
Mon Dec 9 17:03:15 CST 2013


Author: davidk
Date: 2013-12-09 17:03:15 -0600 (Mon, 09 Dec 2013)
New Revision: 7391

Modified:
   trunk/bin/swiftrun
Log:
Add aliases for new parameter names
Some checks to make sure walltimes are in hh:mm:ss
Function to convert values to jobthrottle format
A little better error checking


Modified: trunk/bin/swiftrun
===================================================================
--- trunk/bin/swiftrun	2013-12-09 18:54:02 UTC (rev 7390)
+++ trunk/bin/swiftrun	2013-12-09 23:03:15 UTC (rev 7391)
@@ -33,22 +33,37 @@
                    'highoverallocation'        => 'globus.highoverallocation',
                    'initialscore'              => 'karajan.initialscore',
                    'internalhostname'          => 'globus.internalhostname',
+                   'jobgranularity'            => 'globus.nodegranularity',
+		   'jobproject'                => 'globus.project',
+                   'jobqueue'                  => 'globus.queue',
                    'jobspernode'               => 'globus.jobspernode',
                    'jobthrottle'               => 'karajan.jobthrottle',
                    'jobtype'                   => 'globus.jobtype',
+		   'jobwalltime'               => 'globus.maxtime',
+                   'jobwalltimereserve'        => 'globus.reserve',
                    'lowoverallocation'         => 'globus.lowoverallocation',
+		   'maxjobs'                   => 'globus.slots',
                    'maxnodes'                  => 'globus.maxnodes',
+                   'maxnodesperjob'            => 'globus.maxnodes',
                    'maxsubmitrate'             => 'karajan.maxsubmitrate',
                    'maxtime'                   => 'globus.maxtime',
                    'maxwalltime'               => 'globus.maxwalltime',
                    'nodegranularity'           => 'globus.nodegranularity',
                    'overallocationdecayfactor' => 'globus.overallocationdecayfactor',
+                   'project'                   => 'globus.project',
                    'provider'                  => 'provider.coaster',
                    'queue'                     => 'globus.queue',
+                   'remotemonitorenabled'      => 'globus.remotemonitorenabled',
+                   'reserve'                   => 'globus.reserve',
                    'slots'                     => 'globus.slots',
                    'spread'                    => 'globus.spread',
-                   'remotemonitorenabled'      => 'globus.remotemonitorenabled',
-                   'reserve'                   => 'globus.reserve',
+                   'tasksperworker'            => 'globus.jobspernode',
+                   'taskthrottle'              => 'karajan.jobthrottle',
+                   'taskwalltime'              => 'globus.maxwalltime',
+		   'workerlogginglevel'        => 'globus.workerlogginglevel',
+		   'workerloglevel'            => 'globus.workerlogginglevel',
+                   'workerloggingdirectory'    => 'globus.workerloggingdirectory',
+                   'workerlogdirectory'        => 'globus.workerloggingdirectory',
 );
 
 # Verify a property file exists and add it to the search path
@@ -72,6 +87,30 @@
    return $pool;
 }
 
+sub verify_in_hhmmss {
+   my $parameter_name =  $_[0];
+   my $parameter_value = $_[1];
+   my $ccount = ($parameter_value =~ s/:/:/g);
+   if ($ccount != 2) {
+      swiftquit("Error: $parameter_name value $parameter_value is not in hh:mm:ss format");
+   }
+}
+
+# Convert hh:mm:ss to seconds
+sub hhmmss_to_seconds {
+   (my $hh, my $mm, my $ss) = split(':', $_[0]);
+   return ($hh*60*60)+($mm*60)+$ss;
+}
+
+# Convert to job throttle format
+sub number_to_throttle {
+   my $input = $_[0];
+   if ( $input !~ /\d/) {  
+      swiftquit("Error: taskthrottle must be numeric");
+   }
+   return ($input - 1) / 100;
+}  
+ 
 # Given a string in format site.beagle.globus.jobsPerNode=12, convert to xml
 sub property_to_xml {
    my $key = $_[0];
@@ -88,15 +127,34 @@
    # In the case of a shortened definition, check for aliases 
    if ( !defined( $property ) ) {
       if ( defined( $xml_aliases{ lc( $namespace )})) { 
-         ( $namespace, $property ) = split(/\./, $xml_aliases{ lc($namespace) });
+         $namespace=lc($namespace);
+
+         # Values that need that may need modifications
+         if( $namespace eq "jobwalltime" ) {
+            verify_in_hhmmss($namespace, $value);
+            $value = hhmmss_to_seconds($value); 
+         } 
+         elsif ( $namespace eq "taskthrottle" ) {
+            $value = number_to_throttle($value);
+         }
+         elsif ( $namespace eq "taskwalltime" ) {
+            verify_in_hhmmss($namespace, $value);
+         }
+
+         ( $namespace, $property ) = split(/\./, $xml_aliases{ $namespace });
       }
    }     
    
    # Make sure to handle special cases that are not in the namespace=x, key=y, format
    if    ( $namespace eq "provider" )      { return "<execution provider=\"" . $property . "\" jobmanager=\"" . $value . "\"/>\n"; }
    elsif ( $namespace eq "workdirectory" ) { return "<workdirectory>$value</workdirectory>\n"; }
+   elsif ( $namespace eq "workdir" )       { return "<workdirectory>$value</workdirectory>\n"; }
+   elsif ( $namespace eq "taskdir" )       { return "<scratch>$value</scratch>\n"; }
    elsif ( $namespace eq "filesystem" )    { return "<filesystem provider=\"" . $value . "\"/>\n"; }
-   else                                    { return "<profile namespace=\"" . $namespace . "\" key=\"" . $property . "\">" . $value . "</profile>\n"; }
+
+   if ( defined($property) && defined($value) ) {
+      return "<profile namespace=\"" . $namespace . "\" key=\"" . $property . "\">" . $value . "</profile>\n"; 
+   }
 } 
 
 # Write apps to file in tc.data format




More information about the Swift-commit mailing list