您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ xstrdup_printf函数代码示例

51自学网 2021-06-03 11:52:45
  C++
这篇教程C++ xstrdup_printf函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中xstrdup_printf函数的典型用法代码示例。如果您正苦于以下问题:C++ xstrdup_printf函数的具体用法?C++ xstrdup_printf怎么用?C++ xstrdup_printf使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了xstrdup_printf函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: as_mysql_job_complete

extern int as_mysql_job_complete(mysql_conn_t *mysql_conn,				 struct job_record *job_ptr){	char *query = NULL;	int rc = SLURM_SUCCESS, job_state;	time_t submit_time, end_time;	if (!job_ptr->db_index	    && ((!job_ptr->details || !job_ptr->details->submit_time)		&& !job_ptr->resize_time)) {		error("as_mysql_job_complete: "		      "Not inputing this job, it has no submit time.");		return SLURM_ERROR;	}	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return ESLURM_DB_CONNECTION;	debug2("as_mysql_slurmdb_job_complete() called");	if (job_ptr->resize_time)		submit_time = job_ptr->resize_time;	else		submit_time = job_ptr->details->submit_time;	if (IS_JOB_RESIZING(job_ptr)) {		end_time = job_ptr->resize_time;		job_state = JOB_RESIZING;	} else {		/* If we get an error with this just fall through to avoid an		 * infinite loop */		if (job_ptr->end_time == 0) {			debug("as_mysql_jobacct: job %u never started",			      job_ptr->job_id);			return SLURM_SUCCESS;		}		end_time = job_ptr->end_time;		job_state = job_ptr->job_state & JOB_STATE_BASE;	}	slurm_mutex_lock(&rollup_lock);	if (end_time < global_last_rollup) {		global_last_rollup = job_ptr->end_time;		slurm_mutex_unlock(&rollup_lock);		query = xstrdup_printf("update /"%s_%s/" set "				       "hourly_rollup=%ld, "				       "daily_rollup=%ld, monthly_rollup=%ld",				       mysql_conn->cluster_name,				       last_ran_table, end_time,				       end_time, end_time);		debug3("%d(%s:%d) query/n%s",		       mysql_conn->conn, THIS_FILE, __LINE__, query);		rc = mysql_db_query(mysql_conn, query);		xfree(query);	} else		slurm_mutex_unlock(&rollup_lock);	if (!job_ptr->db_index) {		if (!(job_ptr->db_index =		      _get_db_index(mysql_conn,				    submit_time,				    job_ptr->job_id,				    job_ptr->assoc_id))) {			/* Comment is overloaded in job_start to be			   the block_id, so we will need to store this			   for later.			*/			char *comment = job_ptr->comment;			job_ptr->comment = NULL;			/* If we get an error with this just fall			 * through to avoid an infinite loop			 */			if (as_mysql_job_start(				    mysql_conn, job_ptr) == SLURM_ERROR) {				job_ptr->comment = comment;				error("couldn't add job %u at job completion",				      job_ptr->job_id);				return SLURM_SUCCESS;			}			job_ptr->comment = comment;		}	}	/*	 * make sure we handle any quotes that may be in the comment	 */	query = xstrdup_printf("update /"%s_%s/" set "			       "time_end=%ld, state=%d",			       mysql_conn->cluster_name, job_table,			       end_time, job_state);	if (job_ptr->derived_ec != NO_VAL)		xstrfmtcat(query, ", derived_ec=%u", job_ptr->derived_ec);	if (job_ptr->comment) {		char *comment = slurm_add_slash_to_quotes(job_ptr->comment);		xstrfmtcat(query, ", derived_es='%s'", comment);		xfree(comment);//.........这里部分代码省略.........
开发者ID:BYUHPC,项目名称:slurm,代码行数:101,


示例2: as_mysql_remove_qos

extern List as_mysql_remove_qos(mysql_conn_t *mysql_conn, uint32_t uid,				slurmdb_qos_cond_t *qos_cond){	ListIterator itr = NULL;	List ret_list = NULL;	int rc = SLURM_SUCCESS;	char *object = NULL;	char *extra = NULL, *query = NULL,		*name_char = NULL, *assoc_char = NULL;	time_t now = time(NULL);	char *user_name = NULL;	int set = 0;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	if (!qos_cond) {		error("we need something to change");		return NULL;	}	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return NULL;	xstrcat(extra, "where deleted=0");	if (qos_cond->description_list	    && list_count(qos_cond->description_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->description_list);		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "description='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (qos_cond->id_list	    && list_count(qos_cond->id_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->id_list);		while ((object = list_next(itr))) {			if (!object[0])				continue;			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "id='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (qos_cond->name_list	    && list_count(qos_cond->name_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->name_list);		while ((object = list_next(itr))) {			if (!object[0])				continue;			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "name='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (!extra) {		error("Nothing to remove");		return NULL;	}	query = xstrdup_printf("select id, name from %s %s;", qos_table, extra);	xfree(extra);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		return NULL;	}	name_char = NULL;	ret_list = list_create(slurm_destroy_char);	while ((row = mysql_fetch_row(result))) {		slurmdb_qos_rec_t *qos_rec = NULL;		list_append(ret_list, xstrdup(row[1]));		if (!name_char)			xstrfmtcat(name_char, "id='%s'", row[0]);		else			xstrfmtcat(name_char, " || id='%s'", row[0]);		if (!assoc_char)			xstrfmtcat(assoc_char, "id_qos='%s'", row[0]);		else			xstrfmtcat(assoc_char, " || id_qos='%s'", row[0]);//.........这里部分代码省略.........
开发者ID:VURM,项目名称:slurm,代码行数:101,


示例3: archive_write_file

extern int archive_write_file(Buf buffer, char *cluster_name,			      time_t period_start, time_t period_end,			      char *arch_dir, char *arch_type,			      uint32_t archive_period){	int fd = 0;	int rc = SLURM_SUCCESS;	char *old_file = NULL, *new_file = NULL, *reg_file = NULL;	static int high_buffer_size = (1024 * 1024);	static pthread_mutex_t local_file_lock = PTHREAD_MUTEX_INITIALIZER;	xassert(buffer);	slurm_mutex_lock(&local_file_lock);	/* write the buffer to file */	reg_file = _make_archive_name(period_start, period_end,				      cluster_name, arch_dir,				      arch_type, archive_period);	debug("Storing %s archive for %s at %s",	      arch_type, cluster_name, reg_file);	old_file = xstrdup_printf("%s.old", reg_file);	new_file = xstrdup_printf("%s.new", reg_file);	fd = creat(new_file, 0600);	if (fd < 0) {		error("Can't save archive, create file %s error %m", new_file);		rc = SLURM_ERROR;	} else {		int pos = 0, nwrite = get_buf_offset(buffer), amount;		char *data = (char *)get_buf_data(buffer);		high_buffer_size = MAX(nwrite, high_buffer_size);		while (nwrite > 0) {			amount = write(fd, &data[pos], nwrite);			if ((amount < 0) && (errno != EINTR)) {				error("Error writing file %s, %m", new_file);				rc = SLURM_ERROR;				break;			}			nwrite -= amount;			pos    += amount;		}		fsync(fd);		close(fd);	}	if (rc)		(void) unlink(new_file);	else {			/* file shuffle */		(void) unlink(old_file);		if (link(reg_file, old_file))			debug4("Link(%s, %s): %m", reg_file, old_file);		(void) unlink(reg_file);		if (link(new_file, reg_file))			debug4("Link(%s, %s): %m", new_file, reg_file);		(void) unlink(new_file);	}	xfree(old_file);	xfree(reg_file);	xfree(new_file);	slurm_mutex_unlock(&local_file_lock);	return rc;}
开发者ID:Cray,项目名称:slurm,代码行数:65,


示例4: _cluster_remove_wckeys

static int _cluster_remove_wckeys(mysql_conn_t *mysql_conn,                                  char *extra,                                  char *cluster_name,                                  char *user_name,                                  List ret_list){    int rc = SLURM_SUCCESS;    MYSQL_RES *result = NULL;    MYSQL_ROW row;    char *assoc_char = NULL;    time_t now = time(NULL);    char *query = xstrdup_printf("select t1.id_wckey, t1.wckey_name "                                 "from /"%s_%s/" as t1%s;",                                 cluster_name, wckey_table, extra);    if (!(result = mysql_db_query_ret(mysql_conn, query, 0))) {        xfree(query);        return SLURM_ERROR;    }    if (!mysql_num_rows(result)) {        mysql_free_result(result);        xfree(query);        return SLURM_SUCCESS;    }    while ((row = mysql_fetch_row(result))) {        slurmdb_wckey_rec_t *wckey_rec = NULL;        list_append(ret_list, xstrdup(row[1]));        if (!assoc_char)            xstrfmtcat(assoc_char, "id_wckey='%s'", row[0]);        else            xstrfmtcat(assoc_char, " || id_wckey='%s'", row[0]);        wckey_rec = xmalloc(sizeof(slurmdb_wckey_rec_t));        /* we only need id and cluster when removing           no real need to init */        wckey_rec->id = slurm_atoul(row[0]);        wckey_rec->cluster = xstrdup(cluster_name);        if (addto_update_list(mysql_conn->update_list,                              SLURMDB_REMOVE_WCKEY, wckey_rec)                != SLURM_SUCCESS)            slurmdb_destroy_wckey_rec(wckey_rec);    }    mysql_free_result(result);    if (!list_count(ret_list)) {        errno = SLURM_NO_CHANGE_IN_DATA;        if (debug_flags & DEBUG_FLAG_DB_WCKEY)            DB_DEBUG(mysql_conn->conn,                     "didn't effect anything/n%s", query);        xfree(query);        xfree(assoc_char);        return SLURM_SUCCESS;    }    xfree(query);    rc = remove_common(mysql_conn, DBD_REMOVE_WCKEYS, now,                       user_name, wckey_table, assoc_char, assoc_char,                       cluster_name, NULL, NULL);    xfree(assoc_char);    if (rc == SLURM_ERROR) {        list_destroy(ret_list);        return SLURM_ERROR;    }    return SLURM_SUCCESS;}
开发者ID:sblanton,项目名称:slurm,代码行数:69,


示例5: slurm_jobcomp_log_record

extern int slurm_jobcomp_log_record(struct job_record *job_ptr){	int rc = SLURM_SUCCESS;	char *usr_str = NULL, *grp_str = NULL, lim_str[32];	char *connect_type = NULL, *reboot = NULL, *rotate = NULL,		*geometry = NULL, *start = NULL,		*blockid = NULL;	enum job_states job_state;	char *query = NULL;	uint32_t time_limit, start_time, end_time;	if(!jobcomp_pgsql_db || PQstatus(jobcomp_pgsql_db) != CONNECTION_OK) {		char *loc = slurm_get_jobcomp_loc();		if(slurm_jobcomp_set_location(loc) == SLURM_ERROR) {			xfree(loc);			return SLURM_ERROR;		}		xfree(loc);	}	usr_str = _get_user_name(job_ptr->user_id);	grp_str = _get_group_name(job_ptr->group_id);	if ((job_ptr->time_limit == NO_VAL) && job_ptr->part_ptr)		time_limit = job_ptr->part_ptr->max_time;	else		time_limit = job_ptr->time_limit;	if (time_limit == INFINITE)		strcpy(lim_str, "UNLIMITED");	else {		snprintf(lim_str, sizeof(lim_str), "%lu",			 (unsigned long) time_limit);	}	/* Job will typically be COMPLETING when this is called.	 * We remove the flags to get the eventual completion state:	 * JOB_FAILED, JOB_TIMEOUT, etc. */	if (IS_JOB_RESIZING(job_ptr)) {		job_state = JOB_RESIZING;		if (job_ptr->resize_time)			start_time = job_ptr->resize_time;		else			start_time = job_ptr->start_time;		end_time = time(NULL);	} else {		job_state = job_ptr->job_state & JOB_STATE_BASE;		if (job_ptr->resize_time)			start_time = job_ptr->resize_time;		else if (job_ptr->start_time > job_ptr->end_time) {			/* Job cancelled while pending and			 * expected start time is in the future. */			start_time = 0;		} else			start_time = job_ptr->start_time;		end_time = job_ptr->end_time;	}	connect_type = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						       SELECT_PRINT_CONNECTION);	reboot = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						 SELECT_PRINT_REBOOT);	rotate = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						 SELECT_PRINT_ROTATE);	geometry = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						   SELECT_PRINT_GEOMETRY);	start = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						SELECT_PRINT_START);#ifdef HAVE_BG	blockid = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						  SELECT_PRINT_BG_ID);#else	blockid = select_g_select_jobinfo_xstrdup(job_ptr->select_jobinfo,						  SELECT_PRINT_RESV_ID);#endif	query = xstrdup_printf(		"insert into %s (jobid, uid, user_name, gid, group_name, "		"name, state, proc_cnt, partition, timelimit, "		"starttime, endtime, nodecnt",		jobcomp_table);	if(job_ptr->nodes)		xstrcat(query, ", nodelist");	if(connect_type)		xstrcat(query, ", connect_type");	if(reboot)		xstrcat(query, ", reboot");	if(rotate)		xstrcat(query, ", rotate");	if(job_ptr->details && (job_ptr->details->max_cpus != NO_VAL))		xstrcat(query, ", maxprocs");	if(geometry)		xstrcat(query, ", geometry");	if(start)		xstrcat(query, ", start");	if(blockid)		xstrcat(query, ", blockid");	xstrfmtcat(query, ") values (%u, %u, '%s', %u, '%s', /"%s/", %d, %u, "		   "'%s', /"%s/", %u, %u,  %u",		   job_ptr->job_id, job_ptr->user_id, usr_str,//.........这里部分代码省略.........
开发者ID:Xarthisius,项目名称:slurm,代码行数:101,


示例6: _process_grouped_report

/* FIXME: This only works for CPUS now */static List _process_grouped_report(	void *db_conn, slurmdb_job_cond_t *job_cond, List grouping_list,	bool flat_view, bool wckey_type, bool both){	int exit_code = 0;	void *object = NULL, *object2 = NULL;	ListIterator itr = NULL, itr2 = NULL;	ListIterator cluster_itr = NULL;	ListIterator local_itr = NULL;	ListIterator acct_itr = NULL;	ListIterator group_itr = NULL;	slurmdb_job_rec_t *job = NULL;	slurmdb_report_cluster_grouping_t *cluster_group = NULL;	slurmdb_report_acct_grouping_t *acct_group = NULL;	slurmdb_report_job_grouping_t *job_group = NULL;	List job_list = NULL;	List cluster_list = NULL;	List object_list = NULL, object2_list = NULL;	List tmp_acct_list = NULL;	bool destroy_job_cond = 0;	bool destroy_grouping_list = 0;	bool individual = 0;	uint32_t tres_id = TRES_CPU;	uid_t my_uid = getuid();	/* we don't want to actually query by accounts in the jobs	   here since we may be looking for sub accounts of a specific	   account.	*/	if (!job_cond) {		destroy_job_cond = 1;		job_cond = xmalloc(sizeof(slurmdb_job_cond_t));	}	if (!grouping_list) {		destroy_grouping_list = 1;		grouping_list = list_create(slurm_destroy_char);		slurm_addto_char_list(grouping_list, "50,250,500,1000");	}	tmp_acct_list = job_cond->acct_list;	job_cond->acct_list = NULL;	job_list = jobacct_storage_g_get_jobs_cond(db_conn, my_uid, job_cond);	job_cond->acct_list = tmp_acct_list;	tmp_acct_list = NULL;	if (!job_list) {		exit_code=1;		fprintf(stderr, " Problem with job query./n");		goto end_it;	}	group_itr = list_iterator_create(grouping_list);	/* make a group for each job size we find. */	if (!list_count(grouping_list)) {		char *group = NULL;		individual = 1;		itr = list_iterator_create(job_list);		while ((job = list_next(itr))) {			char *tmp = NULL;			uint64_t count;			if (!job->elapsed)				continue;			if ((count = slurmdb_find_tres_count_in_string(				     job->tres_alloc_str, tres_id))			    == INFINITE64)				continue;			tmp = xstrdup_printf("%"PRIu64, count);			while ((group = list_next(group_itr))) {				if (!strcmp(group, tmp)) {					break;				}			}			if (!group)				list_append(grouping_list, tmp);			else				xfree(tmp);			list_iterator_reset(group_itr);		}		list_iterator_destroy(itr);		list_sort(grouping_list, (ListCmpF)_sort_group_asc);	}	cluster_list = list_create(slurmdb_destroy_report_cluster_grouping);	cluster_itr = list_iterator_create(cluster_list);	if (flat_view)		goto no_objects;//.........这里部分代码省略.........
开发者ID:FredHutch,项目名称:slurm,代码行数:101,


示例7: _isdefault

static bool _isdefault(List qos_list){    int rc = 0;    slurmdb_association_cond_t assoc_cond;    slurmdb_association_rec_t *assoc = NULL;    ListIterator itr;    List ret_list = NULL;    char *name = NULL;    if (!qos_list || !list_count(qos_list))        return rc;    /* this needs to happen before any removing takes place so we       can figure out things correctly */    xassert(g_qos_list);    memset(&assoc_cond, 0, sizeof(slurmdb_association_cond_t));    assoc_cond.without_parent_info = 1;    assoc_cond.def_qos_id_list = list_create(slurm_destroy_char);    itr = list_iterator_create(qos_list);    while ((name = list_next(itr))) {        uint32_t id = str_2_slurmdb_qos(g_qos_list, name);        if (id == NO_VAL)            continue;        list_append(assoc_cond.def_qos_id_list,                    xstrdup_printf("%u", id));    }    list_iterator_destroy(itr);    ret_list = acct_storage_g_get_associations(                   db_conn, my_uid, &assoc_cond);    list_destroy(assoc_cond.def_qos_id_list);    if (!ret_list || !list_count(ret_list))        goto end_it;    fprintf(stderr," Associations listed below have these "            "as their Default QOS./n");    itr = list_iterator_create(ret_list);    while((assoc = list_next(itr))) {        name = slurmdb_qos_str(g_qos_list, assoc->def_qos_id);        if (!assoc->user) {            // see if this isn't a user            fprintf(stderr,                    "  DefQOS = %-10s C = %-10s A = %-20s/n",                    name, assoc->cluster, assoc->acct);        } else if (assoc->partition) {            // see if there is a partition name            fprintf(stderr,                    "  DefQOS = %-10s C = %-10s A = %-20s "                    "U = %-9s P = %s/n",                    name, assoc->cluster, assoc->acct,                    assoc->user, assoc->partition);        } else {            fprintf(stderr,                    "  DefQOS = %-10s C = %-10s A = %-20s "                    "U = %-9s/n",                    name, assoc->cluster, assoc->acct, assoc->user);        }    }    list_iterator_destroy(itr);    rc = 1;end_it:    if (ret_list)        list_destroy(ret_list);    return rc;}
开发者ID:schelcj,项目名称:slurm,代码行数:69,


示例8: as_mysql_modify_clusters

//.........这里部分代码省略.........	if (cluster->dimensions) {		xstrfmtcat(vals, ", dimensions=%u", cluster->dimensions);		clust_reg = true;	}	if (cluster->plugin_id_select) {		xstrfmtcat(vals, ", plugin_id_select=%u",			   cluster->plugin_id_select);		clust_reg = true;	}	if (cluster->flags != NO_VAL) {		xstrfmtcat(vals, ", flags=%u", cluster->flags);		clust_reg = true;	}	if (cluster->classification) {		xstrfmtcat(vals, ", classification=%u",			   cluster->classification);	}	if (!vals) {		xfree(extra);		errno = SLURM_NO_CHANGE_IN_DATA;		error("Nothing to change");		return NULL;	} else if (clust_reg && (set != 3)) {		xfree(vals);		xfree(extra);		errno = EFAULT;		error("Need control host, port and rpc version "		      "to register a cluster");		return NULL;	}	xstrfmtcat(query, "select name, control_port from %s%s;",		   cluster_table, extra);	if (debug_flags & DEBUG_FLAG_DB_ASSOC)		DB_DEBUG(mysql_conn->conn, "query/n%s", query);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		xfree(vals);		error("no result given for %s", extra);		xfree(extra);		return NULL;	}	xfree(extra);	rc = 0;	ret_list = list_create(slurm_destroy_char);	while ((row = mysql_fetch_row(result))) {		object = xstrdup(row[0]);		list_append(ret_list, object);		if (!rc) {			xstrfmtcat(name_char, "name='%s'", object);			rc = 1;		} else  {			xstrfmtcat(name_char, " || name='%s'", object);		}	}	mysql_free_result(result);	if (!list_count(ret_list)) {		errno = SLURM_NO_CHANGE_IN_DATA;		if (debug_flags & DEBUG_FLAG_DB_ASSOC)			DB_DEBUG(mysql_conn->conn,				 "didn't effect anything/n%s", query);		xfree(name_char);		xfree(vals);		xfree(query);		return ret_list;	}	xfree(query);	if (vals) {		send_char = xstrdup_printf("(%s)", name_char);		user_name = uid_to_string((uid_t) uid);		rc = modify_common(mysql_conn, DBD_MODIFY_CLUSTERS, now,				   user_name, cluster_table,				   send_char, vals, NULL);		xfree(user_name);		if (rc == SLURM_ERROR) {			error("Couldn't modify cluster 1");			FREE_NULL_LIST(ret_list);			ret_list = NULL;			goto end_it;		}	}end_it:	xfree(name_char);	xfree(vals);	xfree(send_char);	return ret_list;}
开发者ID:A1ve5,项目名称:slurm,代码行数:101,


示例9: as_mysql_remove_clusters

extern List as_mysql_remove_clusters(mysql_conn_t *mysql_conn, uint32_t uid,				     slurmdb_cluster_cond_t *cluster_cond){	ListIterator itr = NULL;	List ret_list = NULL;	List tmp_list = NULL;	int rc = SLURM_SUCCESS;	char *object = NULL;	char *extra = NULL, *query = NULL, *cluster_name = NULL,		*name_char = NULL, *assoc_char = NULL;	time_t now = time(NULL);	char *user_name = NULL;	slurmdb_wckey_cond_t wckey_cond;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	bool jobs_running = 0;	if (!cluster_cond) {		error("we need something to change");		return NULL;	}	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return NULL;	if (!is_user_min_admin_level(		    mysql_conn, uid, SLURMDB_ADMIN_SUPER_USER)) {		errno = ESLURM_ACCESS_DENIED;		return NULL;	}	/* force to only do non-deleted clusters */	cluster_cond->with_deleted = 0;	_setup_cluster_cond_limits(cluster_cond, &extra);	if (!extra) {		error("Nothing to remove");		return NULL;	}	query = xstrdup_printf("select name from %s%s;", cluster_table, extra);	xfree(extra);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		return NULL;	}	rc = 0;	ret_list = list_create(slurm_destroy_char);	if (!mysql_num_rows(result)) {		mysql_free_result(result);		errno = SLURM_NO_CHANGE_IN_DATA;		if (debug_flags & DEBUG_FLAG_DB_ASSOC)			DB_DEBUG(mysql_conn->conn,				 "didn't effect anything/n%s", query);		xfree(query);		return ret_list;	}	xfree(query);	assoc_char = xstrdup_printf("t2.acct='root'");	user_name = uid_to_string((uid_t) uid);	while ((row = mysql_fetch_row(result))) {		char *object = xstrdup(row[0]);		if (!jobs_running)			list_append(ret_list, object);		xfree(name_char);		xstrfmtcat(name_char, "name='%s'", object);		if (jobs_running)			xfree(object);		/* We should not need to delete any cluster usage just set it		 * to deleted */		xstrfmtcat(query,			   "update /"%s_%s/" set time_end=%ld where time_end=0;"			   "update /"%s_%s/" set mod_time=%ld, deleted=1;"			   "update /"%s_%s/" set mod_time=%ld, deleted=1;"			   "update /"%s_%s/" set mod_time=%ld, deleted=1;",			   object, event_table, now,			   object, cluster_day_table, now,			   object, cluster_hour_table, now,			   object, cluster_month_table, now);		if ((rc = remove_common(mysql_conn, DBD_REMOVE_CLUSTERS, now,					user_name, cluster_table,					name_char, assoc_char, object,					ret_list, &jobs_running))		    != SLURM_SUCCESS)			break;	}	mysql_free_result(result);	xfree(user_name);	xfree(name_char);	xfree(assoc_char);	if (rc != SLURM_SUCCESS) {		FREE_NULL_LIST(ret_list);		return NULL;	}//.........这里部分代码省略.........
开发者ID:A1ve5,项目名称:slurm,代码行数:101,


示例10: as_mysql_fini_ctld

extern int as_mysql_fini_ctld(mysql_conn_t *mysql_conn,			      slurmdb_cluster_rec_t *cluster_rec){	int rc = SLURM_SUCCESS;	time_t now = time(NULL);	char *query = NULL;	bool free_it = false;	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return ESLURM_DB_CONNECTION;	/* Here we need to check make sure we are updating the entry	   correctly just incase the backup has already gained	   control.  If we check the ip and port it is a pretty safe	   bet we have the right ctld.	*/	query = xstrdup_printf(		"update %s set mod_time=%ld, control_host='', "		"control_port=0 where name='%s' && "		"control_host='%s' && control_port=%u;",		cluster_table, now, cluster_rec->name,		cluster_rec->control_host, cluster_rec->control_port);	if (debug_flags & DEBUG_FLAG_DB_EVENT)		DB_DEBUG(mysql_conn->conn, "query/n%s", query);	rc = mysql_db_query(mysql_conn, query);	xfree(query);	if (rc != SLURM_SUCCESS)		return SLURM_ERROR;	if (!last_affected_rows(mysql_conn)	    || (slurmdbd_conf && !slurmdbd_conf->track_ctld))		return rc;	/* If tres is NULL we can get the current number of tres by	   sending NULL for the tres param in the as_mysql_cluster_tres	   function.	*/	if (!cluster_rec->tres_str) {		free_it = true;		as_mysql_cluster_tres(			mysql_conn, cluster_rec->control_host,			&cluster_rec->tres_str, now);	}	/* Since as_mysql_cluster_tres could change the	   last_affected_rows we can't group this with the above	   return.	*/	if (!cluster_rec->tres_str)		return rc;	/* If we affected things we need to now drain the nodes in the	 * cluster.  This is to give better stats on accounting that	 * the ctld was gone so no jobs were able to be scheduled.  We	 * drain the nodes since the rollup functionality understands	 * how to deal with that and running jobs so we don't get bad	 * info.	 */	query = xstrdup_printf(		"insert into /"%s_%s/" (tres, state, time_start, reason) "		"values ('%s', %u, %ld, 'slurmctld disconnect');",		cluster_rec->name, event_table,		cluster_rec->tres_str, NODE_STATE_DOWN, (long)now);	if (free_it)		xfree(cluster_rec->tres_str);	if (debug_flags & DEBUG_FLAG_DB_EVENT)		DB_DEBUG(mysql_conn->conn, "query/n%s", query);	rc = mysql_db_query(mysql_conn, query);	xfree(query);	return rc;}
开发者ID:A1ve5,项目名称:slurm,代码行数:75,


示例11: as_mysql_cluster_tres

extern int as_mysql_cluster_tres(mysql_conn_t *mysql_conn,				 char *cluster_nodes, char **tres_str_in,				 time_t event_time){	char* query;	int rc = SLURM_SUCCESS;	int first = 0;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	xassert(tres_str_in); 	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return ESLURM_DB_CONNECTION;	if (!mysql_conn->cluster_name) {		error("%s:%d no cluster name", THIS_FILE, __LINE__);		return SLURM_ERROR;	}	/* Record the processor count */	query = xstrdup_printf(		"select tres, cluster_nodes from /"%s_%s/" where "		"time_end=0 and node_name='' and state=0 limit 1",		mysql_conn->cluster_name, event_table);	if (!(result = mysql_db_query_ret(mysql_conn, query, 0))) {		xfree(query);		if (mysql_errno(mysql_conn->db_conn) == ER_NO_SUCH_TABLE)			rc = ESLURM_ACCESS_DENIED;		else			rc = SLURM_ERROR;		return rc;	}	xfree(query);	/* we only are checking the first one here */	if (!(row = mysql_fetch_row(result))) {		debug("We don't have an entry for this machine %s "		      "most likely a first time running.",		      mysql_conn->cluster_name);		/* Get all nodes in a down state and jobs pending or running.		 * This is for the first time a cluster registers		 *		 * We will return ACCOUNTING_FIRST_REG so this		 * is taken care of since the message thread		 * may not be up when we run this in the controller or		 * in the slurmdbd.		 */		if (!*tres_str_in) {			rc = 0;			goto end_it;		}		first = 1;		goto add_it;	}	/* If tres is NULL we want to return the tres for this cluster */	if (!*tres_str_in) {		*tres_str_in = xstrdup(row[0]);		goto end_it;	} else if (xstrcmp(*tres_str_in, row[0])) {		debug("%s has changed tres from %s to %s",		      mysql_conn->cluster_name,		      row[0], *tres_str_in);	} else {		if (debug_flags & DEBUG_FLAG_DB_EVENT)			DB_DEBUG(mysql_conn->conn,				 "We have the same tres as before for %s, "				 "no need to update the database.",				 mysql_conn->cluster_name);		if (cluster_nodes) {			if (!row[1][0]) {				debug("Adding cluster nodes '%s' to "				      "last instance of cluster '%s'.",				      cluster_nodes, mysql_conn->cluster_name);				query = xstrdup_printf(					"update /"%s_%s/" set "					"cluster_nodes='%s' "					"where time_end=0 and node_name=''",					mysql_conn->cluster_name,					event_table, cluster_nodes);				(void) mysql_db_query(mysql_conn, query);				xfree(query);				goto update_it;			} else if (!xstrcmp(cluster_nodes, row[1])) {				if (debug_flags & DEBUG_FLAG_DB_EVENT)					DB_DEBUG(mysql_conn->conn,						 "we have the same nodes "						 "in the cluster "						 "as before no need to "						 "update the database.");				goto update_it;			}		}		goto end_it;	}//.........这里部分代码省略.........
开发者ID:A1ve5,项目名称:slurm,代码行数:101,


示例12: as_mysql_node_down

extern int as_mysql_node_down(mysql_conn_t *mysql_conn,			      struct node_record *node_ptr,			      time_t event_time, char *reason,			      uint32_t reason_uid){	int rc = SLURM_SUCCESS;	char *query = NULL;	char *my_reason;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return ESLURM_DB_CONNECTION;	if (!mysql_conn->cluster_name) {		error("%s:%d no cluster name", THIS_FILE, __LINE__);		return SLURM_ERROR;	}	if (!node_ptr) {		error("No node_ptr given!");		return SLURM_ERROR;	}	if (!node_ptr->tres_str) {		error("node ptr has no tres_list!");		return SLURM_ERROR;	}	query = xstrdup_printf("select state, reason from /"%s_%s/" where "			       "time_end=0 and node_name='%s';",			       mysql_conn->cluster_name, event_table,			       node_ptr->name);	/* info("%d(%s:%d) query/n%s", */	/*        mysql_conn->conn, THIS_FILE, __LINE__, query); */	result = mysql_db_query_ret(mysql_conn, query, 0);	xfree(query);	if (!result)		return SLURM_ERROR;	if (reason)		my_reason = slurm_add_slash_to_quotes(reason);	else		my_reason = slurm_add_slash_to_quotes(node_ptr->reason);	row = mysql_fetch_row(result);	if (row && (node_ptr->node_state == slurm_atoul(row[0])) &&	    my_reason && row[1] &&	    !xstrcasecmp(my_reason, row[1])) {		debug("as_mysql_node_down: no change needed %u == %s "		      "and %s == %s",		     node_ptr->node_state, row[0], my_reason, row[1]);		xfree(my_reason);		mysql_free_result(result);		return SLURM_SUCCESS;	}	mysql_free_result(result);	debug2("inserting %s(%s) with tres of '%s'",	       node_ptr->name, mysql_conn->cluster_name, node_ptr->tres_str);	query = xstrdup_printf(		"update /"%s_%s/" set time_end=%ld where "		"time_end=0 and node_name='%s';",		mysql_conn->cluster_name, event_table,		event_time, node_ptr->name);	/* If you are clean-restarting the controller over and over again you	 * could get records that are duplicates in the database.  If	 * this is the case we will zero out the time_end we are	 * just filled in.  This will cause the last time to be erased	 * from the last restart, but if you are restarting things	 * this often the pervious one didn't mean anything anyway.	 * This way we only get one for the last time we let it run.	 */	xstrfmtcat(query,		   "insert into /"%s_%s/" "		   "(node_name, state, tres, time_start, "		   "reason, reason_uid) "		   "values ('%s', %u, '%s', %ld, '%s', %u) "		   "on duplicate key update time_end=0;",		   mysql_conn->cluster_name, event_table,		   node_ptr->name, node_ptr->node_state,		   node_ptr->tres_str, event_time, my_reason, reason_uid);	debug2("%d(%s:%d) query/n%s",	       mysql_conn->conn, THIS_FILE, __LINE__, query);	rc = mysql_db_query(mysql_conn, query);	xfree(query);	xfree(my_reason);	return rc;}
开发者ID:A1ve5,项目名称:slurm,代码行数:91,


示例13: as_mysql_step_complete

//.........这里部分代码省略.........		ave_vsize /= (double)tasks;		ave_rss = (double)jobacct->tot_rss;		ave_rss /= (double)tasks;		ave_pages = (double)jobacct->tot_pages;		ave_pages /= (double)tasks;		ave_cpu = (double)jobacct->tot_cpu;		ave_cpu /= (double)tasks;		ave_disk_read = (double)jobacct->tot_disk_read;		ave_disk_read /= (double)tasks;		ave_disk_write = (double)jobacct->tot_disk_write;		ave_disk_write /= (double)tasks;	}	if (!step_ptr->job_ptr->db_index) {		if (!(step_ptr->job_ptr->db_index =		      _get_db_index(mysql_conn,				    submit_time,				    step_ptr->job_ptr->job_id,				    step_ptr->job_ptr->assoc_id))) {			/* If we get an error with this just fall			 * through to avoid an infinite loop			 */			if (as_mysql_job_start(mysql_conn, step_ptr->job_ptr)			    == SLURM_ERROR) {				error("couldn't add job %u "				      "at step completion",				      step_ptr->job_ptr->job_id);				return SLURM_SUCCESS;			}		}	}	/* The stepid could be -2 so use %d not %u */	query = xstrdup_printf(		"update /"%s_%s/" set time_end=%d, state=%d, "		"kill_requid=%d, exit_code=%d, "		"user_sec=%u, user_usec=%u, "		"sys_sec=%u, sys_usec=%u, "		"max_disk_read=%f, max_disk_read_task=%u, "		"max_disk_read_node=%u, ave_disk_read=%f, "		"max_disk_write=%f, max_disk_write_task=%u, "		"max_disk_write_node=%u, ave_disk_write=%f, "		"max_vsize=%"PRIu64", max_vsize_task=%u, "		"max_vsize_node=%u, ave_vsize=%f, "		"max_rss=%"PRIu64", max_rss_task=%u, "		"max_rss_node=%u, ave_rss=%f, "		"max_pages=%"PRIu64", max_pages_task=%u, "		"max_pages_node=%u, ave_pages=%f, "		"min_cpu=%u, min_cpu_task=%u, "		"min_cpu_node=%u, ave_cpu=%f, "		"act_cpufreq=%u, consumed_energy=%u "		"where job_db_inx=%d and id_step=%d",		mysql_conn->cluster_name, step_table, (int)now,		comp_status,		step_ptr->requid,		exit_code,		/* user seconds */		jobacct->user_cpu_sec,		/* user microseconds */		jobacct->user_cpu_usec,		/* system seconds */		jobacct->sys_cpu_sec,		/* system microsecs */		jobacct->sys_cpu_usec,		/* max disk_read */		jobacct->max_disk_read,
开发者ID:BYUHPC,项目名称:slurm,代码行数:67,


示例14: as_mysql_step_start

//.........这里部分代码省略.........		*/		snprintf(node_list, BUFFER_SIZE, "%s", step_ptr->gres);		nodes = cpus = tasks = 1;	} else {		char *ionodes = NULL, *temp_nodes = NULL;		char temp_bit[BUF_SIZE];		if (step_ptr->step_node_bitmap) {			node_inx = bit_fmt(temp_bit, sizeof(temp_bit),					   step_ptr->step_node_bitmap);		}#ifdef HAVE_BG_L_P		/* Only L and P use this code */		if (step_ptr->job_ptr->details)			tasks = cpus = step_ptr->job_ptr->details->min_cpus;		else			tasks = cpus = step_ptr->job_ptr->cpu_cnt;		select_g_select_jobinfo_get(step_ptr->job_ptr->select_jobinfo,					    SELECT_JOBDATA_NODE_CNT,					    &nodes);		temp_nodes = step_ptr->job_ptr->nodes;#else		if (!step_ptr->step_layout		    || !step_ptr->step_layout->task_cnt) {			tasks = cpus = step_ptr->job_ptr->total_cpus;			nodes = step_ptr->job_ptr->total_nodes;			temp_nodes = step_ptr->job_ptr->nodes;		} else {			cpus = step_ptr->cpu_count;			tasks = step_ptr->step_layout->task_cnt;#ifdef HAVE_BGQ			select_g_select_jobinfo_get(step_ptr->select_jobinfo,						    SELECT_JOBDATA_NODE_CNT,						    &nodes);#else			nodes = step_ptr->step_layout->node_cnt;#endif			task_dist = step_ptr->step_layout->task_dist;			temp_nodes = step_ptr->step_layout->node_list;		}#endif		select_g_select_jobinfo_get(step_ptr->select_jobinfo,					    SELECT_JOBDATA_IONODES,					    &ionodes);		if (ionodes) {			snprintf(node_list, BUFFER_SIZE, "%s[%s]",				 temp_nodes, ionodes);			xfree(ionodes);		} else			snprintf(node_list, BUFFER_SIZE, "%s", temp_nodes);	}	if (!step_ptr->job_ptr->db_index) {		if (!(step_ptr->job_ptr->db_index =		      _get_db_index(mysql_conn,				    submit_time,				    step_ptr->job_ptr->job_id,				    step_ptr->job_ptr->assoc_id))) {			/* If we get an error with this just fall			 * through to avoid an infinite loop			 */			if (as_mysql_job_start(mysql_conn, step_ptr->job_ptr)			    == SLURM_ERROR) {				error("couldn't add job %u at step start",				      step_ptr->job_ptr->job_id);				return SLURM_SUCCESS;			}		}	}	step_name = slurm_add_slash_to_quotes(step_ptr->name);	/* we want to print a -1 for the requid so leave it a	   %d */	/* The stepid could be -2 so use %d not %u */	query = xstrdup_printf(		"insert into /"%s_%s/" (job_db_inx, id_step, time_start, "		"step_name, state, "		"cpus_alloc, nodes_alloc, task_cnt, nodelist, "		"node_inx, task_dist, req_cpufreq) "		"values (%d, %d, %d, '%s', %d, %d, %d, %d, "		"'%s', '%s', %d, %u) "		"on duplicate key update cpus_alloc=%d, nodes_alloc=%d, "		"task_cnt=%d, time_end=0, state=%d, "		"nodelist='%s', node_inx='%s', task_dist=%d, req_cpufreq=%u",		mysql_conn->cluster_name, step_table,		step_ptr->job_ptr->db_index,		step_ptr->step_id,		(int)start_time, step_name,		JOB_RUNNING, cpus, nodes, tasks, node_list, node_inx, task_dist,		step_ptr->cpu_freq, cpus, nodes, tasks, JOB_RUNNING,		node_list, node_inx, task_dist, step_ptr->cpu_freq);	debug3("%d(%s:%d) query/n%s",	       mysql_conn->conn, THIS_FILE, __LINE__, query);	rc = mysql_db_query(mysql_conn, query);	xfree(query);	xfree(step_name);	return rc;}
开发者ID:BYUHPC,项目名称:slurm,代码行数:101,


示例15: print_fields

//.........这里部分代码省略.........			field->print_routine(field,					     tmp_char,					     (curr_inx == field_count));			break;		case PRINT_JOBID:			if (type == JOBSTEP)				job = step->job_ptr;			if (job) {				if (job->array_task_str) {					_xlate_task_str(job);					snprintf(id, FORMAT_STRING_SIZE,						 "%u_[%s]",						 job->array_job_id,						 job->array_task_str);				} else if (job->array_task_id != NO_VAL)					snprintf(id, FORMAT_STRING_SIZE,						 "%u_%u",						 job->array_job_id,						 job->array_task_id);				else					snprintf(id, FORMAT_STRING_SIZE,						 "%u",						 job->jobid);			}			switch (type) {			case JOB:				tmp_char = xstrdup(id);				break;			case JOBSTEP:				if (step->stepid == SLURM_BATCH_SCRIPT) {					tmp_char = xstrdup_printf(						"%s.batch", id);				} else if (step->stepid == SLURM_EXTERN_CONT) {					tmp_char = xstrdup_printf(						"%s.extern", id);				} else {					tmp_char = xstrdup_printf(						"%s.%u",						id, step->stepid);				}				break;			case JOBCOMP:				tmp_char = xstrdup_printf("%u",							  job_comp->jobid);				break;			default:				break;			}			field->print_routine(field,					     tmp_char,					     (curr_inx == field_count));			xfree(tmp_char);			break;		case PRINT_JOBIDRAW:			switch (type) {			case JOB:				tmp_char = xstrdup_printf("%u", job->jobid);				break;			case JOBSTEP:				if (step->stepid == SLURM_BATCH_SCRIPT) {					tmp_char = xstrdup_printf(						"%u.batch",						step->job_ptr->jobid);
开发者ID:RSE-Cambridge,项目名称:slurm,代码行数:67,


示例16: as_mysql_get_clusters

extern List as_mysql_get_clusters(mysql_conn_t *mysql_conn, uid_t uid,				  slurmdb_cluster_cond_t *cluster_cond){	char *query = NULL;	char *extra = NULL;	char *tmp = NULL;	List cluster_list = NULL;	ListIterator itr = NULL;	int i=0;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	slurmdb_assoc_cond_t assoc_cond;	ListIterator assoc_itr = NULL;	slurmdb_cluster_rec_t *cluster = NULL;	slurmdb_assoc_rec_t *assoc = NULL;	List assoc_list = NULL;	/* if this changes you will need to edit the corresponding enum */	char *cluster_req_inx[] = {		"name",		"classification",		"control_host",		"control_port",		"rpc_version",		"dimensions",		"flags",		"plugin_id_select"	};	enum {		CLUSTER_REQ_NAME,		CLUSTER_REQ_CLASS,		CLUSTER_REQ_CH,		CLUSTER_REQ_CP,		CLUSTER_REQ_VERSION,		CLUSTER_REQ_DIMS,		CLUSTER_REQ_FLAGS,		CLUSTER_REQ_PI_SELECT,		CLUSTER_REQ_COUNT	};	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return NULL;	if (!cluster_cond) {		xstrcat(extra, " where deleted=0");		goto empty;	}	_setup_cluster_cond_limits(cluster_cond, &extra);empty:	xfree(tmp);	i=0;	xstrfmtcat(tmp, "%s", cluster_req_inx[i]);	for(i=1; i<CLUSTER_REQ_COUNT; i++) {		xstrfmtcat(tmp, ", %s", cluster_req_inx[i]);	}	query = xstrdup_printf("select %s from %s%s",			       tmp, cluster_table, extra);	xfree(tmp);	xfree(extra);	if (debug_flags & DEBUG_FLAG_DB_ASSOC)		DB_DEBUG(mysql_conn->conn, "query/n%s", query);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		return NULL;	}	xfree(query);	cluster_list = list_create(slurmdb_destroy_cluster_rec);	memset(&assoc_cond, 0, sizeof(slurmdb_assoc_cond_t));	if (cluster_cond) {		/* I don't think we want the with_usage flag here.		 * We do need the with_deleted though. */		//assoc_cond.with_usage = cluster_cond->with_usage;		assoc_cond.with_deleted = cluster_cond->with_deleted;	}	assoc_cond.cluster_list = list_create(NULL);	while ((row = mysql_fetch_row(result))) {		MYSQL_RES *result2 = NULL;		MYSQL_ROW row2;		cluster = xmalloc(sizeof(slurmdb_cluster_rec_t));		list_append(cluster_list, cluster);		cluster->name = xstrdup(row[CLUSTER_REQ_NAME]);		list_append(assoc_cond.cluster_list, cluster->name);		cluster->classification = slurm_atoul(row[CLUSTER_REQ_CLASS]);		cluster->control_host = xstrdup(row[CLUSTER_REQ_CH]);		cluster->control_port = slurm_atoul(row[CLUSTER_REQ_CP]);		cluster->rpc_version = slurm_atoul(row[CLUSTER_REQ_VERSION]);//.........这里部分代码省略.........
开发者ID:A1ve5,项目名称:slurm,代码行数:101,


示例17: xmalloc

extern bg_record_t *create_small_record(bg_record_t *bg_record,					bitstr_t *ionodes, int size){	bg_record_t *found_record = NULL;	ba_mp_t *new_ba_mp = NULL;	ba_mp_t *ba_mp = NULL;	found_record = (bg_record_t*) xmalloc(sizeof(bg_record_t));	found_record->magic = BLOCK_MAGIC;	/* This will be a list containing jobs running on this	   block */	if (bg_conf->sub_blocks)		found_record->job_list = list_create(NULL);	found_record->job_running = NO_JOB_RUNNING;#ifdef HAVE_BGL	found_record->node_use = SELECT_COPROCESSOR_MODE;	found_record->blrtsimage = xstrdup(bg_record->blrtsimage);#endif#ifdef HAVE_BG_L_P	found_record->linuximage = xstrdup(bg_record->linuximage);	found_record->ramdiskimage = xstrdup(bg_record->ramdiskimage);#endif	found_record->mloaderimage = xstrdup(bg_record->mloaderimage);	if (bg_record->conn_type[0] >= SELECT_SMALL)		found_record->conn_type[0] = bg_record->conn_type[0];	else		found_record->conn_type[0] = SELECT_SMALL;	xassert(bg_conf->cpu_ratio);	found_record->cpu_cnt = bg_conf->cpu_ratio * size;	found_record->cnode_cnt = size;	found_record->ionode_bitmap = bit_copy(ionodes);	ba_set_ionode_str(found_record);	found_record->ba_mp_list = list_create(destroy_ba_mp);	slurm_mutex_lock(&ba_system_mutex);	if (bg_record->ba_mp_list)		ba_mp = list_peek(bg_record->ba_mp_list);	if (!ba_mp) {		if (bg_record->mp_str) {			int j = 0, dim;			char *nodes = bg_record->mp_str;			uint16_t coords[SYSTEM_DIMENSIONS];			while (nodes[j] != '/0') {				if ((nodes[j] >= '0' && nodes[j] <= '9')				    || (nodes[j] >= 'A' && nodes[j] <= 'Z')) {					break;				}				j++;			}			if (nodes[j] && ((strlen(nodes)					  - (j + SYSTEM_DIMENSIONS)) >= 0)) {				for (dim = 0; dim < SYSTEM_DIMENSIONS;				     dim++, j++)					coords[dim] = select_char2coord(						nodes[j]);				ba_mp = coord2ba_mp(coords);			}			error("you gave me a list with no ba_mps using %s",			      ba_mp->coord_str);		} else {			ba_mp = coord2ba_mp(found_record->start);			error("you gave me a record with no ba_mps "			      "and no nodes either using %s",			      ba_mp->coord_str);		}	}	xassert(ba_mp);	new_ba_mp = ba_copy_mp(ba_mp);	slurm_mutex_unlock(&ba_system_mutex);	/* We need to have this node wrapped in Q to handle	   wires correctly when creating around the midplane.	*/	ba_setup_mp(new_ba_mp, false, true);	new_ba_mp->used = BA_MP_USED_TRUE;	/* Create these now so we can deal with error cnodes if/when	   they happen.  Since this is the easiest place to figure it	   out for blocks that don't use the entire block */	if ((new_ba_mp->cnode_bitmap =	     ba_create_ba_mp_cnode_bitmap(found_record))) {		new_ba_mp->cnode_err_bitmap = bit_alloc(bg_conf->mp_cnode_cnt);		new_ba_mp->cnode_usable_bitmap =			bit_copy(new_ba_mp->cnode_bitmap);	}	list_append(found_record->ba_mp_list, new_ba_mp);	found_record->mp_count = 1;	found_record->mp_str = xstrdup_printf(		"%s%s",		bg_conf->slurm_node_prefix, new_ba_mp->coord_str);//.........这里部分代码省略.........
开发者ID:Cray,项目名称:slurm,代码行数:101,


示例18: as_mysql_get_cluster_events

//.........这里部分代码省略.........			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (event_cond->state_list	    && list_count(event_cond->state_list)) {		set = 0;		if (extra)			xstrcat(extra, " && (");		else			xstrcat(extra, " where (");		itr = list_iterator_create(event_cond->state_list);		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "state='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (event_cond->cluster_list && list_count(event_cond->cluster_list))		use_cluster_list = event_cond->cluster_list;empty:	xfree(tmp);	xstrfmtcat(tmp, "%s", event_req_inx[0]);	for(i=1; i<EVENT_REQ_COUNT; i++) {		xstrfmtcat(tmp, ", %s", event_req_inx[i]);	}	if (use_cluster_list == as_mysql_cluster_list)		slurm_mutex_lock(&as_mysql_cluster_list_lock);	ret_list = list_create(slurmdb_destroy_event_rec);	itr = list_iterator_create(use_cluster_list);	while ((object = list_next(itr))) {		query = xstrdup_printf("select %s from /"%s_%s/"",				       tmp, object, event_table);		if (extra)			xstrfmtcat(query, " %s", extra);		if (debug_flags & DEBUG_FLAG_DB_ASSOC)			DB_DEBUG(mysql_conn->conn, "query/n%s", query);		if (!(result = mysql_db_query_ret(			      mysql_conn, query, 0))) {			xfree(query);			if (mysql_errno(mysql_conn->db_conn)			    != ER_NO_SUCH_TABLE) {				FREE_NULL_LIST(ret_list);				ret_list = NULL;			}			break;		}		xfree(query);		while ((row = mysql_fetch_row(result))) {			slurmdb_event_rec_t *event =				xmalloc(sizeof(slurmdb_event_rec_t));			list_append(ret_list, event);			event->cluster = xstrdup(object);			if (row[EVENT_REQ_NODE] && row[EVENT_REQ_NODE][0]) {				event->node_name = xstrdup(row[EVENT_REQ_NODE]);				event->event_type = SLURMDB_EVENT_NODE;			} else				event->event_type = SLURMDB_EVENT_CLUSTER;			event->state = slurm_atoul(row[EVENT_REQ_STATE]);			event->period_start = slurm_atoul(row[EVENT_REQ_START]);			event->period_end = slurm_atoul(row[EVENT_REQ_END]);			if (row[EVENT_REQ_REASON] && row[EVENT_REQ_REASON][0])				event->reason = xstrdup(row[EVENT_REQ_REASON]);			event->reason_uid =				slurm_atoul(row[EVENT_REQ_REASON_UID]);			if (row[EVENT_REQ_CNODES] && row[EVENT_REQ_CNODES][0])				event->cluster_nodes =					xstrdup(row[EVENT_REQ_CNODES]);			if (row[EVENT_REQ_TRES] && row[EVENT_REQ_TRES][0])				event->tres_str = xstrdup(row[EVENT_REQ_TRES]);		}		mysql_free_result(result);	}	list_iterator_destroy(itr);	xfree(tmp);	xfree(extra);	if (use_cluster_list == as_mysql_cluster_list)		slurm_mutex_unlock(&as_mysql_cluster_list_lock);	return ret_list;}
开发者ID:A1ve5,项目名称:slurm,代码行数:101,


示例19: mysql_jobcomp_process_get_jobs

extern List mysql_jobcomp_process_get_jobs(slurmdb_job_cond_t *job_cond){	char *query = NULL;	char *extra = NULL;	char *tmp = NULL;	char *selected_part = NULL;	slurmdb_selected_step_t *selected_step = NULL;	ListIterator itr = NULL;	int set = 0;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	int i;	int lc = 0;	jobcomp_job_rec_t *job = NULL;	char time_str[32];	time_t temp_time;	List job_list = list_create(jobcomp_destroy_job);	if (job_cond->step_list && list_count(job_cond->step_list)) {		set = 0;		xstrcat(extra, " where (");		itr = list_iterator_create(job_cond->step_list);		while((selected_step = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			tmp = xstrdup_printf("jobid=%d",					      selected_step->jobid);			xstrcat(extra, tmp);			set = 1;			xfree(tmp);		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (job_cond->partition_list && list_count(job_cond->partition_list)) {		set = 0;		if (extra)			xstrcat(extra, " && (");		else			xstrcat(extra, " where (");		itr = list_iterator_create(job_cond->partition_list);		while((selected_part = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			tmp = xstrdup_printf("`partition`='%s'",					      selected_part);			xstrcat(extra, tmp);			set = 1;			xfree(tmp);		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	i = 0;	while(jobcomp_table_fields[i].name) {		if (i)			xstrcat(tmp, ", ");		xstrcat(tmp, jobcomp_table_fields[i].name);		i++;	}	query = xstrdup_printf("select %s from %s", tmp, jobcomp_table);	xfree(tmp);	if (extra) {		xstrcat(query, extra);		xfree(extra);	}	//info("query = %s", query);	if (!(result =	     mysql_db_query_ret(jobcomp_mysql_conn, query, 0))) {		xfree(query);		list_destroy(job_list);		return NULL;	}	xfree(query);	while((row = mysql_fetch_row(result))) {		lc++;		job = xmalloc(sizeof(jobcomp_job_rec_t));		if (row[JOBCOMP_REQ_JOBID])			job->jobid = slurm_atoul(row[JOBCOMP_REQ_JOBID]);		job->partition = xstrdup(row[JOBCOMP_REQ_PARTITION]);		temp_time = atoi(row[JOBCOMP_REQ_STARTTIME]);		slurm_make_time_str(&temp_time,				    time_str,				    sizeof(time_str));		job->start_time = xstrdup(time_str);		temp_time = atoi(row[JOBCOMP_REQ_ENDTIME]);		slurm_make_time_str(&temp_time,				    time_str,				    sizeof(time_str));//.........这里部分代码省略.........
开发者ID:bingzhang,项目名称:slurm,代码行数:101,


示例20: _get_cluster_usage

static int _get_cluster_usage(mysql_conn_t *mysql_conn, uid_t uid,			      slurmdb_cluster_rec_t *cluster_rec,			      slurmdbd_msg_type_t type,			      time_t start, time_t end){	int rc = SLURM_SUCCESS;	int i=0;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	char *tmp = NULL;	char *my_usage_table = cluster_day_table;	char *query = NULL;	char *cluster_req_inx[] = {		"alloc_cpu_secs",		"down_cpu_secs",		"pdown_cpu_secs",		"idle_cpu_secs",		"resv_cpu_secs",		"over_cpu_secs",		"cpu_count",		"time_start",		"consumed_energy"	};	enum {		CLUSTER_ACPU,		CLUSTER_DCPU,		CLUSTER_PDCPU,		CLUSTER_ICPU,		CLUSTER_RCPU,		CLUSTER_OCPU,		CLUSTER_CPU_COUNT,		CLUSTER_START,		CLUSTER_ENERGY,		CLUSTER_COUNT	};	if (!cluster_rec->name || !cluster_rec->name[0]) {		error("We need a cluster name to set data for");		return SLURM_ERROR;	}	if (set_usage_information(&my_usage_table, type, &start, &end)	    != SLURM_SUCCESS) {		return SLURM_ERROR;	}	xfree(tmp);	i=0;	xstrfmtcat(tmp, "%s", cluster_req_inx[i]);	for(i=1; i<CLUSTER_COUNT; i++) {		xstrfmtcat(tmp, ", %s", cluster_req_inx[i]);	}	query = xstrdup_printf(		"select %s from /"%s_%s/" where (time_start < %ld "		"&& time_start >= %ld)",		tmp, cluster_rec->name, my_usage_table, end, start);	xfree(tmp);	debug4("%d(%s:%d) query/n%s",	       mysql_conn->conn, THIS_FILE, __LINE__, query);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		return SLURM_ERROR;	}	xfree(query);	if (!cluster_rec->accounting_list)		cluster_rec->accounting_list =			list_create(slurmdb_destroy_cluster_accounting_rec);	while ((row = mysql_fetch_row(result))) {		slurmdb_cluster_accounting_rec_t *accounting_rec =			xmalloc(sizeof(slurmdb_cluster_accounting_rec_t));		accounting_rec->alloc_secs = slurm_atoull(row[CLUSTER_ACPU]);		accounting_rec->down_secs = slurm_atoull(row[CLUSTER_DCPU]);		accounting_rec->pdown_secs = slurm_atoull(row[CLUSTER_PDCPU]);		accounting_rec->idle_secs = slurm_atoull(row[CLUSTER_ICPU]);		accounting_rec->over_secs = slurm_atoull(row[CLUSTER_OCPU]);		accounting_rec->resv_secs = slurm_atoull(row[CLUSTER_RCPU]);		accounting_rec->cpu_count = slurm_atoul(row[CLUSTER_CPU_COUNT]);		accounting_rec->period_start = slurm_atoul(row[CLUSTER_START]);		accounting_rec->consumed_energy = slurm_atoull(row[CLUSTER_ENERGY]);		list_append(cluster_rec->accounting_list, accounting_rec);	}	mysql_free_result(result);	return rc;}
开发者ID:BYUHPC,项目名称:slurm,代码行数:91,


示例21: _make_sure_users_have_default

/* This needs to happen to make since 2.1 code doesn't have enough * smarts to figure out it isn't adding a default wckey if just * adding a new wckey for a user that has never been on the cluster before. */static int _make_sure_users_have_default(    mysql_conn_t *mysql_conn, List user_list){    char *query = NULL, *cluster = NULL, *user = NULL;    ListIterator itr = NULL, clus_itr = NULL;    int rc = SLURM_SUCCESS;    if (!user_list)        return SLURM_SUCCESS;    slurm_mutex_lock(&as_mysql_cluster_list_lock);    clus_itr = list_iterator_create(as_mysql_cluster_list);    itr = list_iterator_create(user_list);    while ((user = list_next(itr))) {        while ((cluster = list_next(clus_itr))) {            MYSQL_RES *result = NULL;            MYSQL_ROW row;            char *wckey = NULL;            /* only look at non * and non deleted ones */            query = xstrdup_printf(                        "select distinct is_def, wckey_name from "                        "/"%s_%s/" where user='%s' and wckey_name "                        "not like '*%%' and deleted=0 FOR UPDATE;",                        cluster, wckey_table, user);            debug4("%d(%s:%d) query/n%s",                   mysql_conn->conn, THIS_FILE, __LINE__, query);            if (!(result = mysql_db_query_ret(                               mysql_conn, query, 0))) {                xfree(query);                error("couldn't query the database");                rc = SLURM_ERROR;                break;            }            xfree(query);            /* Check to see if the user is even added to               the cluster.            */            if (!mysql_num_rows(result)) {                mysql_free_result(result);                continue;            }            while ((row = mysql_fetch_row(result))) {                if (row[0][0] == '1')                    break;                if (!wckey)                    wckey = xstrdup(row[1]);            }            mysql_free_result(result);            /* we found one so just continue */            if (row || !wckey) {                xfree(wckey);                continue;            }            query = xstrdup_printf(                        "update /"%s_%s/" set is_def=1 where "                        "user='%s' and wckey_name='%s';",                        cluster, wckey_table, user, wckey);            xfree(wckey);            if (debug_flags & DEBUG_FLAG_DB_WCKEY)                DB_DEBUG(mysql_conn->conn, "query/n%s", query);            rc = mysql_db_query(mysql_conn, query);            xfree(query);            if (rc != SLURM_SUCCESS) {                error("problem with update query");                rc = SLURM_ERROR;                break;            }        }        if (!rc != SLURM_SUCCESS)            break;        list_iterator_reset(clus_itr);    }    list_iterator_destroy(itr);    list_iterator_destroy(clus_itr);    slurm_mutex_unlock(&as_mysql_cluster_list_lock);    return rc;}
开发者ID:sblanton,项目名称:slurm,代码行数:85,


示例22: get_usage_for_list

//.........这里部分代码省略.........		itr = list_iterator_create(object_list);		while ((wckey = list_next(itr))) {			if (id_str)				xstrfmtcat(id_str, " || id_wckey=%d",					   wckey->id);			else				xstrfmtcat(id_str, "id_wckey=%d", wckey->id);		}		list_iterator_destroy(itr);		my_usage_table = wckey_day_table;		break;	}	default:		error("Unknown usage type %d", type);		return SLURM_ERROR;		break;	}	if (set_usage_information(&my_usage_table, type, &start, &end)	    != SLURM_SUCCESS) {		xfree(id_str);		return SLURM_ERROR;	}	xfree(tmp);	i=0;	xstrfmtcat(tmp, "%s", usage_req_inx[i]);	for(i=1; i<USAGE_COUNT; i++) {		xstrfmtcat(tmp, ", %s", usage_req_inx[i]);	}	switch (type) {	case DBD_GET_ASSOC_USAGE:		query = xstrdup_printf(			"select %s from /"%s_%s/" as t1, "			"/"%s_%s/" as t2, /"%s_%s/" as t3 "			"where (t1.time_start < %ld && t1.time_start >= %ld) "			"&& t1.id_assoc=t2.id_assoc && (%s) && "			"t2.lft between t3.lft and t3.rgt "			"order by t3.id_assoc, time_start;",			tmp, cluster_name, my_usage_table,			cluster_name, assoc_table, cluster_name, assoc_table,			end, start, id_str);		break;	case DBD_GET_WCKEY_USAGE:		query = xstrdup_printf(			"select %s from /"%s_%s/" "			"where (time_start < %ld && time_start >= %ld) "			"&& (%s) order by id_wckey, time_start;",			tmp, cluster_name, my_usage_table, end, start, id_str);		break;	default:		error("Unknown usage type %d", type);		xfree(id_str);		xfree(tmp);		return SLURM_ERROR;		break;	}	xfree(id_str);	xfree(tmp);	debug4("%d(%s:%d) query/n%s",	       mysql_conn->conn, THIS_FILE, __LINE__, query);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);
开发者ID:BYUHPC,项目名称:slurm,代码行数:67,


示例23: _cluster_modify_wckeys

static int _cluster_modify_wckeys(mysql_conn_t *mysql_conn,                                  slurmdb_wckey_rec_t *wckey,                                  char *cluster_name, char *extra,                                  char *vals, char *user_name,                                  List ret_list){    int rc = SLURM_SUCCESS;    MYSQL_RES *result = NULL;    MYSQL_ROW row;    char *wckey_char = NULL;    time_t now = time(NULL);    char *query = NULL;    query = xstrdup_printf("select t1.id_wckey, t1.wckey_name, t1.user "                           "from /"%s_%s/" as t1%s;",                           cluster_name, wckey_table, extra);    if (!(result = mysql_db_query_ret(mysql_conn, query, 0))) {        xfree(query);        return SLURM_ERROR;    }    /* This key doesn't exist on this cluster, that is ok. */    if (!mysql_num_rows(result))        return SLURM_SUCCESS;    while ((row = mysql_fetch_row(result))) {        slurmdb_wckey_rec_t *wckey_rec = NULL;        char *object = xstrdup_printf(                           "C = %-10s W = %-20s U = %-9s",                           cluster_name, row[1], row[2]);        list_append(ret_list, object);        if (!wckey_char)            xstrfmtcat(wckey_char, "id_wckey='%s'", row[0]);        else            xstrfmtcat(wckey_char, " || id_wckey='%s'", row[0]);        wckey_rec = xmalloc(sizeof(slurmdb_wckey_rec_t));        /* we only need id and cluster when removing           no real need to init */        wckey_rec->id = slurm_atoul(row[0]);        wckey_rec->cluster = xstrdup(cluster_name);        wckey_rec->is_def = wckey->is_def;        if (addto_update_list(mysql_conn->update_list,                              SLURMDB_MODIFY_WCKEY, wckey_rec)                != SLURM_SUCCESS)            slurmdb_destroy_wckey_rec(wckey_rec);        if (wckey->is_def == 1) {            /* Use fresh one here so we don't have to               worry about dealing with bad values.            */            slurmdb_wckey_rec_t tmp_wckey;            slurmdb_init_wckey_rec(&tmp_wckey, 0);            tmp_wckey.is_def = 1;            tmp_wckey.cluster = cluster_name;            tmp_wckey.name = row[1];            tmp_wckey.user = row[2];            if ((rc = _reset_default_wckey(mysql_conn, &tmp_wckey))                    != SLURM_SUCCESS)                break;        }    }    mysql_free_result(result);    if (!list_count(ret_list)) {        errno = SLURM_NO_CHANGE_IN_DATA;        if (debug_flags & DEBUG_FLAG_DB_WCKEY)            DB_DEBUG(mysql_conn->conn,                     "didn't effect anything/n%s", query);        xfree(query);        xfree(wckey_char);        return SLURM_SUCCESS;    }    xfree(query);    rc = modify_common(mysql_conn, DBD_MODIFY_WCKEYS, now,                       user_name, wckey_table, wckey_char,                       vals, cluster_name);    xfree(wckey_char);    return rc;}
开发者ID:sblanton,项目名称:slurm,代码行数:82,


示例24: memset

static void *_cluster_rollup_usage(void *arg){	local_rollup_t *local_rollup = (local_rollup_t *)arg;	int rc = SLURM_SUCCESS;	char timer_str[128];	mysql_conn_t mysql_conn;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	char *query = NULL;	struct tm start_tm;	struct tm end_tm;	time_t my_time = local_rollup->sent_end;	time_t last_hour = local_rollup->sent_start;	time_t last_day = local_rollup->sent_start;	time_t last_month = local_rollup->sent_start;	time_t hour_start;	time_t hour_end;	time_t day_start;	time_t day_end;	time_t month_start;	time_t month_end;	DEF_TIMERS;	char *update_req_inx[] = {		"hourly_rollup",		"daily_rollup",		"monthly_rollup"	};	enum {		UPDATE_HOUR,		UPDATE_DAY,		UPDATE_MONTH,		UPDATE_COUNT	};	memset(&mysql_conn, 0, sizeof(mysql_conn_t));	mysql_conn.rollback = 1;	mysql_conn.conn = local_rollup->mysql_conn->conn;	slurm_mutex_init(&mysql_conn.lock);	/* Each thread needs it's own connection we can't use the one	 * sent from the parent thread. */	rc = check_connection(&mysql_conn);	if (rc != SLURM_SUCCESS)		goto end_it;	if (!local_rollup->sent_start) {		char *tmp = NULL;		int i=0;		xstrfmtcat(tmp, "%s", update_req_inx[i]);		for(i=1; i<UPDATE_COUNT; i++) {			xstrfmtcat(tmp, ", %s", update_req_inx[i]);		}		query = xstrdup_printf("select %s from /"%s_%s/"",				       tmp, local_rollup->cluster_name,				       last_ran_table);		xfree(tmp);		debug4("%d(%s:%d) query/n%s", mysql_conn.conn,		       THIS_FILE, __LINE__, query);		if (!(result = mysql_db_query_ret(&mysql_conn, query, 0))) {			xfree(query);			rc = SLURM_ERROR;			goto end_it;		}		xfree(query);		row = mysql_fetch_row(result);		if (row) {			last_hour = slurm_atoul(row[UPDATE_HOUR]);			last_day = slurm_atoul(row[UPDATE_DAY]);			last_month = slurm_atoul(row[UPDATE_MONTH]);			mysql_free_result(result);		} else {			time_t now = time(NULL);			time_t lowest = now;			mysql_free_result(result);			query = xstrdup_printf(				"select time_start from /"%s_%s/" "				"where node_name='' order by "				"time_start asc limit 1;",				local_rollup->cluster_name, event_table);			debug3("%d(%s:%d) query/n%s", mysql_conn.conn,			       THIS_FILE, __LINE__, query);			if (!(result = mysql_db_query_ret(				      &mysql_conn, query, 0))) {				xfree(query);				rc = SLURM_ERROR;				goto end_it;			}			xfree(query);			if ((row = mysql_fetch_row(result))) {				time_t check = slurm_atoul(row[0]);				if (check < lowest)					lowest = check;//.........这里部分代码省略.........
开发者ID:BYUHPC,项目名称:slurm,代码行数:101,


示例25: as_mysql_modify_qos

extern List as_mysql_modify_qos(mysql_conn_t *mysql_conn, uint32_t uid,				slurmdb_qos_cond_t *qos_cond,				slurmdb_qos_rec_t *qos){	ListIterator itr = NULL;	List ret_list = NULL;	int rc = SLURM_SUCCESS;	char *object = NULL;	char *vals = NULL, *extra = NULL, *query = NULL, *name_char = NULL;	time_t now = time(NULL);	char *user_name = NULL;	int set = 0;	MYSQL_RES *result = NULL;	MYSQL_ROW row;	char *tmp_char1=NULL, *tmp_char2=NULL;	bitstr_t *preempt_bitstr = NULL;	char *added_preempt = NULL;	if (!qos_cond || !qos) {		error("we need something to change");		return NULL;	}	if (check_connection(mysql_conn) != SLURM_SUCCESS)		return NULL;	xstrcat(extra, "where deleted=0");	if (qos_cond->description_list	    && list_count(qos_cond->description_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->description_list);		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "description='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (qos_cond->id_list	    && list_count(qos_cond->id_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->id_list);		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "id='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (qos_cond->name_list	    && list_count(qos_cond->name_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->name_list);		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "name='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	_setup_qos_limits(qos, &tmp_char1, &tmp_char2,			  &vals, &added_preempt, 0);	if (added_preempt) {		preempt_bitstr = bit_alloc(g_qos_count);		bit_unfmt(preempt_bitstr, added_preempt+1);		xfree(added_preempt);	}	xfree(tmp_char1);	xfree(tmp_char2);	if (!extra || !vals) {		errno = SLURM_NO_CHANGE_IN_DATA;		FREE_NULL_BITMAP(preempt_bitstr);		error("Nothing to change");		return NULL;	}	query = xstrdup_printf("select name, preempt, id from %s %s;",			       qos_table, extra);	xfree(extra);	if (!(result = mysql_db_query_ret(mysql_conn, query, 0))) {		xfree(query);		FREE_NULL_BITMAP(preempt_bitstr);		return NULL;	}	rc = 0;	ret_list = list_create(slurm_destroy_char);//.........这里部分代码省略.........
开发者ID:VURM,项目名称:slurm,代码行数:101,


示例26: as_mysql_get_usage

//.........这里部分代码省略.........			if (username && !strcmp(slurmdb_assoc->user, user.name))				goto is_user;			if (type != DBD_GET_ASSOC_USAGE)				goto bad_user;			if (!slurmdb_assoc->acct) {				debug("No account name given "				      "in association.");				goto bad_user;			}			if (!is_user_any_coord(mysql_conn, &user)) {				debug4("This user is not a coordinator.");				goto bad_user;			}			/* Existance of user.coord_accts is checked in			   is_user_any_coord.			*/			itr = list_iterator_create(user.coord_accts);			while ((coord = list_next(itr)))				if (!strcasecmp(coord->name,						slurmdb_assoc->acct))					break;			list_iterator_destroy(itr);			if (coord)				goto is_user;		bad_user:			errno = ESLURM_ACCESS_DENIED;			return SLURM_ERROR;		}	}is_user:	if (set_usage_information(&my_usage_table, type, &start, &end)	    != SLURM_SUCCESS) {		return SLURM_ERROR;	}	xfree(tmp);	i=0;	xstrfmtcat(tmp, "%s", usage_req_inx[i]);	for(i=1; i<USAGE_COUNT; i++) {		xstrfmtcat(tmp, ", %s", usage_req_inx[i]);	}	switch (type) {	case DBD_GET_ASSOC_USAGE:		query = xstrdup_printf(			"select %s from /"%s_%s/" as t1, "			"/"%s_%s/" as t2, /"%s_%s/" as t3 "			"where (t1.time_start < %ld && t1.time_start >= %ld) "			"&& t1.id_assoc=t2.id_assoc && t3.id_assoc=%d && "			"t2.lft between t3.lft and t3.rgt "			"order by t3.id_assoc, time_start;",			tmp, cluster_name, my_usage_table,			cluster_name, cluster_name, assoc_table, assoc_table,			end, start, id);		break;	case DBD_GET_WCKEY_USAGE:		query = xstrdup_printf(			"select %s from /"%s_%s/" "			"where (time_start < %ld && time_start >= %ld) "			"&& id_wckey=%d order by id_wckey, time_start;",			tmp, cluster_name, my_usage_table, end, start, id);		break;	default:		error("Unknown usage type %d", type);		return SLURM_ERROR;		break;	}	xfree(tmp);	debug4("%d(%s:%d) query/n%s",	       mysql_conn->conn, THIS_FILE, __LINE__, query);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		return SLURM_ERROR;	}	xfree(query);	if (!(*my_list))		(*my_list) = list_create(slurmdb_destroy_accounting_rec);	while ((row = mysql_fetch_row(result))) {		slurmdb_accounting_rec_t *accounting_rec =			xmalloc(sizeof(slurmdb_accounting_rec_t));		accounting_rec->id = slurm_atoul(row[USAGE_ID]);		accounting_rec->period_start = slurm_atoul(row[USAGE_START]);		accounting_rec->alloc_secs = slurm_atoull(row[USAGE_ACPU]);		accounting_rec->consumed_energy = slurm_atoull(row[USAGE_ENERGY]);		list_append((*my_list), accounting_rec);	}	mysql_free_result(result);	return rc;}
开发者ID:BYUHPC,项目名称:slurm,代码行数:101,


示例27: as_mysql_get_qos

//.........这里部分代码省略.........		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "id='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}	if (qos_cond->name_list	    && list_count(qos_cond->name_list)) {		set = 0;		xstrcat(extra, " && (");		itr = list_iterator_create(qos_cond->name_list);		while ((object = list_next(itr))) {			if (set)				xstrcat(extra, " || ");			xstrfmtcat(extra, "name='%s'", object);			set = 1;		}		list_iterator_destroy(itr);		xstrcat(extra, ")");	}empty:	xfree(tmp);	xstrfmtcat(tmp, "%s", qos_req_inx[i]);	for(i=1; i<QOS_REQ_COUNT; i++) {		xstrfmtcat(tmp, ", %s", qos_req_inx[i]);	}	query = xstrdup_printf("select %s from %s %s", tmp, qos_table, extra);	xfree(tmp);	xfree(extra);	debug3("%d(%s:%d) query/n%s",	       mysql_conn->conn, THIS_FILE, __LINE__, query);	if (!(result = mysql_db_query_ret(		      mysql_conn, query, 0))) {		xfree(query);		return NULL;	}	xfree(query);	qos_list = list_create(slurmdb_destroy_qos_rec);	while ((row = mysql_fetch_row(result))) {		slurmdb_qos_rec_t *qos = xmalloc(sizeof(slurmdb_qos_rec_t));		list_append(qos_list, qos);		if (row[QOS_REQ_DESC] && row[QOS_REQ_DESC][0])			qos->description = xstrdup(row[QOS_REQ_DESC]);		qos->id = slurm_atoul(row[QOS_REQ_ID]);		qos->flags = slurm_atoul(row[QOS_REQ_FLAGS]);		if (row[QOS_REQ_NAME] && row[QOS_REQ_NAME][0])			qos->name = xstrdup(row[QOS_REQ_NAME]);		if (row[QOS_REQ_GRACE])			qos->grace_time = slurm_atoul(row[QOS_REQ_GRACE]);		else			qos->grace_time = (uint32_t)NO_VAL;
开发者ID:VURM,项目名称:slurm,代码行数:67,


示例28: _set_options

//.........这里部分代码省略.........			break;		case 'j':			params.job_id = strtol(optarg, &next_str, 10);			if (next_str[0] == '.')				params.step_id =					strtol(next_str+1, NULL, 10);			break;		case 'l':			params.level = xstrdup(optarg);			break;		case 'N':			params.node = xstrdup(optarg);			break;		case 'o':			params.output = xstrdup(optarg);			break;		case 'p':			params.dir = xstrdup(optarg);			break;		case 's':			params.series = xstrdup(optarg);			break;		case 'S':			params.keepfiles = 1;			break;		case 'u':			if (uid_from_string (optarg, &uid) < 0) {				error("--uid=/"%s/" invalid", optarg);				exit(1);			}			break;		case (int)'v':			params.verbose++;			break;		case (int)'V':			print_slurm_version();			exit(0);			break;		case ':':		case '?': /* getopt() has explained it */			exit(1);		}	}	if (params.help) {		switch (params.help) {		case 1:		case 3:			_help_msg();			break;		default:			fprintf(stderr, "bug: --help=%d/n",				params.help);		}		exit(0);	}	if (params.job_id == -1)		fatal("You need to supply a --jobs value.");	if (uid == -1)		uid = getuid();	params.user = uid_to_string(uid);	if (!params.dir)		acct_gather_profile_g_get(ACCT_GATHER_PROFILE_DIR, &params.dir);	if (!params.dir)		fatal("You need to supply a --profiledir or be on a "		      "node with a valid acct_gather.conf");	if (params.verbose) {		logopt.stderr_level += params.verbose;		log_alter(logopt, SYSLOG_FACILITY_USER, NULL);	}	/* FIXME : For now all these only work for extract.  Seems	 * like it would be easy to add the logic to "merge" as well.	 */	if (params.input || params.level || params.node	    || (params.step_id != -1) || params.series)		params.mode = SH5UTIL_MODE_EXTRACT;	if (params.mode == SH5UTIL_MODE_EXTRACT) {		if (!params.level)			params.level = xstrdup("Node:Totals");		if (!params.input)			params.input = xstrdup_printf(				"./job_%d.h5", params.job_id);		if (!params.output)			params.output = xstrdup_printf(				"./extract_%d.csv", params.job_id);	}	if (!params.output)		params.output = xstrdup_printf("./job_%d.h5", params.job_id);}
开发者ID:jsollom,项目名称:slurm,代码行数:101,


示例29: _create_front_end_info_list

static List _create_front_end_info_list(	front_end_info_msg_t *front_end_info_ptr, int changed){	char *upper = NULL;	char user[32], time_str[32];	static List info_list = NULL;	List last_list = NULL;	ListIterator last_list_itr = NULL;	int i = 0;	sview_front_end_info_t *sview_front_end_info_ptr = NULL;	front_end_info_t *front_end_ptr = NULL;	if (!changed && info_list)		goto update_color;	if (info_list)		last_list = info_list;	info_list = list_create(_front_end_info_list_del);	if (last_list)		last_list_itr = list_iterator_create(last_list);	for (i = 0; i < front_end_info_ptr->record_count; i++) {		front_end_ptr = &(front_end_info_ptr->front_end_array[i]);		sview_front_end_info_ptr = NULL;		if (last_list_itr) {			while ((sview_front_end_info_ptr =				list_next(last_list_itr))) {				if (!xstrcmp(sview_front_end_info_ptr->					     front_end_name,					     front_end_ptr->name)) {					list_remove(last_list_itr);					_front_end_info_free(						sview_front_end_info_ptr);					break;				}			}			list_iterator_reset(last_list_itr);		}		if (!sview_front_end_info_ptr)			sview_front_end_info_ptr =				xmalloc(sizeof(sview_front_end_info_t));		sview_front_end_info_ptr->pos = i;		sview_front_end_info_ptr->front_end_name = front_end_ptr->name;		sview_front_end_info_ptr->front_end_ptr = front_end_ptr;		sview_front_end_info_ptr->color_inx = i % sview_colors_cnt;		if (g_node_info_ptr) {			sview_front_end_info_ptr->node_inx[0] = 0;			sview_front_end_info_ptr->node_inx[1] =				g_node_info_ptr->record_count - 1;			sview_front_end_info_ptr->node_inx[2] = -1;		} else			sview_front_end_info_ptr->node_inx[0] = -1;		if (front_end_ptr->boot_time) {			slurm_make_time_str(&front_end_ptr->boot_time,					    time_str, sizeof(time_str));			sview_front_end_info_ptr->boot_time =				xstrdup(time_str);		}		if (front_end_ptr->slurmd_start_time) {			slurm_make_time_str(&front_end_ptr->slurmd_start_time,					    time_str, sizeof(time_str));			sview_front_end_info_ptr->slurmd_start_time =				xstrdup(time_str);		}		upper = node_state_string(front_end_ptr->node_state);		sview_front_end_info_ptr->state = str_tolower(upper);		if (front_end_ptr->reason && front_end_ptr->reason_time &&		    (front_end_ptr->reason_uid != NO_VAL)) {			struct passwd *pw = NULL;			if ((pw=getpwuid(front_end_ptr->reason_uid)))				snprintf(user, sizeof(user), "%s", pw->pw_name);			else				snprintf(user, sizeof(user), "Unk(%u)",					 front_end_ptr->reason_uid);			slurm_make_time_str(&front_end_ptr->reason_time,					    time_str, sizeof(time_str));			sview_front_end_info_ptr->reason =				xstrdup_printf("%s [%[email
C++ xstrerror函数代码示例
C++ xstrcpy函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。