This is exactly what I would recommend.

Quoting Kent Engström <[email protected]>:

>
> Moe Jette <[email protected]> writes:
>> That information does not seem to be available today to the lua
>> script, but the src/job_submit/lua/job_submit_lua.c could be modified
>> to make that information  available in a new variable. It would need
>> to execute the assoc_mgr_fill_in_assoc() function to get the
>> information then pass it in a new variable.
>
> Could something like this be OK (it seems to work with my first initial
> tests)? If so, I will test some more and send you a real patch.
>
>
> diff --git a/src/plugins/job_submit/lua/job_submit_lua.c  
> b/src/plugins/job_submit/lua/job_submit_lua.c
> index 46fa6fd..3575f15 100644
> --- a/src/plugins/job_submit/lua/job_submit_lua.c
> +++ b/src/plugins/job_submit/lua/job_submit_lua.c
> @@ -243,6 +243,21 @@ static void _register_lua_slurm_output_functions (void)
>         lua_setglobal (L, "slurm");
>  }
>
> +/* Get the default account for a user (or NULL if not present) */
> +static char *_get_default_account(uint32_t user_id)
> +{
> +       slurmdb_user_rec_t user;
> +
> +       memset(&user, 0, sizeof(slurmdb_user_rec_t));
> +       user.uid = user_id;
> +       if (assoc_mgr_fill_in_user(acct_db_conn,
> +                                  &user, 0, NULL) != SLURM_ERROR) {
> +               return user.default_acct;
> +       } else {
> +               return NULL;
> +       }
> +}
> +
>  /* Get fields in an existing slurmctld job record
>   * NOTE: This is an incomplete list of job record fields.
>   * Add more as needed and send patches to [email protected] */
> @@ -335,6 +350,8 @@ static int _get_job_req_field (lua_State *L)
>                 lua_pushnumber (L, job_desc->contiguous);
>         } else if (!strcmp(name, "cores_per_socket")) {
>                 lua_pushnumber (L, job_desc->cores_per_socket);
> +       } else if (!strcmp(name, "default_account")) {
> +               lua_pushstring (L, _get_default_account(job_desc->user_id));
>         } else if (!strcmp(name, "dependency")) {
>                 lua_pushstring (L, job_desc->dependency);
>         } else if (!strcmp(name, "end_time")) {
>
>
> Regards,
> --
> Kent Engström, National Supercomputer Centre, Sweden
> [email protected], +46 13 28 4444

Reply via email to