Hello!
Sergio Iserte Agut has written on Tuesday, 10 July, at 1:45:
>Could somebody help me?
>I'm still with the problem of how to write an environmental variable.
>I look forward to hearing from you soon.
Just few hints. Just few fragments from our code. Data replaced with
generics.
Some plugin in slurmctld sets environment into array:
------------------------------------------------------------
/* start to update environment */
env = env_array_copy ((const char **)job->spank_job_env);
nenv = env_array_create();
/* make our custom environment */
env_array_append_fmt (&nenv, "OUR_REQUESTED_ENV", "%ld:%ld:%s:%s:%s",
long1, long2, str1, str2, str3);
/* update and save environment */
env_array_merge (&env, (const char **)nenv);
env_array_free (job->spank_job_env);
job->spank_job_env = env;
job->spank_job_env_size = envcount (env);
env_array_free (nenv);
------------------------------------------------------------
Some task plugin in slurmd gets environment array:
------------------------------------------------------------
slurm_msg_t_init(&req);
slurm_msg_t_init(&resp);
msg = xmalloc(sizeof(spank_env_request_msg_t));
msg -> job_id = job_id;
req.data = msg;
req.msg_type = REQUEST_SPANK_ENVIRONMENT;
if (slurm_send_recv_controller_msg(&req, &resp) < 0) {
error("Unable to get SPANK environment from controller");
ret = SLURM_ERROR;
} else {
spank_env_responce_msg_t *resp_data = resp.data;
env_ptr = env_array_copy((const char
***)resp_data->spank_job_env);
envc = resp_data->spank_job_env_size;
slurm_free_spank_env_responce_msg(resp.data);
}
slurm_free_spank_env_request_msg(msg);
------------------------------------------------------------
I think you'll find everything else yourself.
Andriy.