From db81938e6c482468c4d74ea827c7d3fa6ec41409 Mon Sep 17 00:00:00 2001 From: sfarouq-ext <116093375+sfarouq-ext@users.noreply.github.com> Date: Mon, 26 May 2025 15:51:47 +0200 Subject: [PATCH] enh(qnap): extend modes hardware,pools and volumes for Quts Hero (#5580) Co-authored-by: Roman Morandell <46994680+rmorandell-pgum@users.noreply.github.com> --- src/storage/qnap/snmp/mode/components/disk.pm | 249 +++++++++---- src/storage/qnap/snmp/mode/components/raid.pm | 56 ++- .../qnap/snmp/mode/components/temperature.pm | 16 + src/storage/qnap/snmp/mode/hardware.pm | 7 +- src/storage/qnap/snmp/mode/pools.pm | 14 +- src/storage/qnap/snmp/mode/volumes.pm | 11 + tests/resources/spellcheck/stopwords.txt | 1 + tests/storage/qnap/snmp/hardware.robot | 35 ++ tests/storage/qnap/snmp/pools.robot | 32 ++ tests/storage/qnap/snmp/qnap.snmpwalk | 333 ++++++++++++++++++ tests/storage/qnap/snmp/volumes.robot | 32 ++ 11 files changed, 713 insertions(+), 73 deletions(-) create mode 100644 tests/storage/qnap/snmp/hardware.robot create mode 100644 tests/storage/qnap/snmp/pools.robot create mode 100644 tests/storage/qnap/snmp/qnap.snmpwalk create mode 100644 tests/storage/qnap/snmp/volumes.robot diff --git a/src/storage/qnap/snmp/mode/components/disk.pm b/src/storage/qnap/snmp/mode/components/disk.pm index abf8fe5a9..be97a6ccc 100644 --- a/src/storage/qnap/snmp/mode/components/disk.pm +++ b/src/storage/qnap/snmp/mode/components/disk.pm @@ -24,41 +24,48 @@ use strict; use warnings; my $map_status_disk = { - 0 => 'ready', + 0 => 'ready', '-5' => 'noDisk', '-6' => 'invalid', '-9' => 'rwError', '-4' => 'unknown' }; my $map_smartinfo = { - 2 => 'abnormal', - 1 => 'warning', - 0 => 'good', + 2 => 'abnormal', + 1 => 'warning', + 0 => 'good', -1 => 'error' }; my $mapping = { legacy => { - description => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.2' }, # hdDescr - temperature => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.3' }, # hdTemperature ("40 C/104 F") - status => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.4', map => $map_status_disk }, # HdStatus - smartinfo => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.7' } # HdSmartInfo + description => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.2' },# hdDescr + temperature => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.3' },# hdTemperature ("40 C/104 F") + status => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.4', map => $map_status_disk },# HdStatus + smartinfo => { oid => '.1.3.6.1.4.1.24681.1.2.11.1.7' }# HdSmartInfo }, - qts => { - description => { oid => '.1.3.6.1.4.1.55062.1.10.2.1.2' }, # diskID - status => { oid => '.1.3.6.1.4.1.55062.1.10.2.1.7' }, # diskStatus - temperature => { oid => '.1.3.6.1.4.1.55062.1.10.2.1.8' } # diskTemperature + qts => { + description => { oid => '.1.3.6.1.4.1.55062.1.10.2.1.2' },# diskID + status => { oid => '.1.3.6.1.4.1.55062.1.10.2.1.7' },# diskStatus + temperature => { oid => '.1.3.6.1.4.1.55062.1.10.2.1.8' }# diskTemperature }, - ex => { - description => { oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2' }, # diskID - status => { oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5', map => $map_smartinfo }, # diskSmartInfo - temperature => { oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6' } # diskTemperture + quts => { + description => { oid => '.1.3.6.1.4.1.55062.2.10.2.1.2' },# diskID + model => { oid => '.1.3.6.1.4.1.55062.2.10.2.1.4' },# diskModel + serial => { oid => '.1.3.6.1.4.1.55062.2.10.2.1.5' },# diskSerial + status => { oid => '.1.3.6.1.4.1.55062.2.10.2.1.7' },# diskStatus + temperature => { oid => '.1.3.6.1.4.1.55062.2.10.2.1.8' }# diskTemperature }, - es => { - description => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.2' }, # es-HdDescr - temperature => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.3' }, # es-HdTemperature ("26 C/78.8 F") - status => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.4' }, # es-HdStatus - smartinfo => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.7' } # es-HdSmartInfo + ex => { + description => { oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2' },# diskID + status => { oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5', map => $map_smartinfo },# diskSmartInfo + temperature => { oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6' }# diskTemperture + }, + es => { + description => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.2' },# es-HdDescr + temperature => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.3' },# es-HdTemperature ("26 C/78.8 F") + status => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.4' },# es-HdStatus + smartinfo => { oid => '.1.3.6.1.4.1.24681.2.2.11.1.7' }# es-HdSmartInfo } }; @@ -70,19 +77,24 @@ sub check_disk_legacy { return if (defined($self->{disk_checked})); my $snmp_result = $self->{snmp}->get_table( - oid => '.1.3.6.1.4.1.24681.1.2.11', # systemHdTable + oid => '.1.3.6.1.4.1.24681.1.2.11',# systemHdTable start => $mapping->{description}->{oid} - ); + ); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { next if ($oid !~ /^$mapping->{legacy}->{description}->{oid}\.(\d+)$/); my $instance = $1; - my $result = $self->{snmp}->map_instance(mapping => $mapping->{legacy}, results => $snmp_result, instance => $instance); + my $result = $self->{snmp}->map_instance(mapping => + $mapping->{legacy}, + results => + $snmp_result, + instance => + $instance); next if ($self->check_filter(section => 'disk', instance => $instance)); next if ( - $result->{status} eq 'noDisk' && - $self->absent_problem(section => 'disk', instance => $instance) + $result->{status} eq 'noDisk' && + $self->absent_problem(section => 'disk', instance => $instance) ); $self->{components}->{disk}->{total}++; @@ -92,14 +104,14 @@ sub check_disk_legacy { $result->{description}, $result->{status}, $instance, - $result->{temperature}, + $result->{temperature}, defined($result->{smartinfo}) ? $result->{smartinfo} : '-', ) ); my $exit = $self->get_severity(section => 'disk', instance => $instance, value => $result->{status}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Disk '%s' status is %s.", $result->{description}, $result->{status} ) @@ -110,7 +122,7 @@ sub check_disk_legacy { $exit = $self->get_severity(section => 'smartdisk', value => $result->{smartinfo}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Disk '%s' smart status is %s.", $result->{description}, $result->{smartinfo} ) @@ -121,20 +133,25 @@ sub check_disk_legacy { next if ($result->{temperature} !~ /([0-9]+)/); my $disk_temp = $1; - my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => 'disk', instance => $instance, value => $disk_temp); + my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => + 'disk', + instance => + $instance, + value => + $disk_temp); if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit2, + severity => $exit2, short_msg => sprintf( "Disk '%s' temperature is %s degree centigrade", $result->{description}, $disk_temp ) ); } $self->{output}->perfdata_add( - nlabel => 'hardware.disk.temperature.celsius', - unit => 'C', + nlabel => 'hardware.disk.temperature.celsius', + unit => 'C', instances => $instance, - value => $disk_temp + value => $disk_temp ); } } @@ -143,16 +160,21 @@ sub check_disk_qts { my ($self, %options) = @_; my $snmp_result = $self->{snmp}->get_table( - oid => '.1.3.6.1.4.1.55062.1.10.2', # diskTable + oid => '.1.3.6.1.4.1.55062.1.10.2',# diskTable start => $mapping->{qts}->{description}->{oid}, - end => $mapping->{qts}->{temperature}->{oid} + end => $mapping->{qts}->{temperature}->{oid} ); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { next if ($oid !~ /^$mapping->{qts}->{description}->{oid}\.(\d+)$/); my $instance = $1; $self->{disk_checked} = 1; - my $result = $self->{snmp}->map_instance(mapping => $mapping->{qts}, results => $snmp_result, instance => $instance); + my $result = $self->{snmp}->map_instance(mapping => + $mapping->{qts}, + results => + $snmp_result, + instance => + $instance); next if ($self->check_filter(section => 'disk', instance => $instance)); @@ -169,7 +191,7 @@ sub check_disk_qts { my $exit = $self->get_severity(section => 'disk', instance => $instance, value => $result->{status}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Disk '%s' status is %s.", $result->{description}, $result->{status} ) @@ -179,20 +201,99 @@ sub check_disk_qts { next if ($result->{temperature} !~ /([0-9]+)/); my $disk_temp = $1; - my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => 'disk', instance => $instance, value => $disk_temp); + my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => + 'disk', + instance => + $instance, + value => + $disk_temp); if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit2, + severity => $exit2, short_msg => sprintf( "Disk '%s' temperature is %s degree centigrade", $result->{description}, $disk_temp ) ); } $self->{output}->perfdata_add( - nlabel => 'hardware.disk.temperature.celsius', - unit => 'C', + nlabel => 'hardware.disk.temperature.celsius', + unit => 'C', instances => $instance, - value => $disk_temp + value => $disk_temp + ); + } +} + +sub check_disk_quts { + my ($self, %options) = @_; + + my $snmp_result = $self->{snmp}->get_table( + oid => '.1.3.6.1.4.1.55062.2.10.2',# diskTable + start => $mapping->{quts}->{description}->{oid}, + end => $mapping->{quts}->{temperature}->{oid} + ); + foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { + next if ($oid !~ /^$mapping->{quts}->{description}->{oid}\.(\d+)$/); + my $instance = $1; + $self->{disk_checked} = 1; + + my $result = $self->{snmp}->map_instance(mapping => + $mapping->{quts}, + results => + $snmp_result, + instance => + $instance); + + next if ($self->check_filter(section => 'disk', instance => $instance)); + + $self->{components}->{disk}->{total}++; + $self->{output}->output_add( + long_msg => sprintf( + "disk '%s' - '%s' [%s] status is %s [instance: %s, temperature: %s]", + $result->{description}, + $result->{model}, + $result->{serial}, + $result->{status}, + $instance, + $result->{temperature} + ) + ); + my $exit = $self->get_severity(section => 'disk', instance => $instance, value => $result->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, + short_msg => sprintf( + "Disk '%s' - '%s' [%s] status is %s.", + $result->{description}, + $result->{model}, + $result->{serial}, + $result->{status} + ) + ); + } + + next if ($result->{temperature} !~ /([0-9]+)/); + + my $disk_temp = $1; + my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => + 'disk', + instance => + $instance, + value => + $disk_temp); + if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit2, + short_msg => sprintf( + "Disk '%s' temperature is %s degree centigrade", $result->{description}, $disk_temp + ) + ); + } + $self->{output}->perfdata_add( + nlabel => 'hardware.disk.temperature.celsius', + unit => 'C', + instances => $instance, + value => $disk_temp ); } } @@ -201,16 +302,21 @@ sub check_disk_ex { my ($self, %options) = @_; my $snmp_result = $self->{snmp}->get_table( - oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2', # diskTable + oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2',# diskTable start => $mapping->{ex}->{description}->{oid}, - end => $mapping->{ex}->{temperature}->{oid} + end => $mapping->{ex}->{temperature}->{oid} ); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { next if ($oid !~ /^$mapping->{ex}->{description}->{oid}\.(\d+)$/); my $instance = $1; $self->{disk_checked} = 1; - my $result = $self->{snmp}->map_instance(mapping => $mapping->{ex}, results => $snmp_result, instance => $instance); + my $result = $self->{snmp}->map_instance(mapping => + $mapping->{ex}, + results => + $snmp_result, + instance => + $instance); next if ($self->check_filter(section => 'disk', instance => $instance)); @@ -227,7 +333,7 @@ sub check_disk_ex { my $exit = $self->get_severity(section => 'disk', instance => $instance, value => $result->{status}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Disk '%s' status is %s.", $result->{description}, $result->{status} ) @@ -237,20 +343,25 @@ sub check_disk_ex { next if ($result->{temperature} !~ /([0-9]+)/); my $disk_temp = $1; - my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => 'disk', instance => $instance, value => $disk_temp); + my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => + 'disk', + instance => + $instance, + value => + $disk_temp); if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit2, + severity => $exit2, short_msg => sprintf( "Disk '%s' temperature is %s degree centigrade", $result->{description}, $disk_temp ) ); } $self->{output}->perfdata_add( - nlabel => 'hardware.disk.temperature.celsius', - unit => 'C', + nlabel => 'hardware.disk.temperature.celsius', + unit => 'C', instances => $instance, - value => $disk_temp + value => $disk_temp ); } } @@ -258,14 +369,19 @@ sub check_disk_ex { sub check_disk_es { my ($self, %options) = @_; - my $snmp_result = $self->{snmp}->get_table(oid => '.1.3.6.1.4.1.24681.2.2.11'); # es-SystemHdTable + my $snmp_result = $self->{snmp}->get_table(oid => '.1.3.6.1.4.1.24681.2.2.11');# es-SystemHdTable foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { next if ($oid !~ /^$mapping->{es}->{description}->{oid}\.(\d+)$/); my $instance = $1; - my $result = $self->{snmp}->map_instance(mapping => $mapping->{es}, results => $snmp_result, instance => $instance); + my $result = $self->{snmp}->map_instance(mapping => + $mapping->{es}, + results => + $snmp_result, + instance => + $instance); next if ($self->check_filter(section => 'disk', instance => $instance)); - + $self->{components}->{disk}->{total}++; $self->{output}->output_add( long_msg => sprintf( @@ -273,14 +389,14 @@ sub check_disk_es { $result->{description}, $result->{status}, $instance, - $result->{temperature}, + $result->{temperature}, defined($result->{smartinfo}) ? $result->{smartinfo} : '-', ) ); my $exit = $self->get_severity(section => 'disk', instance => $instance, value => $result->{status}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Disk '%s' status is %s.", $result->{description}, $result->{status} ) @@ -291,7 +407,7 @@ sub check_disk_es { $exit = $self->get_severity(section => 'smartdisk', value => $result->{smartinfo}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Disk '%s' smart status is %s.", $result->{description}, $result->{smartinfo} ) @@ -302,20 +418,25 @@ sub check_disk_es { next if ($result->{temperature} !~ /([0-9]+)/); my $disk_temp = $1; - my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => 'disk', instance => $instance, value => $disk_temp); + my ($exit2, $warn, $crit) = $self->get_severity_numeric(section => + 'disk', + instance => + $instance, + value => + $disk_temp); if (!$self->{output}->is_status(value => $exit2, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit2, + severity => $exit2, short_msg => sprintf( "Disk '%s' temperature is %s degree centigrade", $result->{description}, $disk_temp ) ); } $self->{output}->perfdata_add( - nlabel => 'hardware.disk.temperature.celsius', - unit => 'C', + nlabel => 'hardware.disk.temperature.celsius', + unit => 'C', instances => $instance, - value => $disk_temp + value => $disk_temp ); } } @@ -329,6 +450,8 @@ sub check { if ($self->{is_qts} == 1) { check_disk_qts($self); + } elsif ($self->{is_quts} == 1) { + check_disk_quts($self); } elsif ($self->{is_es} == 1) { check_disk_es($self); } else { diff --git a/src/storage/qnap/snmp/mode/components/raid.pm b/src/storage/qnap/snmp/mode/components/raid.pm index 2ee528319..f4de280e2 100644 --- a/src/storage/qnap/snmp/mode/components/raid.pm +++ b/src/storage/qnap/snmp/mode/components/raid.pm @@ -29,13 +29,13 @@ sub check_raid_qts { my ($self) = @_; my $mapping = { - name => { oid => '.1.3.6.1.4.1.55062.1.10.5.1.3' }, # raidName - status => { oid => '.1.3.6.1.4.1.55062.1.10.5.1.4' } # raidStatus + name => { oid => '.1.3.6.1.4.1.55062.1.10.5.1.3' },# raidName + status => { oid => '.1.3.6.1.4.1.55062.1.10.5.1.4' }# raidStatus }; my $snmp_result = $self->{snmp}->get_table( - oid => '.1.3.6.1.4.1.55062.1.10.5', # raidTable + oid => '.1.3.6.1.4.1.55062.1.10.5',# raidTable start => $mapping->{name}->{oid}, - end => $mapping->{status}->{oid} + end => $mapping->{status}->{oid} ); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { next if ($oid !~ /^$mapping->{status}->{oid}\.(\d+)$/); @@ -54,7 +54,45 @@ sub check_raid_qts { my $exit = $self->get_severity(section => 'raid', value => $result->{status}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, + short_msg => sprintf( + "Raid '%s' status is %s.", $result->{name}, $result->{status} + ) + ); + } + } +} + +sub check_raid_quts { + my ($self) = @_; + + my $mapping = { + name => { oid => '.1.3.6.1.4.1.55062.2.10.5.1.3' },# raidName + status => { oid => '.1.3.6.1.4.1.55062.2.10.5.1.4' }# raidStatus + }; + my $snmp_result = $self->{snmp}->get_table( + oid => '.1.3.6.1.4.1.55062.2.10.5',# raidTable + start => $mapping->{name}->{oid}, + end => $mapping->{status}->{oid} + ); + foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { + next if ($oid !~ /^$mapping->{status}->{oid}\.(\d+)$/); + my $instance = $1; + my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $instance); + + next if ($self->check_filter(section => 'raid', instance => $instance)); + + $self->{components}->{raid}->{total}++; + $self->{output}->output_add( + long_msg => sprintf( + "raid '%s' status is %s [instance: %s]", + $result->{name}, $result->{status}, $instance + ) + ); + my $exit = $self->get_severity(section => 'raid', value => $result->{status}); + if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { + $self->{output}->output_add( + severity => $exit, short_msg => sprintf( "Raid '%s' status is %s.", $result->{name}, $result->{status} ) @@ -67,7 +105,7 @@ sub check_raid_ex { my ($self) = @_; my $snmp_result = $self->{snmp}->get_table( - oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.2.1.2.1.5' # raidStatus + oid => '.1.3.6.1.4.1.24681.1.4.1.1.1.2.1.2.1.5'# raidStatus ); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %$snmp_result)) { $oid =~ /\.(\d+)$/; @@ -86,7 +124,7 @@ sub check_raid_ex { my $exit = $self->get_severity(section => 'raid', value => $status); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { $self->{output}->output_add( - severity => $exit, + severity => $exit, short_msg => sprintf( "Raid '%s' status is %s.", $instance, $status ) @@ -99,11 +137,13 @@ sub check { my ($self) = @_; $self->{output}->output_add(long_msg => "Checking raids"); - $self->{components}->{raid} = {name => 'raids', total => 0, skip => 0}; + $self->{components}->{raid} = { name => 'raids', total => 0, skip => 0 }; return if ($self->check_filter(section => 'raid')); if ($self->{is_qts} == 1) { check_raid_qts($self); + } elsif ($self->{is_quts} == 1) { + check_raid_quts($self); } elsif ($self->{is_es} == 0) { check_raid_ex($self); } diff --git a/src/storage/qnap/snmp/mode/components/temperature.pm b/src/storage/qnap/snmp/mode/components/temperature.pm index 0880174be..243295e2b 100644 --- a/src/storage/qnap/snmp/mode/components/temperature.pm +++ b/src/storage/qnap/snmp/mode/components/temperature.pm @@ -32,6 +32,10 @@ my $mapping = { cpu_temp => { oid => '.1.3.6.1.4.1.55062.1.12.10' }, # cpuTemperature system_temp => { oid => '.1.3.6.1.4.1.55062.1.12.11' } # systemTemperature }, + quts => { + cpu_temp => { oid => '.1.3.6.1.4.1.55062.2.12.10' }, # cpuTemperature + system_temp => { oid => '.1.3.6.1.4.1.55062.2.12.11' } # systemTemperature + }, ex => { cpu_temp => { oid => '.1.3.6.1.4.1.24681.1.3.5' }, # cpu-TemperatureEX system_temp => { oid => '.1.3.6.1.4.1.24681.1.3.6' } # systemTemperatureEX @@ -112,6 +116,16 @@ sub check_temp_qts { check_temp_result($self, result => $result); } +sub check_temp_quts { + my ($self, %options) = @_; + + my $snmp_result = $self->{snmp}->get_leef( + oids => [ map($_->{oid} . '.0', values(%{$mapping->{quts}})) ] + ); + my $result = $self->{snmp}->map_instance(mapping => $mapping->{quts}, results => $snmp_result, instance => 0); + check_temp_result($self, result => $result); +} + sub check_temp_es { my ($self, %options) = @_; @@ -146,6 +160,8 @@ sub check { if ($self->{is_qts} == 1) { check_temp_qts($self); + } elsif ($self->{is_quts} == 1) { + check_temp_quts($self); } elsif ($self->{is_es} == 1) { check_temp_es($self); } else { diff --git a/src/storage/qnap/snmp/mode/hardware.pm b/src/storage/qnap/snmp/mode/hardware.pm index d55bf0627..a3b15429c 100644 --- a/src/storage/qnap/snmp/mode/hardware.pm +++ b/src/storage/qnap/snmp/mode/hardware.pm @@ -86,10 +86,12 @@ sub snmp_execute { $self->{is_es} = 0; $self->{is_qts} = 0; + $self->{is_quts} = 0; my $oid_es_uptime = '.1.3.6.1.4.1.24681.2.2.4.0'; # es-SystemUptime my $oid_qts_model = '.1.3.6.1.4.1.55062.1.12.3.0'; # systemModel + my $oid_quts_disk_table = '.1.3.6.1.4.1.55062.2.10.7.1.1.1'; # quts-poolTable my $snmp_result = $self->{snmp}->get_leef( - oids => [$oid_es_uptime, $oid_qts_model] + oids => [$oid_es_uptime, $oid_qts_model, $oid_quts_disk_table] ); if (defined($snmp_result->{$oid_es_uptime})) { $self->{is_es} = 1; @@ -97,6 +99,9 @@ sub snmp_execute { if (defined($snmp_result->{$oid_qts_model})) { $self->{is_qts} = 1; } + if (defined($snmp_result->{$oid_quts_disk_table})) { + $self->{is_quts} = 1; + } } sub new { diff --git a/src/storage/qnap/snmp/mode/pools.pm b/src/storage/qnap/snmp/mode/pools.pm index e10d2d6c9..b26a5c86d 100644 --- a/src/storage/qnap/snmp/mode/pools.pm +++ b/src/storage/qnap/snmp/mode/pools.pm @@ -178,6 +178,12 @@ my $mapping = { total => { oid => '.1.3.6.1.4.1.24681.2.2.23.1.3' }, # es-SysPoolCapacity free => { oid => '.1.3.6.1.4.1.24681.2.2.23.1.4' }, # es-SysPoolFreeSize status => { oid => '.1.3.6.1.4.1.24681.2.2.23.1.5' } # es-SysPoolStatus + }, + quts => { + name => { oid => '.1.3.6.1.4.1.55062.2.10.7.1.2' }, # es-SysPoolID + total => { oid => '.1.3.6.1.4.1.55062.2.10.7.1.3' }, # es-SysPoolCapacity + free => { oid => '.1.3.6.1.4.1.55062.2.10.7.1.4' }, # es-SysPoolFreeSize + status => { oid => '.1.3.6.1.4.1.55062.2.10.7.1.5', , map => $map_status } # es-SysPoolStatus } }; @@ -197,7 +203,7 @@ sub check_pools { next; } - if (defined($options{convert})) { + if ($options{type} ne "quts" && defined($options{convert})) { $result->{total} = $self->convert_bytes(value => $result->{total}); $result->{free} = $self->convert_bytes(value => $result->{free}); } @@ -234,6 +240,12 @@ sub manage_selection { ); return if ($self->check_pools(snmp => $options{snmp}, type => 'ex', snmp_result => $snmp_result)); + $snmp_result = $options{snmp}->get_table( + oid => '.1.3.6.1.4.1.55062.2.10.7', # QuTS hero storagePoolTable + nothing_quit => 1 + ); + return if $self->check_pools(snmp => $options{snmp}, type => 'quts', snmp_result => $snmp_result, convert => 1); + $snmp_result = $options{snmp}->get_table( oid => '.1.3.6.1.4.1.24681.2.2.23', # es-SystemPoolTable nothing_quit => 1 diff --git a/src/storage/qnap/snmp/mode/volumes.pm b/src/storage/qnap/snmp/mode/volumes.pm index 0636846c8..9c898394d 100644 --- a/src/storage/qnap/snmp/mode/volumes.pm +++ b/src/storage/qnap/snmp/mode/volumes.pm @@ -178,6 +178,12 @@ my $mapping = { free => { oid => '.1.3.6.1.4.1.55062.1.10.9.1.4' }, # volumeFreeSize status => { oid => '.1.3.6.1.4.1.55062.1.10.9.1.5' }, # volumeStatus name => { oid => '.1.3.6.1.4.1.55062.1.10.9.1.8' } # volumeName + }, + quts => { + total => { oid => '.1.3.6.1.4.1.55062.2.10.9.1.3' }, # volumeCapacity + free => { oid => '.1.3.6.1.4.1.55062.2.10.9.1.4' }, # volumeFreeSize + status => { oid => '.1.3.6.1.4.1.55062.2.10.9.1.5' }, # volumeStatus + name => { oid => '.1.3.6.1.4.1.55062.2.10.9.1.2' } # volumeName } }; @@ -231,6 +237,11 @@ sub manage_selection { my $snmp_result; if (!defined($self->{option_results}->{force_counters_legacy})) { + $snmp_result = $options{snmp}->get_table( + oid => '.1.3.6.1.4.1.55062.2.10.9' # sharedFolderTable + ); + return if ($self->check_volumes(snmp => $options{snmp}, type => 'quts', snmp_result => $snmp_result)); + $snmp_result = $options{snmp}->get_table( oid => '.1.3.6.1.4.1.55062.1.10.9' # volumeTable ); diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 5b863375f..0f74fba7a 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -225,6 +225,7 @@ psu QoS Qtree queue-messages-inflighted +quts raidvolume ReplicaJobSession RestAPI diff --git a/tests/storage/qnap/snmp/hardware.robot b/tests/storage/qnap/snmp/hardware.robot new file mode 100644 index 000000000..61638b2ac --- /dev/null +++ b/tests/storage/qnap/snmp/hardware.robot @@ -0,0 +1,35 @@ +*** Settings *** + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} +... --plugin=storage::qnap::snmp::plugin +... --mode=hardware +... --hostname=${HOSTNAME} +... --snmp-port=${SNMPPORT} +... --snmp-community=storage/qnap/snmp/qnap + + +*** Test Cases *** +Hardware ${tc} + [Tags] storage qnap hardware + ${command} Catenate + ... ${CMD} + ... ${extra_options} + + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} CRITICAL: Raid 'Anonymized 241' status is Anonymized 197. UNKNOWN: Disk '7' - 'Anonymized 109' [Anonymized 058] status is Anonymized 095. - Disk '8' - 'Anonymized 206' [Anonymized 133] status is Anonymized 113. - Disk '9' - 'Anonymized 217' [Anonymized 072] status is Anonymized 004. - Disk '10' - 'Anonymized 174' [Anonymized 195] status is Anonymized 169. - Disk '11' - 'Anonymized 201' [Anonymized 184] status is Anonymized 133. - Disk '12' - 'Anonymized 181' [Anonymized 221] status is Anonymized 161. | '1#hardware.disk.temperature.celsius'=24C;;;; '2#hardware.disk.temperature.celsius'=24C;;;; '3#hardware.disk.temperature.celsius'=24C;;;; '4#hardware.disk.temperature.celsius'=24C;;;; '5#hardware.disk.temperature.celsius'=24C;;;; '6#hardware.disk.temperature.celsius'=24C;;;; '1#hardware.fan.speed.rpm'=6286rpm;;;0; '2#hardware.fan.speed.rpm'=6143rpm;;;0; '3#hardware.fan.speed.rpm'=6196rpm;;;0; '1#hardware.powersupply.fan.speed.rpm'=2040rpm;;;0; '1#hardware.powersupply.temperature.celsius'=27C;;;; '2#hardware.powersupply.fan.speed.rpm'=1980rpm;;;0; '2#hardware.powersupply.temperature.celsius'=28C;;;; '3#hardware.powersupply.fan.speed.rpm'=0rpm;;;0; '3#hardware.powersupply.temperature.celsius'=0C;;;; '4#hardware.powersupply.fan.speed.rpm'=0rpm;;;0; '4#hardware.powersupply.temperature.celsius'=0C;;;; 'hardware.disk.count'=6;;;; 'hardware.fan.count'=3;;;; 'hardware.psu.count'=4;;;; 'hardware.raid.count'=1;;;; + ... 2 --component='psu' OK: All 4 components are ok [4/4 psu]. | '1#hardware.powersupply.fan.speed.rpm'=2040rpm;;;0; '1#hardware.powersupply.temperature.celsius'=27C;;;; '2#hardware.powersupply.fan.speed.rpm'=1980rpm;;;0; '2#hardware.powersupply.temperature.celsius'=28C;;;; '3#hardware.powersupply.fan.speed.rpm'=0rpm;;;0; '3#hardware.powersupply.temperature.celsius'=0C;;;; '4#hardware.powersupply.fan.speed.rpm'=0rpm;;;0; '4#hardware.powersupply.temperature.celsius'=0C;;;; 'hardware.psu.count'=4;;;; + ... 3 --filter=psu CRITICAL: Raid 'Anonymized 241' status is Anonymized 197. UNKNOWN: Disk '7' - 'Anonymized 109' [Anonymized 058] status is Anonymized 095. - Disk '8' - 'Anonymized 206' [Anonymized 133] status is Anonymized 113. - Disk '9' - 'Anonymized 217' [Anonymized 072] status is Anonymized 004. - Disk '10' - 'Anonymized 174' [Anonymized 195] status is Anonymized 169. - Disk '11' - 'Anonymized 201' [Anonymized 184] status is Anonymized 133. - Disk '12' - 'Anonymized 181' [Anonymized 221] status is Anonymized 161. | '1#hardware.disk.temperature.celsius'=24C;;;; '2#hardware.disk.temperature.celsius'=24C;;;; '3#hardware.disk.temperature.celsius'=24C;;;; '4#hardware.disk.temperature.celsius'=24C;;;; '5#hardware.disk.temperature.celsius'=24C;;;; '6#hardware.disk.temperature.celsius'=24C;;;; '1#hardware.fan.speed.rpm'=6286rpm;;;0; '2#hardware.fan.speed.rpm'=6143rpm;;;0; '3#hardware.fan.speed.rpm'=6196rpm;;;0; 'hardware.disk.count'=6;;;; 'hardware.fan.count'=3;;;; 'hardware.raid.count'=1;;;; + ... 4 --absent-problem=Raid CRITICAL: Raid 'Anonymized 241' status is Anonymized 197. UNKNOWN: Disk '7' - 'Anonymized 109' [Anonymized 058] status is Anonymized 095. - Disk '8' - 'Anonymized 206' [Anonymized 133] status is Anonymized 113. - Disk '9' - 'Anonymized 217' [Anonymized 072] status is Anonymized 004. - Disk '10' - 'Anonymized 174' [Anonymized 195] status is Anonymized 169. - Disk '11' - 'Anonymized 201' [Anonymized 184] status is Anonymized 133. - Disk '12' - 'Anonymized 181' [Anonymized 221] status is Anonymized 161. | '1#hardware.disk.temperature.celsius'=24C;;;; '2#hardware.disk.temperature.celsius'=24C;;;; '3#hardware.disk.temperature.celsius'=24C;;;; '4#hardware.disk.temperature.celsius'=24C;;;; '5#hardware.disk.temperature.celsius'=24C;;;; '6#hardware.disk.temperature.celsius'=24C;;;; '1#hardware.fan.speed.rpm'=6286rpm;;;0; '2#hardware.fan.speed.rpm'=6143rpm;;;0; '3#hardware.fan.speed.rpm'=6196rpm;;;0; '1#hardware.powersupply.fan.speed.rpm'=2040rpm;;;0; '1#hardware.powersupply.temperature.celsius'=27C;;;; '2#hardware.powersupply.fan.speed.rpm'=1980rpm;;;0; '2#hardware.powersupply.temperature.celsius'=28C;;;; '3#hardware.powersupply.fan.speed.rpm'=0rpm;;;0; '3#hardware.powersupply.temperature.celsius'=0C;;;; '4#hardware.powersupply.fan.speed.rpm'=0rpm;;;0; '4#hardware.powersupply.temperature.celsius'=0C;;;; 'hardware.disk.count'=6;;;; 'hardware.fan.count'=3;;;; 'hardware.psu.count'=4;;;; 'hardware.raid.count'=1;;;; + ... 5 --no-component='UNKNOWN' --component='toto' UNKNOWN: Wrong option. Cannot find component 'toto'. + ... 6 --threshold-overload='fan,OK,^(?!(ready)$)' --component='fan' OK: All 3 components are ok [3/3 fans]. | '1#hardware.fan.speed.rpm'=6286rpm;;;0; '2#hardware.fan.speed.rpm'=6143rpm;;;0; '3#hardware.fan.speed.rpm'=6196rpm;;;0; 'hardware.fan.count'=3;;;; + ... 7 --warning='fan,.*,1500' --component='fan' WARNING: Fan '1' speed is 6286 rpm - Fan '2' speed is 6143 rpm - Fan '3' speed is 6196 rpm | '1#hardware.fan.speed.rpm'=6286rpm;;;0; '2#hardware.fan.speed.rpm'=6143rpm;;;0; '3#hardware.fan.speed.rpm'=6196rpm;;;0; 'hardware.fan.count'=3;;;; + ... 8 --critical='fan,.*,1500' --component='fan' CRITICAL: Fan '1' speed is 6286 rpm - Fan '2' speed is 6143 rpm - Fan '3' speed is 6196 rpm | '1#hardware.fan.speed.rpm'=6286rpm;;;0; '2#hardware.fan.speed.rpm'=6143rpm;;;0; '3#hardware.fan.speed.rpm'=6196rpm;;;0; 'hardware.fan.count'=3;;;; \ No newline at end of file diff --git a/tests/storage/qnap/snmp/pools.robot b/tests/storage/qnap/snmp/pools.robot new file mode 100644 index 000000000..459fb6d28 --- /dev/null +++ b/tests/storage/qnap/snmp/pools.robot @@ -0,0 +1,32 @@ +*** Settings *** + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} +... --plugin=storage::qnap::snmp::plugin +... --mode=pools +... --hostname=${HOSTNAME} +... --snmp-port=${SNMPPORT} +... --snmp-community=storage/qnap/snmp/qnap + + +*** Test Cases *** +Pools ${tc} + [Tags] storage qnap pools + ${command} Catenate + ... ${CMD} + ... ${extra_options} + + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} OK: pool '1' status: ready + ... 2 --filter-name=1 OK: pool '1' status: ready + ... 3 --unknown-pool-status='\\\%{status} eq "ready"' UNKNOWN: pool '1' status: ready + ... 4 --warning-pool-status='\\\%{status} eq "ready"' WARNING: pool '1' status: ready + ... 5 --critical-pool-status='\\\%{status} eq "ready"' CRITICAL: pool '1' status: ready \ No newline at end of file diff --git a/tests/storage/qnap/snmp/qnap.snmpwalk b/tests/storage/qnap/snmp/qnap.snmpwalk new file mode 100644 index 000000000..4f252afba --- /dev/null +++ b/tests/storage/qnap/snmp/qnap.snmpwalk @@ -0,0 +1,333 @@ +.1.3.6.1.4.1.24681.1.2.11.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.2.11.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.2.11.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.24681.1.2.11.1.1.4 = INTEGER: 4 +.1.3.6.1.4.1.24681.1.2.11.1.1.5 = INTEGER: 5 +.1.3.6.1.4.1.24681.1.2.11.1.1.6 = INTEGER: 6 +.1.3.6.1.4.1.24681.1.2.11.1.1.7 = INTEGER: 7 +.1.3.6.1.4.1.24681.1.2.11.1.1.8 = INTEGER: 8 +.1.3.6.1.4.1.24681.1.2.11.1.1.9 = INTEGER: 9 +.1.3.6.1.4.1.24681.1.2.11.1.1.10 = INTEGER: 10 +.1.3.6.1.4.1.24681.1.2.11.1.1.11 = INTEGER: 11 +.1.3.6.1.4.1.24681.1.2.11.1.1.12 = INTEGER: 12 +.1.3.6.1.4.1.24681.1.2.11.1.1.13 = INTEGER: 13 +.1.3.6.1.4.1.24681.1.2.11.1.1.14 = INTEGER: 14 +.1.3.6.1.4.1.24681.1.2.11.1.1.15 = INTEGER: 15 +.1.3.6.1.4.1.24681.1.2.11.1.1.16 = INTEGER: 16 +.1.3.6.1.4.1.24681.1.2.11.1.1.17 = INTEGER: 17 +.1.3.6.1.4.1.24681.1.2.11.1.1.18 = INTEGER: 18 +.1.3.6.1.4.1.24681.1.2.11.1.2.1 = STRING: Anonymized 066 +.1.3.6.1.4.1.24681.1.2.11.1.2.2 = STRING: Anonymized 125 +.1.3.6.1.4.1.24681.1.2.11.1.2.3 = STRING: Anonymized 022 +.1.3.6.1.4.1.24681.1.2.11.1.2.4 = STRING: Anonymized 130 +.1.3.6.1.4.1.24681.1.2.11.1.2.5 = STRING: Anonymized 051 +.1.3.6.1.4.1.24681.1.2.11.1.2.6 = STRING: Anonymized 175 +.1.3.6.1.4.1.24681.1.2.11.1.2.7 = STRING: Anonymized 210 +.1.3.6.1.4.1.24681.1.2.11.1.2.8 = STRING: Anonymized 173 +.1.3.6.1.4.1.24681.1.2.11.1.2.9 = STRING: Anonymized 097 +.1.3.6.1.4.1.24681.1.2.11.1.2.10 = STRING: Anonymized 015 +.1.3.6.1.4.1.24681.1.2.11.1.2.11 = STRING: Anonymized 022 +.1.3.6.1.4.1.24681.1.2.11.1.2.12 = STRING: Anonymized 182 +.1.3.6.1.4.1.24681.1.2.11.1.2.13 = STRING: Anonymized 183 +.1.3.6.1.4.1.24681.1.2.11.1.2.14 = STRING: Anonymized 248 +.1.3.6.1.4.1.24681.1.2.11.1.2.15 = STRING: Anonymized 220 +.1.3.6.1.4.1.24681.1.2.11.1.2.16 = STRING: Anonymized 074 +.1.3.6.1.4.1.24681.1.2.11.1.2.17 = STRING: Anonymized 131 +.1.3.6.1.4.1.24681.1.2.11.1.2.18 = STRING: Anonymized 223 +.1.3.6.1.4.1.24681.1.2.11.1.3.1 = STRING: Anonymized 045 +.1.3.6.1.4.1.24681.1.2.11.1.3.2 = STRING: Anonymized 069 +.1.3.6.1.4.1.24681.1.2.11.1.3.3 = STRING: Anonymized 170 +.1.3.6.1.4.1.24681.1.2.11.1.3.4 = STRING: Anonymized 098 +.1.3.6.1.4.1.24681.1.2.11.1.3.5 = STRING: Anonymized 201 +.1.3.6.1.4.1.24681.1.2.11.1.3.6 = STRING: Anonymized 206 +.1.3.6.1.4.1.24681.1.2.11.1.3.7 = STRING: Anonymized 000 +.1.3.6.1.4.1.24681.1.2.11.1.3.8 = STRING: Anonymized 229 +.1.3.6.1.4.1.24681.1.2.11.1.3.9 = STRING: Anonymized 174 +.1.3.6.1.4.1.24681.1.2.11.1.3.10 = STRING: Anonymized 021 +.1.3.6.1.4.1.24681.1.2.11.1.3.11 = STRING: Anonymized 068 +.1.3.6.1.4.1.24681.1.2.11.1.3.12 = STRING: Anonymized 025 +.1.3.6.1.4.1.24681.1.2.11.1.3.13 = STRING: Anonymized 010 +.1.3.6.1.4.1.24681.1.2.11.1.3.14 = STRING: Anonymized 095 +.1.3.6.1.4.1.24681.1.2.11.1.3.15 = STRING: Anonymized 147 +.1.3.6.1.4.1.24681.1.2.11.1.3.16 = STRING: Anonymized 136 +.1.3.6.1.4.1.24681.1.2.11.1.3.17 = STRING: Anonymized 215 +.1.3.6.1.4.1.24681.1.2.11.1.3.18 = STRING: Anonymized 222 +.1.3.6.1.4.1.24681.1.2.11.1.4.1 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.2 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.3 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.4 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.5 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.6 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.7 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.2.11.1.4.8 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.2.11.1.4.9 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.2.11.1.4.10 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.2.11.1.4.11 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.2.11.1.4.12 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.2.11.1.4.13 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.14 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.15 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.16 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.17 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.4.18 = INTEGER: -5 +.1.3.6.1.4.1.24681.1.2.11.1.5.1 = STRING: Anonymized 224 +.1.3.6.1.4.1.24681.1.2.11.1.5.2 = STRING: Anonymized 115 +.1.3.6.1.4.1.24681.1.2.11.1.5.3 = STRING: Anonymized 199 +.1.3.6.1.4.1.24681.1.2.11.1.5.4 = STRING: Anonymized 188 +.1.3.6.1.4.1.24681.1.2.11.1.5.5 = STRING: Anonymized 185 +.1.3.6.1.4.1.24681.1.2.11.1.5.6 = STRING: Anonymized 089 +.1.3.6.1.4.1.24681.1.2.11.1.5.7 = STRING: Anonymized 184 +.1.3.6.1.4.1.24681.1.2.11.1.5.8 = STRING: Anonymized 251 +.1.3.6.1.4.1.24681.1.2.11.1.5.9 = STRING: Anonymized 191 +.1.3.6.1.4.1.24681.1.2.11.1.5.10 = STRING: Anonymized 189 +.1.3.6.1.4.1.24681.1.2.11.1.5.11 = STRING: Anonymized 063 +.1.3.6.1.4.1.24681.1.2.11.1.5.12 = STRING: Anonymized 198 +.1.3.6.1.4.1.24681.1.2.11.1.5.13 = STRING: Anonymized 035 +.1.3.6.1.4.1.24681.1.2.11.1.5.14 = STRING: Anonymized 066 +.1.3.6.1.4.1.24681.1.2.11.1.5.15 = STRING: Anonymized 243 +.1.3.6.1.4.1.24681.1.2.11.1.5.16 = STRING: Anonymized 076 +.1.3.6.1.4.1.24681.1.2.11.1.5.17 = STRING: Anonymized 079 +.1.3.6.1.4.1.24681.1.2.11.1.5.18 = STRING: Anonymized 018 +.1.3.6.1.4.1.24681.1.2.11.1.6.1 = STRING: Anonymized 072 +.1.3.6.1.4.1.24681.1.2.11.1.6.2 = STRING: Anonymized 128 +.1.3.6.1.4.1.24681.1.2.11.1.6.3 = STRING: Anonymized 184 +.1.3.6.1.4.1.24681.1.2.11.1.6.4 = STRING: Anonymized 240 +.1.3.6.1.4.1.24681.1.2.11.1.6.5 = STRING: Anonymized 017 +.1.3.6.1.4.1.24681.1.2.11.1.6.6 = STRING: Anonymized 083 +.1.3.6.1.4.1.24681.1.2.11.1.6.7 = STRING: Anonymized 120 +.1.3.6.1.4.1.24681.1.2.11.1.6.8 = STRING: Anonymized 228 +.1.3.6.1.4.1.24681.1.2.11.1.6.9 = STRING: Anonymized 078 +.1.3.6.1.4.1.24681.1.2.11.1.6.10 = STRING: Anonymized 001 +.1.3.6.1.4.1.24681.1.2.11.1.6.11 = STRING: Anonymized 242 +.1.3.6.1.4.1.24681.1.2.11.1.6.12 = STRING: Anonymized 220 +.1.3.6.1.4.1.24681.1.2.11.1.6.13 = STRING: Anonymized 182 +.1.3.6.1.4.1.24681.1.2.11.1.6.14 = STRING: Anonymized 132 +.1.3.6.1.4.1.24681.1.2.11.1.6.15 = STRING: Anonymized 038 +.1.3.6.1.4.1.24681.1.2.11.1.6.16 = STRING: Anonymized 237 +.1.3.6.1.4.1.24681.1.2.11.1.6.17 = STRING: Anonymized 069 +.1.3.6.1.4.1.24681.1.2.11.1.6.18 = STRING: Anonymized 082 +.1.3.6.1.4.1.24681.1.2.11.1.7.1 = STRING: Anonymized 046 +.1.3.6.1.4.1.24681.1.2.11.1.7.2 = STRING: Anonymized 049 +.1.3.6.1.4.1.24681.1.2.11.1.7.3 = STRING: Anonymized 065 +.1.3.6.1.4.1.24681.1.2.11.1.7.4 = STRING: Anonymized 053 +.1.3.6.1.4.1.24681.1.2.11.1.7.5 = STRING: Anonymized 035 +.1.3.6.1.4.1.24681.1.2.11.1.7.6 = STRING: Anonymized 219 +.1.3.6.1.4.1.24681.1.2.11.1.7.7 = STRING: Anonymized 033 +.1.3.6.1.4.1.24681.1.2.11.1.7.8 = STRING: Anonymized 071 +.1.3.6.1.4.1.24681.1.2.11.1.7.9 = STRING: Anonymized 233 +.1.3.6.1.4.1.24681.1.2.11.1.7.10 = STRING: Anonymized 101 +.1.3.6.1.4.1.24681.1.2.11.1.7.11 = STRING: Anonymized 223 +.1.3.6.1.4.1.24681.1.2.11.1.7.12 = STRING: Anonymized 128 +.1.3.6.1.4.1.24681.1.2.11.1.7.13 = STRING: Anonymized 060 +.1.3.6.1.4.1.24681.1.2.11.1.7.14 = STRING: Anonymized 059 +.1.3.6.1.4.1.24681.1.2.11.1.7.15 = STRING: Anonymized 036 +.1.3.6.1.4.1.24681.1.2.11.1.7.16 = STRING: Anonymized 116 +.1.3.6.1.4.1.24681.1.2.11.1.7.17 = STRING: Anonymized 251 +.1.3.6.1.4.1.24681.1.2.11.1.7.18 = STRING: Anonymized 216 +.1.3.6.1.4.1.24681.1.2.15.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.2.15.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.2.15.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.24681.1.2.15.1.2.1 = STRING: Anonymized 205 +.1.3.6.1.4.1.24681.1.2.15.1.2.2 = STRING: Anonymized 110 +.1.3.6.1.4.1.24681.1.2.15.1.2.3 = STRING: Anonymized 191 +.1.3.6.1.4.1.24681.1.2.15.1.3.1 = STRING: Anonymized 029 +.1.3.6.1.4.1.24681.1.2.15.1.3.2 = STRING: Anonymized 039 +.1.3.6.1.4.1.24681.1.2.15.1.3.3 = STRING: Anonymized 129 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.2.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.2.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.2.3 = INTEGER: 3 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.3.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.3.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.3.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.5.1 = INTEGER: 6286 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.5.2 = INTEGER: 6143 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.5.3 = INTEGER: 6196 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.1.4 = INTEGER: 4 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.2.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.2.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.2.3 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.2.4 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.3.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.3.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.3.3 = INTEGER: 32 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.3.4 = INTEGER: 33 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.4.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.4.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.4.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.4.4 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.5.1 = INTEGER: 2040 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.5.2 = INTEGER: 1980 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.5.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.5.4 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.6.1 = INTEGER: 27 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.6.2 = INTEGER: 28 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.6.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.3.2.1.6.4 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.1.4 = INTEGER: 4 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.1.5 = INTEGER: 5 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.1.6 = INTEGER: 6 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2.1 = INTEGER: 7 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2.2 = INTEGER: 8 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2.3 = INTEGER: 9 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2.4 = INTEGER: 10 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2.5 = INTEGER: 11 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.2.6 = INTEGER: 12 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.3.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.3.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.3.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.3.4 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.3.5 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.3.6 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.4.1 = STRING: Anonymized 165 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.4.2 = STRING: Anonymized 124 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.4.3 = STRING: Anonymized 111 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.4.4 = STRING: Anonymized 012 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.4.5 = STRING: Anonymized 131 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.4.6 = STRING: Anonymized 109 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.4 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.5 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.6 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6.1 = INTEGER: 24 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6.2 = INTEGER: 24 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6.3 = INTEGER: 24 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6.4 = INTEGER: 24 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6.5 = INTEGER: 24 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.6.6 = INTEGER: 24 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.7.1 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.7.2 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.7.3 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.7.4 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.7.5 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.7.6 = INTEGER: 0 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.8.1 = STRING: Anonymized 162 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.8.2 = STRING: Anonymized 190 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.8.3 = STRING: Anonymized 060 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.8.4 = STRING: Anonymized 086 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.8.5 = STRING: Anonymized 042 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.8.6 = STRING: Anonymized 023 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.9.1 = Counter64: 4000787030016 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.9.2 = Counter64: 4000787030016 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.9.3 = Counter64: 4000787030016 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.9.4 = Counter64: 4000787030016 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.9.5 = Counter64: 4000787030016 +.1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.9.6 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.2.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.2.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.55062.2.10.2.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.55062.2.10.2.1.1.4 = INTEGER: 4 +.1.3.6.1.4.1.55062.2.10.2.1.1.5 = INTEGER: 5 +.1.3.6.1.4.1.55062.2.10.2.1.1.6 = INTEGER: 6 +.1.3.6.1.4.1.55062.2.10.2.1.2.1 = INTEGER: 7 +.1.3.6.1.4.1.55062.2.10.2.1.2.2 = INTEGER: 8 +.1.3.6.1.4.1.55062.2.10.2.1.2.3 = INTEGER: 9 +.1.3.6.1.4.1.55062.2.10.2.1.2.4 = INTEGER: 10 +.1.3.6.1.4.1.55062.2.10.2.1.2.5 = INTEGER: 11 +.1.3.6.1.4.1.55062.2.10.2.1.2.6 = INTEGER: 12 +.1.3.6.1.4.1.55062.2.10.2.1.3.1 = STRING: Anonymized 250 +.1.3.6.1.4.1.55062.2.10.2.1.3.2 = STRING: Anonymized 142 +.1.3.6.1.4.1.55062.2.10.2.1.3.3 = STRING: Anonymized 201 +.1.3.6.1.4.1.55062.2.10.2.1.3.4 = STRING: Anonymized 182 +.1.3.6.1.4.1.55062.2.10.2.1.3.5 = STRING: Anonymized 069 +.1.3.6.1.4.1.55062.2.10.2.1.3.6 = STRING: Anonymized 197 +.1.3.6.1.4.1.55062.2.10.2.1.4.1 = STRING: Anonymized 109 +.1.3.6.1.4.1.55062.2.10.2.1.4.2 = STRING: Anonymized 206 +.1.3.6.1.4.1.55062.2.10.2.1.4.3 = STRING: Anonymized 217 +.1.3.6.1.4.1.55062.2.10.2.1.4.4 = STRING: Anonymized 174 +.1.3.6.1.4.1.55062.2.10.2.1.4.5 = STRING: Anonymized 201 +.1.3.6.1.4.1.55062.2.10.2.1.4.6 = STRING: Anonymized 181 +.1.3.6.1.4.1.55062.2.10.2.1.5.1 = STRING: Anonymized 058 +.1.3.6.1.4.1.55062.2.10.2.1.5.2 = STRING: Anonymized 133 +.1.3.6.1.4.1.55062.2.10.2.1.5.3 = STRING: Anonymized 072 +.1.3.6.1.4.1.55062.2.10.2.1.5.4 = STRING: Anonymized 195 +.1.3.6.1.4.1.55062.2.10.2.1.5.5 = STRING: Anonymized 184 +.1.3.6.1.4.1.55062.2.10.2.1.5.6 = STRING: Anonymized 221 +.1.3.6.1.4.1.55062.2.10.2.1.6.1 = STRING: Anonymized 023 +.1.3.6.1.4.1.55062.2.10.2.1.6.2 = STRING: Anonymized 012 +.1.3.6.1.4.1.55062.2.10.2.1.6.3 = STRING: Anonymized 195 +.1.3.6.1.4.1.55062.2.10.2.1.6.4 = STRING: Anonymized 065 +.1.3.6.1.4.1.55062.2.10.2.1.6.5 = STRING: Anonymized 102 +.1.3.6.1.4.1.55062.2.10.2.1.6.6 = STRING: Anonymized 024 +.1.3.6.1.4.1.55062.2.10.2.1.7.1 = STRING: Anonymized 095 +.1.3.6.1.4.1.55062.2.10.2.1.7.2 = STRING: Anonymized 113 +.1.3.6.1.4.1.55062.2.10.2.1.7.3 = STRING: Anonymized 004 +.1.3.6.1.4.1.55062.2.10.2.1.7.4 = STRING: Anonymized 169 +.1.3.6.1.4.1.55062.2.10.2.1.7.5 = STRING: Anonymized 133 +.1.3.6.1.4.1.55062.2.10.2.1.7.6 = STRING: Anonymized 161 +.1.3.6.1.4.1.55062.2.10.2.1.8.1 = INTEGER: 24 +.1.3.6.1.4.1.55062.2.10.2.1.8.2 = INTEGER: 24 +.1.3.6.1.4.1.55062.2.10.2.1.8.3 = INTEGER: 24 +.1.3.6.1.4.1.55062.2.10.2.1.8.4 = INTEGER: 24 +.1.3.6.1.4.1.55062.2.10.2.1.8.5 = INTEGER: 24 +.1.3.6.1.4.1.55062.2.10.2.1.8.6 = INTEGER: 24 +.1.3.6.1.4.1.55062.2.10.2.1.9.1 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.2.1.9.2 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.2.1.9.3 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.2.1.9.4 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.2.1.9.5 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.2.1.9.6 = Counter64: 4000787030016 +.1.3.6.1.4.1.55062.2.10.5.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.5.1.2.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.5.1.3.1 = STRING: Anonymized 241 +.1.3.6.1.4.1.55062.2.10.5.1.4.1 = STRING: Anonymized 197 +.1.3.6.1.4.1.55062.2.10.5.1.5.1 = Counter64: 15502684454912 +.1.3.6.1.4.1.55062.2.10.5.1.6.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.5.1.7.1 = STRING: "6" +.1.3.6.1.4.1.55062.2.10.7.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.7.1.2.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.7.1.3.1 = Counter64: 15393162788864 +.1.3.6.1.4.1.55062.2.10.7.1.4.1 = Counter64: 11675469464832 +.1.3.6.1.4.1.55062.2.10.7.1.5.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.1.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.9.1.1.2 = INTEGER: 2 +.1.3.6.1.4.1.55062.2.10.9.1.1.3 = INTEGER: 3 +.1.3.6.1.4.1.55062.2.10.9.1.2.1 = STRING: Anonymized 227 +.1.3.6.1.4.1.55062.2.10.9.1.2.2 = STRING: Anonymized 180 +.1.3.6.1.4.1.55062.2.10.9.1.2.3 = STRING: Anonymized 004 +.1.3.6.1.4.1.55062.2.10.9.1.3.1 = Counter64: 15333033246720 +.1.3.6.1.4.1.55062.2.10.9.1.3.2 = Counter64: 15173260463104 +.1.3.6.1.4.1.55062.2.10.9.1.3.3 = Counter64: 15173260463104 +.1.3.6.1.4.1.55062.2.10.9.1.4.1 = Counter64: 15333032787968 +.1.3.6.1.4.1.55062.2.10.9.1.4.2 = Counter64: 11670260403200 +.1.3.6.1.4.1.55062.2.10.9.1.4.3 = Counter64: 15173260246016 +.1.3.6.1.4.1.55062.2.10.9.1.5.1 = STRING: Anonymized 103 +.1.3.6.1.4.1.55062.2.10.9.1.5.2 = STRING: Anonymized 185 +.1.3.6.1.4.1.55062.2.10.9.1.5.3 = STRING: Anonymized 145 +.1.3.6.1.4.1.55062.2.10.9.1.6.1 = STRING: Anonymized 176 +.1.3.6.1.4.1.55062.2.10.9.1.6.2 = STRING: Anonymized 163 +.1.3.6.1.4.1.55062.2.10.9.1.6.3 = STRING: Anonymized 004 +.1.3.6.1.4.1.55062.2.10.9.1.7.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.7.2 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.7.3 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.8.1 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.9.1.8.2 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.9.1.8.3 = INTEGER: 1 +.1.3.6.1.4.1.55062.2.10.9.1.9.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.9.2 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.9.3 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.10.1 = STRING: Anonymized 252 +.1.3.6.1.4.1.55062.2.10.9.1.10.2 = STRING: Anonymized 056 +.1.3.6.1.4.1.55062.2.10.9.1.10.3 = STRING: Anonymized 182 +.1.3.6.1.4.1.55062.2.10.9.1.11.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.11.2 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.11.3 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.12.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.12.2 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.12.3 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.13.1 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.13.2 = INTEGER: 0 +.1.3.6.1.4.1.55062.2.10.9.1.13.3 = INTEGER: 0 diff --git a/tests/storage/qnap/snmp/volumes.robot b/tests/storage/qnap/snmp/volumes.robot new file mode 100644 index 000000000..b58b33f6f --- /dev/null +++ b/tests/storage/qnap/snmp/volumes.robot @@ -0,0 +1,32 @@ +*** Settings *** + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} +... --plugin=storage::qnap::snmp::plugin +... --mode=volumes +... --hostname=${HOSTNAME} +... --snmp-port=${SNMPPORT} +... --snmp-community=storage/qnap/snmp/qnap + + +*** Test Cases *** +volumes ${tc} + [Tags] storage qnap volumes + ${command} Catenate + ... ${CMD} + ... ${extra_options} + + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} OK: All volumes are ok + ... 2 --filter-name="Anonymized 227" --verbose OK: volume 'Anonymized 227' status: Anonymized 103 checking volume 'Anonymized 227' status: Anonymized 103 + ... 3 --unknown-volume-status='\\\%{status} eq "Anonymized 145"' UNKNOWN: volume 'Anonymized 004' status: Anonymized 145 + ... 4 --warning-volume-status='\\\%{status} eq "Anonymized 185"' WARNING: volume 'Anonymized 180' status: Anonymized 185 + ... 5 --critical-volume-status='\\\%{status} eq "Anonymized 103"' CRITICAL: volume 'Anonymized 227' status: Anonymized 103 \ No newline at end of file