Merge branch 'ent-4190-mejoras-para-el-menu-de-gestionar-ha' into 'develop'
pandora HA review See merge request artica/pandorafms!2654
This commit is contained in:
commit
0418c86867
|
@ -1,9 +1,21 @@
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
|
|
||||||
|
ALTER TABLE `tdatabase` MODIFY `last_error` text;
|
||||||
|
ALTER TABLE `tdatabase` MODIFY `host` VARCHAR(255) DEFAULT '';
|
||||||
|
ALTER TABLE `tdatabase` ADD COLUMN `label` VARCHAR(255) DEFAULT '';
|
||||||
|
ALTER TABLE `tdatabase` MODIFY `os_user` VARCHAR(255) DEFAULT '';
|
||||||
|
ALTER TABLE `tdatabase` MODIFY `db_port` INT UNSIGNED NOT NULL DEFAULT 3306;
|
||||||
|
ALTER TABLE `tdatabase` MODIFY `os_port` INT UNSIGNED NOT NULL DEFAULT 22;
|
||||||
|
ALTER TABLE `tdatabase` ADD COLUMN `ssh_key` TEXT;
|
||||||
|
ALTER TABLE `tdatabase` ADD COLUMN `ssh_pubkey` TEXT;
|
||||||
|
|
||||||
|
UPDATE `tdatabase` set `label`=`host`;
|
||||||
|
|
||||||
UPDATE `tlayout_data` SET `height` = 70 , `width` = 70 WHERE `height` = 0 && `width` = 0 && image NOT LIKE '%dot%' && ((`type` IN (0,5)) ||
|
UPDATE `tlayout_data` SET `height` = 70 , `width` = 70 WHERE `height` = 0 && `width` = 0 && image NOT LIKE '%dot%' && ((`type` IN (0,5)) ||
|
||||||
(`type` = 10 && `image` IS NOT NULL && `image` != '' && `image` != 'none') ||
|
(`type` = 10 && `image` IS NOT NULL && `image` != '' && `image` != 'none') ||
|
||||||
(`type` = 11 && `image` IS NOT NULL && `image` != '' && `image` != 'none' && `show_statistics` = 0));
|
(`type` = 11 && `image` IS NOT NULL && `image` != '' && `image` != 'none' && `show_statistics` = 0));
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `treport_content` ADD COLUMN `uncompressed_module` TINYINT DEFAULT '0';
|
ALTER TABLE `treport_content` ADD COLUMN `uncompressed_module` TINYINT DEFAULT '0';
|
||||||
ALTER TABLE `treport_content_template` ADD COLUMN `uncompressed_module` TINYINT DEFAULT '0';
|
ALTER TABLE `treport_content_template` ADD COLUMN `uncompressed_module` TINYINT DEFAULT '0';
|
||||||
|
|
||||||
|
|
|
@ -219,14 +219,17 @@ CREATE TABLE IF NOT EXISTS `tdashboard` (
|
||||||
-- Table `tdatabase`
|
-- Table `tdatabase`
|
||||||
-- ---------------------------------------------------------------------
|
-- ---------------------------------------------------------------------
|
||||||
CREATE TABLE IF NOT EXISTS `tdatabase` (
|
CREATE TABLE IF NOT EXISTS `tdatabase` (
|
||||||
`id` int(10) unsigned NOT NULL auto_increment,
|
`id` INT(10) unsigned NOT NULL auto_increment,
|
||||||
`host` varchar(100) default '',
|
`host` VARCHAR(255) default '',
|
||||||
`os_port` int(4) unsigned default '22',
|
`label` VARCHAR(255) default '',
|
||||||
`os_user` varchar(100) default '',
|
`os_port` INT UNSIGNED NOT NULL DEFAULT 22,
|
||||||
`db_port` int(4) unsigned default '3306',
|
`os_user` VARCHAR(255) default '',
|
||||||
|
`db_port` INT UNSIGNED NOT NULL DEFAULT 3306,
|
||||||
`status` tinyint(1) unsigned default '0',
|
`status` tinyint(1) unsigned default '0',
|
||||||
`action` tinyint(1) unsigned default '0',
|
`action` tinyint(1) unsigned default '0',
|
||||||
`last_error` varchar(255) default '',
|
`ssh_key` TEXT,
|
||||||
|
`ssh_pubkey` TEXT,
|
||||||
|
`last_error` TEXT,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE = InnoDB DEFAULT CHARSET=utf8 ;
|
) ENGINE = InnoDB DEFAULT CHARSET=utf8 ;
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,25 @@
|
||||||
<?php
|
<?php
|
||||||
// Pandora FMS - http://pandorafms.com
|
/**
|
||||||
// ==================================================
|
* Manage database HA cluster.
|
||||||
// Copyright (c) 2005-2018 Artica Soluciones Tecnologicas
|
*
|
||||||
// Please see http://pandorafms.org for full contribution list
|
* @category Manager
|
||||||
// This program is free software; you can redistribute it and/or
|
* @package Pandora FMS
|
||||||
// modify it under the terms of the GNU General Public License
|
* @subpackage Database HA cluster
|
||||||
// as published by the Free Software Foundation; version 2
|
* @version 1.0.0
|
||||||
// This program is distributed in the hope that it will be useful,
|
* @license See below
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
*
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* ______ ___ _______ _______ ________
|
||||||
// GNU General Public License for more details.
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2007-2012 Artica Soluciones Tecnologicas, http://www.artica.es
|
||||||
|
* This code is NOT free software. This code is NOT licenced under GPL2 licence
|
||||||
|
* You cannnot redistribute it without written permission of copyright holder.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
check_login();
|
check_login();
|
||||||
|
@ -24,8 +34,6 @@ if (! check_acl($config['id_user'], 0, 'PM')) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ui_require_css_file('firts_task');
|
ui_require_css_file('firts_task');
|
||||||
?>
|
|
||||||
<?php
|
|
||||||
ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clusters defined yet.') ]);
|
ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clusters defined yet.') ]);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
@ -44,8 +52,9 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clus
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
if (check_acl($config['id_user'], 0, 'PM')) {
|
||||||
echo "<div id='create_master_window'></div>";
|
echo "<div id='create_master_window'></div>";
|
||||||
|
echo "<div id='msg'></div>";
|
||||||
?>
|
?>
|
||||||
<input style="margin-bottom:20px;" onclick="show_create_ha_cluster();" type="submit" class="button_task" value="<?php echo __('Add new node'); ?>" />
|
<input style="margin-bottom:20px;" onclick="show_create_ha_cluster();" type="submit" class="button_task" value="<?php echo __('Add new node'); ?>" />
|
||||||
<?php
|
<?php
|
||||||
|
@ -53,35 +62,3 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clus
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
|
||||||
function show_create_ha_cluster() {
|
|
||||||
var params = {};
|
|
||||||
params["dialog_master"] = 1;
|
|
||||||
params["page"] = "enterprise/include/ajax/HA_cluster.ajax";
|
|
||||||
jQuery.ajax ({
|
|
||||||
data: params,
|
|
||||||
dataType: "html",
|
|
||||||
type: "POST",
|
|
||||||
url: "ajax.php",
|
|
||||||
success: function (data) {
|
|
||||||
$("#create_master_window").dialog ({
|
|
||||||
title: '<?php echo __('Add master node'); ?>',
|
|
||||||
resizable: true,
|
|
||||||
draggable: true,
|
|
||||||
modal: true,
|
|
||||||
close: function() {
|
|
||||||
|
|
||||||
},
|
|
||||||
overlay: {
|
|
||||||
opacity: 0.5,
|
|
||||||
background: "black"
|
|
||||||
},
|
|
||||||
width: 800,
|
|
||||||
height: 600
|
|
||||||
}).empty()
|
|
||||||
.html(data)
|
|
||||||
.show ();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
|
@ -630,3 +630,21 @@ define('DEFAULT_NODE_COLOR', COL_NOTINIT);
|
||||||
define('DEFAULT_NODE_IMAGE', 'images/networkmap/unknown.png');
|
define('DEFAULT_NODE_IMAGE', 'images/networkmap/unknown.png');
|
||||||
|
|
||||||
define('NODE_IMAGE_PADDING', 5);
|
define('NODE_IMAGE_PADDING', 5);
|
||||||
|
|
||||||
|
// Pandora Database HA constants.
|
||||||
|
define('HA_ACTION_NONE', 0);
|
||||||
|
define('HA_ACTION_DEPLOY', 1);
|
||||||
|
define('HA_ACTION_RECOVER', 2);
|
||||||
|
define('HA_ACTION_PROMOTE', 3);
|
||||||
|
define('HA_ACTION_DEMOTE', 4);
|
||||||
|
define('HA_ACTION_DISABLE', 5);
|
||||||
|
define('HA_ACTION_ENABLE', 6);
|
||||||
|
define('HA_ACTION_CLEANUP', 7);
|
||||||
|
define('HA_ACTION_RESYNC', 8);
|
||||||
|
|
||||||
|
define('HA_UNINITIALIZED', 0);
|
||||||
|
define('HA_ONLINE', 1);
|
||||||
|
define('HA_PENDING', 2);
|
||||||
|
define('HA_PROCESSING', 3);
|
||||||
|
define('HA_DISABLED', 4);
|
||||||
|
define('HA_FAILED', 5);
|
||||||
|
|
|
@ -68,6 +68,57 @@ function agents_get_agent_id_by_module_id($id_agente_modulo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search for agent data anywhere.
|
||||||
|
*
|
||||||
|
* Note: This method matches with server (perl) locate_agent.
|
||||||
|
* Do not change order!
|
||||||
|
*
|
||||||
|
* @param string $field Alias, name or IP address of searchable agent.
|
||||||
|
*
|
||||||
|
* @return array Agent of false if not found.
|
||||||
|
*/
|
||||||
|
function agents_locate_agent(string $field)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$table = 'tagente';
|
||||||
|
if (is_metaconsole()) {
|
||||||
|
$table = 'tmetaconsole_agent';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alias.
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT *
|
||||||
|
FROM %s
|
||||||
|
WHERE alias = "%s"',
|
||||||
|
$table,
|
||||||
|
$field
|
||||||
|
);
|
||||||
|
$agent = db_get_row_sql($sql);
|
||||||
|
|
||||||
|
if ($agent !== false) {
|
||||||
|
return $agent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Addr.
|
||||||
|
$agent = agents_get_agent_with_ip($field);
|
||||||
|
if ($agent !== false) {
|
||||||
|
return $agent;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Name.
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT *
|
||||||
|
FROM %s
|
||||||
|
WHERE nombre = "%s"',
|
||||||
|
$table,
|
||||||
|
$field
|
||||||
|
);
|
||||||
|
return db_get_row_sql($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get agent id from an agent alias.
|
* Get agent id from an agent alias.
|
||||||
*
|
*
|
||||||
|
|
|
@ -46,6 +46,25 @@ function db_select_engine()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Connects to target DB.
|
||||||
|
*
|
||||||
|
* @param array $setup Database definition.
|
||||||
|
*
|
||||||
|
* @return mixed Dbconnection or null.
|
||||||
|
*/
|
||||||
|
function get_dbconnection(array $setup)
|
||||||
|
{
|
||||||
|
return mysqli_connect(
|
||||||
|
$setup['dbhost'],
|
||||||
|
$setup['dbuser'],
|
||||||
|
$setup['dbpass'],
|
||||||
|
$setup['dbname'],
|
||||||
|
$setup['dbport']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function db_connect($host=null, $db=null, $user=null, $pass=null, $port=null, $critical=true, $charset=null)
|
function db_connect($host=null, $db=null, $user=null, $pass=null, $port=null, $critical=true, $charset=null)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
|
@ -98,6 +98,23 @@ function hd($var, $file='', $oneline=false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulation (ob) for debug print function.
|
||||||
|
*
|
||||||
|
* @param mixed $var Variable to be dumped.
|
||||||
|
* @param string $file Target file path.
|
||||||
|
* @param boolean $oneline Show in oneline.
|
||||||
|
*
|
||||||
|
* @return string Dump string.
|
||||||
|
*/
|
||||||
|
function obhd($var, $file='', $oneline=false)
|
||||||
|
{
|
||||||
|
ob_start();
|
||||||
|
hd($var, $file, $oneline);
|
||||||
|
return ob_get_clean();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function debug()
|
function debug()
|
||||||
{
|
{
|
||||||
$args_num = func_num_args();
|
$args_num = func_num_args();
|
||||||
|
@ -1570,6 +1587,7 @@ function html_print_input_image($name, $src, $value, $style='', $return=false, $
|
||||||
'onkeypress',
|
'onkeypress',
|
||||||
'onkeydown',
|
'onkeydown',
|
||||||
'onkeyup',
|
'onkeyup',
|
||||||
|
'class',
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($attrs as $attribute) {
|
foreach ($attrs as $attribute) {
|
||||||
|
@ -3152,7 +3170,8 @@ function html_print_input($data, $wrapper='div', $input_only=false)
|
||||||
((isset($data['return']) === true) ? $data['return'] : false),
|
((isset($data['return']) === true) ? $data['return'] : false),
|
||||||
((isset($data['disabled']) === true) ? $data['disabled'] : false),
|
((isset($data['disabled']) === true) ? $data['disabled'] : false),
|
||||||
((isset($data['required']) === true) ? $data['required'] : false),
|
((isset($data['required']) === true) ? $data['required'] : false),
|
||||||
((isset($data['class']) === true) ? $data['class'] : '')
|
((isset($data['class']) === true) ? $data['class'] : ''),
|
||||||
|
((isset($data['autocomplete']) === true) ? $data['autocomplete'] : 'off')
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -2679,6 +2679,7 @@ function get_shape_status_set($type)
|
||||||
case STATUS_MODULE_UNKNOWN:
|
case STATUS_MODULE_UNKNOWN:
|
||||||
case STATUS_AGENT_UNKNOWN:
|
case STATUS_AGENT_UNKNOWN:
|
||||||
case STATUS_AGENT_DOWN:
|
case STATUS_AGENT_DOWN:
|
||||||
|
case STATUS_AGENT_NO_MONITORS:
|
||||||
$return = ['class' => 'status_rounded_rectangles'];
|
$return = ['class' => 'status_rounded_rectangles'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -1915,8 +1915,10 @@ function load_modal(settings) {
|
||||||
text: settings.modal.cancel,
|
text: settings.modal.cancel,
|
||||||
click: function() {
|
click: function() {
|
||||||
$(this).dialog("close");
|
$(this).dialog("close");
|
||||||
|
if (typeof settings.cleanup == "function") {
|
||||||
settings.cleanup();
|
settings.cleanup();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
class:
|
class:
|
||||||
|
|
|
@ -452,6 +452,9 @@ select:-internal-list-box {
|
||||||
.mw120px {
|
.mw120px {
|
||||||
min-width: 120px;
|
min-width: 120px;
|
||||||
}
|
}
|
||||||
|
.mw180px {
|
||||||
|
min-width: 180px;
|
||||||
|
}
|
||||||
.mw250px {
|
.mw250px {
|
||||||
min-width: 250px;
|
min-width: 250px;
|
||||||
}
|
}
|
||||||
|
@ -3182,6 +3185,7 @@ table#policy_modules td * {
|
||||||
|
|
||||||
#news_board {
|
#news_board {
|
||||||
min-width: 530px;
|
min-width: 530px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#right_column_logon_ok {
|
#right_column_logon_ok {
|
||||||
|
|
|
@ -2439,14 +2439,17 @@ CREATE TABLE IF NOT EXISTS `tdashboard` (
|
||||||
-- Table `tdatabase`
|
-- Table `tdatabase`
|
||||||
-- ---------------------------------------------------------------------
|
-- ---------------------------------------------------------------------
|
||||||
CREATE TABLE IF NOT EXISTS `tdatabase` (
|
CREATE TABLE IF NOT EXISTS `tdatabase` (
|
||||||
`id` int(10) unsigned NOT NULL auto_increment,
|
`id` INT(10) unsigned NOT NULL auto_increment,
|
||||||
`host` varchar(100) default '',
|
`host` VARCHAR(255) default '',
|
||||||
`os_port` int(4) unsigned default '22',
|
`label` VARCHAR(255) default '',
|
||||||
`os_user` varchar(100) default '',
|
`os_port` INT UNSIGNED NOT NULL DEFAULT 22,
|
||||||
`db_port` int(4) unsigned default '3306',
|
`os_user` VARCHAR(255) default '',
|
||||||
|
`db_port` INT UNSIGNED NOT NULL DEFAULT 3306,
|
||||||
`status` tinyint(1) unsigned default '0',
|
`status` tinyint(1) unsigned default '0',
|
||||||
`action` tinyint(1) unsigned default '0',
|
`action` tinyint(1) unsigned default '0',
|
||||||
`last_error` varchar(255) default '',
|
`ssh_key` TEXT,
|
||||||
|
`ssh_pubkey` TEXT,
|
||||||
|
`last_error` TEXT,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE = InnoDB DEFAULT CHARSET=utf8 ;
|
) ENGINE = InnoDB DEFAULT CHARSET=utf8 ;
|
||||||
|
|
||||||
|
|
|
@ -140,6 +140,7 @@ our @EXPORT = qw(
|
||||||
generate_agent_name_hash
|
generate_agent_name_hash
|
||||||
long_to_ip
|
long_to_ip
|
||||||
ip_to_long
|
ip_to_long
|
||||||
|
get_enabled_servers
|
||||||
);
|
);
|
||||||
|
|
||||||
# ID of the different servers
|
# ID of the different servers
|
||||||
|
@ -2053,6 +2054,25 @@ sub long_to_ip {
|
||||||
return inet_ntoa pack("N", ($ip_long));
|
return inet_ntoa pack("N", ($ip_long));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Returns a list with enabled servers.
|
||||||
|
###############################################################################
|
||||||
|
sub get_enabled_servers {
|
||||||
|
my $conf = shift;
|
||||||
|
|
||||||
|
if (ref($conf) ne "HASH") {
|
||||||
|
return ();
|
||||||
|
}
|
||||||
|
|
||||||
|
my @server_list = map {
|
||||||
|
if ($_ =~ /server$/i && $conf->{$_} > 0) {
|
||||||
|
$_
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
} keys %{$conf};
|
||||||
|
|
||||||
|
return @server_list;
|
||||||
|
}
|
||||||
# End of function declaration
|
# End of function declaration
|
||||||
# End of defined Code
|
# End of defined Code
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue