Verified Commit 97b0dddd authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Add ADM_(register|update|remove)_pfs_storage()

parent 25f8ff72
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
#include <fmt/format.h>
#include <admire.hpp>


int
main(int argc, char* argv[]) {

    if(argc != 3) {
        fmt::print(stderr, "ERROR: no location provided\n");
        fmt::print(stderr, "Usage: ADM_register_pfs_storage <REMOTE_IP> "
                           "<JOB_REQS>\n");
        exit(EXIT_FAILURE);
    }

    admire::server server{"tcp", argv[1]};

    ADM_job_t job{};
    ADM_pfs_context_t ctx{};
    ADM_storage_t pfs_storage{};
    ADM_return_t ret = ADM_SUCCESS;

    try {
        ret = admire::register_pfs_storage(server, job, ctx, &pfs_storage);
    } catch(const std::exception& e) {
        fmt::print(stderr, "FATAL: ADM_register_pfs_storage() failed: {}\n",
                   e.what());
        exit(EXIT_FAILURE);
    }

    if(ret != ADM_SUCCESS) {
        fmt::print(stdout,
                   "ADM_register_pfs_storage() remote procedure not completed "
                   "successfully\n");
        exit(EXIT_FAILURE);
    }

    fmt::print(stdout, "ADM_register_pfs_storage() remote procedure completed "
                       "successfully\n");
}
+38 −0
Original line number Diff line number Diff line
#include "fmt/format.h"
#include "admire.hpp"


int
main(int argc, char* argv[]) {

    if(argc != 3) {
        fmt::print(stderr, "ERROR: no location provided\n");
        fmt::print(stderr, "Usage: ADM_remove_pfs_storage <REMOTE_IP> "
                           "<JOB_REQS>\n");
        exit(EXIT_FAILURE);
    }

    admire::server server{"tcp", argv[1]};

    ADM_job_t job{};
    ADM_storage_t pfs_storage{};
    ADM_return_t ret = ADM_SUCCESS;

    try {
        ret = admire::remove_pfs_storage(server, job, pfs_storage);
    } catch(const std::exception& e) {
        fmt::print(stderr, "FATAL: ADM_remove_pfs_storage() failed: {}\n",
                   e.what());
        exit(EXIT_FAILURE);
    }

    if(ret != ADM_SUCCESS) {
        fmt::print(stdout,
                   "ADM_remove_pfs_storage() remote procedure not completed "
                   "successfully\n");
        exit(EXIT_FAILURE);
    }

    fmt::print(stdout, "ADM_remove_pfs_storage() remote procedure completed "
                       "successfully\n");
}
+39 −0
Original line number Diff line number Diff line
#include <fmt/format.h>
#include <admire.hpp>


int
main(int argc, char* argv[]) {

    if(argc != 3) {
        fmt::print(stderr, "ERROR: no location provided\n");
        fmt::print(stderr, "Usage: ADM_update_pfs_storage <REMOTE_IP> "
                           "<JOB_REQS>\n");
        exit(EXIT_FAILURE);
    }

    admire::server server{"tcp", argv[1]};

    ADM_job_t job{};
    ADM_pfs_context_t ctx{};
    ADM_storage_t pfs_storage{};
    ADM_return_t ret = ADM_SUCCESS;

    try {
        ret = admire::update_pfs_storage(server, job, ctx, pfs_storage);
    } catch(const std::exception& e) {
        fmt::print(stderr, "FATAL: ADM_update_pfs_storage() failed: {}\n",
                   e.what());
        exit(EXIT_FAILURE);
    }

    if(ret != ADM_SUCCESS) {
        fmt::print(stdout,
                   "ADM_update_pfs_storage() remote procedure not completed "
                   "successfully\n");
        exit(EXIT_FAILURE);
    }

    fmt::print(stdout, "ADM_update_pfs_storage() remote procedure completed "
                       "successfully\n");
}
+3 −1
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ list(APPEND examples_cxx
            ADM_register_job ADM_update_job ADM_remove_job
            ADM_register_adhoc_storage ADM_update_adhoc_storage
            ADM_remove_adhoc_storage ADM_deploy_adhoc_storage
            ADM_register_pfs_storage ADM_update_pfs_storage
            ADM_remove_pfs_storage
          # ADM_in_situ_ops ADM_in_transit_ops
            ADM_transfer_dataset
            ADM_set_dataset_information ADM_set_io_resources ADM_get_transfer_priority
+83 −0
Original line number Diff line number Diff line
@@ -361,6 +361,89 @@ deploy_adhoc_storage(const server& srv, ADM_job_t job,
    return ADM_SUCCESS;
}

ADM_return_t
register_pfs_storage(const server& srv, ADM_job_t job, ADM_pfs_context_t ctx,
                     ADM_storage_t* pfs_storage) {
    (void) srv;
    (void) job;
    (void) ctx;
    (void) pfs_storage;

    scord::network::rpc_client rpc_client{srv.m_protocol, rpc_registration_cb};

    auto endp = rpc_client.lookup(srv.m_address);

    LOGGER_INFO("ADM_register_pfs_storage(...)");

    ADM_register_pfs_storage_in_t in{};
    ADM_register_pfs_storage_out_t out;

    endp.call("ADM_register_pfs_storage", &in, &out);

    if(out.ret < 0) {
        LOGGER_ERROR("ADM_register_pfs_storage() = {}", out.ret);
        return static_cast<ADM_return_t>(out.ret);
    }

    LOGGER_INFO("ADM_register_pfs_storage() = {}", ADM_SUCCESS);
    return ADM_SUCCESS;
}

ADM_return_t
update_pfs_storage(const server& srv, ADM_job_t job, ADM_pfs_context_t ctx,
                   ADM_storage_t pfs_storage) {
    (void) srv;
    (void) job;
    (void) ctx;
    (void) pfs_storage;

    scord::network::rpc_client rpc_client{srv.m_protocol, rpc_registration_cb};

    auto endp = rpc_client.lookup(srv.m_address);

    LOGGER_INFO("ADM_update_pfs_storage(...)");

    ADM_update_pfs_storage_in_t in{};
    ADM_update_pfs_storage_out_t out;

    endp.call("ADM_update_pfs_storage", &in, &out);

    if(out.ret < 0) {
        LOGGER_ERROR("ADM_update_pfs_storage() = {}", out.ret);
        return static_cast<ADM_return_t>(out.ret);
    }

    LOGGER_INFO("ADM_update_pfs_storage() = {}", ADM_SUCCESS);
    return ADM_SUCCESS;
}

ADM_return_t
remove_pfs_storage(const server& srv, ADM_job_t job,
                   ADM_storage_t pfs_storage) {
    (void) srv;
    (void) job;
    (void) pfs_storage;

    scord::network::rpc_client rpc_client{srv.m_protocol, rpc_registration_cb};

    auto endp = rpc_client.lookup(srv.m_address);

    LOGGER_INFO("ADM_remove_pfs_storage(...)");

    ADM_remove_pfs_storage_in_t in{};
    ADM_remove_pfs_storage_out_t out;

    endp.call("ADM_remove_pfs_storage", &in, &out);

    if(out.ret < 0) {
        LOGGER_ERROR("ADM_remove_pfs_storage() = {}", out.ret);
        return static_cast<ADM_return_t>(out.ret);
    }

    LOGGER_INFO("ADM_remove_pfs_storage() = {}", ADM_SUCCESS);
    return ADM_SUCCESS;
}

ADM_return_t
transfer_dataset(const server& srv, ADM_job_t job, ADM_dataset_t** sources,
                 ADM_dataset_t** targets, ADM_qos_limit_t** limits,
Loading