Loading cli/scord_query.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ struct query_config { std::string progname; std::string server_address; std::uint32_t job_id{}; bool verbose{}; }; query_config Loading @@ -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; Loading Loading @@ -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; Loading plugins/slurm/slurmadmcli.c +49 −4 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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; Loading @@ -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 Loading Loading @@ -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); Loading Loading @@ -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; Loading src/scord/rpc_server.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading
cli/scord_query.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ struct query_config { std::string progname; std::string server_address; std::uint32_t job_id{}; bool verbose{}; }; query_config Loading @@ -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; Loading Loading @@ -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; Loading
plugins/slurm/slurmadmcli.c +49 −4 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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; Loading @@ -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 Loading Loading @@ -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); Loading Loading @@ -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; Loading
src/scord/rpc_server.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading