From: František Dvořák Date: Wed, 28 Mar 2007 18:19:01 +0000 (+0000) Subject: merge from RC31 branch X-Git-Tag: merge_313_dst~8 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=b923bed366a87e72077901417acd29d8466cbc67;p=jra1mw.git merge from RC31 branch --- diff --git a/org.glite.jp.client/examples/glite-jp-importer.sh b/org.glite.jp.client/examples/glite-jp-importer.sh index edc5497..abf991a 100644 --- a/org.glite.jp.client/examples/glite-jp-importer.sh +++ b/org.glite.jp.client/examples/glite-jp-importer.sh @@ -44,16 +44,8 @@ fi CERT_ARGS="-c $X509_USER_CERT -k $X509_USER_KEY" GLITE_LB_EXPORT_JPDUMP_MAILDIR=${GLITE_LB_EXPORT_JPDUMP_MAILDIR:-/tmp/jpdump} - -# XXX: head -#GLITE_LB_EXPORT_DUMPDIR_OLD=${GLITE_LB_EXPORT_DUMPDIR_OLD:-$GLITE_LB_EXPORT_DUMPDIR.old} -#GLITE_LB_EXPORT_EXPORTDIR=${GLITE_LB_EXPORT_EXPORTDIR:-/tmp/lbexport} - GLITE_LB_EXPORT_SANDBOX_MAILDIR=${GLITE_LB_EXPORT_SANDBOX_MAILDIR:-/tmp/jpsandbox} - -# 3.1 GLITE_LB_EXPORT_JOBSDIR=${GLITE_LB_EXPORT_JOBSDIR:-/tmp/lbexport} - PREFIX=${PREFIX:-`dirname $0`/..} LOGDIR=$GLITE_LOCATION_VAR GLITE_LB_EXPORT_PURGE_ARGS=${GLITE_LB_EXPORT_PURGE_ARGS:---cleared 2d --aborted 2w --cancelled 2w --other 2m} @@ -62,13 +54,8 @@ GLITE_LB_EXPORT_PURGE_ARGS=${GLITE_LB_EXPORT_PURGE_ARGS:---cleared 2d --aborted [ -d $GLITE_LB_EXPORT_JPDUMP_MAILDIR ] || mkdir -p $GLITE_LB_EXPORT_JPDUMP_MAILDIR [ -d $GLITE_LB_EXPORT_DUMPDIR ] || mkdir -p $GLITE_LB_EXPORT_DUMPDIR -# XXX: head -#[ -d $GLITE_LB_EXPORT_DUMPDIR_OLD ] || mkdir -p $GLITE_LB_EXPORT_DUMPDIR_OLD -#[ -d $GLITE_LB_EXPORT_EXPORTDIR ] || mkdir -p $GLITE_LB_EXPORT_EXPORTDIR - [ -d $GLITE_LB_EXPORT_SANDBOX_MAILDIR ] || mkdir -p $GLITE_LB_EXPORT_SANDBOX_MAILDIR -# 3.1 [ -n "$GLITE_LB_EXPORT_DUMPDIR_KEEP" -a ! -d $GLITE_LB_EXPORT_DUMPDIR_KEEP ] && mkdir -p $GLITE_LB_EXPORT_DUMPDIR_KEEP [ -d $GLITE_LB_EXPORT_JOBSDIR ] || mkdir -p $GLITE_LB_EXPORT_JOBSDIR if [ -n "$GLITE_LB_EXPORT_JOBSDIR_KEEP" ]; then diff --git a/org.glite.jp.client/examples/jpps_upload_files.c b/org.glite.jp.client/examples/jpps_upload_files.c index f33b656..48ff776 100644 --- a/org.glite.jp.client/examples/jpps_upload_files.c +++ b/org.glite.jp.client/examples/jpps_upload_files.c @@ -66,7 +66,7 @@ int main(int argc, char **argv) if ( lbmd ) glite_jpcl_SetParam(ctx, GLITE_JPCL_PARAM_LBMAILDIR, lbmd); if ( jpps ) glite_jpcl_SetParam(ctx, GLITE_JPCL_PARAM_JPPS, jpps); - if ( glite_jpimporter_upload_files(ctx, jobid, files, proxy) ) { + if ( glite_jpimporter_upload_files(ctx, jobid, (const char **)files, proxy) ) { char *errt, *errd; glite_jpcl_Error(ctx, &errt, &errd); diff --git a/org.glite.jp.client/project/version.properties b/org.glite.jp.client/project/version.properties index c31be1e..1b2dbde 100644 --- a/org.glite.jp.client/project/version.properties +++ b/org.glite.jp.client/project/version.properties @@ -1,2 +1,2 @@ -module.version=1.1.2 -module.age=0 +module.version=1.1.4 +module.age=1 diff --git a/org.glite.jp.client/src/jpimporter.c b/org.glite.jp.client/src/jpimporter.c index 445ebd6..6ce64fa 100644 --- a/org.glite.jp.client/src/jpimporter.c +++ b/org.glite.jp.client/src/jpimporter.c @@ -15,16 +15,16 @@ #include #include "glite/lb/lb_maildir.h" -#include "glite/security/glite_gsplugin.h" #include "jpps_H.h" #include "jpps_.nsmap" #include "jptype_map.h" +#include "glite/security/glite_gsplugin.h" +#include "glite/security/glite_gscompat.h" #include "globus_ftp_client.h" -#include "soap_version.h" #if GSOAP_VERSION <= 20602 #define soap_call___jpsrv__RegisterJob soap_call___ns1__RegisterJob #endif @@ -37,9 +37,11 @@ typedef struct { #ifndef dprintf -#define dprintf(x) { if (debug) printf x; } +#define dprintf(FMT, ARGS...) { if (debug) printf(FMT, ##ARGS); } #endif +#define check_soap_fault(SOAP, ERR) glite_jp_clientCheckFault((SOAP), (ERR), name, 1) + #ifndef GLITE_JPIMPORTER_PIDFILE #define GLITE_JPIMPORTER_PIDFILE "/var/run/glite-jpimporter.pid" #endif @@ -101,6 +103,8 @@ static struct option opts[] = { static const char *get_opt_string = "hgp:r:d:s:i:t:c:k:C:"; +#include "glite/jp/ws_fault.c" + static void usage(char *me) { fprintf(stderr,"usage: %s [option]\n" @@ -131,7 +135,6 @@ static void catch_chld(int sig) static int slave(int (*)(void), const char *); -static int check_soap_fault(struct soap *, int); static int reg_importer(void); static int dump_importer(void); static int sandbox_importer(void); @@ -218,13 +221,13 @@ int main(int argc, char *argv[]) openlog(name, LOG_PID, LOG_DAEMON); } else { setpgid(0, getpid()); } - dprintf(("Master pid %d\n", getpid())); + dprintf("Master pid %d\n", getpid()); if ( globus_module_activate(GLOBUS_FTP_CLIENT_MODULE) != GLOBUS_SUCCESS ) { - dprintf(("[master] Could not activate ftp client module\n")); + dprintf("[master] Could not activate ftp client module\n"); if (!debug) syslog(LOG_INFO, "Could not activate ftp client module\n"); exit(1); - } else dprintf(("[master] Ftp client module activated\n")); + } else dprintf("[master] Ftp client module activated\n"); if ( !server_cert || !server_key ) fprintf(stderr, "%s: key or certificate file not specified" @@ -232,13 +235,13 @@ int main(int argc, char *argv[]) if ( cadir ) setenv("X509_CERT_DIR", cadir, 1); edg_wll_gss_watch_creds(server_cert, &cert_mtime); if ( !edg_wll_gss_acquire_cred_gsi(server_cert, server_key, &mycred, &mysubj, &gss_code) ) { - dprintf(("[master] Server identity: %s\n", mysubj)); + dprintf("[master] Server identity: %s\n", mysubj); } else { char *errmsg; edg_wll_gss_get_error(&gss_code, "edg_wll_gss_acquire_cred_gsi()", &errmsg); - dprintf(("[master] %s\n", errmsg)); + dprintf("[master] %s\n", errmsg); free(errmsg); - dprintf(("[master] Running unauthenticated\n")); + dprintf("[master] Running unauthenticated\n"); } memset(&sa, 0, sizeof(sa)); assert(sa.sa_handler == NULL); @@ -293,32 +296,32 @@ int main(int argc, char *argv[]) while ( (pid = waitpid(-1, NULL, WNOHANG)) > 0 ) { if ( !die ) { if ( pid == reg_pid ) { - dprintf(("[master] reg importer slave died [%d]\n", pid)); + dprintf("[master] reg importer slave died [%d]\n", pid); if (!debug) syslog(LOG_INFO, "reg importer slave died [%d]\n", die); if ( (reg_pid = slave(reg_importer, "reg-imp")) < 0 ) { perror("starting reg importer slave"); kill(0, SIGINT); exit(1); } - dprintf(("[master] reg importer slave restarted [%d]\n", reg_pid)); + dprintf("[master] reg importer slave restarted [%d]\n", reg_pid); } else if ( pid == dump_pid ) { - dprintf(("[master] dump importer slave died [%d]\n", pid)); + dprintf("[master] dump importer slave died [%d]\n", pid); if (!debug) syslog(LOG_INFO, "dump importer slave died [%d]\n", die); if ( (dump_pid = slave(dump_importer, "dump-imp")) < 0 ) { perror("starting dump importer slave"); kill(0, SIGINT); exit(1); } - dprintf(("[master] dump importer slave restarted [%d]\n", dump_pid)); + dprintf("[master] dump importer slave restarted [%d]\n", dump_pid); } else if ( pid == sandbox_pid ) { - dprintf(("[master] sandbox importer slave died [%d]\n", pid)); + dprintf("[master] sandbox importer slave died [%d]\n", pid); if (!debug) syslog(LOG_INFO, "sandbox importer slave died [%d]\n", die); if ( (sandbox_pid = slave(sandbox_importer, "sandbox-imp")) < 0 ) { perror("starting sandbox importer slave"); kill(0, SIGINT); exit(1); } - dprintf(("[master] sandbox importer slave restarted [%d]\n", sandbox_pid)); + dprintf("[master] sandbox importer slave restarted [%d]\n", sandbox_pid); } } @@ -328,7 +331,7 @@ int main(int argc, char *argv[]) } } - dprintf(("[master] Terminating on signal %d\n", die)); + dprintf("[master] Terminating on signal %d\n", die); if (!debug) syslog(LOG_INFO, "Terminating on signal %d\n", die); kill(0, die); @@ -359,7 +362,7 @@ static int slave(int (*fn)(void), const char *nm) sigaddset(&sset, SIGUSR1); sigprocmask(SIG_BLOCK, &sset, NULL); - dprintf(("[%s] slave started - pid [%d]\n", name, getpid())); + dprintf("[%s] slave started - pid [%d]\n", name, getpid()); while ( !die && conn_cnt < MAX_REG_CONNS ) { int ret = fn(); @@ -374,10 +377,10 @@ static int slave(int (*fn)(void), const char *nm) } if ( die ) { - dprintf(("[%s] Terminating on signal %d\n", name, getpid(), die)); + dprintf("[%s] Terminating on signal %d\n", name, getpid(), die); if ( !debug ) syslog(LOG_INFO, "Terminating on signal %d", die); } - dprintf(("[%s] Terminating after %d connections\n", name, conn_cnt)); + dprintf("[%s] Terminating after %d connections\n", name, conn_cnt); if ( !debug ) syslog(LOG_INFO, "Terminating after %d connections", conn_cnt); exit(0); @@ -396,23 +399,23 @@ static int reg_importer(void) ret = edg_wll_MaildirTransStart(reg_mdir, &msg, &fname); if ( ret < 0 ) { - dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc)); + dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc); if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc); return -1; } else if ( ret > 0 ) { - dprintf(("[%s] JP registration request received\n", name)); + dprintf("[%s] JP registration request received\n", name); if ( !debug ) syslog(LOG_INFO, "JP registration request received\n"); ret = 0; if ( !(aux = strchr(msg, '\n')) ) { - dprintf(("[%s] Wrong format of message!\n", name)); + dprintf("[%s] Wrong format of message!\n", name); if ( !debug ) syslog(LOG_ERR, "Wrong format of message\n"); ret = 0; } else do { *aux++ = '\0'; in.job = msg; in.owner = aux; - dprintf(("[%s] Registering '%s'\n", name, msg)); + dprintf("[%s] Registering '%s'\n", name, msg); if ( !debug ) syslog(LOG_INFO, "Registering '%s'\n", msg); ret = soap_call___jpsrv__RegisterJob(soap, jpps, "", &in, &empty); if ( (ret = check_soap_fault(soap, ret)) ) break; @@ -465,17 +468,17 @@ static int dump_importer(void) } if ( ret < 0 ) { - dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc)); + dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc); if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc); return -1; } - dprintf(("[%s] dump JP import request received\n", name)); + dprintf("[%s] dump JP import request received\n", name); if ( !debug ) syslog(LOG_INFO, "dump JP import request received"); ret = 0; if ( parse_msg(msg, tab) < 0 ) { - dprintf(("[%s] Wrong format of message!\n", name)); + dprintf("[%s] Wrong format of message!\n", name); if ( !debug ) syslog(LOG_ERR, "Wrong format of message"); ret = 0; } else do { @@ -484,30 +487,30 @@ static int dump_importer(void) su_in.name = NULL; su_in.commitBefore = 1000 + time(NULL); su_in.contentType = "text/lb"; - dprintf(("[%s] Importing LB dump file '%s'\n", name, tab[_file].val)); + dprintf("[%s] Importing LB dump file '%s'\n", name, tab[_file].val); if ( !debug ) syslog(LOG_INFO, "Importing LB dump file '%s'\n", msg); ret = soap_call___jpsrv__StartUpload(soap, tab[_jpps].val?:jpps, "", &su_in, &su_out); if ( (ret = check_soap_fault(soap, ret)) ) break; - dprintf(("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore))); + dprintf("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore)); if (su_out.destination == NULL) { - dprintf(("[%s] StartUpload returned NULL destination\n", name)); + dprintf("[%s] StartUpload returned NULL destination\n", name); if ( !debug ) syslog(LOG_ERR, "StartUpload returned NULL destination"); break; } if ( (fhnd = open(tab[_file].val, O_RDONLY)) < 0 ) { - dprintf(("[%s] Can't open dump file: %s\n", name, tab[_file].val)); + dprintf("[%s] Can't open dump file: %s\n", name, tab[_file].val); if ( !debug ) syslog(LOG_ERR, "Can't open dump file: %s", tab[_file].val); ret = 1; break; } if ( (ret = gftp_put_file(su_out.destination, fhnd)) ) break; close(fhnd); - dprintf(("[%s] File sent, commiting the upload\n", name)); + dprintf("[%s] File sent, commiting the upload\n", name); cu_in.destination = su_out.destination; ret = soap_call___jpsrv__CommitUpload(soap, tab[_jpps].val?:jpps, "", &cu_in, &empty); if ( (ret = check_soap_fault(soap, ret)) ) break; - dprintf(("[%s] Dump upload succesfull\n", name)); + dprintf("[%s] Dump upload succesfull\n", name); if (store && *store) { bname = strdup(tab[_file].val); snprintf(fspec, sizeof fspec, "%s/%s", store, basename(bname)); @@ -515,12 +518,12 @@ static int dump_importer(void) if (rename(tab[_file].val, fspec) != 0) fprintf(stderr, "moving %s to %s failed: %s\n", tab[_file].val, fspec, strerror(errno)); else - dprintf(("[%s] moving %s to %s OK\n", name, tab[_file].val, fspec)); + dprintf("[%s] moving %s to %s OK\n", name, tab[_file].val, fspec); } else { if (unlink(tab[_file].val) != 0) fprintf(stderr, "removing %s failed: %s\n", tab[_file].val, strerror(errno)); else - dprintf(("[%s] %s removed\n", name, tab[_file].val)); + dprintf("[%s] %s removed\n", name, tab[_file].val); } } while (0); @@ -571,17 +574,17 @@ static int sandbox_importer(void) } if ( ret < 0 ) { - dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc)); + dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc); if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc); return -1; } - dprintf(("[%s] sandbox JP import request received\n", name)); + dprintf("[%s] sandbox JP import request received\n", name); if ( !debug ) syslog(LOG_INFO, "sandbox JP import request received"); ret = 0; if ( parse_msg(msg, tab) < 0 ) { - dprintf(("[%s] Wrong format of message!\n", name)); + dprintf("[%s] Wrong format of message!\n", name); if ( !debug ) syslog(LOG_ERR, "Wrong format of message"); ret = 0; } else do { @@ -593,27 +596,27 @@ static int sandbox_importer(void) su_in.name = NULL; su_in.commitBefore = 1000 + time(NULL); su_in.contentType = "tar/lb"; - dprintf(("[%s] Importing LB sandbox tar file '%s'\n", name, tab[_file].val)); + dprintf("[%s] Importing LB sandbox tar file '%s'\n", name, tab[_file].val); if ( !debug ) syslog(LOG_INFO, "Importing LB sandbox tar file '%s'\n", msg); ret = soap_call___jpsrv__StartUpload(soap, tab[_jpps].val?:jpps, "", &su_in, &su_out); ret = check_soap_fault(soap, ret); /* XXX: grrrrrrr! test it!!!*/ // if ( (ret = check_soap_fault(soap, ret)) ) break; - dprintf(("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore))); + dprintf("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore)); if ( (fhnd = open(tab[_file].val, O_RDONLY)) < 0 ) { - dprintf(("[%s] Can't open sandbox tar file: %s\n", name, tab[_file].val)); + dprintf("[%s] Can't open sandbox tar file: %s\n", name, tab[_file].val); if ( !debug ) syslog(LOG_ERR, "Can't open sandbox tar file: %s", tab[_file].val); ret = 1; break; } if ( (ret = gftp_put_file(su_out.destination, fhnd)) ) break; close(fhnd); - dprintf(("[%s] File sent, commiting the upload\n", name)); + dprintf("[%s] File sent, commiting the upload\n", name); cu_in.destination = su_out.destination; ret = soap_call___jpsrv__CommitUpload(soap, tab[_jpps].val?:jpps, "", &cu_in, &empty); if ( (ret = check_soap_fault(soap, ret)) ) break; - dprintf(("[%s] Dump upload succesfull\n", name)); + dprintf("[%s] Dump upload succesfull\n", name); } while (0); edg_wll_MaildirTransEnd(sandbox_mdir, fname, ret? LBMD_TRANS_FAILED_RETRY: LBMD_TRANS_OK); @@ -624,55 +627,6 @@ static int sandbox_importer(void) } - -static int check_soap_fault(struct soap *soap, int err) -{ - struct SOAP_ENV__Detail *detail; - struct jptype__genericFault *f; - char *reason, - indent[200] = " "; - - - switch ( err ) { - case SOAP_OK: - dprintf(("[%s] ok\n", name)); - break; - - case SOAP_FAULT: - case SOAP_SVR_FAULT: - if (soap->version == 2) { - detail = soap->fault->SOAP_ENV__Detail; - reason = soap->fault->SOAP_ENV__Reason; - } else { - detail = soap->fault->detail; - reason = soap->fault->faultstring; - } - dprintf(("[%s] %s\n", name, reason)); - if ( !debug ) syslog(LOG_ERR, "%s", reason); - assert(detail->__type == SOAP_TYPE__genericFault); -#if GSOAP_VERSION >=20700 - f = ((struct _genericFault *) detail->fault) -> jpelem__genericFault; -#else - f = ((struct _genericFault *) detail->value) -> jpelem__genericFault; -#endif - while (f) { - dprintf(("[%s] %s%s: %s (%s)\n", - name, indent, - f->source, f->text, f->description)); - if ( !debug ) syslog(LOG_ERR, "%s%s: %s (%s)", - reason, f->source, f->text, f->description); - f = f->reason; - strcat(indent, " "); - } - return -1; - - default: soap_print_fault(soap,stderr); - return -1; - } - - return 0; -} - /** Parses every line looking for pattern string and stores the value into * the given variable * @@ -726,7 +680,7 @@ static void gftp_done_cb( { if ( err != GLOBUS_SUCCESS ) { char *tmp = globus_object_printable_to_string(err); - dprintf(("[%s] Error in callback: %s\n", name, tmp)); + dprintf("[%s] Error in callback: %s\n", name, tmp); if ( !debug ) syslog(LOG_ERR, "Error in callback: %s", tmp); gError = GLOBUS_TRUE; globus_libc_free(tmp); @@ -750,7 +704,7 @@ static void gftp_data_cb( int rc; globus_mutex_lock(&gLock); if ( (rc = read(*((int *)user_arg), gBuffer, BUFSZ)) < 0 ) { - dprintf(("[%s] Error reading dump file\n", name)); + dprintf("[%s] Error reading dump file\n", name); if ( !debug ) syslog(LOG_ERR, "Error reading dump file"); gDone = GLOBUS_TRUE; gError = GLOBUS_TRUE; @@ -771,7 +725,7 @@ static int gftp_put_file(const char *url, int fhnd) globus_ftp_client_handleattr_t hnd_attr; #define put_file_err(errs) { \ - dprintf(("[%s] %s\n", name, errs)); \ + dprintf("[%s] %s\n", name, errs); \ if ( !debug ) syslog(LOG_ERR, errs); \ return 1; \ } @@ -800,7 +754,7 @@ static int gftp_put_file(const char *url, int fhnd) if ( globus_ftp_client_put( &hnd, url, &op_attr, GLOBUS_NULL, gftp_done_cb, (void *)&fhnd) != GLOBUS_SUCCESS) { - dprintf(("[%s] Could not start file put\n", name)); + dprintf("[%s] Could not start file put\n", name); if ( !debug ) syslog(LOG_ERR, "Could not start file put"); gError = GLOBUS_TRUE; gDone = GLOBUS_TRUE; @@ -808,7 +762,7 @@ static int gftp_put_file(const char *url, int fhnd) int rc; globus_mutex_lock(&gLock); if ( (rc = read(fhnd, gBuffer, BUFSZ)) < 0 ) { - dprintf(("[%s] Error reading dump file\n", name)); + dprintf("[%s] Error reading dump file\n", name); if ( !debug ) syslog(LOG_ERR, "Error reading dump file"); gDone = GLOBUS_TRUE; gError = GLOBUS_TRUE;