Changeset 28


Ignore:
Timestamp:
10/30/12 19:20:34 (12 years ago)
Author:
mmamonski
Message:

new native specification attributes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/slurm_drmaa/util.c

    r24 r28  
    8181        return 60*dt.hour+dt.minute; 
    8282} 
     83 
     84/* taken from SLURM src/common/proc_args.c */ 
     85static 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 
    83106 
    84107enum slurm_native { 
     
    102125        SLURM_NATIVE_JOB_NAME, 
    103126        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 
    105134}; 
    106135 
     
    129158        fsd_free(job_desc->partition); 
    130159        fsd_free(job_desc->qos); 
    131  
    132160        fsd_free(job_desc->script); 
    133161        fsd_free(job_desc->std_in); 
     
    135163        fsd_free(job_desc->std_err);     
    136164        fsd_free(job_desc->work_dir); 
     165        fsd_free(job_desc->gres); 
     166        fsd_free(job_desc->exc_nodes); 
     167 
    137168         
    138169        fsd_log_return(( "" )); 
     
    277308                        job_desc->time_limit = slurmdrmaa_datetime_parse(value);  
    278309                        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; 
    279334         
    280335                default: 
     
    295350                name = fsd_strdup(strtok_r(add_attr_copy, "=", &ctxt)); 
    296351                value = strtok_r(NULL, "=", &ctxt); 
    297                 if (value == NULL) { 
     352                /* 
     353                 * TODO: move it to slurmdrmaa_add_attribute 
     354                 if (value == NULL) { 
    298355                        fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE,  
    299356                                "Invalid native specification: %s Missing '='.", add_attr_copy); 
    300                 } 
     357                } */ 
    301358 
    302359                if(strcmp(name,"account") == 0) { 
     
    351408                        slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_SHARE,NULL); 
    352409                }                
    353                 else if(strcmp(name,"job_name") == 0) { 
    354                         slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_JOB_NAME,value); 
    355                 } 
    356                 else if(strcmp(name,"time_limit") == 0) { 
    357                         slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT,value); 
    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                } 
    359416                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 { 
    364441                        fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE, 
    365442                                        "Invalid native specification: %s (Unsupported option: --%s)", 
     
    367444                } 
    368445         
    369                 /*}*/ 
    370446          } 
    371447        FINALLY 
     
    403479                                }                
    404480                        } else { 
    405                                 switch (opt) {                   
     481                                switch (opt) { 
    406482                                        case 'A' : 
    407483                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_ACCOUNT, arg); 
     
    418494                                        case 's' : 
    419495                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_SHARE, NULL); 
    420                                                 break;   
     496                                                break; 
    421497                                        case 'w' : 
    422498                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NODELIST, arg); 
     
    424500                                        case 'J' : 
    425501                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_JOB_NAME, arg); 
    426                                                 break;           
     502                                                break; 
    427503                                        case 't' : 
    428504                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_TIME_LIMIT, arg); 
     
    431507                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_NTASKS, arg); 
    432508                                                break;   
    433                                         default :                                                                
     509                                        case 'x' : 
     510                                                slurmdrmaa_add_attribute(job_desc,SLURM_NATIVE_EXCLUDE, arg); 
     511                                                break; 
     512                                        default : 
    434513                                                        fsd_exc_raise_fmt(FSD_DRMAA_ERRNO_INVALID_ATTRIBUTE_VALUE, 
    435514                                                                        "Invalid native specification: %s (Unsupported option: -%c)", 
Note: See TracChangeset for help on using the changeset viewer.