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

Update ADM_get_qos_constraints()

parent 8fcaa2a6
Loading
Loading
Loading
Loading
+14 −24
Original line number Diff line number Diff line
#include <fmt/format.h>
#include <engine.hpp>
#include <admire.hpp>


int
@@ -13,36 +13,26 @@ main(int argc, char* argv[]) {
        exit(EXIT_FAILURE);
    }

    scord::network::rpc_client rpc_client{"tcp"};
    rpc_client.register_rpcs();
    admire::server server{"tcp", argv[1]};

    auto endp = rpc_client.lookup(argv[1]);
    ADM_job_handle_t job{};
    ADM_qos_scope_t scope{};
    ADM_qos_entity_t entity{};
    ADM_limit_t* limits;
    ADM_return_t ret = ADM_SUCCESS;

    fmt::print(
            stdout,
            "Calling ADM_get_qos_constraints remote procedure on {} with scope {} and element id {} ...\n",
            argv[1], argv[2], argv[3]);
    ADM_get_qos_constraints_in_t in;
    in.scope = argv[2];
    try {
        in.element_id = std::stoi(argv[3]);
        ret = admire::get_qos_constraints(server, job, scope, entity, &limits);
    } catch(const std::exception& e) {
        fmt::print(stderr, "ERROR: Incorrect input type. Please try again.\n");
        fmt::print(stderr, "FATAL: ADM_cancel_transfer() failed: {}\n",
                   e.what());
        exit(EXIT_FAILURE);
    }

    ADM_get_qos_constraints_out_t out;

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

    if(out.ret < 0) {
        fmt::print(
                stderr,
                "ADM_get_qos_constraints remote procedure not completed successfully\n");
    if(ret != ADM_SUCCESS) {
        fmt::print(stdout,
                   "ADM_cancel_transfer() remote procedure not completed "
                   "successfully\n");
        exit(EXIT_FAILURE);
    } else {
        fmt::print(
                stdout,
                "ADM_get_qos_constraints remote procedure completed successfully\n");
    }
}
+21 −1
Original line number Diff line number Diff line
@@ -373,7 +373,27 @@ get_qos_constraints(const server& srv, ADM_job_handle_t job,
    (void) entity;
    (void) limits;

    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_get_qos_constraints(...)");

    // FIXME: change RPC fields to ADM_transfer_handle_t
    ADM_get_qos_constraints_in_t in{};
    ADM_get_qos_constraints_out_t out;

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

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

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

ADM_return_t
+3 −2
Original line number Diff line number Diff line
@@ -1034,8 +1034,6 @@ ADM_get_qos_constraints(hg_handle_t h) {
    ret = margo_get_input(h, &in);
    assert(ret == HG_SUCCESS);

    const std::string scp(in.scope);

    out.ret = -1;
    out.list = nullptr;

@@ -1045,6 +1043,9 @@ ADM_get_qos_constraints(hg_handle_t h) {
        LOGGER_ERROR("ADM_get_qos_constraints(): invalid element_id (< 0)");
    } else {
        LOGGER_INFO("ADM_get_qos_constraints({}, {})", in.scope, in.element_id);

        const std::string scp(in.scope);

        if((scp == "dataset") || (scp == "node") || (scp == "job")) {
            LOGGER_INFO(
                    "ADM_get_qos_constraints scope value is acceptable ({})",