summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-04 10:30:02 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-04 10:30:02 +0000
commite155c74da360c3024cf27f9147ff93d2bcd10ec5 (patch)
tree7520a44add065b264cc2e33cb0585775552e615e
parentaf70b333dae2f31ed9defee6819f7801ad2e24f0 (diff)
downloadzabbix-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--ChangeLog1
-rw-r--r--frontends/php/include/forms.inc.php4
-rw-r--r--frontends/php/include/triggers.inc.php56
-rw-r--r--frontends/php/popup.php22
-rw-r--r--frontends/php/triggers.php38
5 files changed, 72 insertions, 49 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a310511..047ff5b8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;