From: Florian G. <re...@us...> - 2007-12-13 22:25:19
|
Update of /cvsroot/perfparse/_perfparse/modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17528/modules Modified Files: storage_mysql.c Log Message: more work on delete policies Index: storage_mysql.c =================================================================== RCS file: /cvsroot/perfparse/_perfparse/modules/storage_mysql.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** storage_mysql.c 10 Dec 2007 18:55:09 -0000 1.17 --- storage_mysql.c 13 Dec 2007 22:25:18 -0000 1.18 *************** *** 361,364 **** --- 361,367 ---- GSList *tmplist2,*tmplist=NULL; int *p=NULL; + time_t dps=DEL_POLICY_UNDEFINED; + time_t t=time(NULL); + // connect again to mysql since this is a forked process *************** *** 417,450 **** while ((result_row = mysql_fetch_row(query_result))) { raw_policyinfo = (t_raw_policyinfo *)malloc(sizeof(t_raw_policyinfo)); raw_policyinfo->iServiceId = iData(0); raw_policyinfo->sServiceDesc=strdup(sData(1)); raw_policyinfo->iHostId=iData(2); - // todo: check if this policy matches and if not search for matching parent policy raw_policyinfo->sPolicyName=strdup(sData(3)); ! if(isNull(4)){ ! raw_policyinfo->iPolicySeconds=DEL_POLICY_UNDEFINED; ! } else { raw_policyinfo->iPolicySeconds=iData(4); } ! if(isNull(5)) { ! raw_policyinfo->iRawDelPolicy=DEL_POLICY_UNDEFINED; ! } else { ! raw_policyinfo->iRawDelPolicy=iData(5); ! } ! pp_log(__FILE__,__LINE__,LOG_DEBUG,"service_id %d policy info (%s,%d,%s,%d,%d) added to temporary list\n" ! ,raw_policyinfo->iServiceId,raw_policyinfo->sServiceDesc, ! raw_policyinfo->iHostId,raw_policyinfo->sPolicyName, ! raw_policyinfo->iPolicySeconds,raw_policyinfo->iRawDelPolicy); tmplist=g_slist_append(tmplist,raw_policyinfo); } tmplist2=tmplist; while(tmplist2) { raw_policyinfo=(t_raw_policyinfo *) tmplist2->data; ! if(raw_policyinfo->iRawDelPolicy==DEL_POLICY_UNDEFINED && ! raw_policyinfo->iPolicySeconds==DEL_POLICY_UNDEFINED) { getRawHostPolicy(raw_policyinfo); } //todo: now purge data } --- 420,490 ---- while ((result_row = mysql_fetch_row(query_result))) { raw_policyinfo = (t_raw_policyinfo *)malloc(sizeof(t_raw_policyinfo)); + raw_policyinfo->iPolicySource=DEL_POLICY_SOURCE_NONE; raw_policyinfo->iServiceId = iData(0); raw_policyinfo->sServiceDesc=strdup(sData(1)); raw_policyinfo->iHostId=iData(2); raw_policyinfo->sPolicyName=strdup(sData(3)); ! raw_policyinfo->iPolicySeconds=DEL_POLICY_UNDEFINED; ! ! if(!isNull(5)) { ! raw_policyinfo->iPolicySeconds=iData(5); ! raw_policyinfo->iPolicySource=DEL_POLICY_SOURCE_SERVICE; ! } else if (!isNull(4)){ raw_policyinfo->iPolicySeconds=iData(4); + raw_policyinfo->iPolicySource=DEL_POLICY_SOURCE_SERVICE_GROUP; } ! tmplist=g_slist_append(tmplist,raw_policyinfo); } tmplist2=tmplist; + while(tmplist2) { raw_policyinfo=(t_raw_policyinfo *) tmplist2->data; ! if(raw_policyinfo->iPolicySource==DEL_POLICY_SOURCE_NONE) { // get policy info from host or hostgroup getRawHostPolicy(raw_policyinfo); } + + pp_log(__FILE__,__LINE__,LOG_DEBUG,"service_id %d raw policy info (ServiceDesc: %s,HostId: %d, PolicyName: %s, PolicySeconds: %d, PolicySource: %d) in temporary list\n" + ,raw_policyinfo->iServiceId,raw_policyinfo->sServiceDesc, + raw_policyinfo->iHostId,raw_policyinfo->sPolicyName, + raw_policyinfo->iPolicySeconds, + raw_policyinfo->iPolicySource); //todo: now purge data + + if(raw_policyinfo->iPolicySeconds>1) { + dps=t-raw_policyinfo->iPolicySeconds; + pp_log(__FILE__,__LINE__,LOG_INFO,_("Purging raw data older than %s from service %s Id %d due to "), + asctime(localtime(&dps)),raw_policyinfo->sServiceDesc, + raw_policyinfo->iServiceId); + switch(raw_policyinfo->iPolicySource) { + case DEL_POLICY_SOURCE_SERVICE: + pp_log(__FILE__,__LINE__,LOG_INFO,_("individual service setting\n")); + break; + case DEL_POLICY_SOURCE_HOST: + pp_log(__FILE__,__LINE__,LOG_INFO,_("individual host setting\n")); + break; + case DEL_POLICY_SOURCE_HOSTGROUP: + pp_log(__FILE__,__LINE__,LOG_INFO,_("individual hostgroup setting\n")); + break; + case DEL_POLICY_SOURCE_SERVICE_GROUP: + pp_log(__FILE__,__LINE__,LOG_INFO,_("group '%s' setting in service.\n"),raw_policyinfo->sPolicyName); + break; + case DEL_POLICY_SOURCE_HOST_GROUP: + pp_log(__FILE__,__LINE__,LOG_INFO,_("group '%s' setting in host.\n"),raw_policyinfo->sPolicyName); + break; + case DEL_POLICY_SOURCE_HOSTGROUP_GROUP: + pp_log(__FILE__,__LINE__,LOG_INFO,_("group '%s' setting in hostgroup.\n"),raw_policyinfo->sPolicyName); + break; + default: + pp_log(__FILE__,__LINE__,LOG_FATAL,_("This is a error. This line should not be executed.\n")); + } + + + g_string_printf(s_SQL,"DELETE FROM perfdata_service_raw WHERE service_id=%d and ctime < %d", + raw_policyinfo->iServiceId,(int) dps); + query(s_SQL->str); + } + tmplist2=g_slist_next(tmplist2); } |