MigrationServer aux util

This commit is contained in:
fbsanchez 2018-03-12 19:39:28 +01:00
parent c8118c2e08
commit 7d58734ef2
3 changed files with 78 additions and 10 deletions

View File

@ -3086,11 +3086,15 @@ create table IF NOT EXISTS `tcluster_agent`(
-- ---------------------------------------------------------------------
create table IF NOT EXISTS `tmigration_queue`(
`id_metaconsole_agent` int unsigned not null auto_increment,
`id` int unsigned not null auto_increment,
`id_source_agent` int unsigned not null,
`id_target_agent` int unsigned not null,
`id_source_node` int unsigned not null,
`id_target_node` int unsigned not null,
`priority` int unsigned default 0,
`step` int unsigned default 0
`id_target_node` int unsigned not null,
`priority` int unsigned default 0,
`step` int unsigned default 0,
`running` tinyint(2) unsigned not null default 0,
PRIMARY KEY(`id`)
) engine=InnoDB DEFAULT CHARSET=utf8;
-- ---------------------------------------------------------------------
@ -3098,9 +3102,16 @@ create table IF NOT EXISTS `tmigration_queue`(
-- ---------------------------------------------------------------------
create table IF NOT EXISTS `tmigration_module_queue`(
`id` int unsigned not null auto_increment,
`id_migration` int unsigned not null,
`id_source_node` int unsigned not null,
`id_target_node` int unsigned not null,
`id_source_agentmodule` int unsigned not null,
`id_target_agentmodule` int unsigned not null,
`last_replication_timestamp` bigint(20) NOT NULL default 0
`id_source_agentmodule` int unsigned not null,
`id_target_agentmodule` int unsigned not null,
`last_replication_timestamp` bigint(20) NOT NULL default 0,
PRIMARY KEY(`id`),
FOREIGN KEY(`id_migration`) REFERENCES tmigration_queue(`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
) engine=InnoDB DEFAULT CHARSET=utf8;

View File

@ -40,6 +40,7 @@ our @EXPORT = qw(
db_get_lock
db_insert
db_insert_get_values
db_insert_from_hash
db_process_insert
db_process_update
db_release_lock
@ -900,6 +901,29 @@ sub db_process_insert($$$$;@) {
return $res;
}
########################################################################
## SQL insert from hash
## 1st: dbh
## 2nd: table name,
## 2nd: {field => value} ref
########################################################################
sub db_insert_from_hash {
my ($dbh, $index, $table, $data) = @_;
my @fields = keys %{$data};
my $values_prep = "";
my @values = values %{$data};
my $nfields = scalar @fields;
for (my $i=0; $i<$nfields; $i++) {
$values_prep .= "?,";
}
$values_prep =~ s/,$//;
return db_insert($dbh, $index, "INSERT INTO " . $table . " (" . join (",", @fields) . ") VALUES ($values_prep)", @values);
}
########################################################################
## SQL update.
########################################################################

View File

@ -27,6 +27,7 @@ use Encode;
use Socket qw(inet_ntoa inet_aton);
use Sys::Syslog;
use Scalar::Util qw(looks_like_number);
use LWP::UserAgent;
# New in 3.2. Used to sendmail internally, without external scripts
# use Module::Loaded;
@ -62,8 +63,9 @@ our @EXPORT = qw(
TRANSACTIONALSERVER
SYNCSERVER
SYSLOGSERVER
METACONSOLE_LICENSE
WUXSERVER
MIGRATIONSERVER
METACONSOLE_LICENSE
$DEVNULL
$OS
$OS_VERSION
@ -74,7 +76,8 @@ our @EXPORT = qw(
MODULE_WARNING
MODULE_UNKNOWN
MODULE_NOTINIT
cron_get_closest_in_range
api_call_url
cron_get_closest_in_range
cron_next_execution
cron_next_execution_date
cron_check_syntax
@ -133,6 +136,7 @@ use constant MFSERVER => 15;
use constant SYNCSERVER => 16;
use constant WUXSERVER => 17;
use constant SYSLOGSERVER => 18;
use constant MIGRATIONSERVER => 19;
# Module status
use constant MODULE_NORMAL => 0;
@ -1708,6 +1712,35 @@ sub uri_encode_literal_percent {
} ## end sub uri_encode_literal_percent
################################################################################
# Launch API call
################################################################################
sub api_call_url {
my ($pa_config, $server_url, $api_params, @options) = @_;
my $ua = LWP::UserAgent->new();
$ua->timeout($options->{lwp_timeout});
# Enable environmental proxy settings
$ua->env_proxy;
# Enable in-memory cookie management
$ua->cookie_jar( {} );
# Disable verify host certificate (only needed for self-signed cert)
$ua->ssl_opts( 'verify_hostname' => 0 );
$ua->ssl_opts( 'SSL_verify_mode' => 0x00 );
my $response;
eval {
$response = $ua->post($server_url, $api_params, @options);
};
if ((!$@) && $response->is_success) {
return $response->decoded_content;
}
return undef;
}
# End of function declaration
# End of defined Code