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.

Reply via email to