Ejemplo n.º 1
0
void cmd_link (flux_t h, int argc, char **argv)
{
    if (argc != 2)
        msg_exit ("link: specify target and link_name");
    if (kvs_symlink (h, argv[1], argv[0]) < 0)
        err_exit ("%s", argv[1]);
    if (kvs_commit (h) < 0)
        err_exit ("kvs_commit");
}
Ejemplo n.º 2
0
static int kvs_job_set_state (flux_t h, unsigned long jobid, const char *state)
{
    int rc;
    char *key = NULL;
    char *link = NULL;
    char *target = NULL;

    /*  Create lwj entry in lwj-active dir at first:
     */
    if ((asprintf (&key, "lwj-active.%lu.state", jobid) < 0)
        || (asprintf (&link, "lwj.%lu", jobid) < 0)
        || (asprintf (&target, "lwj-active.%lu", jobid) < 0)) {
        flux_log_error (h, "kvs_job_set_state: asprintf");
        return (-1);
    }

    flux_log (h, LOG_INFO, "Setting job %ld to %s", jobid, state);
    if ((rc = kvs_put_string (h, key, state)) < 0) {
        flux_log_error (h, "kvs_put_string (%s)", key);
        goto out;
    }

    /*
     *  Create link from lwj.<id> to lwj-active.<id>
     */
    if ((rc = kvs_symlink (h, link, target)) < 0) {
        flux_log_error (h, "kvs_symlink (%s, %s)", link, key);
        goto out;
    }

    if ((rc = kvs_commit (h)) < 0)
        flux_log_error (h, "kvs_job_set_state: kvs_commit");

out:
    free (key);
    free (link);
    free (target);
    return rc;
}