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; }
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; }
/* * 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; }
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; }
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; }
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; }
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)"); } }