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 ----
|