Exemplo n.º 1
0
/*
 * modify existing qos in the accounting system
 * IN:  slurmdb_qos_cond_t *qos_cond
 * IN:  slurmdb_qos_rec_t *qos
 * RET: List containing (char *'s) else NULL on error
 * note List needs to be freed with slurm_list_destroy() when called
 */
extern List slurmdb_qos_modify(void *db_conn,
			       slurmdb_qos_cond_t *qos_cond,
			       slurmdb_qos_rec_t *qos)
{
	return acct_storage_g_modify_qos(db_conn, getuid(),
					 qos_cond, qos);
}
Exemplo n.º 2
0
/*
 * modify existing qos in the accounting system
 * IN:  slurmdb_qos_cond_t *qos_cond
 * IN:  slurmdb_qos_rec_t *qos
 * RET: List containing (char *'s) else NULL on error
 * note List needs to be freed with slurm_list_destroy() when called
 */
extern List slurmdb_qos_modify(void *db_conn,
			       slurmdb_qos_cond_t *qos_cond,
			       slurmdb_qos_rec_t *qos)
{
	if (db_api_uid == -1)
		db_api_uid = getuid();

	return acct_storage_g_modify_qos(db_conn, db_api_uid, qos_cond, qos);
}
Exemplo n.º 3
0
extern int sacctmgr_modify_qos(int argc, char *argv[])
{
    int rc = SLURM_SUCCESS;
    slurmdb_qos_cond_t *qos_cond = xmalloc(sizeof(slurmdb_qos_cond_t));
    slurmdb_qos_rec_t *qos = xmalloc(sizeof(slurmdb_qos_rec_t));
    int i=0;
    int cond_set = 0, rec_set = 0, set = 0;
    List ret_list = NULL;

    slurmdb_init_qos_rec(qos, 0);

    for (i=0; i<argc; i++) {
        int command_len = strlen(argv[i]);
        if (!strncasecmp (argv[i], "Where", MAX(command_len, 5))) {
            i++;
            cond_set += _set_cond(&i, argc, argv, qos_cond, NULL);

        } else if (!strncasecmp (argv[i], "Set", MAX(command_len, 3))) {
            i++;
            rec_set += _set_rec(&i, argc, argv, NULL, qos);
        } else {
            cond_set += _set_cond(&i, argc, argv, qos_cond, NULL);
        }
    }

    if(exit_code) {
        slurmdb_destroy_qos_cond(qos_cond);
        slurmdb_destroy_qos_rec(qos);
        return SLURM_ERROR;
    } else if(!rec_set) {
        exit_code=1;
        fprintf(stderr, " You didn't give me anything to set\n");
        slurmdb_destroy_qos_cond(qos_cond);
        slurmdb_destroy_qos_rec(qos);
        return SLURM_ERROR;
    } else if(!cond_set) {
        if(!commit_check("You didn't set any conditions with 'WHERE'.\n"
                         "Are you sure you want to continue?")) {
            printf("Aborted\n");
            slurmdb_destroy_qos_cond(qos_cond);
            slurmdb_destroy_qos_rec(qos);
            return SLURM_SUCCESS;
        }
    }

    notice_thread_init();

    ret_list = acct_storage_g_modify_qos(db_conn, my_uid, qos_cond, qos);
    if(ret_list && list_count(ret_list)) {
        char *object = NULL;
        ListIterator itr = list_iterator_create(ret_list);
        printf(" Modified qos...\n");
        while((object = list_next(itr))) {
            printf("  %s\n", object);
        }
        list_iterator_destroy(itr);
        set = 1;
    } else if(ret_list) {
        printf(" Nothing modified\n");
    } else {
        exit_code=1;
        fprintf(stderr, " Error with request: %s\n",
                slurm_strerror(errno));
        rc = SLURM_ERROR;
    }

    if(ret_list)
        list_destroy(ret_list);

    notice_thread_fini();

    if(set) {
        if(commit_check("Would you like to commit changes?"))
            acct_storage_g_commit(db_conn, 1);
        else {
            printf(" Changes Discarded\n");
            acct_storage_g_commit(db_conn, 0);
        }
    }

    slurmdb_destroy_qos_cond(qos_cond);
    slurmdb_destroy_qos_rec(qos);

    return rc;
}