Changeset 28
- Timestamp:
- 10/30/12 19:20:34 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/slurm_drmaa/util.c
r24 r28 81 81 return 60*dt.hour+dt.minute; 82 82 } 83 84 /* taken from SLURM src/common/proc_args.c */ 85 static int slurmdrmaa_mail_type_parse(const char *mail_type_str) 86 { 87 int rc = 0; 88 89 90 if (strcasecmp(mail_type_str, "BEGIN") == 0) 91 rc = MAIL_JOB_BEGIN; 92 else if (strcasecmp(mail_type_str, "END") == 0) 93 rc = MAIL_JOB_END; 94 else if (strcasecmp(mail_type_str, "FAIL") == 0) 95 rc = MAIL_JOB_FAIL; 96 else if (strcasecmp(mail_type_str, "REQUEUE") == 0) 97 rc = MAIL_JOB_REQUEUE; 98 else if (strcasecmp(mail_type_str, "ALL") == 0) 99 rc = MAIL_JOB_BEGIN | MAIL_JOB_END | MAIL_JOB_FAIL | MAIL_JOB_REQUEUE; 100 else 101 rc = 0; /* failure */ 102 103 return rc; 104 } 105 83 106 84 107 enum slurm_native { … … 102 125 SLURM_NATIVE_JOB_NAME, 103 126 SLURM_NATIVE_TIME_LIMIT, 104 SLURM_NATIVE_NTASKS 127 SLURM_NATIVE_NTASKS, 128 SLURM_NATIVE_GRES, 129 SLURM_NATIVE_NO_KILL, 130 SLURM_NATIVE_LICENSES, 131 SLURM_NATIVE_MAIL_TYPE, 132 SLURM_NATIVE_NO_REQUEUE, 133 SLURM_NATIVE_EXCLUDE 105 134 }; 106 135 … … 129 158 fsd_free(job_desc->partition); 130 159 fsd_free(job_desc->qos); 131 132 160 fsd_free(job_desc->script); 133 161 fsd_free(job_desc->std_in); … … 135 163 fsd_free(job_desc->std_err); 136 164 fsd_free(job_desc->work_dir); 165 fsd_free(job_desc->gres); 166 fsd_free(job_desc->exc_nodes); 167 137 168 138 169 fsd_log_return(( "" )); … … 277 308 job_desc->time_limit = slurmdrmaa_datetime_parse(value); 278 309 break; 310 case SLURM_NATIVE_GRES: 311 fsd_log_debug(("# gres = %s",value)); 312 job_desc->gres = fsd_strdup(value); 313 break; 314 case SLURM_NATIVE_NO_KILL: 315 fsd_log_debug(("# no_kill = 1")); 316 job_desc->kill_on_node_fail = 0; 317 break; 318 case SLURM_NATIVE_LICENSES: 319 fsd_log_debug(("# licenses = %s", value)); 320 job_desc->licenses = fsd_strdup(value); 321 break; 322 case SLURM_NATIVE_MAIL_TYPE: 323 fsd_log_debug(("# mail_type = %s", value)); 324 job_desc->mail_type = slurmdrmaa_mail_type_parse(value); 325 break; 326 case SLURM_NATIVE_NO_REQUEUE: 327 fsd_log_debug(("# requeue = 0")); 328 job_desc->requeue = 0; 329 break; 330 case SLURM_NATIVE_EXCLUDE: 331 fsd_log_debug(("# exclude = %s", value)); 332 job_desc->exc_nodes = fsd_strdup(value); 333 break; 279 334 280 335 default: … … 295 350 name = fsd_strdup(strtok_r(add_attr_copy, "=", &ctxt)); 296 351 value = strtok_r(NULL, "=", &ctxt); 297 if (value == NULL) { 352 /* 353 * TODO: move it to slurmdrmaa_add_attribute 354 if (value == NULL) { 298 355 fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE, 299 356 "Invalid native specification: %s Missing '='.", add_attr_copy); 300 } 357 } */ 301 358 302 359 if(strcmp(name,"account") == 0) { … … 351 408 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_SHARE,NULL); 352 409 } 353 354 355 356 357 358 } 410 else if(strcmp(name,"job_name") == 0) { 411 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_JOB_NAME,value); 412 } 413 else if(strcmp(name,"time_limit") == 0) { 414 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT,value); 415 } 359 416 else if(strcmp(name,"time") == 0) { 360 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT,value); 361 } else if(strcmp(name,"ntasks") == 0) { 362 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NTASKS,value); 363 } else { 417 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT,value); 418 } 419 else if(strcmp(name,"ntasks") == 0) { 420 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NTASKS,value); 421 } 422 else if(strcmp(name,"gres") == 0) { 423 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_GRES,value); 424 } 425 else if(strcmp(name,"no-kill") == 0) { 426 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NO_KILL,NULL); 427 } 428 else if(strcmp(name,"licenses") == 0) { 429 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_LICENSES,value); 430 } 431 else if(strcmp(name,"mail-type") == 0) { 432 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_MAIL_TYPE,value); 433 } 434 else if(strcmp(name,"no-requeue") == 0) { 435 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NO_REQUEUE,NULL); 436 } 437 else if(strcmp(name,"exclude") == 0) { 438 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_EXCLUDE,value); 439 } 440 else { 364 441 fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE, 365 442 "Invalid native specification: %s (Unsupported option: --%s)", … … 367 444 } 368 445 369 /*}*/370 446 } 371 447 FINALLY … … 403 479 } 404 480 } else { 405 switch (opt) { 481 switch (opt) { 406 482 case 'A' : 407 483 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_ACCOUNT, arg); … … 418 494 case 's' : 419 495 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_SHARE, NULL); 420 break; 496 break; 421 497 case 'w' : 422 498 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NODELIST, arg); … … 424 500 case 'J' : 425 501 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_JOB_NAME, arg); 426 break; 502 break; 427 503 case 't' : 428 504 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT, arg); … … 431 507 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NTASKS, arg); 432 508 break; 433 default : 509 case 'x' : 510 slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_EXCLUDE, arg); 511 break; 512 default : 434 513 fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE, 435 514 "Invalid native specification: %s (Unsupported option: -%c)",
Note: See TracChangeset
for help on using the changeset viewer.