From: Florian G. <re...@us...> - 2007-12-13 22:25:19
|
Update of /cvsroot/perfparse/_perfparse/libpp_mysql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17528/libpp_mysql Modified Files: del_policy.c del_policy.h Log Message: more work on delete policies Index: del_policy.c =================================================================== RCS file: /cvsroot/perfparse/_perfparse/libpp_mysql/del_policy.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** del_policy.c 10 Dec 2007 18:55:09 -0000 1.5 --- del_policy.c 13 Dec 2007 22:25:18 -0000 1.6 *************** *** 225,239 **** query(s_SQL->str); result_row = mysql_fetch_row(query_result); ! if(isNull(0) && isNull(2)) { ! getRawGroupPolicy(policyinfo); ! } else { ! policyinfo->iRawDelPolicy=iData(0); policyinfo->sPolicyName=strdup(sData(1)); policyinfo->iPolicySeconds=iData(2); ! // TODO: policyinfo->iPolicySource= } } int getBinHostPolicy(char *sHost) { --- 225,278 ---- query(s_SQL->str); result_row = mysql_fetch_row(query_result); ! if(!isNull(0)) { ! policyinfo->iPolicySeconds=iData(0); ! policyinfo->iPolicySource=DEL_POLICY_SOURCE_HOST; ! } else if (!isNull(2)) { policyinfo->sPolicyName=strdup(sData(1)); policyinfo->iPolicySeconds=iData(2); ! policyinfo->iPolicySource=DEL_POLICY_SOURCE_HOST_GROUP; ! } else { ! getRawGroupPolicy(policyinfo); } } + void getRawGroupPolicy(t_raw_policyinfo *policyinfo) + { + pp_log(__FILE__,__LINE__,LOG_DEBUG_FUNCTION,_("getRawGroupPolicy() called")); + + g_string_printf(s_SQL,"SELECT g.raw_delete_policy_individual,policy_name,delete_policy_seconds FROM perfdata_host_groups hg, perfdata_groups g left join perfdata_delete_policy p on g.raw_delete_policy_id=p.policy_id WHERE g.group_id=hg.group_id AND hg.host_id = '%d'", + policyinfo->iHostId); + query(s_SQL->str); + + //walk through all groups and if more than one match find the maximum + int maxdel=DEL_POLICY_UNDEFINED; + + while(result_row = mysql_fetch_row(query_result)) { + if(!isNull(0)) { // individual settings before group settings + if(iData(0)>maxdel || iData(0)==DEL_POLICY_INFINITY) { + maxdel=iData(0); + policyinfo->iPolicySeconds=iData(0); + policyinfo->iPolicySource=DEL_POLICY_SOURCE_HOSTGROUP; + // shall we store the group name somewhere? no. not yet. + } + } else if (!isNull(2)) { + if(iData(2)>maxdel || iData(2)==DEL_POLICY_INFINITY) { + maxdel=iData(2); + policyinfo->iPolicySeconds=iData(2); + policyinfo->sPolicyName=strdup(sData(1)); + policyinfo->iPolicySource=DEL_POLICY_SOURCE_HOSTGROUP_GROUP; + // shall we store the group name somewhere? no. not yet. + } + } + + if(maxdel==DEL_POLICY_INFINITY) { + break; // bail out to avoid overwriting infinity + } + + } + + } + int getBinHostPolicy(char *sHost) { Index: del_policy.h =================================================================== RCS file: /cvsroot/perfparse/_perfparse/libpp_mysql/del_policy.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** del_policy.h 10 Dec 2007 18:55:09 -0000 1.3 --- del_policy.h 13 Dec 2007 22:25:18 -0000 1.4 *************** *** 13,16 **** --- 13,17 ---- enum { + DEL_POLICY_SOURCE_NONE, DEL_POLICY_SOURCE_METRIC, DEL_POLICY_SOURCE_METRIC_GROUP, *************** *** 37,41 **** int iPolicySource; int iPolicySeconds; - int iRawDelPolicy; } t_raw_policyinfo; --- 38,41 ---- |