Beispiel #1
0
int slurm_spank_init(spank_t spank, int ac, char **av)
{
    int i;
    struct spank_option image_opt,
                        bind_opt;

    memset(&image_opt, '\0', sizeof(image_opt));
    image_opt.name = "singularity-image";
    image_opt.arginfo = "[path]";
    image_opt.usage = "Specify a path to a Singularity image, directory tree, "
                      "or Docker image";
    image_opt.has_arg = 1;
    image_opt.val = 0;
    image_opt.cb = determine_image;
    if (ESPANK_SUCCESS != spank_option_register(spank, &image_opt)) {
        slurm_error("spank/%s: Unable to register a new option.",
                    plugin_name);
        return -1;
    }

    memset(&bind_opt, '\0', sizeof(bind_opt));
    bind_opt.name = "singularity-bind";
    bind_opt.arginfo = "[path || src:dest],...";
    bind_opt.usage = "Specify a user-bind path specification.  Can either be "
                     "a path or a src:dest pair, specifying the bind mount to "
                     "perform";
    bind_opt.has_arg = 1;
    bind_opt.val = 0;
    bind_opt.cb = determine_bind;
    if (ESPANK_SUCCESS != spank_option_register(spank, &bind_opt)) {
        slurm_error("spank/%s: Unable to register a new option.",
                    plugin_name);
        return -1;
    }

    // Make this a no-op except when starting the task.
    if (spank_context() == S_CTX_ALLOCATOR || (spank_remote(spank) != 1)) {
        return 0;
    }

    for (i = 0; i < ac; i++) {
        if (strncmp ("default_image=", av[i], 14) == 0) {
            const char *optarg = av[i] + 14;
            job_image = strdup(optarg);
        } else {
            slurm_error ("spank/%s: Invalid option: %s", av[i], plugin_name);
        }
    }

    return 0;
}
/*
 *
 * SLURM SPANK API SLURM SPANK API SLURM SPANK API SLURM SPANK API
 *
 * SLURM SPANK API SLURM SPANK API SLURM SPANK API SLURM SPANK API
 *
 */
int
slurm_spank_init (spank_t sp, int ac, char *av[])
{
        spank_option_register(sp,spank_opts);
	x11_mode = _spank_x11_get_mode(sp,ac,av);

	return 0;
}
Beispiel #3
0
int slurm_spank_init(spank_t sp, int ac, char **av)
{
	int i, j, rc = ESPANK_SUCCESS;

	for (i=0; spank_option_array[i].name; i++) {
		j = spank_option_register(sp, &spank_option_array[i]);
		if (j != ESPANK_SUCCESS) {
			slurm_error("Could not register Spank option %s",
				    spank_option_array[i].name);
			rc = j;
		}
	}

	return rc;
}
Beispiel #4
0
static int lua_script_option_register (struct lua_script *script,
    spank_t sp, int index)
{
    spank_err_t err;
    struct lua_State *L = script->L;
    struct lua_script_option *opt = lua_script_option_create (script, index);


    if (!script_option_list)
        script_option_list = list_create ((ListDelF)lua_script_option_destroy);

    opt->s_opt.val = list_count (script_option_list);
    list_push (script_option_list, opt);

    err = spank_option_register (sp, &opt->s_opt);
    if (err != ESPANK_SUCCESS)
        return l_spank_error (L, err);

    lua_pushboolean (L, 1);
    return (1);
}