2256
2399
return SLURM_ERROR;
2402
void inline slurmdbd_pack_rec_msg(uint16_t rpc_version,
2403
slurmdbd_msg_type_t type,
2404
dbd_rec_msg_t *msg, Buf buffer)
2406
void (*my_function) (void *object, uint16_t rpc_version, Buf buffer);
2410
case DBD_REMOVE_RESV:
2411
case DBD_MODIFY_RESV:
2412
my_function = pack_acct_reservation_rec;
2415
fatal("Unknown pack type");
2419
(*(my_function))(msg->rec, rpc_version, buffer);
2422
int inline slurmdbd_unpack_rec_msg(uint16_t rpc_version,
2423
slurmdbd_msg_type_t type,
2424
dbd_rec_msg_t **msg, Buf buffer)
2426
dbd_rec_msg_t *msg_ptr = NULL;
2427
int (*my_function) (void **object, uint16_t rpc_version, Buf buffer);
2431
case DBD_REMOVE_RESV:
2432
case DBD_MODIFY_RESV:
2433
my_function = unpack_acct_reservation_rec;
2436
fatal("Unknown unpack type");
2440
msg_ptr = xmalloc(sizeof(dbd_rec_msg_t));
2443
if((*(my_function))(&msg_ptr->rec, rpc_version, buffer) == SLURM_ERROR)
2446
return SLURM_SUCCESS;
2449
slurmdbd_free_rec_msg(rpc_version, type, msg_ptr);
2259
2454
void inline slurmdbd_pack_cond_msg(uint16_t rpc_version,
2260
2455
slurmdbd_msg_type_t type,
2261
2456
dbd_cond_msg_t *msg, Buf buffer)
2588
2789
slurmdbd_pack_job_start_msg(uint16_t rpc_version,
2589
2790
dbd_job_start_msg_t *msg, Buf buffer)
2591
if(rpc_version >= 3) {
2792
if(rpc_version >= 5) {
2793
packstr(msg->account, buffer);
2794
pack32(msg->alloc_cpus, buffer);
2795
pack32(msg->alloc_nodes, buffer);
2796
pack32(msg->assoc_id, buffer);
2797
packstr(msg->block_id, buffer);
2798
packstr(msg->cluster, buffer);
2799
pack32(msg->db_index, buffer);
2800
pack_time(msg->eligible_time, buffer);
2801
pack32(msg->gid, buffer);
2802
pack32(msg->job_id, buffer);
2803
pack16(msg->job_state, buffer);
2804
packstr(msg->name, buffer);
2805
packstr(msg->nodes, buffer);
2806
packstr(msg->node_inx, buffer);
2807
packstr(msg->partition, buffer);
2808
pack32(msg->priority, buffer);
2809
pack32(msg->req_cpus, buffer);
2810
pack32(msg->resv_id, buffer);
2811
pack_time(msg->start_time, buffer);
2812
pack_time(msg->submit_time, buffer);
2813
pack32(msg->timelimit, buffer);
2814
pack32(msg->uid, buffer);
2815
packstr(msg->wckey, buffer);
2816
} else if(rpc_version >= 3) {
2592
2817
packstr(msg->account, buffer);
2593
2818
pack32(msg->alloc_cpus, buffer);
2594
2819
pack32(msg->assoc_id, buffer);
2636
2861
dbd_job_start_msg_t *msg_ptr = xmalloc(sizeof(dbd_job_start_msg_t));
2637
2862
*msg = msg_ptr;
2639
if(rpc_version >= 3) {
2640
safe_unpackstr_xmalloc(&msg_ptr->account, &uint32_tmp, buffer);
2641
safe_unpack32(&msg_ptr->alloc_cpus, buffer);
2642
safe_unpack32(&msg_ptr->assoc_id, buffer);
2643
safe_unpackstr_xmalloc(&msg_ptr->block_id, &uint32_tmp, buffer);
2644
safe_unpackstr_xmalloc(&msg_ptr->cluster, &uint32_tmp, buffer);
2645
safe_unpack32(&msg_ptr->db_index, buffer);
2646
safe_unpack_time(&msg_ptr->eligible_time, buffer);
2647
safe_unpack32(&msg_ptr->gid, buffer);
2648
safe_unpack32(&msg_ptr->job_id, buffer);
2649
safe_unpack16(&msg_ptr->job_state, buffer);
2650
safe_unpackstr_xmalloc(&msg_ptr->name, &uint32_tmp, buffer);
2651
safe_unpackstr_xmalloc(&msg_ptr->nodes, &uint32_tmp, buffer);
2652
safe_unpackstr_xmalloc(&msg_ptr->partition,
2653
&uint32_tmp, buffer);
2654
safe_unpack32(&msg_ptr->priority, buffer);
2655
safe_unpack32(&msg_ptr->req_cpus, buffer);
2656
safe_unpack_time(&msg_ptr->start_time, buffer);
2657
safe_unpack_time(&msg_ptr->submit_time, buffer);
2658
safe_unpack32(&msg_ptr->uid, buffer);
2864
if(rpc_version >= 5) {
2865
safe_unpackstr_xmalloc(&msg_ptr->account, &uint32_tmp, buffer);
2866
safe_unpack32(&msg_ptr->alloc_cpus, buffer);
2867
safe_unpack32(&msg_ptr->alloc_nodes, buffer);
2868
safe_unpack32(&msg_ptr->assoc_id, buffer);
2869
safe_unpackstr_xmalloc(&msg_ptr->block_id, &uint32_tmp, buffer);
2870
safe_unpackstr_xmalloc(&msg_ptr->cluster, &uint32_tmp, buffer);
2871
safe_unpack32(&msg_ptr->db_index, buffer);
2872
safe_unpack_time(&msg_ptr->eligible_time, buffer);
2873
safe_unpack32(&msg_ptr->gid, buffer);
2874
safe_unpack32(&msg_ptr->job_id, buffer);
2875
safe_unpack16(&msg_ptr->job_state, buffer);
2876
safe_unpackstr_xmalloc(&msg_ptr->name, &uint32_tmp, buffer);
2877
safe_unpackstr_xmalloc(&msg_ptr->nodes, &uint32_tmp, buffer);
2878
safe_unpackstr_xmalloc(&msg_ptr->node_inx, &uint32_tmp, buffer);
2879
safe_unpackstr_xmalloc(&msg_ptr->partition,
2880
&uint32_tmp, buffer);
2881
safe_unpack32(&msg_ptr->priority, buffer);
2882
safe_unpack32(&msg_ptr->req_cpus, buffer);
2883
safe_unpack32(&msg_ptr->resv_id, buffer);
2884
safe_unpack_time(&msg_ptr->start_time, buffer);
2885
safe_unpack_time(&msg_ptr->submit_time, buffer);
2886
safe_unpack32(&msg_ptr->timelimit, buffer);
2887
safe_unpack32(&msg_ptr->uid, buffer);
2888
safe_unpackstr_xmalloc(&msg_ptr->wckey, &uint32_tmp, buffer);
2889
} else if(rpc_version >= 3) {
2890
char *temp = NULL, *jname = NULL;
2891
safe_unpackstr_xmalloc(&msg_ptr->account, &uint32_tmp, buffer);
2892
safe_unpack32(&msg_ptr->alloc_cpus, buffer);
2893
safe_unpack32(&msg_ptr->assoc_id, buffer);
2894
safe_unpackstr_xmalloc(&msg_ptr->block_id, &uint32_tmp, buffer);
2895
safe_unpackstr_xmalloc(&msg_ptr->cluster, &uint32_tmp, buffer);
2896
safe_unpack32(&msg_ptr->db_index, buffer);
2897
safe_unpack_time(&msg_ptr->eligible_time, buffer);
2898
safe_unpack32(&msg_ptr->gid, buffer);
2899
safe_unpack32(&msg_ptr->job_id, buffer);
2900
safe_unpack16(&msg_ptr->job_state, buffer);
2901
safe_unpackstr_xmalloc(&msg_ptr->name, &uint32_tmp, buffer);
2902
safe_unpackstr_xmalloc(&msg_ptr->nodes, &uint32_tmp, buffer);
2903
safe_unpackstr_xmalloc(&msg_ptr->partition,
2904
&uint32_tmp, buffer);
2905
safe_unpack32(&msg_ptr->priority, buffer);
2906
safe_unpack32(&msg_ptr->req_cpus, buffer);
2907
safe_unpack_time(&msg_ptr->start_time, buffer);
2908
safe_unpack_time(&msg_ptr->submit_time, buffer);
2909
safe_unpack32(&msg_ptr->uid, buffer);
2911
/* first set the jname to the msg_ptr->name */
2912
jname = xstrdup(msg_ptr->name);
2913
/* then grep for " since that is the delimiter for
2915
if((temp = strchr(jname, '\"'))) {
2916
if(strrchr(jname, '\"') != temp) {
2917
error("job %u has quotes in it's name '%s', "
2918
"no way to get correct wckey, "
2919
"setting name to 'bad_name'",
2920
msg_ptr->job_id, jname);
2922
jname = xstrdup("bad_name");
2924
/* if we have a wckey set the " to NULL to
2927
/* increment and copy the remainder */
2929
msg_ptr->wckey = xstrdup(temp);
2932
xfree(msg_ptr->name);
2933
msg_ptr->name = xstrdup(jname);
2660
2936
safe_unpackstr_xmalloc(&msg_ptr->account, &uint32_tmp, buffer);
2661
2937
safe_unpack32(&msg_ptr->alloc_cpus, buffer);
2689
slurmdbd_pack_job_start_rc_msg(uint16_t rpc_version,
2690
dbd_job_start_rc_msg_t *msg, Buf buffer)
2965
slurmdbd_pack_id_rc_msg(uint16_t rpc_version,
2966
dbd_id_rc_msg_t *msg, Buf buffer)
2692
pack32(msg->db_index, buffer);
2968
pack32(msg->id, buffer);
2693
2969
pack32(msg->return_code, buffer);
2697
slurmdbd_unpack_job_start_rc_msg(uint16_t rpc_version,
2698
dbd_job_start_rc_msg_t **msg, Buf buffer)
2973
slurmdbd_unpack_id_rc_msg(uint16_t rpc_version,
2974
dbd_id_rc_msg_t **msg, Buf buffer)
2700
dbd_job_start_rc_msg_t *msg_ptr =
2701
xmalloc(sizeof(dbd_job_start_rc_msg_t));
2976
dbd_id_rc_msg_t *msg_ptr = xmalloc(sizeof(dbd_id_rc_msg_t));
2702
2977
*msg = msg_ptr;
2703
safe_unpack32(&msg_ptr->db_index, buffer);
2978
safe_unpack32(&msg_ptr->id, buffer);
2704
2979
safe_unpack32(&msg_ptr->return_code, buffer);
2705
2980
return SLURM_SUCCESS;
2708
slurmdbd_free_job_start_rc_msg(rpc_version, msg_ptr);
2983
slurmdbd_free_id_rc_msg(rpc_version, msg_ptr);
2710
2985
return SLURM_ERROR;
2977
3259
slurmdbd_pack_node_state_msg(uint16_t rpc_version,
2978
3260
dbd_node_state_msg_t *msg, Buf buffer)
2980
packstr(msg->cluster_name, buffer);
2981
pack32(msg->cpu_count, buffer);
2982
packstr(msg->hostlist, buffer);
2983
packstr(msg->reason, buffer);
2984
pack16(msg->new_state, buffer);
2985
pack_time(msg->event_time, buffer);
3262
if(rpc_version >= 5) {
3263
packstr(msg->cluster_name, buffer);
3264
pack32(msg->cpu_count, buffer);
3265
packstr(msg->hostlist, buffer);
3266
packstr(msg->reason, buffer);
3267
pack16(msg->new_state, buffer);
3268
pack_time(msg->event_time, buffer);
3269
pack16(msg->state, buffer);
3271
packstr(msg->cluster_name, buffer);
3272
pack32(msg->cpu_count, buffer);
3273
packstr(msg->hostlist, buffer);
3274
packstr(msg->reason, buffer);
3275
pack16(msg->new_state, buffer);
3276
pack_time(msg->event_time, buffer);
2995
3287
msg_ptr = xmalloc(sizeof(dbd_node_state_msg_t));
2996
3288
*msg = msg_ptr;
2997
safe_unpackstr_xmalloc(&msg_ptr->cluster_name, &uint32_tmp, buffer);
2998
safe_unpack32(&msg_ptr->cpu_count, buffer);
2999
safe_unpackstr_xmalloc(&msg_ptr->hostlist, &uint32_tmp, buffer);
3000
safe_unpackstr_xmalloc(&msg_ptr->reason, &uint32_tmp, buffer);
3001
safe_unpack16(&msg_ptr->new_state, buffer);
3002
safe_unpack_time(&msg_ptr->event_time, buffer);
3290
if(rpc_version >= 5) {
3291
safe_unpackstr_xmalloc(&msg_ptr->cluster_name,
3292
&uint32_tmp, buffer);
3293
safe_unpack32(&msg_ptr->cpu_count, buffer);
3294
safe_unpackstr_xmalloc(&msg_ptr->hostlist, &uint32_tmp, buffer);
3295
safe_unpackstr_xmalloc(&msg_ptr->reason, &uint32_tmp, buffer);
3296
safe_unpack16(&msg_ptr->new_state, buffer);
3297
safe_unpack_time(&msg_ptr->event_time, buffer);
3298
safe_unpack16(&msg_ptr->state, buffer);
3300
safe_unpackstr_xmalloc(&msg_ptr->cluster_name,
3301
&uint32_tmp, buffer);
3302
safe_unpack32(&msg_ptr->cpu_count, buffer);
3303
safe_unpackstr_xmalloc(&msg_ptr->hostlist, &uint32_tmp, buffer);
3304
safe_unpackstr_xmalloc(&msg_ptr->reason, &uint32_tmp, buffer);
3305
safe_unpack16(&msg_ptr->new_state, buffer);
3306
safe_unpack_time(&msg_ptr->event_time, buffer);
3003
3309
return SLURM_SUCCESS;
3130
3449
slurmdbd_pack_step_start_msg(uint16_t rpc_version, dbd_step_start_msg_t *msg,
3133
pack32(msg->assoc_id, buffer);
3134
pack32(msg->db_index, buffer);
3135
pack32(msg->job_id, buffer);
3136
packstr(msg->name, buffer);
3137
packstr(msg->nodes, buffer);
3138
pack_time(msg->start_time, buffer);
3139
pack_time(msg->job_submit_time, buffer);
3140
pack32(msg->step_id, buffer);
3141
pack32(msg->total_procs, buffer);
3452
if(rpc_version >= 5) {
3453
pack32(msg->assoc_id, buffer);
3454
pack32(msg->db_index, buffer);
3455
pack32(msg->job_id, buffer);
3456
packstr(msg->name, buffer);
3457
packstr(msg->nodes, buffer);
3458
packstr(msg->node_inx, buffer);
3459
pack32(msg->node_cnt, buffer);
3460
pack_time(msg->start_time, buffer);
3461
pack_time(msg->job_submit_time, buffer);
3462
pack32(msg->step_id, buffer);
3463
pack16(msg->task_dist, buffer);
3464
pack32(msg->total_procs, buffer);
3465
pack32(msg->total_tasks, buffer);
3467
pack32(msg->assoc_id, buffer);
3468
pack32(msg->db_index, buffer);
3469
pack32(msg->job_id, buffer);
3470
packstr(msg->name, buffer);
3471
packstr(msg->nodes, buffer);
3472
pack_time(msg->start_time, buffer);
3473
pack_time(msg->job_submit_time, buffer);
3474
pack32(msg->step_id, buffer);
3475
pack32(msg->total_procs, buffer);
3148
3483
uint32_t uint32_tmp;
3149
3484
dbd_step_start_msg_t *msg_ptr = xmalloc(sizeof(dbd_step_start_msg_t));
3150
3485
*msg = msg_ptr;
3151
safe_unpack32(&msg_ptr->assoc_id, buffer);
3152
safe_unpack32(&msg_ptr->db_index, buffer);
3153
safe_unpack32(&msg_ptr->job_id, buffer);
3154
safe_unpackstr_xmalloc(&msg_ptr->name, &uint32_tmp, buffer);
3155
safe_unpackstr_xmalloc(&msg_ptr->nodes, &uint32_tmp, buffer);
3156
safe_unpack_time(&msg_ptr->start_time, buffer);
3157
safe_unpack_time(&msg_ptr->job_submit_time, buffer);
3158
safe_unpack32(&msg_ptr->step_id, buffer);
3159
safe_unpack32(&msg_ptr->total_procs, buffer);
3486
if(rpc_version >= 5) {
3487
safe_unpack32(&msg_ptr->assoc_id, buffer);
3488
safe_unpack32(&msg_ptr->db_index, buffer);
3489
safe_unpack32(&msg_ptr->job_id, buffer);
3490
safe_unpackstr_xmalloc(&msg_ptr->name, &uint32_tmp, buffer);
3491
safe_unpackstr_xmalloc(&msg_ptr->nodes, &uint32_tmp, buffer);
3492
safe_unpackstr_xmalloc(&msg_ptr->node_inx, &uint32_tmp, buffer);
3493
safe_unpack32(&msg_ptr->node_cnt, buffer);
3494
safe_unpack_time(&msg_ptr->start_time, buffer);
3495
safe_unpack_time(&msg_ptr->job_submit_time, buffer);
3496
safe_unpack32(&msg_ptr->step_id, buffer);
3497
safe_unpack16(&msg_ptr->task_dist, buffer);
3498
safe_unpack32(&msg_ptr->total_procs, buffer);
3499
safe_unpack32(&msg_ptr->total_tasks, buffer);
3501
safe_unpack32(&msg_ptr->assoc_id, buffer);
3502
safe_unpack32(&msg_ptr->db_index, buffer);
3503
safe_unpack32(&msg_ptr->job_id, buffer);
3504
safe_unpackstr_xmalloc(&msg_ptr->name, &uint32_tmp, buffer);
3505
safe_unpackstr_xmalloc(&msg_ptr->nodes, &uint32_tmp, buffer);
3506
safe_unpack_time(&msg_ptr->start_time, buffer);
3507
safe_unpack_time(&msg_ptr->job_submit_time, buffer);
3508
safe_unpack32(&msg_ptr->step_id, buffer);
3509
safe_unpack32(&msg_ptr->total_procs, buffer);
3160
3512
return SLURM_SUCCESS;