Esempio n. 1
0
static int extract_raw_rdl_alloc (flux_t h, int64_t j, JSON jcb)
{
    int i = 0;
    char k[20];
    int64_t cores = 0;
    JSON ra = Jnew_ar ();
    bool processing = true;

    for (i=0; processing; ++i) {
        snprintf (k, 20, "lwj.%ld.rank.%d.cores", j, i);
        if (kvs_get_int64 (h, k, &cores) < 0) {
            if (errno != EINVAL) 
                flux_log (h, LOG_ERR, "extract %s: %s", k, strerror (errno));
            processing = false; 
        } else {
            JSON elem = Jnew ();       
            JSON o = Jnew ();
            Jadd_int64 (o, JSC_RDL_ALLOC_CONTAINED_NCORES, cores);
            json_object_object_add (elem, JSC_RDL_ALLOC_CONTAINED, o);
            json_object_array_add (ra, elem);
        }
    } 
    json_object_object_add (jcb, JSC_RDL_ALLOC, ra);
    return 0;
}
Esempio n. 2
0
static int extract_raw_rdl_alloc (flux_t h, int64_t j, JSON jcb)
{
    int i = 0;
    char *key;
    int64_t cores = 0;
    JSON ra = Jnew_ar ();
    bool processing = true;

    for (i=0; processing; ++i) {
        key = xasprintf ("lwj.%"PRId64".rank.%"PRId32".cores", j, i);
        if (kvs_get_int64 (h, key, &cores) < 0) {
            if (errno != EINVAL)
                flux_log_error (h, "extract %s", key);
            processing = false;
        } else {
            JSON elem = Jnew ();
            JSON o = Jnew ();
            Jadd_int64 (o, JSC_RDL_ALLOC_CONTAINED_NCORES, cores);
            json_object_object_add (elem, JSC_RDL_ALLOC_CONTAINED, o);
            json_object_array_add (ra, elem);
        }
        free (key);
    }
    json_object_object_add (jcb, JSC_RDL_ALLOC, ra);
    return 0;
}
Esempio n. 3
0
/*
 *  Get and increment lwj.next-id (called from treeroot only)
 */
static unsigned long increment_jobid (flux_t h)
{
    int64_t ret;
    int rc;
    rc = kvs_get_int64 (h, "lwj.next-id", &ret);
    if (rc < 0 && (errno == ENOENT))
        ret = 1;
    set_next_jobid (h, ret+1);
    return (unsigned long) ret;
}
Esempio n. 4
0
static int extract_raw_walltime (flux_t h, int64_t j, int64_t *walltime)
{
    int rc = 0;
    char *key = xasprintf ("lwj.%"PRId64".walltime", j);
    if (kvs_get_int64 (h, key, walltime) < 0) {
        flux_log_error (h, "extract %s", key);
        rc = -1;
    }
    else
        flux_log (h, LOG_DEBUG, "extract %s: %"PRId64"", key, *walltime);
    return rc;
}
Esempio n. 5
0
static int extract_raw_ntasks (flux_t h, int64_t j, int64_t *ntasks)
{
    int rc = 0;
    char key[20] = {'\0'};
    snprintf (key, 20, "lwj.%ld.ntasks", j);
    if (kvs_get_int64 (h, key, ntasks) < 0) {
        flux_log (h, LOG_ERR, "extract %s: %s", key, strerror (errno));
        rc = -1;
    }
    else 
        flux_log (h, LOG_DEBUG, "extract %s: %ld", key, *ntasks);
    return rc;
}
Esempio n. 6
0
static int extract_raw_ntasks (flux_t h, int64_t j, int64_t *ntasks)
{
    int rc = 0;
    char *key = xasprintf ("lwj.%"PRId64".ntasks", j);
    if (kvs_get_int64 (h, key, ntasks) < 0) {
        flux_log_error (h, "extract %s", key);
        rc = -1;
    }
    else
        flux_log (h, LOG_DEBUG, "extract %s: %"PRId64"", key, *ntasks);
    free (key);
    return rc;
}
Esempio n. 7
0
void getas (flux_t *h, const char *key, const char *type)
{
    if (type == NULL) {
        char *value;
        if (kvs_get (h, key, &value) < 0)
            log_err_exit ("kvs_get %s", key);
        printf ("%s\n", value);
        free (value);
    }
    else if (!strcmp (type, "int")) {
        int value;
        if (kvs_get_int (h, key, &value) < 0)
            log_err_exit ("kvs_get_int %s", key);
        printf ("%d\n", value);
    }
    else if (!strcmp (type, "int64")) {
        int64_t value;
        if (kvs_get_int64 (h, key, &value) < 0)
            log_err_exit ("kvs_get_int64 %s", key);
        printf ("%" PRIi64 "\n", value);
    }
    else if (!strcmp (type, "boolean")) {
        bool value;
        if (kvs_get_boolean (h, key, &value) < 0)
            log_err_exit ("kvs_get_int64 %s", key);
        printf ("%s\n", value ? "true" : "false");
    }
    else if (!strcmp (type, "double")) {
        double value;
        if (kvs_get_double (h, key, &value) < 0)
            log_err_exit ("kvs_get_int64 %s", key);
        printf ("%f\n", value);
    }
    else if (!strcmp (type, "string")) {
        char *s;
        if (kvs_get_string (h, key, &s) < 0)
            log_err_exit ("kvs_get_string %s", key);
        printf ("%s\n", s);
        free (s);
    }
    else {
        log_msg_exit ("unknown type (use int/int64/boolean/double/string)");
    }
}