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

Add ADM_register_job()

parent 57c2a1ec
Loading
Loading
Loading
Loading
+36 −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_job <REMOTE_IP> <JOB_REQS>\n");
        exit(EXIT_FAILURE);
    }

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

    ADM_job_handle_t job{};
    ADM_job_requirements_t reqs{};
    ADM_dataset_info_t info{};
    ADM_return_t ret = ADM_SUCCESS;

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

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

    fmt::print(stdout, "ADM_register_job() remote procedure completed "
                       "successfully\n");
}
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@

list(APPEND examples
            ping
            ADM_register_job
            ADM_in_situ_ops ADM_in_transit_ops ADM_transfer_dataset
            ADM_set_dataset_information ADM_set_io_resources ADM_get_transfer_priority
            ADM_set_transfer_priority ADM_cancel_transfer ADM_get_pending_transfers
+19 −1
Original line number Diff line number Diff line
@@ -59,7 +59,25 @@ register_job(const server& srv, ADM_job_requirements_t reqs,
    (void) reqs;
    (void) job;

    return ADM_OTHER_ERROR;
    scord::network::rpc_client rpc_client{srv.m_protocol};
    rpc_client.register_rpcs();

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

    LOGGER_INFO("ADM_register_job(...)");

    ADM_register_job_in_t in{};
    ADM_register_job_out_t out;

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

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

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

ADM_return_t
+7 −4
Original line number Diff line number Diff line
@@ -107,6 +107,10 @@ struct engine {
        REGISTER_RPC(m_context->m_mid, m_context->m_rpc_names, "ping", void,
                     void, ping, false);

        REGISTER_RPC(m_context->m_mid, m_context->m_rpc_names,
                     "ADM_register_job", ADM_register_job_in_t,
                     ADM_register_job_out_t, ADM_register_job, true);

        REGISTER_RPC(m_context->m_mid, m_context->m_rpc_names, "ADM_input",

                     ADM_input_in_t, ADM_input_out_t, ADM_input, true);
@@ -198,10 +202,9 @@ struct engine {
                     true);

        REGISTER_RPC(m_context->m_mid, m_context->m_rpc_names,
                     "ADM_get_qos_constraints",
                     ADM_get_qos_constraints_in_t,
                     ADM_get_qos_constraints_out_t,
                     ADM_get_qos_constraints, true);
                     "ADM_get_qos_constraints", ADM_get_qos_constraints_in_t,
                     ADM_get_qos_constraints_out_t, ADM_get_qos_constraints,
                     true);

        REGISTER_RPC(m_context->m_mid, m_context->m_rpc_names,
                     "ADM_define_data_operation",
+32 −0
Original line number Diff line number Diff line
@@ -39,6 +39,38 @@ ping(hg_handle_t h) {

DEFINE_MARGO_RPC_HANDLER(ping);

static void
ADM_register_job(hg_handle_t h) {

    hg_return_t ret;

    ADM_register_job_in_t in;
    ADM_register_job_out_t out;

    margo_instance_id mid = margo_hg_handle_get_instance(h);

    ret = margo_get_input(h, &in);
    assert(ret == HG_SUCCESS);

    out.ret = -1;

    LOGGER_INFO("ADM_register_job()");

    out.ret = 0;

    ret = margo_respond(h, &out);
    assert(ret == HG_SUCCESS);

    ret = margo_free_input(h, &in);
    assert(ret == HG_SUCCESS);

    ret = margo_destroy(h);
    assert(ret == HG_SUCCESS);
}

DEFINE_MARGO_RPC_HANDLER(ADM_register_job);


/**
 * Specifes the origin location in a storage tier where input is located, as
 * well as the target location where it should be placed in a different storage
Loading