Commit 1408d4f2 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Merge branch 'amiranda/89-adm_update_job-should-only-allow-changing-the-job-resources' into 'main'

Resolve "`ADM_update_job()` should only allow changing the job resources"

This MR removes the `ADM_job_requirements` argument from `ADM_update_job`. 
By design, job requirements can only be defined when the job submission 
occurs which means that, as of today, they cannot be changed dynamically.
Thus, it doesn't make sense to be able to change them and removing
the argument simplifies the daemon.

Closes #89

See merge request !59
parents 0ccff750 8bb6da66
Loading
Loading
Loading
Loading
Loading
+6 −22
Original line number Diff line number Diff line
@@ -99,30 +99,14 @@ main(int argc, char* argv[]) {
        goto cleanup;
    }

    ADM_dataset_t new_inputs[NINPUTS];
    ADM_node_t* new_job_nodes = prepare_nodes(NJOB_NODES * 2);
    assert(new_job_nodes);

    for(int i = 0; i < NINPUTS; ++i) {
        const char* pattern = "input-new-dataset-%d";
        size_t n = snprintf(NULL, 0, pattern, i);
        char* id = (char*) alloca(n + 1);
        snprintf(id, n + 1, pattern, i);
        new_inputs[i] = ADM_dataset_create(id);
    }

    ADM_dataset_t new_outputs[NOUTPUTS];

    for(int i = 0; i < NOUTPUTS; ++i) {
        const char* pattern = "output-new-dataset-%d";
        size_t n = snprintf(NULL, 0, pattern, i);
        char* id = (char*) alloca(n + 1);
        snprintf(id, n + 1, pattern, i);
        new_outputs[i] = ADM_dataset_create(id);
    }

    ADM_job_requirements_t new_reqs = ADM_job_requirements_create(
            new_inputs, NINPUTS, new_outputs, NOUTPUTS, adhoc_storage);
    ADM_job_resources_t new_job_resources =
            ADM_job_resources_create(new_job_nodes, NJOB_NODES * 2);
    assert(job_resources);

    ret = ADM_update_job(server, job, job_resources, new_reqs);
    ret = ADM_update_job(server, job, new_job_resources);

    if(ret != ADM_SUCCESS) {
        fprintf(stderr,
+2 −3
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ main(int argc, char* argv[]) {
    admire::server server{"tcp", argv[1]};

    const auto job_nodes = prepare_nodes(NJOB_NODES);
    const auto new_job_nodes = prepare_nodes(NJOB_NODES * 2);
    const auto adhoc_nodes = prepare_nodes(NADHOC_NODES);
    const auto inputs = prepare_datasets("input-dataset-{}", NINPUTS);
    const auto outputs = prepare_datasets("output-dataset-{}", NOUTPUTS);
@@ -60,14 +61,12 @@ main(int argc, char* argv[]) {
    const auto new_outputs =
            prepare_datasets("output-new-dataset-{}", NOUTPUTS);

    admire::job_requirements new_reqs{new_inputs, new_outputs, gkfs_storage};

    try {
        [[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{job_nodes}, new_reqs);
                server, job, admire::job::resources{new_job_nodes});

        fmt::print(
                stdout,
+5 −0
Original line number Diff line number Diff line
@@ -53,6 +53,11 @@ struct job_info {
        return m_requirements;
    }

    void
    update(admire::job::resources resources) {
        m_resources = std::move(resources);
    }

    admire::job m_job;
    std::optional<admire::job::resources> m_resources;
    std::optional<admire::job_requirements> m_requirements;
+0 −1
Original line number Diff line number Diff line
@@ -310,7 +310,6 @@ MERCURY_GEN_PROC(
    ADM_update_job_in_t,
        ((ADM_job_t) (job))
        ((ADM_job_resources_t) (job_resources))
        ((adm_job_requirements) (reqs))
);

MERCURY_GEN_PROC(
+2 −2
Original line number Diff line number Diff line
@@ -224,8 +224,8 @@ register_job(const server& srv, const job::resources& resources,

ADM_return_t
update_job(const server& srv, const job& job,
           const job::resources& job_resources, const job_requirements& reqs) {
    return detail::update_job(srv, job, job_resources, reqs);
           const job::resources& job_resources) {
    return detail::update_job(srv, job, job_resources);
}

ADM_return_t
Loading