Ctor 146 escalation microsoft hyperv 2012 add option for powershell module version in node integration service mode (#5080)

This commit is contained in:
omercier 2024-07-01 10:18:56 +02:00 committed by GitHub
parent 5ff0fd9e81
commit eca3644d59
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 489 additions and 13 deletions

View File

@ -5,7 +5,7 @@ use Test::More;
use Test::Spelling;
if (!@ARGV) {
die "Missing perl file to check.";
die "Usage: perl pod_spell_check.t module.pm stopwords.t";
}
my $stopword_filename='tests/resources/spellcheck/stopwords.t';
@ -14,9 +14,10 @@ if(defined($ARGV[1])){
}
open(FILE, "<", $stopword_filename)
or die "Could not open $stopword_filename";
printf("stopword file use : ".$stopword_filename." \n");
printf("Using dictionary: ".$stopword_filename." \n");
add_stopwords(<FILE>);
close(FILE);
set_spell_cmd('hunspell -l');
all_pod_files_spelling_ok($ARGV[0]);
close(FILE);

View File

@ -134,6 +134,20 @@ sub check_options {
if (!defined($self->{option_results}->{command_options}) || $self->{option_results}->{command_options} eq '');
}
sub determine_operational_status {
my ($operational_status) = @_;
if ( defined($operational_status) ) {
if ( defined($node_vm_integration_service_operational_status->{ $operational_status}) ) {
return $node_vm_integration_service_operational_status->{ $operational_status };
} else {
return $operational_status;
}
} else {
return '-';
}
}
sub manage_selection {
my ($self, %options) = @_;
@ -235,16 +249,13 @@ sub manage_selection {
my $services = (ref($node->{services}) eq 'ARRAY') ? $node->{services} : [ $node->{services} ];
foreach my $service (@$services) {
$self->{vm}->{$id}->{service}->{$id2} = {
vm => $node->{name},
service => $service->{service},
enabled => $service->{enabled} =~ /True|1/i ? 1 : 0,
primary_status =>
defined($service->{primary_operational_status}) && defined($node_vm_integration_service_operational_status->{ $service->{primary_operational_status} }) ?
$node_vm_integration_service_operational_status->{ $service->{primary_operational_status} } : '-',
secondary_status =>
defined($service->{secondary_operational_status}) && defined($node_vm_integration_service_operational_status->{ $service->{secondary_operational_status} }) ?
$node_vm_integration_service_operational_status->{ $service->{secondary_operational_status} } : '-'
primary_status => determine_operational_status($service->{primary_operational_status}),
secondary_status => determine_operational_status($service->{secondary_operational_status})
};
$id2++;
}

View File

@ -50,6 +50,6 @@ __END__
=head1 PLUGIN DESCRIPTION
Check TendMicro Iwsva equipments in SNMP.
Check TrendMicro Iwsva equipments in SNMP.
=cut

View File

@ -35,6 +35,9 @@ $culture = new-object "System.Globalization.CultureInfo" "en-us"
$ps .= centreon::common::powershell::functions::escape_jsonstring(%options);
$ps .= centreon::common::powershell::functions::convert_to_json(%options);
# if the version of HyperV Powershell module is higher than 2.0.0 and not compatible with
# the following script, then use this Import-Module instead:
# Import-Module -Name "Hyper-V" -MaximumVersion "2.0.0"
$ps .= '
$ProgressPreference = "SilentlyContinue"
@ -68,8 +71,19 @@ Try {
$item_service.service = $service.Name
$item_service.enabled = $service.Enabled
# this works for sure on v1.1 of HyperV Powershell module
$item_service.primary_operational_status = $service.PrimaryOperationalStatus.value__
$item_service.secondary_operational_status = $service.SecondaryOperationalStatus.value__
# this works for sure on v2.0.0 of HyperV Powershell module
if (($service.PrimaryStatusDescription -ne $null) -and ($service.PrimaryStatusDescription -ne "")) {
$item_service.primary_operational_status = $service.PrimaryStatusDescription
}
if (($service.SecondaryStatusDescription -ne $null) -and ($service.SecondaryStatusDescription -ne "")) {
$item_service.secondary_operational_status = $service.SecondaryStatusDescription
}
$services.Add($item_service)
}
@ -96,6 +110,6 @@ __END__
=head1 DESCRIPTION
Method to get hyper-v informations.
Method to get Hyper-V information.
=cut

View File

@ -13,6 +13,7 @@
--exclude-fs
--filter-fs
--filter-vdom
--filter-vm
--force-counters32
--force-counters64
--force-oid
@ -37,6 +38,9 @@
--oid-filter
--urlpath
--warning-bytesallocatedpercentage
-EncodedCommand
-InputFormat
-NoLogo
2c
ADSL
Avigilon
@ -64,10 +68,11 @@ SSH
Sansymphony
SureBackup
TCP
TendMicro
TrendMicro
VDSL2
VPN
VM
Veeam
VPN
WSMAN
XPath
api.meraki.com
@ -95,6 +100,7 @@ out-mcast
out-ucast
perfdata
powershell
powershell.exe
proto
psu
queue-messages-inflighted

View File

@ -0,0 +1,407 @@
[
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER01",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER02",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER03",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER04",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 2,
"name": "VSERVER05",
"services": [
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": false
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "VSS",
"enabled": false
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER06",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 2,
"name": "VSERVER07",
"services": [
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": false
},
{
"primary_operational_status": "Error",
"secondary_operational_status": "OK",
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": "OK",
"secondary_operational_status": null,
"service": "VSS",
"enabled": false
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER07",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
},
{
"note": "",
"integration_services_state": "",
"state": 3,
"name": "VSERVER08",
"services": [
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Guest Service Interface",
"enabled": false
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Heartbeat",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Key-Value Pair Exchange",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Shutdown",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "Time Synchronization",
"enabled": true
},
{
"primary_operational_status": null,
"secondary_operational_status": null,
"service": "VSS",
"enabled": true
}
],
"integration_services_version": "0.0"
}
]

View File

@ -0,0 +1,37 @@
*** Settings ***
Documentation Application Microsoft HyperV 2022
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}..${/}resources/import.resource
Test Timeout 120s
*** Variables ***
${CMD} ${CENTREON_PLUGINS}
... --plugin=apps::microsoft::hyperv::2012::local::plugin
... --mode=node-integration-service
... --command=cat
... --command-path=/usr/bin
... --no-ps
... --command-options=nodeintegrationservice-2022.json
*** Test Cases ***
HyperV 2022 ${tc}/3
[Documentation] Apps Microsoft HyperV 2022
[Tags] applications microsoft hyperv virtualization
${command} Catenate
... ${CMD}
... --filter-vm='${filter_vm}'
${output} Run ${command}
${output} Strip String ${output}
Should Be Equal As Strings
... ${output}
... ${expected_result}
... \nWrong output result for command:\n${command}\n\nExpected:\n${expected_result}\nCommand output:\n${output}\n\n
Examples: tc filter_vm expected_result --
... 1 ${EMPTY} CRITICAL: 1 problem(s) detected
... 2 VSERVER05 OK: VM 'VSERVER05' 0 problem(s) detected - VM 'VSERVER05' 0 problem(s) detected
... 3 VSERVER07 CRITICAL: VM 'VSERVER07' 1 problem(s) detected