static void usage(char *me)
{
- fprintf(stderr,"usage: %s [-m bkserver] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S]]\n", me);
+ fprintf(stderr,"usage: %s [-m bkserver] [-x lbproxy_user] [-j dg_jobid] [-s source_id] [-n num_subjobs [-S]]\n", me);
}
int main(int argc, char *argv[])
{
- char *src = NULL,*job = NULL,*server = NULL,*seq;
- int done = 0,num_subjobs = 0,i;
- int reg_subjobs = 0;
+ char *src = NULL,*job = NULL,*server = NULL,*seq;
+ char *lbproxy = NULL;
+ int done = 0,num_subjobs = 0,i;
+ int reg_subjobs = 0;
edg_wll_Context ctx;
edg_wlc_JobId jobid,*subjobs;
opterr = 0;
do {
- switch (getopt(argc,argv,"Sj:s:n:m:")) {
+ switch (getopt(argc,argv,"x:s:j:m:n:S")) {
+ case 'x': lbproxy = (char *) strdup(optarg); break;
case 's': src = (char *) strdup(optarg); break;
case 'j': job = (char *) strdup(optarg); break;
case 'm': server = strdup(optarg); break;
}
edg_wll_SetParam(ctx,EDG_WLL_PARAM_SOURCE,edg_wll_StringToSource(src));
- if (edg_wll_RegisterJobSync(ctx,jobid,
- num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE,
- "blabla", "NNNSSSS",
- num_subjobs,NULL,&subjobs))
- {
- char *et,*ed;
- edg_wll_Error(ctx,&et,&ed);
- fprintf(stderr,"edg_wll_RegisterJobSync(%s): %s (%s)\n",job,et,ed);
- exit(1);
+ if (lbproxy) {
+ /*
+ fprintf(stderr,"EDG_WL_LBPROXY_STORE_SOCK = %s\n", ctx->p_lbproxy_store_sock);
+ fprintf(stderr,"EDG_WL_LBPROXY_SERVE_SOCK = %s\n", ctx->p_lbproxy_serve_sock);
+ */
+ if (edg_wll_RegisterJobProxy(ctx,jobid,
+ num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE,
+ lbproxy,
+ "blabla", "NNNSSSS",
+ num_subjobs,NULL,&subjobs))
+ {
+ char *et,*ed;
+ edg_wll_Error(ctx,&et,&ed);
+ fprintf(stderr,"edg_wll_RegisterJobProxy(%s): %s (%s)\n",job,et,ed);
+ exit(1);
+ }
+ } else {
+ if (edg_wll_RegisterJobSync(ctx,jobid,
+ num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE,
+ "blabla", "NNNSSSS",
+ num_subjobs,NULL,&subjobs))
+ {
+ char *et,*ed;
+ edg_wll_Error(ctx,&et,&ed);
+ fprintf(stderr,"edg_wll_RegisterJobSync(%s): %s (%s)\n",job,et,ed);
+ exit(1);
+ }
}
seq = edg_wll_GetSequenceCode(ctx);
if (reg_subjobs) {
char ** jdls = (char**) malloc(num_subjobs*sizeof(char*));
+ if (lbproxy) {
+ fprintf(stderr,"edg_wll_RegisterSubjobsProxy(): not implemented yet.\n");
+ exit(1);
+ }
+
for (i=0; subjobs[i]; i++) {
asprintf(jdls+i, "JDL of subjob #%d\n", i+1);
}
edg_wll_SetParamString(context, EDG_WLL_PARAM_LBPROXY_USER, user);
/* query LBProxyServer for sequence code if not user-suplied */
-/* FIXME: doesn't work yet
+/* FIXME: doesn't work yet */
if (!code) {
edg_wll_QuerySequenceCodeProxy(context, job, &code_loc);
goto edg_wll_setloggingjobproxy_end;
code_loc = strdup(code);
}
- if (!edg_wll_SetSequenceCode(context,code_loc,flags)) */ {
+ if (!edg_wll_SetSequenceCode(context,code_loc,flags)) {
edg_wll_IncSequenceCode(context);
}
free(seq);
type_s = edg_wll_RegJobJobtypeToString(type);
- if (!type_s) return edg_wll_SetError(context,EINVAL,"edg_wll_RegisterJobMaster(): no jobtype specified");
+ if (!type_s) return edg_wll_SetError(context,EINVAL,"edg_wll_RegisterJobMasterProxy(): no jobtype specified");
if ((type == EDG_WLL_REGJOB_DAG || type == EDG_WLL_REGJOB_PARTITIONED)
&& num_subjobs > 0)
const char * seed,
edg_wlc_JobId ** subjobs)
{
- return edg_wll_RegisterJobMasterProxy(context,job,type,user,jdl,ns, NULL, num_subjobs,seed,subjobs);
+ int ret = edg_wll_RegisterJobSync(context,job,type,jdl,ns,num_subjobs,seed,subjobs);
+ if (ret) {
+ edg_wll_UpdateError(context,0,"edg_wll_RegisterJobProxy(): unable to register with bkserver");
+ return edg_wll_Error(context,NULL,NULL);
+ }
+
+ return edg_wll_RegisterJobMasterProxy(context,job,type,user,jdl,ns,NULL,num_subjobs,seed,subjobs);
}
int edg_wll_ChangeACL(
ctx->p_query_server_override = !strcasecmp(val,"yes");
break;
case EDG_WLL_PARAM_LBPROXY_STORE_SOCK:
+ if (!val) val = getenv(myenv[param]);
+ if (!val) val = "/tmp/lb_proxy_store.sock";
free(ctx->p_lbproxy_store_sock);
ctx->p_lbproxy_store_sock = val ? strdup(val): NULL;
break;
case EDG_WLL_PARAM_LBPROXY_SERVE_SOCK:
+ if (!val) val = getenv(myenv[param]);
+ if (!val) val = "/tmp/lb_proxy_serve.sock";
free(ctx->p_lbproxy_serve_sock);
ctx->p_lbproxy_serve_sock = val ? strdup(val): NULL;
break;
case EDG_WLL_PARAM_LBPROXY_USER:
+ if (!val) val = getenv(myenv[param]);
free(ctx->p_user_lbproxy);
ctx->p_user_lbproxy = val ? strdup(val) : NULL;
break;