summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--frontends/php/include/forms.inc.php4
-rw-r--r--frontends/php/include/nodes.inc.php23
-rw-r--r--frontends/php/nodes.php10
4 files changed, 25 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 19692652..19fa1fab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
Changes for 1.3.4:
+ - added possibility to add Node with pre-defined NodeID (Eugene)
- support of macros in remote commands (Alexei)
- minor fix for simple checks (Alexei)
- fixed calculation of some functions where item is integer. (Alexei)
diff --git a/frontends/php/include/forms.inc.php b/frontends/php/include/forms.inc.php
index 5adf0938..919d9955 100644
--- a/frontends/php/include/forms.inc.php
+++ b/frontends/php/include/forms.inc.php
@@ -402,6 +402,7 @@
if(isset($_REQUEST['nodeid']) && (!isset($_REQUEST["form_refresh"]) || isset($_REQUEST["register"])))
{
+ $new_nodeid = $node_data['nodeid'];
$name = $node_data['name'];
$timezone = $node_data['timezone'];
$ip = $node_data['ip'];
@@ -411,6 +412,7 @@
}
else
{
+ $new_nodeid = get_request('new_nodeid',0);
$name = get_request('name','');
$timezone = get_request('timezone', 0);
$ip = get_request('ip','127.0.0.1');
@@ -426,6 +428,8 @@
$frmNode->AddRow(S_NAME, new CTextBox('name', $name, 40));
+ $frmNode->AddRow(S_ID, new CNumericBox('new_nodeid', $new_nodeid, 10));
+
if(!isset($_REQUEST['nodeid']))
{
$cmbNodeType = new CComboBox('node_type', $node_type, 'submit()');
diff --git a/frontends/php/include/nodes.inc.php b/frontends/php/include/nodes.inc.php
index 9c296ca8..967e2421 100644
--- a/frontends/php/include/nodes.inc.php
+++ b/frontends/php/include/nodes.inc.php
@@ -46,7 +46,7 @@
return $result;
}
- function add_node($name,$timezone,$ip,$port,$slave_history,$slave_trends,$node_type)
+ function add_node($new_nodeid,$name,$timezone,$ip,$port,$slave_history,$slave_trends,$node_type)
{
global $ZBX_CURNODEID, $ZBX_CURMASTERID;
@@ -75,25 +75,30 @@
break;
}
- $nodeid = DBfetch(DBselect('select max(nodeid) as max from nodes'));
- $nodeid = $nodeid['max'] + 1;
+ if(DBfetch(DBselect('select nodeid from nodes where nodeid='.$new_nodeid)))
+ {
+ error('Node with same ID already exist.');
+ return false;
+ }
+
$result = DBexecute('insert into nodes (nodeid,name,timezone,ip,port,slave_history,slave_trends,'.
'event_lastid,history_lastid,nodetype,masterid) values ('.
- $nodeid.','.zbx_dbstr($name).','.$timezone.','.zbx_dbstr($ip).','.$port.','.$slave_history.','.$slave_trends.','.
+ $new_nodeid.','.zbx_dbstr($name).','.$timezone.','.zbx_dbstr($ip).','.$port.','.$slave_history.','.$slave_trends.','.
'0,0,'.$nodetype.','.$masterid.')');
if($result && $node_type == ZBX_NODE_MASTER)
{
- DBexecute('update nodes set masterid='.$nodeid.' where nodeid='.$ZBX_CURNODEID);
- $ZBX_CURMASTERID = $nodeid; /* applay Master node for this script */
+ DBexecute('update nodes set masterid='.$new_nodeid.' where nodeid='.$ZBX_CURNODEID);
+ $ZBX_CURMASTERID = $new_nodeid; /* applay Master node for this script */
}
- return ($result ? $nodeid : $result);
+ return ($result ? $new_nodeid : $result);
}
- function update_node($nodeid,$name,$timezone,$ip,$port,$slave_history,$slave_trends)
+ function update_node($nodeid,$new_nodeid,$name,$timezone,$ip,$port,$slave_history,$slave_trends)
{
- $result = DBexecute('update nodes set name='.zbx_dbstr($name).',timezone='.$timezone.',ip='.zbx_dbstr($ip).',port='.$port.','.
+ $result = DBexecute('update nodes set nodeid='.$new_nodeid.',name='.zbx_dbstr($name).','.
+ 'timezone='.$timezone.',ip='.zbx_dbstr($ip).',port='.$port.','.
'slave_history='.$slave_history.',slave_trends='.$slave_trends.
' where nodeid='.$nodeid);
return $result;
diff --git a/frontends/php/nodes.php b/frontends/php/nodes.php
index 9d0ce999..c215251c 100644
--- a/frontends/php/nodes.php
+++ b/frontends/php/nodes.php
@@ -36,6 +36,7 @@ include_once "include/page_header.php";
// media form
"nodeid"=> array(T_ZBX_INT, O_NO, null, DB_ID, '{form}=="update"'),
+ "new_nodeid"=> array(T_ZBX_INT, O_OPT, null, DB_ID, 'isset({save})'),
"name"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, 'isset({save})'),
"timezone"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(-12,+13), 'isset({save})'),
"ip"=> array(T_ZBX_IP, O_OPT, null, null, 'isset({save})'),
@@ -57,7 +58,7 @@ include_once "include/page_header.php";
$accessible_nodes = get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST);
- if(isset($_REQUEST["nodeid"]) && !in_array($_REQUEST["nodeid"], explode(',',$accessible_nodes)))
+ if(!in_array($ZBX_CURNODEID, explode(',',$accessible_nodes)))
{
access_deny();
}
@@ -69,7 +70,7 @@ include_once "include/page_header.php";
if(isset($_REQUEST['nodeid']))
{ /* update */
$audit_action = AUDIT_ACTION_UPDATE;
- $result = update_node($_REQUEST['nodeid'],
+ $result = update_node($_REQUEST['nodeid'],$_REQUEST['new_nodeid'],
$_REQUEST['name'], $_REQUEST['timezone'], $_REQUEST['ip'], $_REQUEST['port'],
$_REQUEST['slave_history'], $_REQUEST['slave_trends']);
$nodeid = $_REQUEST['nodeid'];
@@ -78,7 +79,7 @@ include_once "include/page_header.php";
else
{ /* add */
$audit_action = AUDIT_ACTION_ADD;
- $result = add_node(
+ $result = add_node($_REQUEST['new_nodeid'],
$_REQUEST['name'], $_REQUEST['timezone'], $_REQUEST['ip'], $_REQUEST['port'],
$_REQUEST['slave_history'], $_REQUEST['slave_trends'], $_REQUEST['node_type']);
$nodeid = $result;
@@ -115,7 +116,7 @@ include_once "include/page_header.php";
show_table_header(S_NODES_BIG,$form);
$table=new CTableInfo(S_NO_NODES_DEFINED);
- $table->SetHeader(array(S_NAME,S_TYPE,S_TIME_ZONE,S_IP.':'.S_PORT));
+ $table->SetHeader(array(S_ID,S_NAME,S_TYPE,S_TIME_ZONE,S_IP.':'.S_PORT));
$db_nodes = DBselect('select * from nodes where nodeid in ('.
get_accessible_nodes_by_user($USER_DETAILS,PERM_READ_LIST).') '.
@@ -127,6 +128,7 @@ include_once "include/page_header.php";
$node_type_name = node_type2str($node_type);
$table->AddRow(array(
+ $row['nodeid'],
array(
get_node_path($row['masterid']),
new CLink(