mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-07-29 00:24:46 +02:00
enh(netvision5-6): new mode battery (#5549)
Co-authored-by: gbin2265 <gebiwork@hotmail.com>
This commit is contained in:
parent
7efc01dec9
commit
758b35773e
@ -36,7 +36,7 @@ sub custom_load_output {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return sprintf(
|
||||
'charge remaining: %s%% (%s minutes remaining)',
|
||||
'charge remaining: %s%% (%s minutes remaining)',
|
||||
$self->{result_values}->{charge_remain},
|
||||
$self->{result_values}->{minute_remain}
|
||||
);
|
||||
@ -102,6 +102,14 @@ sub set_counters {
|
||||
{ template => '%s', unit => 'C' }
|
||||
]
|
||||
}
|
||||
},
|
||||
{ label => 'temperatureambient', nlabel => 'battery.temperatureambient.celsius', display_ok => 0, set => {
|
||||
key_values => [ { name => 'temperatureambient', no_value => 0 } ],
|
||||
output_template => 'temperatureambient: %s C',
|
||||
perfdatas => [
|
||||
{ template => '%s', unit => 'C' }
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
@ -110,7 +118,7 @@ sub new {
|
||||
my ($class, %options) = @_;
|
||||
my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1);
|
||||
bless $self, $class;
|
||||
|
||||
|
||||
$options{options}->add_options(arguments => {
|
||||
});
|
||||
|
||||
@ -130,19 +138,21 @@ my $map_status_v5 = {
|
||||
|
||||
my $mapping = {
|
||||
netvision5 => {
|
||||
status => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.1', map => $map_status_v5 }, # upsBatteryStatus
|
||||
minute_remain => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.3' }, # upsEstimatedMinutesRemaining
|
||||
charge_remain => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.4' }, # upsEstimatedChargeRemaining
|
||||
voltage => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.5' }, # upsBatteryVoltage (dV)
|
||||
temperature => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.6' } # upsBatteryTemperature (degrees Centigrade)
|
||||
status => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.1', map => $map_status_v5 }, # upsBatteryStatus
|
||||
minute_remain => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.3' }, # upsEstimatedMinutesRemaining
|
||||
charge_remain => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.4' }, # upsEstimatedChargeRemaining
|
||||
voltage => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.5' }, # upsBatteryVoltage (dV)
|
||||
temperature => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.7' }, # upsBatteryTemperature (degrees Centigrade)
|
||||
temperatureambient => { oid => '.1.3.6.1.4.1.4555.1.1.1.1.2.6' } # upsAmbientTemperature (degrees Centigrade)
|
||||
},
|
||||
netvision6 => {
|
||||
status => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.1', map => $map_status_v6 }, # upsBatteryStatus
|
||||
minute_remain => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.3' }, # upsEstimatedMinutesRemaining
|
||||
charge_remain => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.4' }, # upsEstimatedChargeRemaining
|
||||
voltage => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.5' }, # upsBatteryVoltage (dV)
|
||||
temperature => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.6' }, # upsBatteryTemperature (degrees Centigrade)
|
||||
current => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.8' } # upsBatteryCurrent (dA)
|
||||
status => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.1', map => $map_status_v6 }, # upsBatteryStatus
|
||||
minute_remain => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.3' }, # upsEstimatedMinutesRemaining
|
||||
charge_remain => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.4' }, # upsEstimatedChargeRemaining
|
||||
voltage => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.5' }, # upsBatteryVoltage (dV)
|
||||
temperature => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.6' }, # upsBatteryTemperature (degrees Centigrade)
|
||||
temperatureambient => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.7' }, # upsAmbientTemperature (degrees Centigrade)
|
||||
current => { oid => '.1.3.6.1.4.1.4555.1.1.7.1.2.8' } # upsBatteryCurrent (dA)
|
||||
}
|
||||
};
|
||||
|
||||
@ -162,11 +172,12 @@ sub manage_selection {
|
||||
}
|
||||
|
||||
$self->{global} = $options{snmp}->map_instance(mapping => $mapping->{$label}, results => $snmp_result, instance => 0);
|
||||
$self->{global}->{current} = (defined($self->{global}->{current}) && $self->{global}->{current} =~ /\d/ && $self->{global}->{current} != -1 && $self->{global}->{current} != 65535) ?
|
||||
$self->{global}->{current} = (defined($self->{global}->{current}) && $self->{global}->{current} =~ /\d/ && $self->{global}->{current} != -1 && $self->{global}->{current} != 65535) ?
|
||||
$self->{global}->{current} * 0.1 : 0;
|
||||
$self->{global}->{voltage} = (defined($self->{global}->{voltage}) && $self->{global}->{voltage} =~ /\d/ && $self->{global}->{voltage} != -1 && $self->{global}->{voltage} != 65535) ?
|
||||
$self->{global}->{voltage} * 0.1 : 0;
|
||||
$self->{global}->{temperature} = (defined($self->{global}->{temperature}) && $self->{global}->{temperature} =~ /\d/) ? $self->{global}->{temperature} * 0.1 : 0;
|
||||
$self->{global}->{temperatureambient} = (defined($self->{global}->{temperatureambient}) && $self->{global}->{temperatureambient} =~ /\d/) ? $self->{global}->{temperatureambient} * 0.1 : 0;
|
||||
$self->{global}->{minute_remain} = (defined($self->{global}->{minute_remain}) && $self->{global}->{minute_remain} =~ /\d/ && $self->{global}->{minute_remain} != -1) ? $self->{global}->{minute_remain} : 'unknown';
|
||||
$self->{global}->{charge_remain} = (defined($self->{global}->{charge_remain}) && $self->{global}->{charge_remain} =~ /\d/) ? $self->{global}->{charge_remain} : undef;
|
||||
}
|
||||
@ -200,7 +211,7 @@ You can use the following variables: %{status}
|
||||
|
||||
Thresholds.
|
||||
Can be: 'charge-remaining' (%), 'charge-remaining-minutes',
|
||||
'current' (A), 'voltage' (V), 'temperature' (C).
|
||||
'current' (A), 'voltage' (V), 'temperature' (C), 'temperatureambient' (C).
|
||||
|
||||
=back
|
||||
|
||||
|
@ -0,0 +1,37 @@
|
||||
*** Settings ***
|
||||
Documentation Hardware UPS Socomec Netvision SNMP plugin
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Test Timeout 120s
|
||||
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=hardware::ups::socomec::netvision::snmp::plugin
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
Battery ${tc}
|
||||
[Tags] hardware ups snmp
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=battery
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=hardware/ups/socomec/netvision/snmp/netvision5 #netvision5 has no current(A) values
|
||||
... ${extra_options}
|
||||
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 {EMPTY} OK: battery status is normal - charge remaining: 100% (0 minutes remaining) | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 2 --warning-charge-remaining=50 --critical-charge-remaining=100 WARNING: charge remaining: 100% (0 minutes remaining) | 'battery.charge.remaining.percent'=100%;0:50;0:100;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 3 --warning-charge-remaining-minutes=10 --critical-charge-remaining-minutes=0 OK: battery status is normal - charge remaining: 100% (0 minutes remaining) | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;0:10;0:0;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 4 --warning-voltage=330 --critical-voltage=550 WARNING: voltage: 339.1 V | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;0:330;0:550;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 5 --warning-temperature=0 --critical-temperature=10 WARNING: temperature: 2 C | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;0:0;0:10;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 6 --warning-temperatureambient=3 --critical-temperatureambient=1 CRITICAL: temperatureambient: 2.2 C | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;0:3;0:1;;
|
||||
... 7 --unknown-status='\\\%{status} =~ /normal/i' UNKNOWN: battery status is normal | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 8 --warning-status='\\\%{status} =~ /normal/i' WARNING: battery status is normal | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
||||
... 9 --critical-status='\\\%{status} =~ /normal/i' CRITICAL: battery status is normal | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=2C;;;; 'battery.temperatureambient.celsius'=2.2C;;;;
|
@ -0,0 +1,38 @@
|
||||
*** Settings ***
|
||||
Documentation Hardware UPS Socomec Netvision SNMP plugin
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Test Timeout 120s
|
||||
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=hardware::ups::socomec::netvision::snmp::plugin
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
Battery ${tc}
|
||||
[Tags] hardware ups snmp
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=battery
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=hardware/ups/socomec/netvision/snmp/netvision6
|
||||
... ${extra_options}
|
||||
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 {EMPTY} OK: battery status is normal - charge remaining: 100% (10 minutes remaining) | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 2 --warning-charge-remaining=50 --critical-charge-remaining=100 WARNING: charge remaining: 100% (10 minutes remaining) | 'battery.charge.remaining.percent'=100%;0:50;0:100;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 3 --warning-charge-remaining-minutes=10 --critical-charge-remaining-minutes=5 CRITICAL: minutes remaining: 10 | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;0:10;0:5;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 4 --warning-voltage=520 --critical-voltage=550 WARNING: voltage: 534 V | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;0:520;0:550;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 5 --warning-temperature=5 --critical-temperature=10 OK: battery status is normal - charge remaining: 100% (10 minutes remaining) | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;0:5;0:10;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 6 --warning-temperatureambient=3 --critical-temperatureambient=10 CRITICAL: temperatureambient: 19 C | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;0:3;0:10;;
|
||||
... 7 --unknown-status='\\\%{status} =~ /normal/i' UNKNOWN: battery status is normal | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 8 --warning-status='\\\%{status} =~ /normal/i' WARNING: battery status is normal | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 9 --critical-status='\\\%{status} =~ /normal/i' CRITICAL: battery status is normal | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;;;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
||||
... 10 --warning-current=0 --critical-current=100 WARNING: current: 2.3 A | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=10;;;0; 'battery.current.ampere'=2.3A;0:0;0:100;0; 'battery.voltage.volt'=534V;;;; 'battery.temperature.celsius'=2.2C;;;; 'battery.temperatureambient.celsius'=19C;;;;
|
@ -1,11 +0,0 @@
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.1.0 = INTEGER: 2
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.3.0 = INTEGER: 0
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.4.0 = INTEGER: 100
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.5.0 = INTEGER: 3391
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.6.0 = INTEGER: 220
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.8.0 = INTEGER: 0
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.1.0 = INTEGER: 2
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.3.0 = INTEGER: 0
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.4.0 = INTEGER: 100
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.5.0 = INTEGER: 3391
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.6.0 = INTEGER: 22
|
@ -1,44 +0,0 @@
|
||||
*** Settings ***
|
||||
Documentation Hardware UPS Socomec Netvision SNMP plugin
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Test Timeout 120s
|
||||
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=hardware::ups::socomec::netvision::snmp::plugin
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
Battery ${tc}/4
|
||||
[Tags] hardware ups snmp
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=battery
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=hardware/ups/socomec/netvision/snmp/battery
|
||||
|
||||
# Append options to command
|
||||
${opt} Append Option --warning-temperature ${w_temperature}
|
||||
${command} Catenate ${command} ${opt}
|
||||
${opt} Append Option --critical-temperature ${c_temperature}
|
||||
${command} Catenate ${command} ${opt}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc w_temperature c_temperature expected_result --
|
||||
... 1 30 50 OK: battery status is normal - charge remaining: 100% (0 minutes remaining) | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=22C;0:30;0:50;;
|
||||
... 2 20 50 WARNING: temperature: 22 C | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=22C;0:20;0:50;;
|
||||
... 3 10 20 CRITICAL: temperature: 22 C | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=22C;0:10;0:20;;
|
||||
... 4 _empty_ _empty_ OK: battery status is normal - charge remaining: 100% (0 minutes remaining) | 'battery.charge.remaining.percent'=100%;;;0;100 'battery.charge.remaining.minutes'=0;;;0; 'battery.voltage.volt'=339.1V;;;; 'battery.temperature.celsius'=22C;;;;
|
||||
|
||||
|
||||
*** Keywords ***
|
||||
Append Option
|
||||
[Documentation] Concatenates the first argument (option) with the second (value) after having replaced the value with "" if its content is '_empty_'
|
||||
[Arguments] ${option} ${value}
|
||||
${value} Set Variable If '${value}' == '_empty_' '' ${value}
|
||||
RETURN ${option}=${value}
|
@ -0,0 +1,6 @@
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.1.0 = INTEGER: 2
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.3.0 = INTEGER: 0
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.4.0 = INTEGER: 100
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.5.0 = INTEGER: 3391
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.6.0 = INTEGER: 22
|
||||
.1.3.6.1.4.1.4555.1.1.1.1.2.7.0 = INTEGER: 20
|
@ -0,0 +1,9 @@
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.1.0 = INTEGER: 2
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.2.0 = INTEGER: 0
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.3.0 = INTEGER: 10
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.4.0 = INTEGER: 100
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.5.0 = INTEGER: 5340
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.6.0 = INTEGER: 22
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.7.0 = INTEGER: 190
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.8.0 = INTEGER: 23
|
||||
.1.3.6.1.4.1.4555.1.1.7.1.2.9.0 = INTEGER: 25
|
@ -253,6 +253,7 @@ SysVol
|
||||
TCP
|
||||
teampass
|
||||
Teldat
|
||||
temperatureambient
|
||||
timeframe
|
||||
TiMOS
|
||||
TMM
|
||||
|
Loading…
x
Reference in New Issue
Block a user