120 likes | 254 Vues
This document provides general remarks on the structure and functionality of Globus Software and its various modules. It highlights the availability of a developer tutorial and notes the lack of documentation for common services. Key topics include module management, security aspects like GSSAPI, and a detailed look at job management using GRAM client functions. It addresses issues with source code errors, absence of user guides, and how users can intuitively explore the API functions, while also discussing callback mechanisms and job submission processes.
E N D
The Globus APIs Francesco.Giacomini@cnaf.infn.it 11th January 2001
General remarks • Globus Software is structured in modules • A developer tutorial is available on “common” services, security, io, gram (client, myjob, jobmanager), duroc, gass, ldap, rsl, nexus • Lack of documentation
“common” services • Module management • activation/deactivation • it would be useful to have a dependency graph • OS services • threads, mutexes, condition variables • generic interface, but not OO • globus-dependent naming
Security • Basic gssapi and gss_assist • Not an expert, both difficult for me • Some errors in source code (port number not in net byte order, variable not initialized, missing arg to a function)
RSL • No documentation (no reference manual, no user’s guide) • Which functions belong to the API? • From the examples one can intuitively understand how to use some of the functions • How to navigate in the internal representation tree?
RSL (cont) • In the spec executable, stdin, stdout, stderr can be URLs (http) • Ok for stdin • Not for executable
GRAM client GRAM_CLIENT POLL IO GRAM_HTTP (acquire credentials) COMMON THREAD_POOL THREAD ERROR CALLBACK THREAD_COMMON THREAD THREAD_POOL
GRAM client functions • General • globus_gram_client_error_string() • Job (globus_gram_client_job_*) • request(), status(), cancel(), contact_free() • callback_register(), callback_unregister() • check(), start_time() • Callback (globus_gram_client_callback_*) • allow(), disallow()
Job submission module_activate(GLOBUS_GRAM_CLIENT_MODULE) job_request(jm_contact, rsl_spec, …) -> job_contact job_contact_free(job_contact) module_deactivate_all() https://1linux.cnaf.infn.it:2702/18926/978976875 job_contact is used by job_status() and job_cancel() Running machine port JM pid UNIX time
Callbacks • Enabling a callback callback_allow(cb_fun, cb_arg) -> cb_contact • Implicit callback registration job_request(…, cb_contact, …) • Explicit callback registration job_callback_register(job_contact, cb_contact, …) job_callback_unregister(job_contact, cb_contact, …) • Disabling a callback callback_disallow(cb_contact)
Callback contacts https://1linux.cnaf.infn.it:2676/ • Existing callback contacts are disabled deactivating the module • No API function to free a callback contact Submitting machine port
When will my job start? • job_start_time(job_contact, …) • estimated start time of a PENDING job or • actual start time of an ACTIVE job • job_check(jm_contact, rsl_spec, …) • estimated start time of a job with the specified characteristics Not yet implemented!