[gavia-ms-commit] r1279 - trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia

commit at globus.org commit at globus.org
Fri Jul 10 17:59:06 CDT 2009


Author: patricka
Date: 2009-07-10 17:59:04 -0500 (Fri, 10 Jul 2009)
New Revision: 1279

Modified:
   trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia.in
   trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia_job_manager_adapter.xml
Log:
Fixes Bug 6793: Adds support for configuring defaut rank and requirements from the gavia config file. If a rank or requirements section is defined in the config file, then it replaces the default rank in the gavia.in file. 




Modified: trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia.in
===================================================================
--- trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia.in	2009-07-09 18:30:43 UTC (rev 1278)
+++ trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia.in	2009-07-10 22:59:04 UTC (rev 1279)
@@ -110,10 +110,7 @@
     $log_config_file  = $globus_location . "/etc/gavia_job_manager_adapter.xml";
 
 
-    # Default universe for jobs submitted to this job manager
-    $universe = "grid";
 
-
     # 
     # Get Condor version
     #
@@ -147,19 +144,19 @@
     # 2.1 Insert new attributes in job description
 
     # 2.1.1 Get atttrs from config file
-    $gavia_config = XMLin($log_config_file, GroupTags => {'blacklist' => 'site'}, ForceArray => ['site']);
-
+    $gavia_config = XMLin($log_config_file, 
+                          GroupTags => {'blacklist' => 'site'}, 
+                          ForceArray => ['site'], SuppressEmpty => 1);
     
     $job_desc_log_dir = $gavia_config->{jobDescLogDir};
     $adapter_log_file = $gavia_config->{adapterLogFile};
-    $universe = $gavia_config->{defaultUniverse};
+    $universe = $gavia_config->{defaultUniverse} || "grid";
     if (UNIVERSAL::isa( $gavia_config->{blacklist}, "ARRAY" )) {
         @blacklist = @{$gavia_config->{blacklist}};
     }
+    $config_requirements = $gavia_config->{requirements};
+    $config_rank = $gavia_config->{rank};
 
-    ## print "#\n# extracted elements\n#\n";
-    ## print "  job_desc_log_dir = \"$tags->{'jobDescLogDir'}\"\n";
-    ## print "  adapter_log_file = \"$tags->{'adapterLogFile'}\"\n";  
 
     # 2.1.2 Insert attrs in job description
     if ( $adapter_log_file ) {
@@ -331,31 +328,14 @@
         my $dump = Dumper( $description->extensions() );
         $self->log("\n  DEBUG BEGIN:\n  <extensions> element:\n  ${dump}  DEBUG END") if ( $dump );
 
+        my $extensions = $description->extensions();
+        $extensions = XMLin("<extensions>$extensions</extensions>");
 
-        my $ext = $description->extensions();
-        my $res = undef;
-
-        #
-        # Extract universe to $universe
-        #
-        $res = ($ext =~ /\<universe.*?\>(.*)\<\/universe\>.*/s);
-        $universe = $1 if ($1 && $res);
-        #$self->log("DEBUG:\nDEBUG universe = $universe\nDEBUG");
-
-        #
-        # Extract user's requirements to $user_req
-        #
-        $res = ($ext =~ /\<requirements.*?\>(.*)\<\/requirements\>.*/s);
-        if ($1 && $res ) {
-            $user_req = $1;
-            $user_req =~ s/==/=?=/g;
-            $user_req =~ s/!=/=!=/g;
-            $user_req =~ s/&quot;/\"/g;
-        }
-        if ( $user_req ) {
-            $user_req = " && (". $user_req . ")";
-        }
-
+        $universe = $extensions->{universe} if  $extensions->{universe};
+        $user_req = $extensions->{requirements};
+        $user_req =~ s/&quot;/\"/g;
+        $user_req =~ s/==/=?=/g;
+        $user_req =~ s/!=/=!=/g;
     }
 
 
@@ -572,27 +552,37 @@
         #
         # Set $requirements
         #
-        $requirements = "(TARGET.resource_name =!= UNDEFINED)"; 
-        if ( defined $job_service_host_port ) {
-            $requirements .= " \
-                              && (TARGET.grid_type     =!= UNDEFINED) \
-                              && (TARGET.grid_type =?= \"gt2\" || TARGET.grid_type =?= \"gt4\" ) \
-                              && (TARGET.gatekeeper_url =!= UNDEFINED ) \
-                              && (TARGET.gatekeeper_url =?= \"$job_service_host_port\") "; 
+        if ($config_requirements) {
+            $requirements = $config_requirements;
         }
-        if ( defined $job_manager_type ) {
-            $requirements .= " \
-                              && (TARGET.job_manager_type  =!= UNDEFINED) \
-                              && (TARGET.job_manager_type  =?= \"$job_manager_type\") "; 
+        else {
+            $requirements = "(TARGET.resource_name =!= UNDEFINED) && (TARGET.Name =!= LastMatchName0)";
+            if ( defined $job_service_host_port ) {
+                $requirements .= " \
+                                  && (TARGET.grid_type     =!= UNDEFINED) \
+                                  && (TARGET.grid_type =?= \"gt2\" || TARGET.grid_type =?= \"gt4\" ) \
+                                  && (TARGET.gatekeeper_url =!= UNDEFINED ) \
+                                  && (TARGET.gatekeeper_url =?= \"$job_service_host_port\") "; 
+            }
+            if ( defined $job_manager_type ) {
+                $requirements .= " \
+                                  && (TARGET.job_manager_type  =!= UNDEFINED) \
+                                  && (TARGET.job_manager_type  =?= \"$job_manager_type\") "; 
+            }
         }
         if ( $user_req ) {
-            $requirements .= $user_req;
+            $requirements .= " && ($user_req)";
         }
 
         #
         # Set $rank
         #
-        $rank = "Rank = ( -1.0 * CurMatches )  + GlueCEStateTotalCPUs";
+        if ($config_rank) {
+            $rank = $config_rank;
+        }
+        else {
+            $rank = "( -1.0 * CurMatches )  + GlueCEStateTotalCPUs";
+        }
 
 
         #
@@ -692,7 +682,6 @@
 
 
     # For debugging
-    #print SCRIPT_FILE "globus_xml = $globus_xml</job>\n";
     print SCRIPT_FILE "globus_xml = $globus_xml\n";
 
 
@@ -734,7 +723,6 @@
         }
     }
 
-    $requirements .= " && (TARGET.Name =!= LastMatchName0)";
 
 
     #
@@ -750,10 +738,7 @@
     #    rank
     #
     print SCRIPT_FILE "Requirements = $requirements\n";
-    if ( $rank ne '' )
-    {
-        print SCRIPT_FILE "$rank\n";
-    }
+    print SCRIPT_FILE "Rank = $rank\n" if $rank;
 
 
     #

Modified: trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia_job_manager_adapter.xml
===================================================================
--- trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia_job_manager_adapter.xml	2009-07-09 18:30:43 UTC (rev 1278)
+++ trunk/MetaScheduling/Adapter/gpt-packages/globus_gram_job_manager_setup_gavia/gavia_job_manager_adapter.xml	2009-07-10 22:59:04 UTC (rev 1279)
@@ -7,6 +7,25 @@
 
   <defaultUniverse>grid</defaultUniverse>
 
+
+  <!-- If you like, you can write custom rank and requirements 
+       expressions to replace the Gavia defaults for your specific site.
+       
+       Your rank and requirements should be in the Condor classad format.
+       Read about this here:
+
+       http://www.cs.wisc.edu/condor/manual/latest/4_1Condor_s_ClassAd.html
+
+       The default rank and requirements for Gavia are as follows:
+
+       <requirements>(TARGET.resource_name =!= UNDEFINED)</requirements>
+       <rank>( -1.0 * CurMatches )  + GlueCEStateTotalCPUs</rank>
+  -->
+  <requirements></requirements>
+  <rank></rank>
+  
+
+
   <!-- List machines that you would not like Gavia to schedule
        jobs to. You can use the fill site name in the format:
 



More information about the gavia-ms-commit mailing list