Re: [Condor-users] quoting of globusrsl string ?


Date: Thu, 3 Feb 2005 12:08:05 -0600 (CST)
From: Jaime Frey <jfrey@xxxxxxxxxxx>
Subject: Re: [Condor-users] quoting of globusrsl string ?
Ahhhhhh! Multiple levels of quoting and variable substitution. Getting it
right is a nightmare. Let's see what we can do....

On Thu, 3 Feb 2005, Siegfried Goericke wrote:

> I use Condor the folloing setup with success:
>
> Condor-G(6.6.8) ==> gt2.4.3 ==> condor-cluster(6.6.8)    (LINUX)
>
> Now I added some WINNT51 workstations to the condor-cluster.
>
> I created the the job-manager-condor-INTEL-WINNT51 and
> job-manager-condor-INTEL-LINUX files and the servicefiles as described in
> the documentation.
>
> I tested this configuration from the local  condor-cluster and all works
> fine.
>
> Universe = vanilla
> executable = run_script.$$(ARCH).$$(OpSys)
> Requirements = (Arch == "INTEL") && ((OpSys == "LINUX")|| (OpSys ==
> "WINNT51"))
> queue 20
>
>
> The next step: I want to submitt the job with the central condor-g
> scheduler:
>
> Universe = globus
> executable = /Projekte/Grid/run_script.$$(ARCH).$$(OpSys)
> GlobusRSL = (condorsubmit=(universe vanilla)(nice_user true))
> globusscheduler = su210042.sha.vrkw.de/jobmanager-condor
> queue 1
>
> ==> don't submitted error: unexpected response  remote server must speak
> GRAM 1.6 ==> held

Sad that this can't work. The combination of Condor-G not knowing what the
remote local scheduler is, having to stage the executable before it's
submitted to the remote local scheduler, and Globus renaming staged
executables to "data" make it unworkable.

You've also tripped over our crude hack to discover what version of GRAM
is on the server, because Condor-G is expecting any $$ to be expanded
locally via matchmaking before submitting to Globus.

> Universe = globus
> executable = /Projekte/Grid/run_script.INTEL.WINNT51
> Requirements = (Arch == "INTEL") &&  (OpSys == "WINNT51")
> GlobusRSL = (condorsubmit=(universe vanilla)(nice_user true))
> globusscheduler = su210042.sha.vrkw.de/jobmanager-condor-INTEL-WINNT51
> queue 1
>
> ==> started at the linux boxes

As you found out, Requirements is only used locally. If you were to set up
matchmaking to find what globus resource to use, you'd use Requirements
and Rank for that.

> Then I want the requirements path to globusrsl:
>
> GlobusRSL = (condorsubmit=(universe vanilla)(nice_user true)(requirements
> (Arch == "INTEL") &&  (OpSys == "WINNT51")))
>
> but parsing errors occurs.
>
> The question is how to quote  (Arch == "INTEL") &&  (OpSys == "WINNT51") ?
>
> or what is the right GlobusRsl string or submitfile for this job.

Here, you need to get your multi-level quoting right. First, you need to
put backslashes in front of each double-quote to make condor_submit happy.
It takes the entire string, slaps double-quotes around it, and shoves it
into the job classad, without trying to escape the double-quotes in the
string first. Then, you need to put single quotes around the entire
requirements expression, since parentheses, ampersands, and quotes have
special meaning in Globus RSL syntax. Condor-G treats GlobusRSL as an
opaque string that it slaps on the end of the RSL it builds to submit to
Globus.

+----------------------------------+---------------------------------+
|            Jaime Frey            |  Public Split on Whether        |
|        jfrey@xxxxxxxxxxx         |  Bush Is a Divider              |
|  http://www.cs.wisc.edu/~jfrey/  |         -- CNN Scrolling Banner |
+----------------------------------+---------------------------------+

[← Prev in Thread] Current Thread [Next in Thread→]