mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-27 07:34:35 +02:00
fix(packaging): various issues + migration to JSON config file (#5291)
- fixed missing dependency on AlmaLinux - take into account /etc/(default|sysconfig)/centreon_vmware as EnvironmentFile, that was ignored by the systemd service - migrate the config file from .pm to .json at update time Refs: CTOR-1079
This commit is contained in:
parent
d73866af31
commit
1f9e3b4340
@ -1,3 +1,11 @@
|
|||||||
|
2024-12-05 Olivier Mercier <omercier@centreon.com> - 3.4.0
|
||||||
|
* Enhancement: systemd service now takes its options from
|
||||||
|
/etc/(default|sysconfig)/centreon_vmware.
|
||||||
|
* Enhancement: the existing .pm config file is converted into a .json file
|
||||||
|
during upgrade.
|
||||||
|
* Breaking: the default config file is now the JSON one.
|
||||||
|
* Fix: added the 'perl(Text::Template)' missing dependency for AlmaLinux.
|
||||||
|
|
||||||
2024-10-18 Olivier Mercier <omercier@centreon.com> - 3.3.2
|
2024-10-18 Olivier Mercier <omercier@centreon.com> - 3.3.2
|
||||||
* Fix: regression of case sensitiveness for container names fixed
|
* Fix: regression of case sensitiveness for container names fixed
|
||||||
* Enhancement: log messages related to the vault have been downgraded from error to info level or explained as safe to ignore if not using the vault
|
* Enhancement: log messages related to the vault have been downgraded from error to info level or explained as safe to ignore if not using the vault
|
||||||
|
@ -69,18 +69,16 @@ contents:
|
|||||||
|
|
||||||
- src: "redhat/centreon_vmware-sysconfig"
|
- src: "redhat/centreon_vmware-sysconfig"
|
||||||
dst: "/etc/sysconfig/centreon_vmware"
|
dst: "/etc/sysconfig/centreon_vmware"
|
||||||
|
type: config|noreplace
|
||||||
packager: rpm
|
packager: rpm
|
||||||
- src: "debian/centreon_vmware-default"
|
- src: "debian/centreon_vmware-default"
|
||||||
dst: "/etc/default/centreon_vmware"
|
dst: "/etc/default/centreon_vmware"
|
||||||
|
type: config|noreplace
|
||||||
packager: deb
|
packager: deb
|
||||||
|
|
||||||
- src: "config/centreon_vmware-conf.pm"
|
- src: "config/centreon_vmware-conf.json"
|
||||||
dst: "/etc/centreon/centreon_vmware.pm"
|
dst: "/etc/centreon/centreon_vmware.json"
|
||||||
type: config|noreplace
|
type: config|noreplace
|
||||||
packager: rpm
|
|
||||||
- src: "config/centreon_vmware-conf.pm"
|
|
||||||
dst: "/etc/centreon/centreon_vmware.pm.new"
|
|
||||||
packager: deb
|
|
||||||
|
|
||||||
scripts:
|
scripts:
|
||||||
postinstall: ./scripts/postinstall.sh
|
postinstall: ./scripts/postinstall.sh
|
||||||
@ -92,6 +90,7 @@ overrides:
|
|||||||
- perl(IO::Socket::INET6)
|
- perl(IO::Socket::INET6)
|
||||||
- perl(JSON::XS)
|
- perl(JSON::XS)
|
||||||
- perl(LWP::Protocol::https)
|
- perl(LWP::Protocol::https)
|
||||||
|
- perl(Text::Template)
|
||||||
- perl(ZMQ::Constants)
|
- perl(ZMQ::Constants)
|
||||||
- perl(ZMQ::LibZMQ4)
|
- perl(ZMQ::LibZMQ4)
|
||||||
- perl-Net-Curl
|
- perl-Net-Curl
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
# centreon_vmware command line options
|
# centreon_vmware command line options
|
||||||
OPTIONS="--logfile=/var/log/centreon_vmware.log --severity=error"
|
OPTIONS="--config-extra=/etc/centreon/centreon_vmware.json --logfile=/var/log/centreon/centreon_vmware.log --severity=info"
|
||||||
|
@ -19,7 +19,8 @@
|
|||||||
Description=Centreon VMWare
|
Description=Centreon VMWare
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/perl /usr/bin/centreon_vmware.pl --logfile=/var/log/centreon/centreon_vmware.log --severity=error
|
EnvironmentFile=-/etc/default/centreon_vmware
|
||||||
|
ExecStart=/usr/bin/perl /usr/bin/centreon_vmware.pl $OPTIONS
|
||||||
Type=simple
|
Type=simple
|
||||||
User=centreon
|
User=centreon
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
# centreon_vmware command line options
|
# centreon_vmware command line options
|
||||||
OPTIONS="--logfile=/var/log/centreon/centreon_vmware.log --severity=error"
|
OPTIONS="--config-extra=/etc/centreon/centreon_vmware.json --logfile=/var/log/centreon/centreon_vmware.log --severity=info"
|
||||||
|
@ -19,7 +19,8 @@
|
|||||||
Description=Centreon VMWare
|
Description=Centreon VMWare
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/perl /usr/bin/centreon_vmware.pl --logfile=/var/log/centreon/centreon_vmware.log --severity=error
|
EnvironmentFile=-/etc/sysconfig/centreon_vmware
|
||||||
|
ExecStart=/usr/bin/perl /usr/bin/centreon_vmware.pl $OPTIONS
|
||||||
Type=simple
|
Type=simple
|
||||||
User=centreon
|
User=centreon
|
||||||
|
|
||||||
|
@ -1,7 +1,49 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
if [ "$1" = "configure" ]; then # deb
|
json_config_file_path='/etc/centreon/centreon_vmware.json'
|
||||||
if [ ! -f "/etc/centreon/centreon_vmware.pm" ]; then
|
perl_config_file_path='/etc/centreon/centreon_vmware.pm'
|
||||||
mv /etc/centreon/centreon_vmware.pm.new /etc/centreon/centreon_vmware.pm
|
|
||||||
|
function migrateConfigFromPmToJson() {
|
||||||
|
# If the legacy config file exists, we migrate it into a JSON config file
|
||||||
|
if [[ -f "$perl_config_file_path" ]] ; then
|
||||||
|
/usr/bin/centreon_vmware_convert_config_file "$perl_config_file_path" > "$json_config_file_path"
|
||||||
|
mv "$perl_config_file_path" "${perl_config_file_path}.deprecated"
|
||||||
|
fi
|
||||||
|
chown centreon: "$json_config_file_path"
|
||||||
|
chmod 640 "$json_config_file_path"
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyToSystemD() {
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl restart centreon_vmware.service
|
||||||
|
}
|
||||||
|
|
||||||
|
action="$1"
|
||||||
|
version="$2"
|
||||||
|
|
||||||
|
if [[ "$1" == "configure" ]]; then # deb
|
||||||
|
if [[ -z "$version" ]]; then
|
||||||
|
# Alpine linux does not pass args, and deb passes $1=configure
|
||||||
|
action="install"
|
||||||
|
elif [[ -n "$version" ]]; then
|
||||||
|
# deb passes $1=configure $2=<current version>
|
||||||
|
action="upgrade"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
"1" | "install")
|
||||||
|
migrateConfigFromPmToJson
|
||||||
|
applyToSystemD
|
||||||
|
;;
|
||||||
|
"2" | "upgrade")
|
||||||
|
migrateConfigFromPmToJson
|
||||||
|
applyToSystemD
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# $1 == version being installed
|
||||||
|
applyToSystemD
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ BEGIN {
|
|||||||
|
|
||||||
use base qw(centreon::vmware::script);
|
use base qw(centreon::vmware::script);
|
||||||
|
|
||||||
my $VERSION = '3.3.2';
|
my $VERSION = '3.4.0';
|
||||||
my %handlers = (TERM => {}, HUP => {}, CHLD => {});
|
my %handlers = (TERM => {}, HUP => {}, CHLD => {});
|
||||||
|
|
||||||
my @load_modules = (
|
my @load_modules = (
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings FATAL => 'all';
|
use warnings FATAL => 'all';
|
||||||
use JSON::XS;
|
use JSON;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
|
||||||
die "Usage: centreon_vmware_convert_config_file /etc/centreon/centreon_vmware.pm > /etc/centreon/centreon_vmware.json" if (scalar(@ARGV) < 1);
|
die "Usage: centreon_vmware_convert_config_file /etc/centreon/centreon_vmware.pm > /etc/centreon/centreon_vmware.json" if (scalar(@ARGV) < 1);
|
||||||
@ -34,7 +34,6 @@ my $new_config_structure = {
|
|||||||
vsphere_server => []
|
vsphere_server => []
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
for my $config_entry_key (keys %centreon_vmware_config){
|
for my $config_entry_key (keys %centreon_vmware_config){
|
||||||
if ($config_entry_key eq 'vsphere_server') {
|
if ($config_entry_key eq 'vsphere_server') {
|
||||||
for my $server_config_entry_key (keys %{$centreon_vmware_config{vsphere_server}}) {
|
for my $server_config_entry_key (keys %{$centreon_vmware_config{vsphere_server}}) {
|
||||||
@ -45,11 +44,11 @@ for my $config_entry_key (keys %centreon_vmware_config){
|
|||||||
} else {
|
} else {
|
||||||
$new_config_structure->{$config_entry_key} = $centreon_vmware_config{$config_entry_key};
|
$new_config_structure->{$config_entry_key} = $centreon_vmware_config{$config_entry_key};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my $new_json_config = encode_json($new_config_structure) or die "Unable to convert this object to JSON:\n" . Dumper($new_config_structure);
|
my $new_json_config = JSON->new->utf8(1)->pretty(1)->encode($new_config_structure) or die "Unable to convert this object to JSON:\n" . Dumper($new_config_structure);
|
||||||
|
|
||||||
print($new_json_config);
|
print($new_json_config);
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ sub init_response {
|
|||||||
my (%options) = @_;
|
my (%options) = @_;
|
||||||
|
|
||||||
$manager_response->{code} = 0;
|
$manager_response->{code} = 0;
|
||||||
$manager_response->{vmware_connector_version} = '3.3.2';
|
$manager_response->{vmware_connector_version} = '3.4.0';
|
||||||
$manager_response->{short_message} = 'OK';
|
$manager_response->{short_message} = 'OK';
|
||||||
$manager_response->{extra_message} = '';
|
$manager_response->{extra_message} = '';
|
||||||
$manager_response->{identity} = $options{identity} if (defined($options{identity}));
|
$manager_response->{identity} = $options{identity} if (defined($options{identity}));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user