diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-04 10:30:02 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-04 10:30:02 +0000 |
| commit | e155c74da360c3024cf27f9147ff93d2bcd10ec5 (patch) | |
| tree | 7520a44add065b264cc2e33cb0585775552e615e | |
| parent | af70b333dae2f31ed9defee6819f7801ad2e24f0 (diff) | |
| download | zabbix-e155c74da360c3024cf27f9147ff93d2bcd10ec5.tar.gz zabbix-e155c74da360c3024cf27f9147ff93d2bcd10ec5.tar.xz zabbix-e155c74da360c3024cf27f9147ff93d2bcd10ec5.zip | |
- fixed trigger dependencies for templated triggers (Eugene)
- mitor fixes
git-svn-id: svn://svn.zabbix.com/trunk@3973 97f52cf1-0a1b-0410-bd0e-c28be96e8082
| -rw-r--r-- | ChangeLog | 1 | ||||
| -rw-r--r-- | frontends/php/include/forms.inc.php | 4 | ||||
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 56 | ||||
| -rw-r--r-- | frontends/php/popup.php | 22 | ||||
| -rw-r--r-- | frontends/php/triggers.php | 38 |
5 files changed, 72 insertions, 49 deletions
@@ -1,5 +1,6 @@ Changes for 1.3.5: + - fixed trigger dependencies for templated triggers (Eugene) - fixed support of 'curl' library (Eugene) - added suport of 'automake' v1.6 (Eugene) - fixed oracle support (Eugene) diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php index 3f1ec075..55b86d61 100644 --- a/frontends/php/include/forms.inc.php +++ b/frontends/php/include/forms.inc.php @@ -2140,8 +2140,8 @@ $frmTrig->AddRow("New dependency",array($txtCondVal, $btnSelect, BR, - new CButton("add_dependence","add") - )); + new CButton("add_dependence",S_ADD) + ),'new'); /* end new dwpendence */ diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index 22d494a2..1e4182a2 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -364,16 +364,30 @@ $db_deps = DBselect("select * from trigger_depends where triggerid_down=".$triggerid); while($db_dep = DBfetch($db_deps)) - array_push($result, $db_dep["triggerid_up"]); + $result[] = $db_dep['triggerid_up']; return $result; } + function replace_template_dependences($deps, $hostid) + { + foreach($deps as $id => $val) + { + if($db_new_dep = DBfetch(DBselect('select t.triggerid from triggers t,functions f,items i '. + ' where t.templateid='.$val.' and f.triggerid=t.triggerid '. + ' and f.itemid=i.itemid and i.hostid='.$hostid))) + $deps[$id] = $db_new_dep['triggerid']; + } + return $deps; + } + function copy_trigger_to_host($triggerid, $hostid, $copy_mode = false) { $trigger = get_trigger_by_triggerid($triggerid); - $deps = get_trigger_dependences_by_triggerid($triggerid); + $deps = replace_template_dependences( + get_trigger_dependences_by_triggerid($triggerid), + $hostid); $host_triggers = get_triggers_by_hostid($hostid, "no"); while($host_trigger = DBfetch($host_triggers)) @@ -441,11 +455,9 @@ " where triggerid=$newtriggerid"); // copy dependences delete_dependencies_by_triggerid($newtriggerid); - $db_deps = DBselect("select * from trigger_depends where". - " triggerid_down=".$triggerid); - while($db_dep = DBfetch($db_deps)) + foreach($deps as $dep_id) { - add_trigger_dependency($newtriggerid, $db_dep["triggerid_up"]); + add_trigger_dependency($newtriggerid, $dep_id); } info("Added trigger '".$trigger["description"]."' to host '".$host["host"]."'"); @@ -746,7 +758,7 @@ { return $result; } - add_additional_dependencies($triggerid,$depid); + //add_additional_dependencies($triggerid,$depid); return $result; } @@ -856,7 +868,7 @@ NULL, // status $comments, $url, - $deps, + replace_template_dependences($deps, $chd_trig_host['hostid']), $triggerid); } } @@ -969,7 +981,8 @@ return DBexecute("update triggers set dep_level=dep_level+1 where triggerid=$triggerid_up"); } - // If 1 depends on 2, and 2 depends on 3, then add dependency 1->3 + /* INCORRECT LOGIC: If 1 depends on 2, and 2 depends on 3, then add dependency 1->3 + function add_additional_dependencies($triggerid_down,$triggerid_up) { $result=DBselect("select triggerid_down from trigger_depends". @@ -986,6 +999,7 @@ add_additional_dependencies($triggerid_down,$row["triggerid_up"]); } } + */ function delete_function_by_triggerid($triggerid) { @@ -1107,6 +1121,30 @@ { copy_trigger_to_host($trigger["triggerid"], $hostid, $copy_mode); } + + update_template_dependences_for_host($hostid); + } + + function update_template_dependences_for_host($hostid) + { + $db_triggers = get_triggers_by_hostid($hostid); + while($trigger_data = DBfetch($db_triggers)) + { + $db_chd_triggers = get_triggers_by_templateid($trigger_data['triggerid']); + while($chd_trigger_data = DBfetch($db_chd_triggers)) + update_trigger($chd_trigger_data['triggerid'], + /*$expression*/ NULL, + /*$description*/ NULL, + /*$priority*/ NULL, + /*$status*/ NULL, + /*$comments*/ NULL, + /*$url*/ NULL, + replace_template_dependences( + get_trigger_dependences_by_triggerid($trigger_data['triggerid']), + $hostid), + $trigger_data['triggerid']); + + } } function get_triggers_overview($groupid, $nodeid) diff --git a/frontends/php/popup.php b/frontends/php/popup.php index dd170319..8b45fd44 100644 --- a/frontends/php/popup.php +++ b/frontends/php/popup.php @@ -593,22 +593,14 @@ include_once "include/page_header.php"; if($row['dep_count'] > 0) { - $description = array($description); + $description = array( + $description,BR.BR. + "<strong>".S_DEPENDS_ON."</strong>".BR); + + $deps = get_trigger_dependences_by_triggerid($row["triggerid"]); - $result1=DBselect("select h.host,t.triggerid,t.description ". - " from triggers t,trigger_depends d,functions f,items i,hosts h ". - " where t.triggerid=d.triggerid_up and d.triggerid_down=".$row["triggerid"]. - " and ".DBid2nodeid("t.triggerid")."=".$nodeid. - " and t.triggerid=f.triggerid and f.itemid=i.itemid and i.hostid=h.hostid"); - if($row1=DBfetch($result1)) - { - array_push($description,BR.BR."<strong>".S_DEPENDS_ON."</strong>".SPACE.BR); - do - { - array_push($description,expand_trigger_description_by_data($row1).BR); - } while( $row1=DBfetch($result1)); - array_push($description,BR); - } + foreach($deps as $val) + $description[] = expand_trigger_description($val).BR; } if($row["status"] == TRIGGER_STATUS_DISABLED) diff --git a/frontends/php/triggers.php b/frontends/php/triggers.php index 03553a61..0c6b1526 100644 --- a/frontends/php/triggers.php +++ b/frontends/php/triggers.php @@ -396,7 +396,7 @@ include_once "include/page_header.php"; $row["triggerid"]); /* value */ if($row["templateid"] > 0) $chkBox->SetEnabled(false); - $description = array($chkBox,SPACE); + $description = array('['.$row["triggerid"].']',$chkBox,SPACE); if($row["templateid"]) { @@ -404,37 +404,29 @@ include_once "include/page_header.php"; $real_host = DBfetch($real_hosts); if($real_host) { - array_push($description, - new CLink($real_host["host"], - "triggers.php?&hostid=".$real_host["hostid"], 'unknown'), - ":" - ); + $description[] = new CLink($real_host["host"], + "triggers.php?&hostid=".$real_host["hostid"], 'unknown'); } else { - array_push($description, - new CSpan("error","on"), - ":" - ); + $description[] = new CSpan("error","on"); } + $description[] = ':'; } - array_push($description, - new CLink(expand_trigger_description($row["triggerid"]), + + $description[] = new CLink(expand_trigger_description($row["triggerid"]), "triggers.php?form=update&triggerid=".$row["triggerid"]. - "&hostid=".$row["hostid"], 'action') - ); + "&hostid=".$row["hostid"], 'action'); //add dependences - $result1=DBselect("select t.triggerid,t.description from triggers t,trigger_depends d". - " where t.triggerid=d.triggerid_up and d.triggerid_down=".$row["triggerid"]); - if($row1=DBfetch($result1)) + $deps = get_trigger_dependences_by_triggerid($row["triggerid"]); + if(count($deps) > 0) { - array_push($description,BR.BR."<strong>".S_DEPENDS_ON."</strong>".SPACE.BR); - do - { - array_push($description,expand_trigger_description($row1["triggerid"]).BR); - } while($row1=DBfetch($result1)); - array_push($description,BR); + $description[] = BR.BR."<strong>".S_DEPENDS_ON."</strong>".SPACE.BR; + foreach($deps as $val) + $description[] = '['.$val.']'.expand_trigger_description($val).BR; + + $description[] = BR; } if($row["priority"]==0) $priority=S_NOT_CLASSIFIED; |
