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 /frontends/php/include | |
| 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
Diffstat (limited to 'frontends/php/include')
| -rw-r--r-- | frontends/php/include/forms.inc.php | 4 | ||||
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 56 |
2 files changed, 49 insertions, 11 deletions
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) |
