Commit 01ac95c7 authored by Ramon Nou's avatar Ramon Nou
Browse files

Solved issue with gekkofs type in rpc

parent ef504e45
Loading
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ struct query_config {
    std::string progname;
    std::string server_address;
    std::uint32_t job_id{};
    bool verbose{};
};

query_config
@@ -47,6 +48,7 @@ parse_command_line(int argc, char* argv[]) {
            ->required();
    app.add_option("job_id", cfg.job_id, "Job ID")->required();

    app.add_option("-v, --verbose  ", cfg.verbose, "Enable verbose output");
    try {
        app.parse(argc, argv);
        return cfg;
@@ -81,14 +83,14 @@ main(int argc, char* argv[]) {

        scord::job_info info =
                scord::query(scord::server{protocol, address}, cfg.job_id);

        if (cfg.verbose)
        fmt::print(stdout,
                   "Job metadata:\n"
                   "  adhoc_controller: {}\n"
                   "  adhoc_uuid: {}\n"
                   "  io_procs: {}\n",
                   info.adhoc_controller_address(), info.uuid(), info.io_procs());

        else fmt::print(stdout,"{}\n", info.uuid());
    } catch(const std::exception& ex) {
        fmt::print(stderr, "Error: {}\n", ex.what());
        return EXIT_FAILURE;
+49 −4
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@

#include <scord/scord.h>
#include <scord/utils.h>
#include <scord/types.h>
#include <types_private.h>
#include "defaults.h"
#include "utils.h"

@@ -436,8 +438,8 @@ process_config(int ac, char** av, scord_plugin_config_t* cfg) {
}

static int
scord_register_job(scord_plugin_config_t cfg, scord_nodelist_t nodelist,
                   uint32_t jobid) {
scord_register_job(spank_t sp, scord_plugin_config_t cfg,
                   scord_nodelist_t nodelist, uint32_t jobid) {

    int rc = 0;
    int nnodes = 0;
@@ -450,6 +452,7 @@ scord_register_job(scord_plugin_config_t cfg, scord_nodelist_t nodelist,
    ADM_adhoc_storage_t adhoc_storage = NULL;
    ADM_job_requirements_t scord_reqs = NULL;
    ADM_job_t scord_job = NULL;
    ADM_transfer_t transfer = NULL;
    char* adhoc_path = NULL;

    /* First determine the node on which to launch scord-ctl (typically the
@@ -578,6 +581,48 @@ scord_register_job(scord_plugin_config_t cfg, scord_nodelist_t nodelist,
        goto end;
    }

    // define the environment variables for the job
    switch(adhoc_type) {
        case ADM_ADHOC_STORAGE_GEKKOFS:
            spank_setenv(sp, "ADHOC_TYPE", "gekkofs", 1);
         
            spank_setenv(sp, "LIBGKFS_HOSTS_FILE", "/tmp/gekkofs/gkfs_hosts.txt", 1);
            break;
        case ADM_ADHOC_STORAGE_EXPAND:
            spank_setenv(sp, "ADHOC_TYPE", "expand", 1);
            break;
        case ADM_ADHOC_STORAGE_DATACLAY:
            spank_setenv(sp, "ADHOC_TYPE", "dataclay", 1);
            break;
        case ADM_ADHOC_STORAGE_HERCULES:
            spank_setenv(sp, "ADHOC_TYPE", "hercules", 1);
            break;
        
    }
    spank_setenv(sp, "ADHOC_PATH", adhoc_path, 1);


    // divide input_datasets into sources and targets
    ADM_dataset_t * sources = malloc((input_datasets_count) * sizeof(ADM_dataset_t));
    ADM_dataset_t * targets = malloc((input_datasets_count) * sizeof(ADM_dataset_t));;

    for (unsigned int i = 0; i < input_datasets_count; i++) {
        //ADM_dataset_route_list_t r_inputs;
        sources[i] = scord_reqs->r_inputs->l_routes[i].d_src;
        targets[i] = scord_reqs->r_inputs->l_routes[i].d_dst;
    }
   
    if (ADM_transfer_datasets(scord_server, scord_job, sources,
                                input_datasets_count,
                                targets,
                                input_datasets_count, 0, 0,
    ADM_MAPPING_ONE_TO_ONE, &transfer)!=
       ADM_SUCCESS) {
        slurm_error("%s: adhoc storage transfer failed", plugin_name);
        rc = -1;
        goto end;
    }

end:
    if(adhoc_path) {
        free(adhoc_path);
@@ -760,7 +805,7 @@ slurm_spank_user_init(spank_t sp, int ac, char** av) {
        goto cleanup;
    }

    if((ec = scord_register_job(cfg, nodelist, jobid)) != 0) {
    if((ec = scord_register_job(sp, cfg, nodelist, jobid)) != 0) {
        slurm_error("%s: failed to register job with scord", plugin_name);
        ec = -1;
        goto cleanup;
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ dataset_process(std::string id) {
        type = cargo::dataset::type::parallel;
    } else if(id.find("gekkofs:") != std::string::npos) {
        id = id.substr(strlen("gekkofs:"));
        type = cargo::dataset::type::posix;
        type = cargo::dataset::type::gekkofs;
    } else if(id.find("hercules:") != std::string::npos) {
        id = id.substr(strlen("hercules:"));
        type = cargo::dataset::type::hercules;