= QCG Klient dla infrastruktury PL-Grid = [[PageOutline]] [[QCG_PL-Grid | Infrastruktura QoSCosGrid wraz z opisem wymagań i procedur dla projektu PL-Grid.]] = Configuration = 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. * Client looks for proxy according to following rules: {{{ #!div style="font-size: 90%" {{{#!default It first checks the X509_USER_PROXY system property. If the property is not set, it checks next the 'proxy' property in the current configuration. If that property is not set, then it defaults to a value based on the following rules: If a UID system property is set, and running on a Unix machine it returns /tmp/x509up_u${UID}. If any other machine then Unix, it returns ${tempdir}/x509up_u${UID}, where tempdir is a platform-specific temporary directory as indicated by the java.io.tmpdir system property. If a UID system property is not set, the username will be used instead of the UID. That is, it returns ${tempdir}/x509up_u_${username} }}} }}} * Client looks for the CA directory according to following rules: {{{ #!div style="font-size: 90%" {{{#!sh It first checks the X509_CERT_DIR system property. If the property is not set, it checks next the 'cacert' property in the current configuration. If that property is not set, it tries to find the certificates using the following rules: First the ${user.home}/.globus/certificates directory is checked. If the directory does not exist, and on a Unix machine, the /etc/grid-security/certificates directory is checked next. If that directory does not exist and GLOBUS_LOCATION system property is set then the ${GLOBUS_LOCATION}/share/certificates directory is checked. }}} }}} CoG library configuration can be modified using the COG properties file `~/.globus/cog.properties` {{{ #!div style="font-size: 90%" {{{#!sh #Java CoG Kit Configuration File proxy=/tmp/x509up_u501 cacert=/etc/grid-security/certificates/ }}} }}} Additionaly the location of user's certificate and private key must be specified. {{{ #!div style="font-size: 90%" {{{#!sh usercert=/home/piontek/.globus/usercert.pem userkey=/home/piontek/.globus/userkey.pem }}} }}} 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. = Job Profile = 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]]. Examples of Job Profiles describing basic use cases are distributed with QCG-Broker and can be found in `/examples directory`. = Usage = The QCG-Groker command-line java based client can operate in two modes: * '''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, * '''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. The usage of the client depends on the mode: * for batch mode: "`qcg-client OPRATION [ARG1 .. ARGn]`" * 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. '''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. == Operations == Regardless from the mode the QCG-Broker java based command-line client supports following list of operations: ||= '''Operation''' =||= '''Arguments''' =||= '''Description''' =|| ||='''submit_job''' =|| `` `[QCG or JSDL]` || submits a job to be executed. The description of job can be expressed either in native QCG-Broker language (the default one) or in JSDL one. '''In case when the job to be submitted is described in JSDL format the type (JSDL) must be explicitly specified'''. 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. || ||='''list_jobs''' =|| `[]` `[]` || 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. || ||='''list_user_jobs''' =|| `` `[]` `[]` || lists jobs belonging to the given `user`. The functionality is destined for administrative purposes. || ||='''test_description''' =|| `` `[QCG or JSDL]` || validates job description || ||='''translate_description''' =|| `` JSDL || translates job description to native QCG-Broker one || ||='''job_info''' =|| `` `[]` || return complex information about the given job. If the `showJobDesc is` `false` the job description is not shown || ||='''cancel_job''' =|| `` || cancels execution of the given job || ||='''commit_job''' =|| `` || 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. || ||='''list_tasks''' =|| `` `[]` || lists tasks belonging to given job. Optionally it is possible to specify the task's status. Possible task statuses are listed below the table. || ||='''tasks_statuses''' =|| `` `[]` || lists tasks constituting the given job with their statuses. If the `summary` argument is `true` some additionall statistics is displayed. || ||='''register_job_notification''' || `` `` || registers notification consumer for the given job || ||='''list_job_notifications''' =|| `` || lists notifications registered for the given job || ||='''register_tasks_notification''' =|| `` `` || register notification for all tasks of the given job || ||='''monitor_job''' =|| `` `[]` || monitors status changes of tasks belonging to given job. The `interval` argument determines delay in seconds between next status checks. || ||='''monitor_task''' =|| `` `` `[]` || monitors status changes of allocations belonging to the given tasks. The `interval` argument determines delay in seconds between next status checks. || ||='''task_info''' =|| `` `` `[` `[]]` || 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. =|| ||='''register_task_notification''' =|| `` `` `` || registers task's notification consumer || ||='''list_task_notifications''' =|| `` `` || lists task's notifications || ||='''cancel_task''' =|| `` `` || cancels execution of the given task || ||='''commit_task''' =|| `` `` || commits the given task to be processed by the system || ||='''reserve_resources''' =|| `[]` `` (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! || ||='''reservation_info''' =|| `` || return complex information concerning the given reservation: list of reserved resources, local identifiers of reservations, reservation time slot. This functionality id not implemented yet! || ||='''cancel_reservation''' =|| `` || releases reserved resources. This functionality is not implemented yet! || List of Job statuses: * UNCOMMITTED - the job was submitted with two phase commit option and waits to be committed, * SUBMITTED – the job was submitted to the system and is executed by the system, * SUSPENDED – the job was suspended, * ACTIVE – the job is active, at least one task is processed, * FINISHED – the job was completed, * FAILED – the job (at least one crucial task belonging to the job) failed * CANCELED – the job was canceled by the user, * BROKEN - one or more of crucial tasks failed, system waits until active tasks will finish and change the status of the job to FAILED.| List of Task statuses: * UNSUBMITTED – the task cannot be started because of dependencies, * UNCOMMITED - the task waits to be committed, * QUEUED – the task was put into the queue and waits for execution, * PREPROCESSING – system makes some actions needed to start the task (looks for the resource, stages in files), * PENDING – the task is pending in the queueing-system, * RUNNING – the task is active, * STOPPED – the task was finished or was checkpointed, but system did not start staging out files, * POSTPROCESSING – system makes some actions needed to complete the task, for example stages out files, cleares working environment, etc., * FINISHED – the task was completed, * SUSPENDED – the task was suspended, * FAILED – the task failed, * CANCELED – the task was canceled by the user. == Usage examples == [[qcg_usage_examples | Przykłady użycia klienta QCG]]