Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • eu/admire/io-scheduler
1 result
Show changes
Commits on Source (5)
......@@ -24,7 +24,12 @@
#include <fmt/format.h>
#include <admire.hpp>
#include "common.hpp"
#define NJOB_NODES 50
#define NADHOC_NODES 25
#define NINPUTS 10
#define NOUTPUTS 5
int
main(int argc, char* argv[]) {
......@@ -37,16 +42,40 @@ main(int argc, char* argv[]) {
admire::server server{"tcp", argv[1]};
admire::job job{42, 42};
const auto job_nodes = prepare_nodes(NJOB_NODES);
const auto adhoc_nodes = prepare_nodes(NADHOC_NODES);
const auto inputs = prepare_datasets("input-dataset-{}", NINPUTS);
const auto outputs = prepare_datasets("output-dataset-{}", NOUTPUTS);
std::string name = "adhoc_storage_42";
const auto adhoc_storage_ctx = admire::adhoc_storage::ctx{
admire::adhoc_storage::execution_mode::separate_new,
admire::adhoc_storage::access_type::read_write,
admire::adhoc_storage::resources{adhoc_nodes}, 100, false};
try {
[[maybe_unused]] const auto ret = admire::remove_job(server, job);
const auto adhoc_storage = admire::register_adhoc_storage(
server, name, admire::storage::type::gekkofs,
adhoc_storage_ctx);
admire::job_requirements reqs(inputs, outputs, adhoc_storage);
[[maybe_unused]] const auto job = admire::register_job(
server, admire::job::resources{job_nodes}, reqs, 0);
// do something with job
fmt::print(stdout, "ADM_register_job() remote procedure completed "
"successfully\n");
admire::remove_job(server, job);
fmt::print(stdout, "ADM_remove_job() remote procedure completed "
"successfully\n");
exit(EXIT_SUCCESS);
} catch(const std::exception& e) {
fmt::print(stdout, "ADM_remove_job() remote procedure not completed "
"successfully\n");
fmt::print(stderr, "FATAL: example failed: {}\n", e.what());
exit(EXIT_FAILURE);
}
}
......@@ -63,22 +63,15 @@ main(int argc, char* argv[]) {
server, name, admire::storage::type::gekkofs,
adhoc_storage_ctx);
const auto ret = admire::update_adhoc_storage(server, adhoc_storage,
new_adhoc_storage_ctx);
if(!ret) {
fmt::print(stderr, "FATAL: ADM_update_adhoc_storage() failed: {}\n",
ret.message());
exit(EXIT_FAILURE);
}
admire::update_adhoc_storage(server, adhoc_storage,
new_adhoc_storage_ctx);
fmt::print(stdout,
"ADM_update_adhoc_storage() remote procedure completed "
"successfully\n");
exit(EXIT_SUCCESS);
} catch(const std::exception& e) {
fmt::print(stderr, "FATAL: ADM_register_adhoc_storage() failed: {}\n",
e.what());
fmt::print(stderr, "FATAL: example failed: {}\n", e.what());
exit(EXIT_FAILURE);
}
}
......@@ -65,8 +65,7 @@ main(int argc, char* argv[]) {
[[maybe_unused]] const auto job = admire::register_job(
server, admire::job::resources{job_nodes}, reqs, 0);
[[maybe_unused]] ADM_return_t ret = admire::update_job(
server, job, admire::job::resources{new_job_nodes});
admire::update_job(server, job, admire::job::resources{new_job_nodes});
fmt::print(
stdout,
......
......@@ -221,15 +221,27 @@ register_job(const server& srv, const job::resources& resources,
return rv.value();
}
admire::error_code
void
update_job(const server& srv, const job& job,
const job::resources& job_resources) {
return detail::update_job(srv, job, job_resources);
const auto ec = detail::update_job(srv, job, job_resources);
if(!ec) {
throw std::runtime_error(
fmt::format("ADM_update_job() error: {}", ec.message()));
}
}
admire::error_code
void
remove_job(const server& srv, const job& job) {
return detail::remove_job(srv, job);
const auto ec = detail::remove_job(srv, job);
if(!ec) {
throw std::runtime_error(
fmt::format("ADM_remove_job() error: {}", ec.message()));
}
}
admire::adhoc_storage
......@@ -248,15 +260,27 @@ register_adhoc_storage(const server& srv, const std::string& name,
return rv.value();
}
admire::error_code
void
update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
const adhoc_storage::ctx& adhoc_storage_ctx) {
return detail::update_adhoc_storage(srv, adhoc_storage_ctx, adhoc_storage);
const auto ec =
detail::update_adhoc_storage(srv, adhoc_storage_ctx, adhoc_storage);
if(!ec) {
throw std::runtime_error(fmt::format(
"ADM_update_adhoc_storage() error: {}", ec.message()));
}
}
admire::error_code
void
remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage) {
return detail::remove_adhoc_storage(srv, adhoc_storage);
const auto ec = detail::remove_adhoc_storage(srv, adhoc_storage);
if(!ec) {
throw std::runtime_error(fmt::format(
"ADM_remove_adhoc_storage() error: {}", ec.message()));
}
}
ADM_return_t
......
......@@ -51,10 +51,10 @@ admire::job
register_job(const server& srv, const job::resources& job_resources,
const job_requirements& reqs, admire::slurm_job_id slurm_id);
admire::error_code
void
update_job(const server& srv, const job&, const job::resources& job_resources);
admire::error_code
void
remove_job(const server& srv, const job& job);
admire::adhoc_storage
......@@ -62,11 +62,11 @@ register_adhoc_storage(const server& srv, const std::string& name,
enum adhoc_storage::type type,
const adhoc_storage::ctx& ctx);
admire::error_code
void
update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
const adhoc_storage::ctx& adhoc_storage_ctx);
admire::error_code
void
remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage);
ADM_return_t
......
......@@ -68,8 +68,8 @@ ADM_update_job(ADM_server_t server, ADM_job_t job,
const admire::server srv{server};
return admire::update_job(srv, admire::job{job},
admire::job::resources{job_resources});
return admire::detail::update_job(srv, admire::job{job},
admire::job::resources{job_resources});
}
ADM_return_t
......@@ -77,7 +77,7 @@ ADM_remove_job(ADM_server_t server, ADM_job_t job) {
const admire::server srv{server};
return admire::remove_job(srv, admire::job{job});
return admire::detail::remove_job(srv, admire::job{job});
}
ADM_return_t
......