Changes between Version 24 and Version 25 of installation_QCG_Broker_Client

Show
Ignore:
Timestamp:
06/10/11 17:16:47 (13 years ago)
Author:
piontek
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • installation_QCG_Broker_Client

    v24 v25  
    156156}}} 
    157157 
    158 = Configuration = 
    159 To work properly and to authenticate user to the service, client has to be able to load user's proxy certificate and validate service credential during the handshake procedure. To do this it needs to know location of the file containing proxy certificate and directory containing public keys of Certificate Authorities it should trust. 
    160  
    161 * Client looks for proxy according to following rules: 
    162 {{{ 
    163 #!div style="font-size: 90%" 
    164 {{{#!default 
    165 It first checks the X509_USER_PROXY system property. If the property 
    166 is not set, it checks next the 'proxy' property in the current 
    167 configuration. If that property is not set, then it defaults to a 
    168 value based on the following rules:  
    169 If a UID system property is set, and running on a Unix machine it 
    170 returns /tmp/x509up_u${UID}. If any other machine then Unix, it returns 
    171 ${tempdir}/x509up_u${UID}, where tempdir is a platform-specific 
    172 temporary directory as indicated by the java.io.tmpdir system property. 
    173 If a UID system property is not set, the username will be used instead 
    174 of the UID. That is, it returns ${tempdir}/x509up_u_${username} 
    175 }}} 
    176 }}} 
    177  
    178 * Client looks for the CA directory according to following rules: 
    179 {{{ 
    180 #!div style="font-size: 90%" 
    181 {{{#!sh 
    182 It first checks the X509_CERT_DIR system property. If the property 
    183 is not set, it checks next the 'cacert' property in the current 
    184 configuration. If that property is not set, it tries to find 
    185 the certificates using the following rules: 
    186 First the ${user.home}/.globus/certificates directory is checked. 
    187 If the directory does not exist, and on a Unix machine, the 
    188 /etc/grid-security/certificates directory is checked next. 
    189 If that directory does not exist and GLOBUS_LOCATION 
    190 system property is set then the ${GLOBUS_LOCATION}/share/certificates 
    191 directory is checked.  
    192 }}} 
    193 }}} 
    194  
    195 CoG library configuration can be modified using the COG properties file `~/.globus/cog.properties` 
    196 {{{ 
    197 #!div style="font-size: 90%" 
    198 {{{#!sh 
    199 #Java CoG Kit Configuration File 
    200 proxy=/tmp/x509up_u501 
    201 cacert=/etc/grid-security/certificates/ 
    202 }}} 
    203 }}} 
    204  
    205 Additionaly the location of user's certificate and private key must be specified.  
    206 {{{ 
    207 #!div style="font-size: 90%" 
    208 {{{#!sh 
    209 usercert=/home/piontek/.globus/usercert.pem 
    210 userkey=/home/piontek/.globus/userkey.pem 
    211 }}} 
    212 }}} 
    213 If they are specified and user proxy certificate doesn't exist it will be automatically created by the client. Otherwise the proxy certificate has to be created by `grid-proxy-init` tool. 
    214  
    215 = Job Profile = 
    216 Every experiment submitted to QCG-Broker has to be described by XML-based document called ''Job Profile''. The structure of ''Job Profile'' is formalized by [[http://node2.qoscosgrid.man.poznan.pl/~piontek/qcg-broker/QCGJobDescriptionSchema.xsd|Job Profile schema]]. 
    217  
    218 Examples of Job Profiles describing basic use cases are distributed with QCG-Broker and can be found in `<CLIENT_DIR>/examples directory`. 
    219  
    220158= Usage = 
    221  
    222 The QCG-Groker command-line java based client can operate in two modes: 
    223  
    224 * '''batch mode''' – that executes single operation with arguments passed directly to the client during its invocation. The batch mode allows to use the client in any kind of scripts mostly in cases when the processing of output is needed to steer the experiment, 
    225 * '''console mode''' – that works similar to shell console in which user can type in lines with operations and arguments to be executed by service. The console mode gives additional useful features like aliases, history accessible by arrows-keys, creation and management of user proxy, help functionality.  
    226  
    227 The usage of the client depends on the mode: 
    228 * for batch mode: "`qcg-client OPRATION [ARG1 .. ARGn]`" 
    229 * for console mode: "`qcg-client -console`" and then user is prompted to type in lines in format "`OPERATION [ARG1 .. ARGn]`" to be processed by client.  
    230  
    231 '''IMPORTANT:''' To secure the communication between client and service and to delegate user's privileges to the service client needs access to user's proxy certificate. 
    232  
    233 == Operations == 
    234  
    235 Regardless from the mode the QCG-Broker java based command-line client supports following list of operations: 
    236  
    237 ||= '''Operation''' =||= '''Arguments''' =||= '''Description''' =|| 
    238 ||='''submit_job''' =|| `<desc_file>` (QCG or JSDL) || submits a job to be executed. The description of job can be expressed either in native QCG-Broker language or if it is possible in JSDL one. If the description is valid client returns to the user a globally unique job identifier, which unambiguously identifies the job in the system.  QCG defines jobs as a sets of dependent tasks that constitute a logical whole (workflow). Each task is executed by system only if all tasks it depends on are in specified by the user states. ||  
    239 ||='''list_jobs''' =|| `[<limit>]` `[<status>]` || lists jobs belonging to the `user`. It is possible either to `limit` number of jobs or to display only ones in given state. All possible states are listed below  the table. || 
    240 ||='''list_user_jobs''' =|| `[<limit>]` `[<status>]` `<user>` || lists jobs belonging to the given `user`. The functionality is destined for administrative purposes. || 
    241 ||='''test_description''' =|| `<desc_file>` (QCG or JSDL) || validates job description ||  
    242 ||='''translate_description''' =|| `<desc_file>` JSDL || translates job description to native QCG-Broker one || 
    243 ||='''job_info''' =|| `<jobId>` `[<showJobDesc>]` || return complex information about the given job. If the `showJobDesc is` `false` the job description is not shown || 
    244 ||='''cancel_job''' =|| `<jobId>` || cancels execution of the given job || 
    245 ||='''commit_job''' =|| `<jobId>` || allows to approve the job submitted with two phase commit mechanism to be processed by the system. The two phase commit mechanism can be used to register notifications before the processing of the job will be started by broker. || 
    246 ||='''list_tasks''' =|| `<jobId>` `[<status>]` || lists tasks belonging to given job. Optionally it is possible to specify the task's status. Possible task statuses are listed below the table. || 
    247 ||='''tasks_statuses''' =|| `<jobId>` `[<summary>]` || lists tasks constituting the given job with their statuses. If the `summary` argument is `true` some additionall statistics is displayed. || 
    248 ||='''register_job_notification''' || `<jobId>` `<url>` || registers notification consumer for the given job || 
    249 ||='''list_job_notifications''' =|| `<jobId>` || lists notifications registered for the given job || 
    250 ||='''register_tasks_notification''' =|| `<jobId>` `<url>` || register notification for all tasks of the given job || 
    251 ||='''monitor_job''' =|| `<jobId>` `[<interval>]` || monitors status changes of tasks belonging to given job. The `interval` argument determines delay in seconds between next status checks. || 
    252 ||='''monitor_task''' =|| `<jobId>` `<taskId>` `[<interval>]` || monitors status changes of allocations belonging to the given tasks. The `interval` argument determines delay in seconds between next status checks. || 
    253 ||='''task_info''' =|| `<jobId>` `<taskId>` `[<showDesc>` `[<limit>]]` || displays information about the given task. If the `showDesc` is `false` the task description is not shown. If the `limit` argument is specified the history of the task is limited to given value. =|| 
    254 ||='''register_task_notification''' =|| `<jobId>` `<taskId>` `<url>` || registers task's notification consumer || 
    255 ||='''list_task_notifications''' =|| `<jobId>` `<taskId>` || lists task's notifications || 
    256 ||='''cancel_task''' =|| `<jobId>` `<taskId>` || cancels execution of the given task || 
    257 ||='''commit_task''' =|| `<jobId>` `<taskId>` || commits the given task to be processed by the system || 
    258 ||='''reserve_resources''' =|| `[<taskId>]` `<job_desc>` (QCG or JSDL) || reserve resources that meet either the wole job or given task requirements. The reservation identifier is returned. This functionality is not implemented yet! || 
    259 ||='''reservation_info''' =|| `<reservationId>` || return complex information concerning the given reservation: list of reserved resources, local identifiers of reservations, reservation time slot. This functionality id not implemented yet! || 
    260 ||='''cancel_reservation''' =|| `<reservationId>` || releases reserved resources. This functionality is not implemented yet! || 
    261  
    262  
    263 List of Job statuses: 
    264     * UNCOMMITTED - the job was submitted with two phase commit option and waits to be committed, 
    265     * SUBMITTED – the job was submitted to the system and is executed by the system, 
    266     * SUSPENDED – the job was suspended, 
    267     * ACTIVE – the job is active, at least one task is processed, 
    268     * FINISHED – the job was completed, 
    269     * FAILED – the job (at least one crucial task belonging to the job) failed 
    270     * CANCELED – the job was canceled by the user, 
    271     * BROKEN - one or more of crucial tasks failed, system waits until active tasks will finish and change the status of the job to FAILED.|  
    272  
    273 List of Task statuses: 
    274     * UNSUBMITTED – the task cannot be started because of dependencies, 
    275     * UNCOMMITED - the task waits to be committed, 
    276     * QUEUED – the task was put into the queue and waits for execution, 
    277     * PREPROCESSING – system makes some actions needed to start the task (looks for the resource, stages in files), 
    278     * PENDING – the task is pending in the queueing-system, 
    279     * RUNNING – the task is active, 
    280     * STOPPED – the task was finished or was checkpointed, but system did not start staging out files, 
    281     * POSTPROCESSING – system makes some actions needed to complete the task, for example stages out files, cleares working environment, etc., 
    282     * FINISHED – the task was completed, 
    283     * SUSPENDED – the task was suspended, 
    284     * FAILED – the task failed, 
    285     * CANCELED – the task was canceled by the user. 
    286 == Usage examples == 
    287  
    288 The example presented below is the QCG-Broker Job Profile describing the parameter-sweep experiment executing a set of UNIX calendar tasks for the predefined space of "month" parameter. 
    289  
    290 {{{ 
    291 #!div style="font-size: 90%" 
    292 {{{#!xml 
    293 <qcgJob appId="calendar_example"> 
    294         <task persistent="true" taskId="calendar"> 
    295                 <execution type="single"> 
    296                         <executable> 
    297                                 <execFile> 
    298                                         <file> 
    299                                                 <location type="URL">file:////usr/bin/cal</location> 
    300                                         </file> 
    301                                 </execFile> 
    302                         </executable> 
    303                         <arguments> 
    304                                 <value>${PS_month}</value> 
    305                                 <value>2010</value> 
    306                         </arguments> 
    307                         <stdout> 
    308                                 <file> 
    309                                         <location type="URL">${TASK_DIR}/stdout.txt</location> 
    310                                 </file> 
    311                         </stdout> 
    312                 </execution> 
    313                 <parametersSweep> 
    314                         <parameter> 
    315                                 <name>month</name> 
    316                                 <value> 
    317                                         <loop> 
    318                                                 <start>1</start> 
    319                                                 <end>12</end> 
    320                                                 <step>1</step> 
    321                                                 <except> 
    322                                                         <value>3</value> 
    323                                                         <value>6</value> 
    324                                                 </except> 
    325                                         </loop> 
    326                                 </value> 
    327                         </parameter> 
    328                 </parametersSweep> 
    329         </task> 
    330 </qcgJob> 
    331 }}} 
    332 }}} 
    333  
    334 === submit_job === 
    335 * `submit_job <job_profile>` - submits job. `<job_profile>` must be the path to the file containing the Job Profile. 
    336 {{{ 
    337 #!div style="font-size: 90%" 
    338 {{{#!sh 
    339 qcg-client submit_job ../examples/usecase8.xml 
    340 Your identity: C=PL,O=GRID,O=PSNC,CN=Tomasz Piontek 
    341 Creating proxy, please wait... 
    342 Proxy verify OK 
    343 Your proxy is valid until Tue May 17 02:55:47 CEST 2011 
    344 UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    345 ProxyLifetime = 0 Days 11 Hours 59 Minutes 57 Seconds 
    346  
    347 jobId = 1305550554579_calendar_example_5366 
    348 }}} 
    349 }}} 
    350  
    351 === list_jobs === 
    352 * `list_jobs [status] [limit]` - lists jobs. Optionally it is possible to specify status or limits the output to some number of recent jobs. 
    353 {{{ 
    354 #!div style="font-size: 90%" 
    355 {{{#!sh 
    356 qcg-client list_jobs 5 
    357 UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    358 ProxyLifetime = 0 Days 11 Hours 58 Minutes 47 Seconds 
    359  
    360 Number of jobs: 5 
    361 List of jobs:  
    362 1301904727887_calendar_example_1403 
    363 1304020897352_calendar_example_4252 
    364 1304065465905_calendar_example_9526 
    365 1305287977790_calendar_example_4779 
    366 1305550554579_calendar_example_5366 
    367 }}} 
    368 }}} 
    369  
    370 === job_info === 
    371 * `job_info <jobId> <showJobProfile>` - displays information about the given job. The `<showJobProfile>` argument of boolean type specifies whether the Job Profile should be displayed or not. 
    372 {{{ 
    373 #!div style="font-size: 90%" 
    374 {{{#!sh 
    375 qcg-client job_info 1305550554579_calendar_example_5366 false 
    376 UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    377 ProxyLifetime = 0 Days 11 Hours 58 Minutes 18 Seconds 
    378  
    379 UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    380 Project:  
    381 Status: FINISHED 
    382 StatusDesc:  
    383 SubmissionTime: Mon May 16 14:55:54 CEST 2011 
    384 FinishTime: Mon May 16 14:56:42 CEST 2011 
    385 Number of tasks: 10 
    386 Tasks: calendar_PSit0 calendar_PSit1 calendar_PSit2 calendar_PSit3 calendar_PSit4 calendar_PSit5 calendar_PSit6 calendar_PSit7 calendar_PSit8 calendar_PSit9  
    387 }}} 
    388 {{{#!sh 
    389 $ qcg-client job_info 1305550554579_calendar_example_5366 
    390 UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    391 ProxyLifetime = 0 Days 11 Hours 58 Minutes 6 Seconds 
    392  
    393 UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    394 Project:  
    395 Status: FINISHED 
    396 StatusDesc:  
    397 SubmissionTime: Mon May 16 14:55:54 CEST 2011 
    398 FinishTime: Mon May 16 14:56:42 CEST 2011 
    399 Number of tasks: 10 
    400 Tasks: calendar_PSit0 calendar_PSit1 calendar_PSit2 calendar_PSit3 calendar_PSit4 calendar_PSit5 calendar_PSit6 calendar_PSit7 calendar_PSit8 calendar_PSit9  
    401 DescriptionType: GRMS 
    402 UserDescription:  
    403 <qcgJob appId="calendar_example"> 
    404   <task persistent="true" taskId="calendar"> 
    405     <execution type="single"> 
    406       <executable> 
    407         <execFile> 
    408           <file> 
    409             <location type="URL">file:////usr/bin/cal</location> 
    410           </file> 
    411         </execFile> 
    412       </executable> 
    413       <arguments> 
    414         <value>${PS_month}</value> 
    415         <value>2010</value> 
    416       </arguments> 
    417       <stdout> 
    418         <file> 
    419           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    420         </file> 
    421       </stdout> 
    422     </execution> 
    423     <parametersSweep> 
    424       <parameter> 
    425         <name>month</name> 
    426         <value> 
    427           <loop> 
    428             <start>1</start> 
    429             <end>12</end> 
    430             <step>1</step> 
    431             <except> 
    432               <value>3</value> 
    433               <value>6</value> 
    434             </except> 
    435           </loop> 
    436         </value> 
    437       </parameter> 
    438     </parametersSweep> 
    439   </task> 
    440 </qcgJob> 
    441  
    442 QCGDescription:  
    443 <grmsJob appId="calendar_example"> 
    444   <task persistent="true" taskId="calendar_PSit0"> 
    445     <execution type="single"> 
    446       <executable> 
    447         <execFile> 
    448           <file> 
    449             <location type="URL">file:////usr/bin/cal</location> 
    450           </file> 
    451         </execFile> 
    452       </executable> 
    453       <arguments> 
    454         <value>1.0</value> 
    455         <value>2010</value> 
    456       </arguments> 
    457       <stdout> 
    458         <file> 
    459           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    460         </file> 
    461       </stdout> 
    462     </execution> 
    463   </task> 
    464   <task persistent="true" taskId="calendar_PSit1"> 
    465     <execution type="single"> 
    466       <executable> 
    467         <execFile> 
    468           <file> 
    469             <location type="URL">file:////usr/bin/cal</location> 
    470           </file> 
    471         </execFile> 
    472       </executable> 
    473       <arguments> 
    474         <value>2.0</value> 
    475         <value>2010</value> 
    476       </arguments> 
    477       <stdout> 
    478         <file> 
    479           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    480         </file> 
    481       </stdout> 
    482     </execution> 
    483   </task> 
    484   <task persistent="true" taskId="calendar_PSit2"> 
    485     <execution type="single"> 
    486       <executable> 
    487         <execFile> 
    488           <file> 
    489             <location type="URL">file:////usr/bin/cal</location> 
    490           </file> 
    491         </execFile> 
    492       </executable> 
    493       <arguments> 
    494         <value>4.0</value> 
    495         <value>2010</value> 
    496       </arguments> 
    497       <stdout> 
    498         <file> 
    499           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    500         </file> 
    501       </stdout> 
    502     </execution> 
    503   </task> 
    504   <task persistent="true" taskId="calendar_PSit3"> 
    505     <execution type="single"> 
    506       <executable> 
    507         <execFile> 
    508           <file> 
    509             <location type="URL">file:////usr/bin/cal</location> 
    510           </file> 
    511         </execFile> 
    512       </executable> 
    513       <arguments> 
    514         <value>5.0</value> 
    515         <value>2010</value> 
    516       </arguments> 
    517       <stdout> 
    518         <file> 
    519           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    520         </file> 
    521       </stdout> 
    522     </execution> 
    523   </task> 
    524   <task persistent="true" taskId="calendar_PSit4"> 
    525     <execution type="single"> 
    526       <executable> 
    527         <execFile> 
    528           <file> 
    529             <location type="URL">file:////usr/bin/cal</location> 
    530           </file> 
    531         </execFile> 
    532       </executable> 
    533       <arguments> 
    534         <value>7.0</value> 
    535         <value>2010</value> 
    536       </arguments> 
    537       <stdout> 
    538         <file> 
    539           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    540         </file> 
    541       </stdout> 
    542     </execution> 
    543   </task> 
    544   <task persistent="true" taskId="calendar_PSit5"> 
    545     <execution type="single"> 
    546       <executable> 
    547         <execFile> 
    548           <file> 
    549             <location type="URL">file:////usr/bin/cal</location> 
    550           </file> 
    551         </execFile> 
    552       </executable> 
    553       <arguments> 
    554         <value>8.0</value> 
    555         <value>2010</value> 
    556       </arguments> 
    557       <stdout> 
    558         <file> 
    559           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    560         </file> 
    561       </stdout> 
    562     </execution> 
    563   </task> 
    564   <task persistent="true" taskId="calendar_PSit6"> 
    565     <execution type="single"> 
    566       <executable> 
    567         <execFile> 
    568           <file> 
    569             <location type="URL">file:////usr/bin/cal</location> 
    570           </file> 
    571         </execFile> 
    572       </executable> 
    573       <arguments> 
    574         <value>9.0</value> 
    575         <value>2010</value> 
    576       </arguments> 
    577       <stdout> 
    578         <file> 
    579           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    580         </file> 
    581       </stdout> 
    582     </execution> 
    583   </task> 
    584   <task persistent="true" taskId="calendar_PSit7"> 
    585     <execution type="single"> 
    586       <executable> 
    587         <execFile> 
    588           <file> 
    589             <location type="URL">file:////usr/bin/cal</location> 
    590           </file> 
    591         </execFile> 
    592       </executable> 
    593       <arguments> 
    594         <value>10.0</value> 
    595         <value>2010</value> 
    596       </arguments> 
    597       <stdout> 
    598         <file> 
    599           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    600         </file> 
    601       </stdout> 
    602     </execution> 
    603   </task> 
    604   <task persistent="true" taskId="calendar_PSit8"> 
    605     <execution type="single"> 
    606       <executable> 
    607         <execFile> 
    608           <file> 
    609             <location type="URL">file:////usr/bin/cal</location> 
    610           </file> 
    611         </execFile> 
    612       </executable> 
    613       <arguments> 
    614         <value>11.0</value> 
    615         <value>2010</value> 
    616       </arguments> 
    617       <stdout> 
    618         <file> 
    619           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    620         </file> 
    621       </stdout> 
    622     </execution> 
    623   </task> 
    624   <task persistent="true" taskId="calendar_PSit9"> 
    625     <execution type="single"> 
    626       <executable> 
    627         <execFile> 
    628           <file> 
    629             <location type="URL">file:////usr/bin/cal</location> 
    630           </file> 
    631         </execFile> 
    632       </executable> 
    633       <arguments> 
    634         <value>12.0</value> 
    635         <value>2010</value> 
    636       </arguments> 
    637       <stdout> 
    638         <file> 
    639           <location type="URL">${TASK_DIR}/stdout.txt</location> 
    640         </file> 
    641       </stdout> 
    642     </execution> 
    643   </task> 
    644 </qcgJob> 
    645 }}} 
    646 }}} 
    647  
    648 === tasks_statuses === 
    649 * `tasks_statuses <jobId>` - lists tasks constituting the given job with their statuses. 
    650 {{{ 
    651 #!div style="font-size: 90%" 
    652 {{{#!sh 
    653 qcg-broker tasks_statuses 1305550554579_calendar_example_5366 
    654 UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    655 ProxyLifetime = 0 Days 11 Hours 41 Minutes 30 Seconds 
    656  
    657 Number of tasks: 10 
    658 Tasks statuses:  
    659 calendar_PSit7  : FINISHED 
    660 calendar_PSit6  : FINISHED 
    661 calendar_PSit5  : FINISHED 
    662 calendar_PSit4  : FINISHED 
    663 calendar_PSit3  : FINISHED 
    664 calendar_PSit2  : FINISHED 
    665 calendar_PSit1  : FINISHED 
    666 calendar_PSit0  : FINISHED 
    667 calendar_PSit9  : FINISHED 
    668 calendar_PSit8  : FINISHED 
    669 ------ SUMMARY -------- 
    670 Number of tasks: 10 
    671 FINISHED        : 10 
    672 }}} 
    673 }}} 
    674  
    675 === task_info === 
    676 * `task_info <jobId> <taskId>` - displays information about the given job 
    677 {{{ 
    678 #!div style="font-size: 90%" 
    679 {{{#!sh 
    680 qcg-broker task_info 1305550554579_calendar_example_5366 calendar_PSit0 
    681 UserDN = /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    682 ProxyLifetime = 0 Days 11 Hours 40 Minutes 11 Seconds 
    683  
    684 TaskType: SINGLE 
    685 SubmissionTime: Mon May 16 14:55:57 CEST 2011 
    686 FinishTime: Mon May 16 14:56:27 CEST 2011 
    687 ProxyLifetime: PT0S 
    688 Status: FINISHED 
    689 StatusDesc:  
    690 StartTime: Mon May 16 14:56:04 CEST 2011 
    691 DescriptionType: <task persistent="true" taskId="calendar_PSit0"> 
    692   <execution type="single"> 
    693     <executable> 
    694       <execFile> 
    695         <file> 
    696           <location type="URL">file:////usr/bin/cal</location> 
    697         </file> 
    698       </execFile> 
    699     </executable> 
    700     <arguments> 
    701       <value>1.0</value> 
    702       <value>2010</value> 
    703     </arguments> 
    704     <stdout> 
    705       <file> 
    706         <location type="URL">${TASK_DIR}/stdout.txt</location> 
    707       </file> 
    708     </stdout> 
    709   </execution> 
    710 </task> 
    711  
    712  
    713 Coallocation:  
    714 UserDN: /C=PL/O=GRID/O=PSNC/CN=Tomasz Piontek 
    715 HostName: grass1.man.poznan.pl 
    716 ProcessesCount: 1 
    717 ProcessesGroupId:  
    718 Status: FINISHED 
    719 StatusDescription:  
    720 SubmissionTime: Mon May 16 14:56:04 CEST 2011 
    721 FinishTime: Mon May 16 14:56:21 CEST 2011 
    722 LocalSubmissionTime: Mon May 16 14:56:06 CEST 2011 
    723 LocalStartTime: Mon May 16 14:56:10 CEST 2011 
    724 LocalFinishTime: Mon May 16 14:56:10 CEST 2011 
    725 }}} 
    726 }}} 
     159For the description how to use the QCG-Broker client please see the [[QCG_Broker_Client | QCG-Broker User Guide]]