mirror of
https://github.com/centreon/centreon-plugins.git
synced 2025-09-25 18:58:39 +02:00
Release 20250300 (#5491)
This commit is contained in:
commit
0634714531
141
.github/actions/test-cpan-libs/action.yml
vendored
Normal file
141
.github/actions/test-cpan-libs/action.yml
vendored
Normal file
@ -0,0 +1,141 @@
|
||||
name: "test-cpan-libs"
|
||||
description: "Test packaged CPAN libraries"
|
||||
inputs:
|
||||
package_extension:
|
||||
description: "The package extension (deb or rpm)"
|
||||
required: true
|
||||
distrib:
|
||||
description: "The distribution name"
|
||||
required: true
|
||||
arch:
|
||||
description: "The architecture (amd64 or arm64)"
|
||||
required: true
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
|
||||
- if: ${{ inputs.package_extension == 'rpm' }}
|
||||
name: Install zstd, perl and Centreon repositories
|
||||
run: |
|
||||
dnf install -y zstd perl epel-release 'dnf-command(config-manager)' perl-App-cpanminus
|
||||
dnf config-manager --set-enabled powertools || true # alma 8
|
||||
dnf config-manager --set-enabled crb || true # alma 9
|
||||
# Import Centreon GPG key
|
||||
GPG_KEY_URL="https://yum-gpg.centreon.com/RPM-GPG-KEY-CES"
|
||||
curl -sSL $GPG_KEY_URL -o RPM-GPG-KEY-CES
|
||||
rpm --import RPM-GPG-KEY-CES
|
||||
shell: bash
|
||||
|
||||
- if: ${{ inputs.package_extension == 'deb' }}
|
||||
name: Install zstd, perl and Centreon repositories
|
||||
run: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y zstd perl wget gpg apt-utils procps build-essential cpanminus
|
||||
wget -O- https://apt-key.centreon.com | gpg --dearmor | tee /etc/apt/trusted.gpg.d/centreon.gpg > /dev/null 2>&1
|
||||
# Avoid apt to clean packages cache directory
|
||||
rm -f /etc/apt/apt.conf.d/docker-clean
|
||||
apt-get update
|
||||
shell: bash
|
||||
|
||||
- name: Restore packages from cache
|
||||
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
|
||||
with:
|
||||
path: ./*.${{ inputs.package_extension }}
|
||||
key: ${{ github.sha }}-${{ github.run_id }}-${{ inputs.package_extension }}-${{ inputs.distrib }}
|
||||
fail-on-cache-miss: true
|
||||
|
||||
- if: ${{ inputs.package_extension == 'rpm' }}
|
||||
name: Check packages installation / uninstallation
|
||||
run: |
|
||||
error_log="install_error_${{ inputs.distrib }}_${{ inputs.arch }}.log"
|
||||
for package in ./*.rpm; do
|
||||
echo "Installing package: $package"
|
||||
# List dependencies, and remove version and comparison operators
|
||||
dependencies=$(rpm -qpR $package | sed 's/ [0-9.-]*\(\s\|$\)/ /g' | sed 's/ [<>!=]*\(\s\|$\)/ /g')
|
||||
for dependency in $dependencies; do
|
||||
# Skip non-perl dependencies
|
||||
if [[ $dependency != perl* ]]; then
|
||||
continue
|
||||
else
|
||||
echo "Check dependency: $dependency"
|
||||
# Update the dependency name to match the package name
|
||||
dependency=$(echo $dependency | sed 's/(/-/g' | sed 's/)//g' | sed 's/::/-/g')
|
||||
fi
|
||||
# If the dependency has been built in the same workflow, install it
|
||||
if [[ -n $(find . -maxdepth 1 -regex "\.\/$dependency-[0-9v].*\.rpm") ]]; then
|
||||
echo "Installing dependency: $dependency"
|
||||
error_output=$(dnf install -y ./$dependency*.rpm 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the dependency $dependency" >> $error_log; true; }
|
||||
fi
|
||||
done
|
||||
# Install package, then uninstall it with all his dependencies
|
||||
echo "Package installation..."
|
||||
error_output=$(dnf install -y $package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the package $package" >> $error_log; true; }
|
||||
echo "Package installation done."
|
||||
script_name=$(echo $package | tr '[:upper:]' '[:lower:]' | sed 's/\.\/perl-//' | sed 's/-[0-9\.-]*.el[0-9]..*.rpm//')
|
||||
if [[ -f ./tests/cpan-libraries/$script_name.pl ]]; then
|
||||
echo "Testing package..."
|
||||
error_output=$(perl tests/cpan-libraries/$script_name.pl 2>&1) || { echo "$error_output" >> $error_log; echo "Error during the usage test of the package $package" >> $error_log; true; }
|
||||
echo "Testing done."
|
||||
else
|
||||
echo "No test script found for the package $package"
|
||||
fi
|
||||
echo "Package uninstallation..."
|
||||
error_output=$(dnf autoremove --setopt=keepcache=True -y $(echo $package | sed 's/_[0-9].*\.rpm//' | sed 's/.\///') 2>&1) || { echo "$error_output" >> $error_log; echo "Error during autoremove of the package $package" >> $error_log; true; }
|
||||
echo "Package uninstallation done."
|
||||
done
|
||||
# If the file error_log exists and is not empty, the workflow is in error
|
||||
if [[ -s $error_log ]]; then
|
||||
cat $error_log
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
- if: ${{ inputs.package_extension == 'deb' }}
|
||||
name: Check packages installation / uninstallation
|
||||
run: |
|
||||
error_log="install_error_${{ inputs.distrib }}_${{ inputs.arch }}.log"
|
||||
for package in ./*.deb; do
|
||||
# If the debian package name ends with amd64 or arm64, we only install it if the tested architecture is the same, otherwise we skip it
|
||||
if [[ $package == *amd64.deb && ${{ inputs.arch }} != "amd64" || $package == *arm64.deb && ${{ inputs.arch }} != "arm64" ]]; then
|
||||
continue
|
||||
fi
|
||||
echo "Installing package: $package"
|
||||
# List dependencies
|
||||
dependencies=$(dpkg-deb -I $package | grep Depends | sed 's/Depends: //' | sed 's/,//g' | sed 's/(\(.*\)//g') || { echo "$error_output" >> $error_log; echo "Error while listing dependencies of the package $package" >> $error_log; true; }
|
||||
for dependency in $dependencies; do
|
||||
# If the dependency exists in the Debian repository, don't check the local dependencies
|
||||
dependency_info=$(apt-cache policy $dependency)
|
||||
if [[ -n $dependency_info ]]; then
|
||||
echo "Dependency $dependency exists in debian repository."
|
||||
else
|
||||
# If the dependency has been built in the same workflow, install it
|
||||
for dependency_package in $(find . -maxdepth 1 -regex "\.\/${dependency}_[0-9].*all\.deb" -o -regex "\.\/${dependency}_[0-9].*${{ inputs.arch }}\.deb"); do
|
||||
echo "Installing dependency: $dependency_package"
|
||||
error_output=$(apt-get install -y ./$dependency_package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the dependency $dependency" >> $error_log; true; }
|
||||
done
|
||||
fi
|
||||
done
|
||||
# Install package, then uninstall it with all his dependencies
|
||||
echo "Package installation..."
|
||||
error_output=$(apt-get install -y $package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the package $package" >> $error_log; true; }
|
||||
echo "Package installation done."
|
||||
script_name=$(echo $package | sed 's/.\/lib//' | sed 's/-perl_[0-9\.-]*-deb.*\.deb//')
|
||||
if [[ -f ./tests/cpan-libraries/$script_name.pl ]]; then
|
||||
echo "Testing package..."
|
||||
error_output=$(perl tests/cpan-libraries/$script_name.pl 2>&1) || { echo "$error_output" >> $error_log; echo "Error during the usage test of the package $package" >> $error_log; true; }
|
||||
echo "Testing done."
|
||||
else
|
||||
echo "No test script found for the package $package"
|
||||
fi
|
||||
echo "Package uninstallation..."
|
||||
error_output=$(apt-get autoremove -y --purge $(echo $package | sed 's/_[0-9].*\.deb//' | sed 's/.\///') 2>&1) || { echo "$error_output" >> $error_log; echo "Error during autoremove of the package $package" >> $error_log; true; }
|
||||
echo "Package uninstallation done."
|
||||
done
|
||||
# If the file error_log exists and is not empty, the workflow is in error
|
||||
if [[ -s $error_log ]]; then
|
||||
cat $error_log
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@ -4,7 +4,7 @@ updates:
|
||||
directory: '/'
|
||||
schedule:
|
||||
interval: monthly
|
||||
open-pull-requests-limit: 10
|
||||
open-pull-requests-limit: 50
|
||||
labels:
|
||||
- 'dependencies'
|
||||
- 'gha'
|
||||
|
@ -6,9 +6,9 @@ RUN bash -e <<EOF
|
||||
|
||||
dnf install -y \
|
||||
git \
|
||||
java-17-openjdk-devel \
|
||||
wget \
|
||||
zstd \
|
||||
java-17-openjdk-devel
|
||||
zstd
|
||||
|
||||
cd /usr/local/src
|
||||
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
|
||||
|
@ -6,9 +6,9 @@ RUN bash -e <<EOF
|
||||
|
||||
dnf install -y \
|
||||
git \
|
||||
java-17-openjdk-devel \
|
||||
wget \
|
||||
zstd \
|
||||
java-17-openjdk-devel
|
||||
zstd
|
||||
|
||||
cd /usr/local/src
|
||||
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
|
||||
|
@ -8,9 +8,9 @@ apt-get update
|
||||
apt-get install -y \
|
||||
ca-certificates \
|
||||
git \
|
||||
zstd \
|
||||
maven=3.8.7-1 \
|
||||
openjdk-17-jdk
|
||||
openjdk-17-jdk \
|
||||
zstd
|
||||
|
||||
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list
|
||||
|
||||
|
@ -8,9 +8,9 @@ apt-get update
|
||||
apt-get install -y \
|
||||
ca-certificates \
|
||||
git \
|
||||
zstd \
|
||||
maven=3.6.3-5 \
|
||||
openjdk-17-jdk
|
||||
openjdk-17-jdk \
|
||||
zstd
|
||||
|
||||
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list
|
||||
|
||||
|
@ -8,9 +8,9 @@ apt-get update
|
||||
apt-get install -y \
|
||||
ca-certificates \
|
||||
git \
|
||||
openjdk-17-jdk \
|
||||
wget \
|
||||
zstd \
|
||||
openjdk-17-jdk
|
||||
zstd
|
||||
|
||||
cd /usr/local/src
|
||||
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
|
||||
|
4
.github/workflows/actionlint.yml
vendored
4
.github/workflows/actionlint.yml
vendored
@ -29,8 +29,8 @@ jobs:
|
||||
- name: Check workflow files
|
||||
run: |
|
||||
${{ steps.get_actionlint.outputs.executable }} \
|
||||
-ignore 'label "common" is unknown' \
|
||||
-ignore 'label "veracode" is unknown' \
|
||||
-ignore 'label "centreon-common" is unknown' \
|
||||
-ignore 'label "centreon-collect-arm64" is unknown' \
|
||||
-ignore '"github.head_ref" is potentially untrusted' \
|
||||
-shellcheck= \
|
||||
-pyflakes= \
|
||||
|
2
.github/workflows/as400.yml
vendored
2
.github/workflows/as400.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
||||
get-environment:
|
||||
uses: ./.github/workflows/get-environment.yml
|
||||
with:
|
||||
version_file: as400/packaging/centreon-as400-daemon.yaml
|
||||
version_file: as400/connector.as400/pom.xml
|
||||
|
||||
package:
|
||||
needs: [get-environment]
|
||||
|
@ -45,7 +45,7 @@ jobs:
|
||||
- runner: ubuntu-22.04
|
||||
dockerfile: packaging-plugins-bullseye
|
||||
image: packaging-plugins-bullseye
|
||||
- runner: ["self-hosted", "collect-arm64"]
|
||||
- runner: centreon-collect-arm64
|
||||
dockerfile: packaging-plugins-bullseye
|
||||
image: packaging-plugins-bullseye-arm64
|
||||
- runner: ubuntu-22.04
|
||||
@ -86,7 +86,7 @@ jobs:
|
||||
|
||||
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
||||
|
||||
- uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0
|
||||
- uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
||||
with:
|
||||
file: .github/docker/packaging/Dockerfile.${{ matrix.dockerfile }}
|
||||
context: .
|
||||
|
@ -39,7 +39,7 @@ jobs:
|
||||
- runner: ubuntu-24.04
|
||||
dockerfile: bullseye
|
||||
image: bullseye
|
||||
- runner: ["self-hosted", "collect-arm64"]
|
||||
- runner: centreon-collect-arm64
|
||||
dockerfile: bullseye
|
||||
image: bullseye-arm64
|
||||
- runner: ubuntu-24.04
|
||||
@ -71,7 +71,7 @@ jobs:
|
||||
|
||||
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
||||
|
||||
- uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0
|
||||
- uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
||||
with:
|
||||
file: .github/docker/testing/Dockerfile.testing-plugins-${{ matrix.dockerfile }}
|
||||
context: .
|
||||
|
@ -39,7 +39,7 @@ jobs:
|
||||
- runner: ubuntu-22.04
|
||||
dockerfile: bullseye
|
||||
image: bullseye
|
||||
- runner: ["self-hosted", "collect-arm64"]
|
||||
- runner: centreon-collect-arm64
|
||||
dockerfile: bullseye
|
||||
image: bullseye-arm64
|
||||
- runner: ubuntu-22.04
|
||||
@ -71,7 +71,7 @@ jobs:
|
||||
|
||||
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0
|
||||
|
||||
- uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0
|
||||
- uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
|
||||
with:
|
||||
file: .github/docker/unit-tests/Dockerfile.unit-tests-${{ matrix.dockerfile }}
|
||||
context: .
|
||||
|
8
.github/workflows/get-environment.yml
vendored
8
.github/workflows/get-environment.yml
vendored
@ -134,7 +134,7 @@ jobs:
|
||||
- if: ${{ steps.has_skip_label.outputs.result == 'true' }}
|
||||
name: Get push changes
|
||||
id: get_push_changes
|
||||
uses: tj-actions/changed-files@bab30c2299617f6615ec02a68b9a40d10bd21366 # v45.0.5
|
||||
uses: tj-actions/changed-files@d6e91a2266cdb9d62096cebf1e8546899c6aa18f # v45.0.6
|
||||
with:
|
||||
since_last_remote_commit: true
|
||||
json: true
|
||||
@ -249,9 +249,11 @@ jobs:
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
script: |
|
||||
const { execSync } = require('child_process');
|
||||
let version = '';
|
||||
|
||||
if ('${{ steps.get_stability.outputs.stability }}' === 'testing') {
|
||||
if ('${{ inputs.version_file }}'.match(/pom\.xml$/)) {
|
||||
version = execSync(`grep -m 1 "<version>.*</version>" ${{ inputs.version_file }} | sed 's/.*<version>\\(.*\\)<\\/version>.*/\\1/'`).toString().trim();
|
||||
} else if ('${{ steps.get_stability.outputs.stability }}' === 'testing') {
|
||||
const branchName = "${{ github.head_ref || github.ref_name }}";
|
||||
const matches = branchName.match(/^(?:release|hotfix)-(\d{8})$/);
|
||||
if (matches) {
|
||||
|
208
.github/workflows/perl-cpan-libraries.yml
vendored
208
.github/workflows/perl-cpan-libraries.yml
vendored
@ -43,6 +43,7 @@ jobs:
|
||||
"Config::AWS",
|
||||
"Convert::Binary::C",
|
||||
"Convert::EBCDIC",
|
||||
"Crypt::Argon2",
|
||||
"Crypt::Blowfish_PP",
|
||||
"Crypt::OpenSSL::AES",
|
||||
"DataStruct::Flat",
|
||||
@ -52,15 +53,20 @@ jobs:
|
||||
"Device::Modbus::RTU::Client",
|
||||
"Device::Modbus::TCP::Client",
|
||||
"Email::Send::SMTP::Gmail",
|
||||
"Exporter::Tiny", # Required by JSON::Path: the version available in the official repositories doesn't work with the last version of JSON::Path
|
||||
"FFI::CheckLib",
|
||||
"FFI::Platypus",
|
||||
"File::SearchPath",
|
||||
"HTTP::ProxyPAC",
|
||||
"JMX::Jmx4Perl",
|
||||
"JSON::Path",
|
||||
"Libssh::Session",
|
||||
"LV",
|
||||
"Mojo::IOLoop::Signal",
|
||||
"MongoDB",
|
||||
"MooseX::ClassAttribute",
|
||||
"Net::Amazon::Signature::V4",
|
||||
"Net::Curl",
|
||||
"Net::DHCP",
|
||||
"Net::FTPSSL",
|
||||
"Net::HTTPTunnel",
|
||||
@ -93,6 +99,7 @@ jobs:
|
||||
- version: ""
|
||||
- spec_file: ""
|
||||
- no-auto-depends: "false"
|
||||
- preinstall_cpanlibs: ""
|
||||
- distrib: el8
|
||||
package_extension: rpm
|
||||
image: packaging-plugins-alma8
|
||||
@ -101,6 +108,8 @@ jobs:
|
||||
image: packaging-plugins-alma9
|
||||
- name: "BSON"
|
||||
rpm_provides: "perl(BSON::Bytes) perl(BSON::Code) perl(BSON::DBRef) perl(BSON::OID) perl(BSON::Raw) perl(BSON::Regex) perl(BSON::Time) perl(BSON::Timestamp) perl(BSON::Types) perl(BSON)"
|
||||
- name: "Crypt::Argon2"
|
||||
preinstall_cpanlibs: "Dist::Build"
|
||||
- name: "DateTime::Format::Duration::ISO8601"
|
||||
rpm_provides: "perl(DateTime-Format-Duration-ISO8601)"
|
||||
- name: "Device::Modbus::RTU::Client"
|
||||
@ -113,10 +122,14 @@ jobs:
|
||||
rpm_provides: "perl(FFI::Platypus::Buffer) perl(FFI::Platypus::Memory)"
|
||||
rpm_dependencies: "perl(Capture::Tiny) perl(FFI::CheckLib) perl(File::Spec::Functions) perl(IPC::Cmd) perl(JSON::PP) perl(List::Util) perl(autodie) perl(constant) perl(parent)"
|
||||
no-auto-depends: "true"
|
||||
- name: "Libssh::Session"
|
||||
rpm_dependencies: "libssh"
|
||||
- name: "Mojo::IOLoop::Signal"
|
||||
rpm_dependencies: "perl-Mojolicious"
|
||||
rpm_provides: "perl(Mojo::IOLoop::Signal)"
|
||||
no-auto-depends: "true"
|
||||
- name: "Net::Curl"
|
||||
rpm_dependencies: "libcurl"
|
||||
- name: "Net::DHCP"
|
||||
rpm_provides: "perl(Net::DHCP::Constants) perl(Net::DHCP::Packet)"
|
||||
- name: "Net::SMTPS"
|
||||
@ -146,7 +159,28 @@ jobs:
|
||||
|
||||
steps:
|
||||
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }}
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }}
|
||||
name: Get package infos
|
||||
id: package-infos
|
||||
run: |
|
||||
cpan_info=$(cpanm --info ${{ matrix.name }})
|
||||
if [ -z "${{ matrix.version }}" ]; then
|
||||
CPAN_PACKAGE_VERSION=$(echo $cpan_info | sed 's/\.tar\.gz$//' | sed 's/.*\-//')
|
||||
if [[ ! $CPAN_PACKAGE_VERSION =~ ^[v0-9]+\.[0-9]+ ]]; then
|
||||
echo "::error::Invalid version number: ${CPAN_PACKAGE_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
PACKAGE_VERSION="${CPAN_PACKAGE_VERSION}"
|
||||
else
|
||||
PACKAGE_VERSION="${{ matrix.version }}"
|
||||
fi
|
||||
echo "package_version=$(echo $PACKAGE_VERSION)" >> $GITHUB_OUTPUT
|
||||
CPAN_PACKAGE_NAME=$(echo $cpan_info | sed 's/.*\///g' | sed 's/-[0-9\.]*\.tar\.gz//g')
|
||||
PACKAGE_NAME="perl-$CPAN_PACKAGE_NAME"
|
||||
echo "package_name=$(echo $PACKAGE_NAME)" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
|
||||
- if: ${{ contains(matrix.build_distribs, matrix.distrib) }}
|
||||
name: Check if package already exists
|
||||
@ -155,8 +189,8 @@ jobs:
|
||||
package_info=$(dnf provides 'perl(${{ matrix.name }})' 2>&1 | tr '[:upper:]' '[:lower:]' || true)
|
||||
do_not_build="false"
|
||||
if [[ ! $package_info =~ "no matches found" ]]; then
|
||||
package_version=$(echo $package_info | grep -oP 'perl\(${{ matrix.name }}\) = \K[0-9]+\.[0-9]+')
|
||||
if [[ -z "${{ matrix.version }}" || "$package_version" == "${{ matrix.version }}" ]]; then
|
||||
package_version=$(echo $package_info | grep -oP "perl\($(echo ${{ matrix.name }} | tr '[:upper:]' '[:lower:]')\) = \K[0-9]+\.[0-9]+")
|
||||
if [[ "$package_version" == "${{ steps.package-infos.outputs.package_version }}" || "v$package_version" == "${{ steps.package-infos.outputs.package_version }}" ]]; then
|
||||
echo "::warning::Package ${{ matrix.name }} already exists in the official ${{ matrix.distrib }} repository with the same version."
|
||||
do_not_build="true"
|
||||
else
|
||||
@ -169,11 +203,7 @@ jobs:
|
||||
|
||||
- if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_distribs, matrix.distrib) && matrix.spec_file == '' }}
|
||||
run: |
|
||||
if [ -z "${{ matrix.version }}" ]; then
|
||||
PACKAGE_VERSION=""
|
||||
else
|
||||
PACKAGE_VERSION=" -v ${{ matrix.version }}"
|
||||
fi
|
||||
PACKAGE_VERSION=" -v ${{ steps.package-infos.outputs.package_version }}"
|
||||
|
||||
if [ -z "${{ matrix.rpm_dependencies }}" ]; then
|
||||
PACKAGE_DEPENDENCIES=""
|
||||
@ -195,9 +225,14 @@ jobs:
|
||||
done
|
||||
fi
|
||||
|
||||
for CPANLIB_PREINSTALL in `echo "${{ matrix.preinstall_cpanlibs }}"`; do
|
||||
cpanm $CPANLIB_PREINSTALL
|
||||
done
|
||||
|
||||
export SYBASE="/usr"
|
||||
|
||||
temp_file=$(mktemp)
|
||||
echo "default.local" | tee /etc/mailname
|
||||
created_package=$(fpm -s cpan -t ${{ matrix.package_extension }} --rpm-dist ${{ matrix.distrib }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES$PACKAGE_PROVIDES$PACKAGE_VERSION ${{ matrix.name }} | tee "$temp_file" | grep "Created package" | grep -oP '(?<=:path=>").*?(?=")')
|
||||
# Check package name
|
||||
if [ -z "$created_package" ]; then
|
||||
@ -281,7 +316,7 @@ jobs:
|
||||
- run: apt-get install -y zstd
|
||||
shell: bash
|
||||
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||
with:
|
||||
@ -315,6 +350,7 @@ jobs:
|
||||
"ARGV::Struct",
|
||||
"Config::AWS",
|
||||
"Convert::EBCDIC",
|
||||
"Crypt::Argon2",
|
||||
"Crypt::Blowfish_PP",
|
||||
"Crypt::OpenSSL::AES",
|
||||
"DataStruct::Flat",
|
||||
@ -327,8 +363,10 @@ jobs:
|
||||
"Hash::Ordered",
|
||||
"HTTP::ProxyPAC",
|
||||
"JMX::Jmx4Perl",
|
||||
"Libssh::Session",
|
||||
"Mojo::IOLoop::Signal",
|
||||
"Net::Amazon::Signature::V4",
|
||||
"Net::Curl",
|
||||
"Net::FTPSSL",
|
||||
"Net::HTTPTunnel",
|
||||
"Net::MQTT::Simple",
|
||||
@ -346,6 +384,8 @@ jobs:
|
||||
- rpm_provides: ""
|
||||
- version: ""
|
||||
- use_dh_make_perl: "true"
|
||||
- no-auto-depends: "false"
|
||||
- preinstall_cpanlibs: ""
|
||||
- build_name: bullseye-amd64
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
@ -363,7 +403,13 @@ jobs:
|
||||
package_extension: deb
|
||||
image: packaging-plugins-bullseye-arm64
|
||||
arch: arm64
|
||||
runner_name: ["self-hosted", "collect-arm64"]
|
||||
runner_name: centreon-collect-arm64
|
||||
- name: "Crypt::Argon2"
|
||||
build_names: "bullseye-amd64,jammy,bullseye-arm64"
|
||||
preinstall_cpanlibs: "Dist::Build"
|
||||
use_dh_make_perl: "false"
|
||||
no-auto-depends: "true"
|
||||
deb_dependencies: "libexporter-tiny-perl libtime-hires-perl libxsloader-perl"
|
||||
- name: "Crypt::OpenSSL::AES"
|
||||
use_dh_make_perl: "false"
|
||||
deb_dependencies: "libexporter-tiny-perl libxs-install-perl"
|
||||
@ -375,8 +421,18 @@ jobs:
|
||||
build_names: "bookworm"
|
||||
- name: "Digest::SHA1"
|
||||
build_names: "jammy"
|
||||
- name: "Libssh::Session"
|
||||
use_dh_make_perl: "false"
|
||||
build_names: "bullseye-amd64,bookworm,jammy,bullseye-arm64"
|
||||
no-auto-depends: "true"
|
||||
deb_dependencies: "libcarp-assert-perl libdynaloader-functions-perl libexporter-tiny-perl libdevel-overloadinfo-perl libssh-4 libc6"
|
||||
- name: "Net::Amazon::Signature::V4"
|
||||
build_names: ["bullseye-amd64", "jammy"]
|
||||
- name: "Net::Curl"
|
||||
use_dh_make_perl: "false"
|
||||
build_names: "bullseye-amd64,bookworm,jammy,bullseye-arm64"
|
||||
no-auto-depends: "true"
|
||||
deb_dependencies: "libcarp-assert-perl libdynaloader-functions-perl libexporter-tiny-perl libdevel-overloadinfo-perl libcurl4"
|
||||
- name: "Net::MQTT::Simple"
|
||||
version: "1.29"
|
||||
- name: "Paws"
|
||||
@ -400,7 +456,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- if: ${{ contains(matrix.build_names, matrix.build_name) }}
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- if: ${{ contains(matrix.build_names, matrix.build_name) }}
|
||||
name: Parse distrib name
|
||||
@ -416,8 +472,8 @@ jobs:
|
||||
apt-get update
|
||||
cpan_info=$(cpanm --info ${{ matrix.name }})
|
||||
if [ -z "${{ matrix.version }}" ]; then
|
||||
CPAN_PACKAGE_VERSION=$(echo $cpan_info | sed 's/\.tar\.gz$//' | sed 's/.*\-//' | sed 's/v//')
|
||||
if [[ ! $CPAN_PACKAGE_VERSION =~ ^[0-9]+\.[0-9]+ ]]; then
|
||||
CPAN_PACKAGE_VERSION=$(echo $cpan_info | sed 's/\.tar\.gz$//' | sed 's/.*\-//')
|
||||
if [[ ! $CPAN_PACKAGE_VERSION =~ ^[v0-9]+\.[0-9]+ ]]; then
|
||||
echo "::error::Invalid version number: ${CPAN_PACKAGE_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
@ -442,7 +498,7 @@ jobs:
|
||||
do_not_build="false"
|
||||
if [[ -n $package_info ]]; then
|
||||
candidate_version=$(echo "$package_info" | grep 'Candidate:' | awk '{print $2}')
|
||||
if [[ "$candidate_version" == "${{ steps.package-infos.outputs.package_version }}"* ]]; then
|
||||
if [[ "$candidate_version" == "${{ steps.package-infos.outputs.package_version }}"* || "v$candidate_version" == "${{ steps.package-infos.outputs.package_version }}"* ]]; then
|
||||
echo "::warning::Package ${{ steps.package-infos.outputs.package_name }} already exists in the official ${{ matrix.distrib }} repository with the same version."
|
||||
do_not_build="true"
|
||||
else
|
||||
@ -455,6 +511,10 @@ jobs:
|
||||
|
||||
- if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_names, matrix.build_name) && matrix.use_dh_make_perl == 'false' }}
|
||||
run: |
|
||||
# Install needed cpan libs
|
||||
for CPANLIB_PREINSTALL in `echo "${{ matrix.preinstall_cpanlibs }}"`; do
|
||||
cpanm $CPANLIB_PREINSTALL
|
||||
done
|
||||
if [ -z "${{ matrix.deb_dependencies }}" ]; then
|
||||
PACKAGE_DEPENDENCIES=""
|
||||
else
|
||||
@ -467,6 +527,7 @@ jobs:
|
||||
fi
|
||||
|
||||
temp_file=$(mktemp)
|
||||
echo "default.local" | tee /etc/mailname
|
||||
created_package=$(fpm -s cpan -t ${{ matrix.package_extension }} --deb-dist ${{ matrix.distrib }} --iteration ${{ steps.parse-distrib.outputs.package_distrib_name }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES -v ${{ steps.package-infos.outputs.package_version }} ${{ matrix.name }} | tee "$temp_file" | grep "Created package" | grep -oP '(?<=:path=>").*?(?=")') || { echo "Error: fpm command failed"; exit 1; }
|
||||
# Check package name
|
||||
if [ -z "$created_package" ]; then
|
||||
@ -479,11 +540,15 @@ jobs:
|
||||
|
||||
- if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_names, matrix.build_name) && matrix.use_dh_make_perl == 'true' }}
|
||||
run: |
|
||||
# Install needed cpan libs
|
||||
for CPANLIB_PREINSTALL in `echo "${{ matrix.preinstall_cpanlibs }}"`; do
|
||||
cpanm $CPANLIB_PREINSTALL
|
||||
done
|
||||
temp_file=$(mktemp)
|
||||
created_package=$(DEB_BUILD_OPTIONS="nocheck nodocs notest" dh-make-perl make --dist ${{ matrix.distrib }} --build --version ${{ steps.package-infos.outputs.package_version }}${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }} --cpan ${{ matrix.name }} | tee "$temp_file" | grep "building package" | grep -oP "(?<=in '..\/).*.deb(?=')") || { echo "Error: dh-make-perl command failed"; exit 1; }
|
||||
# Check package name
|
||||
if [ -z "$created_package" ]; then
|
||||
echo "Error: fpm command failed"
|
||||
echo "Error: dh-make-perl command failed"
|
||||
exit 1
|
||||
fi
|
||||
# Check deb
|
||||
@ -587,7 +652,7 @@ jobs:
|
||||
image: debian:bullseye
|
||||
distrib: bullseye
|
||||
arch: arm64
|
||||
runner_name: ["self-hosted", "collect-arm64"]
|
||||
runner_name: centreon-collect-arm64
|
||||
|
||||
runs-on: ${{ matrix.runner_name }}
|
||||
container:
|
||||
@ -595,114 +660,15 @@ jobs:
|
||||
|
||||
name: Test perl CPAN libs packages on ${{ matrix.package_extension }} ${{ matrix.distrib }} ${{ matrix.arch }}
|
||||
steps:
|
||||
- if: ${{ matrix.package_extension == 'rpm' }}
|
||||
name: Install zstd, perl and Centreon repositories
|
||||
run: |
|
||||
dnf install -y zstd perl epel-release 'dnf-command(config-manager)'
|
||||
dnf config-manager --set-enabled powertools || true # alma 8
|
||||
dnf config-manager --set-enabled crb || true # alma 9
|
||||
# Import Centreon GPG key
|
||||
GPG_KEY_URL="https://yum-gpg.centreon.com/RPM-GPG-KEY-CES"
|
||||
curl -sSL $GPG_KEY_URL -o RPM-GPG-KEY-CES
|
||||
rpm --import RPM-GPG-KEY-CES
|
||||
shell: bash
|
||||
|
||||
- if: ${{ matrix.package_extension == 'deb' }}
|
||||
name: Install zstd, perl and Centreon repositories
|
||||
run: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y zstd perl wget gpg apt-utils procps
|
||||
wget -O- https://apt-key.centreon.com | gpg --dearmor | tee /etc/apt/trusted.gpg.d/centreon.gpg > /dev/null 2>&1
|
||||
# Avoid apt to clean packages cache directory
|
||||
rm -f /etc/apt/apt.conf.d/docker-clean
|
||||
apt-get update
|
||||
shell: bash
|
||||
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- name: Restore packages from cache
|
||||
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
|
||||
- name: Test packaged libs
|
||||
uses: ./.github/actions/test-cpan-libs
|
||||
with:
|
||||
path: ./*.${{ matrix.package_extension }}
|
||||
key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }}
|
||||
fail-on-cache-miss: true
|
||||
|
||||
- if: ${{ matrix.package_extension == 'rpm' }}
|
||||
name: Install packages
|
||||
run: |
|
||||
error_log="install_error_${{ matrix.distrib }}_${{ matrix.arch }}.log"
|
||||
for package in ./*.rpm; do
|
||||
echo "Installing package: $package"
|
||||
# List dependencies, and remove version and comparison operators
|
||||
dependencies=$(rpm -qpR $package | sed 's/ [0-9.-]*\(\s\|$\)/ /g' | sed 's/ [<>!=]*\(\s\|$\)/ /g')
|
||||
for dependency in $dependencies; do
|
||||
# Skip non-perl dependencies
|
||||
if [[ $dependency != perl* ]]; then
|
||||
continue
|
||||
else
|
||||
echo "Check dependency: $dependency"
|
||||
# Update the dependency name to match the package name
|
||||
dependency=$(echo $dependency | sed 's/(/-/g' | sed 's/)//g' | sed 's/::/-/g')
|
||||
fi
|
||||
# If the dependency has been built in the same workflow, install it
|
||||
if [[ -n $(find . -maxdepth 1 -regex "\.\/$dependency-[0-9v].*\.rpm") ]]; then
|
||||
echo "Installing dependency: $dependency"
|
||||
error_output=$(dnf install -y ./$dependency*.rpm 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the dependency $dependency" >> $error_log; true; }
|
||||
fi
|
||||
done
|
||||
# Install package, then uninstall it with all his dependencies
|
||||
echo "Package installation..."
|
||||
error_output=$(dnf install -y $package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the package $package" >> $error_log; true; }
|
||||
echo "Package installation done."
|
||||
echo "Package uninstallation..."
|
||||
error_output=$(dnf autoremove --setopt=keepcache=True -y $(echo $package | sed 's/_[0-9].*\.rpm//' | sed 's/.\///') 2>&1) || { echo "$error_output" >> $error_log; echo "Error during autoremove of the package $package" >> $error_log; true; }
|
||||
echo "Package uninstallation done."
|
||||
done
|
||||
# If the file error_log exists and is not empty, the workflow is in error
|
||||
if [[ -s $error_log ]]; then
|
||||
cat $error_log
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
|
||||
- if: ${{ matrix.package_extension == 'deb' }}
|
||||
name: Install packages
|
||||
run: |
|
||||
error_log="install_error_${{ matrix.distrib }}_${{ matrix.arch }}.log"
|
||||
for package in ./*.deb; do
|
||||
# If the debian package name ends with amd64 or arm64, we only install it if the tested architecture is the same, otherwise we skip it
|
||||
if [[ $package == *amd64.deb && ${{ matrix.arch }} != "amd64" || $package == *arm64.deb && ${{ matrix.arch }} != "arm64" ]]; then
|
||||
continue
|
||||
fi
|
||||
echo "Installing package: $package"
|
||||
# List dependencies
|
||||
dependencies=$(dpkg-deb -I $package | grep Depends | sed 's/Depends: //' | sed 's/,//g' | sed 's/(\(.*\)//g') || { echo "$error_output" >> $error_log; echo "Error while listing dependencies of the package $package" >> $error_log; true; }
|
||||
for dependency in $dependencies; do
|
||||
# If the dependency exists in the Debian repository, don't check the local dependencies
|
||||
dependency_info=$(apt-cache policy $dependency)
|
||||
if [[ -n $dependency_info ]]; then
|
||||
echo "Dependency $dependency exists in debian repository."
|
||||
else
|
||||
# If the dependency has been built in the same workflow, install it
|
||||
for dependency_package in $(find . -maxdepth 1 -regex "\.\/${dependency}_[0-9].*all\.deb" -o -regex "\.\/${dependency}_[0-9].*${{ matrix.arch }}\.deb"); do
|
||||
echo "Installing dependency: $dependency_package"
|
||||
error_output=$(apt-get install -y ./$dependency_package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the dependency $dependency" >> $error_log; true; }
|
||||
done
|
||||
fi
|
||||
done
|
||||
# Install package, then uninstall it with all his dependencies
|
||||
echo "Package installation..."
|
||||
error_output=$(apt-get install -y $package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the package $package" >> $error_log; true; }
|
||||
echo "Package installation done."
|
||||
echo "Package uninstallation..."
|
||||
error_output=$(apt-get autoremove -y --purge $(echo $package | sed 's/_[0-9].*\.deb//' | sed 's/.\///') 2>&1) || { echo "$error_output" >> $error_log; echo "Error during autoremove of the package $package" >> $error_log; true; }
|
||||
echo "Package uninstallation done."
|
||||
done
|
||||
# If the file error_log exists and is not empty, the workflow is in error
|
||||
if [[ -s $error_log ]]; then
|
||||
cat $error_log
|
||||
exit 1
|
||||
fi
|
||||
shell: bash
|
||||
package_extension: ${{ matrix.package_extension }}
|
||||
distrib: ${{ matrix.distrib }}
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
- name: Upload error log
|
||||
if: failure()
|
||||
|
201
.github/workflows/perl-crypt-argon2.yml
vendored
201
.github/workflows/perl-crypt-argon2.yml
vendored
@ -1,201 +0,0 @@
|
||||
name: perl-crypt-argon2
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "dependencies/perl-crypt-argon2/**"
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- dev-[2-9][0-9].[0-9][0-9].x
|
||||
- master
|
||||
- "[2-9][0-9].[0-9][0-9].x"
|
||||
paths:
|
||||
- "dependencies/perl-crypt-argon2/**"
|
||||
tags:
|
||||
- perl-crypt-argon2-*
|
||||
|
||||
jobs:
|
||||
get-environment:
|
||||
uses: ./.github/workflows/get-environment.yml
|
||||
|
||||
package:
|
||||
needs: [get-environment]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
needs.get-environment.outputs.stability != 'stable'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: packaging-plugins-alma8
|
||||
distrib: el8
|
||||
package_extension: rpm
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-alma9
|
||||
distrib: el9
|
||||
package_extension: rpm
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bullseye
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bookworm
|
||||
distrib: bookworm
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-jammy
|
||||
distrib: jammy
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bullseye-arm64
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ["self-hosted", "collect-arm64"]
|
||||
arch: arm64
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
container:
|
||||
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
|
||||
credentials:
|
||||
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
|
||||
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
|
||||
|
||||
name: package ${{ matrix.distrib }} ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Install locally Crypt::Argon2
|
||||
run: |
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
apt-get update
|
||||
apt-get install -y cpanminus gcc
|
||||
else
|
||||
dnf install -y cpanminus gcc
|
||||
fi
|
||||
|
||||
cpanm -v -l /tmp Crypt::Argon2@0.020
|
||||
shell: bash
|
||||
|
||||
- name: Set package name and paths according to distrib
|
||||
run: |
|
||||
PERL_VERSION=$(perl -E "say $^V" | sed -E "s/v([0-9]+\.[0-9]+).+/\1/g")
|
||||
|
||||
echo "Perl version is $PERL_VERSION"
|
||||
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
NAME="libcrypt-argon2-perl"
|
||||
if [ "${{ matrix.arch }}" = "amd64" ]; then
|
||||
PERL_VENDORARCH="/usr/lib/x86_64-linux-gnu/perl/$PERL_VERSION"
|
||||
else
|
||||
PERL_VENDORARCH="/usr/lib/aarch64-linux-gnu/perl/$PERL_VERSION"
|
||||
fi
|
||||
else
|
||||
NAME="perl-Crypt-Argon2"
|
||||
if [ "${{ matrix.distrib }}" = "el8" ]; then
|
||||
PERL_VENDORARCH="/usr/local/lib64/perl5"
|
||||
else
|
||||
PERL_VENDORARCH="/usr/local/lib64/perl5/$PERL_VERSION"
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i "s/@NAME@/$NAME/g" dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml
|
||||
sed -i "s#@PERL_VENDORARCH@#$PERL_VENDORARCH#g" dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml
|
||||
|
||||
cat dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml
|
||||
shell: bash
|
||||
|
||||
- name: Package
|
||||
uses: ./.github/actions/package-nfpm
|
||||
with:
|
||||
nfpm_file_pattern: "dependencies/perl-crypt-argon2/perl-crypt-argon2.yaml"
|
||||
distrib: ${{ matrix.distrib }}
|
||||
package_extension: ${{ matrix.package_extension }}
|
||||
arch: ${{ matrix.arch }}
|
||||
release: 1
|
||||
commit_hash: ${{ github.sha }}
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-crypt-argon2-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }}
|
||||
rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }}
|
||||
rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
|
||||
rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
|
||||
# set condition to true if artifacts are needed
|
||||
- if: ${{ false }}
|
||||
name: Upload package artifacts
|
||||
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
|
||||
with:
|
||||
name: packages-${{ matrix.distrib }}-${{ matrix.arch }}
|
||||
path: ./*.${{ matrix.package_extension}}
|
||||
retention-days: 1
|
||||
|
||||
deliver-packages:
|
||||
needs: [get-environment, package]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
(contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distrib: el8
|
||||
package_extension: rpm
|
||||
arch: amd64
|
||||
- distrib: el9
|
||||
package_extension: rpm
|
||||
arch: amd64
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
arch: arm64
|
||||
- distrib: bookworm
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
- distrib: jammy
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
|
||||
name: deliver ${{ matrix.distrib }} ${{ matrix.arch }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- name: Delivery
|
||||
uses: ./.github/actions/package-delivery
|
||||
with:
|
||||
module_name: perl-crypt-argon2-${{ matrix.arch }}
|
||||
distrib: ${{ matrix.distrib }}
|
||||
arch: ${{ matrix.arch }}
|
||||
cache_key: cache-${{ github.sha }}-rpm-perl-crypt-argon2-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
release_type: ${{ needs.get-environment.outputs.release_type }}
|
||||
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
|
||||
|
||||
set-skip-label:
|
||||
needs: [get-environment, deliver-packages]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
uses: ./.github/workflows/set-pull-request-skip-label.yml
|
177
.github/workflows/perl-json-path.yml
vendored
177
.github/workflows/perl-json-path.yml
vendored
@ -1,177 +0,0 @@
|
||||
name: perl-json-path
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "dependencies/perl-json-path/**"
|
||||
- ".github/workflows/perl-json-path.yml"
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- dev-[2-9][0-9].[0-9][0-9].x
|
||||
- master
|
||||
- "[2-9][0-9].[0-9][0-9].x"
|
||||
paths:
|
||||
- "dependencies/perl-json-path/**"
|
||||
- ".github/workflows/perl-json-path.yml"
|
||||
|
||||
jobs:
|
||||
get-environment:
|
||||
uses: ./.github/workflows/get-environment.yml
|
||||
|
||||
package:
|
||||
needs: [get-environment]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
needs.get-environment.outputs.stability != 'stable'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: packaging-plugins-alma8
|
||||
distrib: el8
|
||||
package_extension: rpm
|
||||
- image: packaging-plugins-alma9
|
||||
distrib: el9
|
||||
package_extension: rpm
|
||||
- image: packaging-plugins-bullseye
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
- image: packaging-plugins-bookworm
|
||||
distrib: bookworm
|
||||
package_extension: deb
|
||||
- image: packaging-plugins-jammy
|
||||
distrib: jammy
|
||||
package_extension: deb
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
container:
|
||||
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
|
||||
credentials:
|
||||
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
|
||||
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
|
||||
|
||||
name: package ${{ matrix.distrib }}
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Install locally JSON::Path
|
||||
run: |
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
apt-get update
|
||||
apt-get install -y cpanminus gcc
|
||||
else
|
||||
dnf install -y cpanminus gcc
|
||||
fi
|
||||
|
||||
cpanm -v -l /tmp JSON::Path@1.0.4
|
||||
|
||||
shell: bash
|
||||
|
||||
- name: Set package name and paths according to distrib
|
||||
run: |
|
||||
VERSION="1.0.4"
|
||||
|
||||
PERL_VERSION=$(perl -E "say $^V" | sed -E "s/v([0-9]+\.[0-9]+).+/\1/g")
|
||||
|
||||
echo "Perl version is $PERL_VERSION"
|
||||
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
NAME="libjson-path-perl"
|
||||
PERL_VENDORLIB="/usr/share/perl5"
|
||||
else
|
||||
NAME="perl-JSON-Path"
|
||||
if [ "${{ matrix.distrib }}" = "el8" ]; then
|
||||
PERL_VENDORLIB="/usr/local/share/perl5"
|
||||
else
|
||||
PERL_VENDORLIB="/usr/local/share/perl5/$PERL_VERSION"
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i "s/@NAME@/$NAME/g" dependencies/perl-json-path/perl-json-path.yaml
|
||||
sed -i "s/@VERSION@/$VERSION/g" dependencies/perl-json-path/perl-json-path.yaml
|
||||
sed -i "s#@PERL_VENDORLIB@#$PERL_VENDORLIB#g" dependencies/perl-json-path/perl-json-path.yaml
|
||||
|
||||
cat dependencies/perl-json-path/perl-json-path.yaml
|
||||
shell: bash
|
||||
|
||||
- name: Package
|
||||
uses: ./.github/actions/package-nfpm
|
||||
with:
|
||||
nfpm_file_pattern: "dependencies/perl-json-path/perl-json-path.yaml"
|
||||
distrib: ${{ matrix.distrib }}
|
||||
package_extension: ${{ matrix.package_extension }}
|
||||
release: 3
|
||||
arch: all
|
||||
commit_hash: ${{ github.sha }}
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-json-path-${{ matrix.distrib }}-${{ github.head_ref || github.ref_name }}
|
||||
rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }}
|
||||
rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
|
||||
rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
|
||||
# set condition to true if artifacts are needed
|
||||
- if: ${{ false }}
|
||||
name: Upload package artifacts
|
||||
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
|
||||
with:
|
||||
name: packages-${{ matrix.distrib }}
|
||||
path: ./*.${{ matrix.package_extension}}
|
||||
retention-days: 1
|
||||
|
||||
deliver-packages:
|
||||
needs: [get-environment, package]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
(contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distrib: el8
|
||||
package_extension: rpm
|
||||
- distrib: el9
|
||||
package_extension: rpm
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
- distrib: bookworm
|
||||
package_extension: deb
|
||||
- distrib: jammy
|
||||
package_extension: deb
|
||||
|
||||
name: deliver ${{ matrix.distrib }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- name: Delivery
|
||||
uses: ./.github/actions/package-delivery
|
||||
with:
|
||||
module_name: perl-json-path
|
||||
distrib: ${{ matrix.distrib }}
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-json-path-${{ matrix.distrib }}-${{ github.head_ref || github.ref_name }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
release_type: ${{ needs.get-environment.outputs.release_type }}
|
||||
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
|
||||
|
||||
set-skip-label:
|
||||
needs: [get-environment, deliver-packages]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
uses: ./.github/workflows/set-pull-request-skip-label.yml
|
199
.github/workflows/perl-libssh-session.yml
vendored
199
.github/workflows/perl-libssh-session.yml
vendored
@ -1,199 +0,0 @@
|
||||
name: perl-libssh-session
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "dependencies/perl-libssh-session/**"
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- dev-[2-9][0-9].[0-9][0-9].x
|
||||
- master
|
||||
- "[2-9][0-9].[0-9][0-9].x"
|
||||
paths:
|
||||
- "dependencies/perl-libssh-session/**"
|
||||
|
||||
jobs:
|
||||
get-environment:
|
||||
uses: ./.github/workflows/get-environment.yml
|
||||
|
||||
package:
|
||||
needs: [get-environment]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
needs.get-environment.outputs.stability != 'stable'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: packaging-plugins-alma8
|
||||
distrib: el8
|
||||
package_extension: rpm
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-alma9
|
||||
distrib: el9
|
||||
package_extension: rpm
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bullseye
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bookworm
|
||||
distrib: bookworm
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-jammy
|
||||
distrib: jammy
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bullseye-arm64
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ["self-hosted", "collect-arm64"]
|
||||
arch: arm64
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
container:
|
||||
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
|
||||
credentials:
|
||||
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
|
||||
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
|
||||
|
||||
name: package ${{ matrix.distrib }} ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Install locally Libssh::Session
|
||||
run: |
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
apt-get update
|
||||
apt-get install -y cpanminus gcc libssh-dev
|
||||
else
|
||||
dnf install -y cpanminus gcc libssh-devel
|
||||
fi
|
||||
|
||||
cpanm -v -l /tmp Libssh::Session@0.8
|
||||
shell: bash
|
||||
|
||||
- name: Set package name and paths according to distrib
|
||||
run: |
|
||||
PERL_VERSION=$(perl -E "say $^V" | sed -E "s/v([0-9]+\.[0-9]+).+/\1/g")
|
||||
|
||||
echo "Perl version is $PERL_VERSION"
|
||||
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
NAME="libssh-session-perl"
|
||||
if [ "${{ matrix.arch }}" = "amd64" ]; then
|
||||
PERL_VENDORARCH="/usr/lib/x86_64-linux-gnu/perl/$PERL_VERSION"
|
||||
else
|
||||
PERL_VENDORARCH="/usr/lib/aarch64-linux-gnu/perl/$PERL_VERSION"
|
||||
fi
|
||||
else
|
||||
NAME="perl-Libssh-Session"
|
||||
if [ "${{ matrix.distrib }}" = "el8" ]; then
|
||||
PERL_VENDORARCH="/usr/local/lib64/perl5"
|
||||
else
|
||||
PERL_VENDORARCH="/usr/local/lib64/perl5/$PERL_VERSION"
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i "s/@NAME@/$NAME/g" dependencies/perl-libssh-session/perl-libssh-session.yaml
|
||||
sed -i "s#@PERL_VENDORARCH@#$PERL_VENDORARCH#g" dependencies/perl-libssh-session/perl-libssh-session.yaml
|
||||
|
||||
cat dependencies/perl-libssh-session/perl-libssh-session.yaml
|
||||
shell: bash
|
||||
|
||||
- name: Package
|
||||
uses: ./.github/actions/package-nfpm
|
||||
with:
|
||||
nfpm_file_pattern: "dependencies/perl-libssh-session/perl-libssh-session.yaml"
|
||||
distrib: ${{ matrix.distrib }}
|
||||
package_extension: ${{ matrix.package_extension }}
|
||||
arch: ${{ matrix.arch }}
|
||||
release: 5
|
||||
commit_hash: ${{ github.sha }}
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-libssh-session-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }}
|
||||
rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }}
|
||||
rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
|
||||
rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
|
||||
# set condition to true if artifacts are needed
|
||||
- if: ${{ false }}
|
||||
name: Upload package artifacts
|
||||
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
|
||||
with:
|
||||
name: packages-${{ matrix.distrib }}-${{ matrix.arch }}
|
||||
path: ./*.${{ matrix.package_extension}}
|
||||
retention-days: 1
|
||||
|
||||
deliver-packages:
|
||||
needs: [get-environment, package]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
(contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distrib: el8
|
||||
package_extension: rpm
|
||||
arch: amd64
|
||||
- distrib: el9
|
||||
package_extension: rpm
|
||||
arch: amd64
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
arch: arm64
|
||||
- distrib: bookworm
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
- distrib: jammy
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
|
||||
name: deliver ${{ matrix.distrib }} ${{ matrix.arch }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- name: Delivery
|
||||
uses: ./.github/actions/package-delivery
|
||||
with:
|
||||
module_name: perl-libssh-session-${{ matrix.arch }}
|
||||
distrib: ${{ matrix.distrib }}
|
||||
arch: ${{ matrix.arch }}
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-libssh-session-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
release_type: ${{ needs.get-environment.outputs.release_type }}
|
||||
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
|
||||
|
||||
set-skip-label:
|
||||
needs: [get-environment, deliver-packages]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
uses: ./.github/workflows/set-pull-request-skip-label.yml
|
199
.github/workflows/perl-net-curl.yml
vendored
199
.github/workflows/perl-net-curl.yml
vendored
@ -1,199 +0,0 @@
|
||||
name: perl-net-curl
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- "dependencies/perl-net-curl/**"
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- dev-[2-9][0-9].[0-9][0-9].x
|
||||
- master
|
||||
- "[2-9][0-9].[0-9][0-9].x"
|
||||
paths:
|
||||
- "dependencies/perl-net-curl/**"
|
||||
|
||||
jobs:
|
||||
get-environment:
|
||||
uses: ./.github/workflows/get-environment.yml
|
||||
|
||||
package:
|
||||
needs: [get-environment]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
needs.get-environment.outputs.stability != 'stable'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- image: packaging-plugins-alma8
|
||||
distrib: el8
|
||||
package_extension: rpm
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-alma9
|
||||
distrib: el9
|
||||
package_extension: rpm
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bullseye
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bookworm
|
||||
distrib: bookworm
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-jammy
|
||||
distrib: jammy
|
||||
package_extension: deb
|
||||
runner: ubuntu-22.04
|
||||
arch: amd64
|
||||
- image: packaging-plugins-bullseye-arm64
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ["self-hosted", "collect-arm64"]
|
||||
arch: arm64
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
container:
|
||||
image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest
|
||||
credentials:
|
||||
username: ${{ secrets.HARBOR_CENTREON_PULL_USERNAME }}
|
||||
password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }}
|
||||
|
||||
name: package ${{ matrix.distrib }} ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
|
||||
- name: Install locally Net::Curl
|
||||
run: |
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
apt-get update
|
||||
apt-get install -y libcurl4-openssl-dev cpanminus gcc
|
||||
else
|
||||
dnf install -y libcurl-devel cpanminus gcc
|
||||
fi
|
||||
|
||||
cpanm -v -l /tmp Net::Curl@0.55
|
||||
shell: bash
|
||||
|
||||
- name: Set package name and paths according to distrib
|
||||
run: |
|
||||
PERL_VERSION=$(perl -E "say $^V" | sed -E "s/v([0-9]+\.[0-9]+).+/\1/g")
|
||||
|
||||
echo "Perl version is $PERL_VERSION"
|
||||
|
||||
if [[ "${{ matrix.package_extension }}" == "deb" ]]; then
|
||||
NAME="libnet-curl-perl"
|
||||
if [ "${{ matrix.arch }}" = "amd64" ]; then
|
||||
PERL_VENDORARCH="/usr/lib/x86_64-linux-gnu/perl/$PERL_VERSION"
|
||||
else
|
||||
PERL_VENDORARCH="/usr/lib/aarch64-linux-gnu/perl/$PERL_VERSION"
|
||||
fi
|
||||
else
|
||||
NAME="perl-Net-Curl"
|
||||
if [ "${{ matrix.distrib }}" = "el8" ]; then
|
||||
PERL_VENDORARCH="/usr/local/lib64/perl5"
|
||||
else
|
||||
PERL_VENDORARCH="/usr/local/lib64/perl5/$PERL_VERSION"
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i "s/@NAME@/$NAME/g" dependencies/perl-net-curl/perl-net-curl.yaml
|
||||
sed -i "s#@PERL_VENDORARCH@#$PERL_VENDORARCH#g" dependencies/perl-net-curl/perl-net-curl.yaml
|
||||
|
||||
cat dependencies/perl-net-curl/perl-net-curl.yaml
|
||||
shell: bash
|
||||
|
||||
- name: Package
|
||||
uses: ./.github/actions/package-nfpm
|
||||
with:
|
||||
nfpm_file_pattern: "dependencies/perl-net-curl/perl-net-curl.yaml"
|
||||
distrib: ${{ matrix.distrib }}
|
||||
package_extension: ${{ matrix.package_extension }}
|
||||
arch: ${{ matrix.arch }}
|
||||
commit_hash: ${{ github.sha }}
|
||||
release: 1
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-net-curl-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }}
|
||||
rpm_gpg_key: ${{ secrets.RPM_GPG_SIGNING_KEY }}
|
||||
rpm_gpg_signing_key_id: ${{ secrets.RPM_GPG_SIGNING_KEY_ID }}
|
||||
rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
|
||||
# set condition to true if artifacts are needed
|
||||
- if: ${{ false }}
|
||||
name: Upload package artifacts
|
||||
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
|
||||
with:
|
||||
name: packages-${{ matrix.distrib }}-${{ matrix.arch }}
|
||||
path: ./*.${{ matrix.package_extension }}
|
||||
retention-days: 1
|
||||
|
||||
deliver-packages:
|
||||
needs: [get-environment, package]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
(contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- distrib: el8
|
||||
package_extension: rpm
|
||||
arch: amd64
|
||||
- distrib: el9
|
||||
package_extension: rpm
|
||||
arch: amd64
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
- distrib: bullseye
|
||||
package_extension: deb
|
||||
arch: arm64
|
||||
- distrib: bookworm
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
- distrib: jammy
|
||||
package_extension: deb
|
||||
arch: amd64
|
||||
|
||||
name: deliver ${{ matrix.distrib }}
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
|
||||
|
||||
- name: Delivery
|
||||
uses: ./.github/actions/package-delivery
|
||||
with:
|
||||
module_name: perl-net-curl-${{ matrix.arch }}
|
||||
distrib: ${{ matrix.distrib }}
|
||||
arch: ${{ matrix.arch }}
|
||||
cache_key: cache-${{ github.sha }}-${{ matrix.package_extension }}-perl-net-curl-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }}
|
||||
stability: ${{ needs.get-environment.outputs.stability }}
|
||||
release_type: ${{ needs.get-environment.outputs.release_type }}
|
||||
artifactory_token: ${{ secrets.ARTIFACTORY_ACCESS_TOKEN }}
|
||||
|
||||
set-skip-label:
|
||||
needs: [get-environment, deliver-packages]
|
||||
if: |
|
||||
needs.get-environment.outputs.skip_workflow == 'false' &&
|
||||
! cancelled() &&
|
||||
! contains(needs.*.result, 'failure') &&
|
||||
! contains(needs.*.result, 'cancelled')
|
||||
uses: ./.github/workflows/set-pull-request-skip-label.yml
|
2
.github/workflows/perl-openwsman.yml
vendored
2
.github/workflows/perl-openwsman.yml
vendored
@ -58,7 +58,7 @@ jobs:
|
||||
- image: packaging-plugins-bullseye-arm64
|
||||
distrib: bullseye
|
||||
package_extension: deb
|
||||
runner: ["self-hosted", "collect-arm64"]
|
||||
runner: centreon-collect-arm64
|
||||
arch: arm64
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
2
.github/workflows/perl-vmware-vsphere.yml
vendored
2
.github/workflows/perl-vmware-vsphere.yml
vendored
@ -85,7 +85,7 @@ jobs:
|
||||
- package_extension: deb
|
||||
image: packaging-plugins-bullseye-arm64
|
||||
distrib: bullseye
|
||||
runner: ["self-hosted", "collect-arm64"]
|
||||
runner: centreon-collect-arm64
|
||||
arch: arm64
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
10
.github/workflows/plugins.yml
vendored
10
.github/workflows/plugins.yml
vendored
@ -37,7 +37,7 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
|
||||
- uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
||||
with:
|
||||
python-version: '3.9'
|
||||
|
||||
@ -112,7 +112,7 @@ jobs:
|
||||
distrib: bullseye
|
||||
- package_extension: deb
|
||||
image: unit-tests-bullseye-arm64
|
||||
runner_name: ["self-hosted", "collect-arm64"]
|
||||
runner_name: centreon-collect-arm64
|
||||
distrib: bullseye
|
||||
- package_extension: deb
|
||||
image: unit-tests-bookworm
|
||||
@ -157,7 +157,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Prepare FatPacker
|
||||
uses: shogo82148/actions-setup-perl@98dfedee230bcf1ee68d5b021931fc8d63f2016e # v1.31.4
|
||||
uses: shogo82148/actions-setup-perl@49c14f24551d2de3bf56fb107a869c3760b1875e # v1.33.0
|
||||
with:
|
||||
perl-version: '5.34'
|
||||
install-modules-with: cpm
|
||||
@ -333,7 +333,7 @@ jobs:
|
||||
image: testing-plugins-bullseye-arm64
|
||||
distrib: bullseye
|
||||
arch: arm64
|
||||
runner_name: ["self-hosted", "collect-arm64"]
|
||||
runner_name: centreon-collect-arm64
|
||||
|
||||
runs-on: ${{ matrix.runner_name }}
|
||||
container:
|
||||
@ -406,7 +406,7 @@ jobs:
|
||||
if: |
|
||||
needs.get-environment.outputs.stability == 'stable' &&
|
||||
github.event_name == 'push'
|
||||
runs-on: [self-hosted, common]
|
||||
runs-on: centreon-common
|
||||
|
||||
steps:
|
||||
- name: Checkout sources
|
||||
|
2
.github/workflows/spellchecker.yml
vendored
2
.github/workflows/spellchecker.yml
vendored
@ -30,7 +30,7 @@ jobs:
|
||||
- added|modified: 'src/**/*.pm'
|
||||
|
||||
- name: Install CPAN Libraries
|
||||
uses: shogo82148/actions-setup-perl@98dfedee230bcf1ee68d5b021931fc8d63f2016e # v1.31.4
|
||||
uses: shogo82148/actions-setup-perl@49c14f24551d2de3bf56fb107a869c3760b1875e # v1.33.0
|
||||
with:
|
||||
perl-version: '5.34'
|
||||
install-modules-with: cpm
|
||||
|
@ -26,6 +26,7 @@ import java.text.NumberFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.ibm.as400.access.AS400;
|
||||
import com.ibm.as400.access.SecureAS400;
|
||||
import com.ibm.as400.access.AS400SecurityException;
|
||||
import com.ibm.as400.access.ConnectionEvent;
|
||||
import com.ibm.as400.access.ConnectionListener;
|
||||
@ -44,11 +45,13 @@ public abstract class AbstractHandler {
|
||||
protected String host = null;
|
||||
protected String login = null;
|
||||
protected String password = null;
|
||||
protected Integer ssl = 0;
|
||||
|
||||
public AbstractHandler(final String host, final String login, final String password) {
|
||||
public AbstractHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
this.host = host;
|
||||
this.login = login;
|
||||
this.password = password;
|
||||
this.ssl = ssl;
|
||||
}
|
||||
|
||||
static {
|
||||
@ -77,7 +80,28 @@ public abstract class AbstractHandler {
|
||||
properties.setLoginTimeout(Conf.as400LoginTimeout);
|
||||
properties.setSoTimeout(Conf.as400ReadTimeout);
|
||||
|
||||
final AS400 system = new AS400(this.host, this.login, this.password);
|
||||
if (this.ssl == 1) {
|
||||
SecureAS400 system = new SecureAS400(this.host, this.login, this.password);
|
||||
system.setSocketProperties(properties);
|
||||
system.addConnectionListener(new ConnectionListener() {
|
||||
@Override
|
||||
public void connected(final ConnectionEvent event) {
|
||||
ConnectorLogger.getInstance().getLogger().debug("Connect event service : " + event.getService());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnected(final ConnectionEvent event) {
|
||||
ConnectorLogger.getInstance().getLogger().debug("Disconnect event service : " + event.getService());
|
||||
}
|
||||
});
|
||||
|
||||
system.validateSignon();
|
||||
|
||||
return (AS400)system;
|
||||
}
|
||||
|
||||
AS400 system = new AS400(this.host, this.login, this.password);
|
||||
|
||||
system.setSocketProperties(properties);
|
||||
system.addConnectionListener(new ConnectionListener() {
|
||||
@Override
|
||||
|
@ -34,8 +34,8 @@ import com.centreon.connector.as400.dispatcher.check.ResponseData;
|
||||
*/
|
||||
public class CommandHandler extends AbstractHandler implements ICommandHandler {
|
||||
|
||||
public CommandHandler(final String host, final String login, final String password) {
|
||||
super(host, login, password);
|
||||
public CommandHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
super(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -38,10 +38,10 @@ public class DiskHandler extends AbstractHandler implements IDiskHandler {
|
||||
|
||||
private QyaspolYasp0300PcmlHandler qyaspolPcmlHandler = null;
|
||||
|
||||
public DiskHandler(final String host, final String login, final String password)
|
||||
public DiskHandler(final String host, final String login, final String password, final Integer ssl)
|
||||
throws AS400SecurityException, IOException {
|
||||
super(host, login, password);
|
||||
this.qyaspolPcmlHandler = new QyaspolYasp0300PcmlHandler(host, login, password);
|
||||
super(host, login, password, ssl);
|
||||
this.qyaspolPcmlHandler = new QyaspolYasp0300PcmlHandler(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,8 +37,8 @@ import com.centreon.connector.as400.dispatcher.check.ResponseData;
|
||||
public class JobHandler extends AbstractHandler implements IJobHandler {
|
||||
private final JobCache jobCache;
|
||||
|
||||
public JobHandler(final String host, final String login, final String password) {
|
||||
super(host, login, password);
|
||||
public JobHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
super(host, login, password, ssl);
|
||||
this.jobCache = new JobCache(this);
|
||||
}
|
||||
|
||||
|
@ -37,8 +37,8 @@ import com.centreon.connector.as400.dispatcher.check.ResponseData;
|
||||
*/
|
||||
public class JobQueueHandler extends AbstractHandler implements IJobQueueHandler {
|
||||
|
||||
public JobQueueHandler(final String host, final String login, final String password) {
|
||||
super(host, login, password);
|
||||
public JobQueueHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
super(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -42,9 +42,9 @@ import com.centreon.connector.as400.dispatcher.check.ResponseData;
|
||||
*/
|
||||
public class SubSystemHandler extends AbstractHandler implements ISubSystemHandler {
|
||||
|
||||
public SubSystemHandler(final String host, final String login, final String password)
|
||||
public SubSystemHandler(final String host, final String login, final String password, final Integer ssl)
|
||||
throws AS400SecurityException, IOException {
|
||||
super(host, login, password);
|
||||
super(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -45,14 +45,14 @@ import com.centreon.connector.as400.dispatcher.check.ResponseData;
|
||||
public class SystemHandler extends AbstractHandler implements ISystemHandler {
|
||||
private SystemStatus status = null;
|
||||
|
||||
public SystemHandler(final String host, final String login, final String password)
|
||||
public SystemHandler(final String host, final String login, final String password, final Integer ssl)
|
||||
throws AS400SecurityException, IOException {
|
||||
this(host, login, password, null);
|
||||
this(host, login, password, null, ssl);
|
||||
}
|
||||
|
||||
public SystemHandler(final String host, final String login, final String password, SystemStatus as400Status)
|
||||
public SystemHandler(final String host, final String login, final String password, SystemStatus as400Status, final Integer ssl)
|
||||
throws AS400SecurityException, IOException {
|
||||
super(host, login, password);
|
||||
super(host, login, password, ssl);
|
||||
this.status = as400Status == null ? new SystemStatus(getNewAs400()) : as400Status;
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.ibm.as400.access.AS400;
|
||||
import com.ibm.as400.access.SecureAS400;
|
||||
import com.ibm.as400.access.AS400Message;
|
||||
import com.ibm.as400.access.AS400SecurityException;
|
||||
import com.ibm.as400.access.ConnectionEvent;
|
||||
@ -61,11 +62,13 @@ public class QyaspolYasp0300PcmlHandler {
|
||||
String host = null;
|
||||
String login = null;
|
||||
String password = null;
|
||||
Integer ssl = 0;
|
||||
|
||||
public QyaspolYasp0300PcmlHandler(final String host, final String login, final String password) {
|
||||
public QyaspolYasp0300PcmlHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
this.host = host;
|
||||
this.login = login;
|
||||
this.password = password;
|
||||
this.ssl = ssl;
|
||||
}
|
||||
|
||||
public void addYasp0300Data(final Yasp0300Data data) {
|
||||
@ -238,7 +241,27 @@ public class QyaspolYasp0300PcmlHandler {
|
||||
properties.setLoginTimeout(Conf.as400LoginTimeout);
|
||||
properties.setSoTimeout(Conf.as400ReadTimeout);
|
||||
|
||||
final AS400 system = new AS400(this.host, this.login, this.password);
|
||||
if (this.ssl == 1) {
|
||||
SecureAS400 system = new SecureAS400(this.host, this.login, this.password);
|
||||
system.setSocketProperties(properties);
|
||||
system.addConnectionListener(new ConnectionListener() {
|
||||
@Override
|
||||
public void connected(final ConnectionEvent event) {
|
||||
ConnectorLogger.getInstance().getLogger().debug("Connect event service : " + event.getService());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnected(final ConnectionEvent event) {
|
||||
ConnectorLogger.getInstance().getLogger().debug("Disconnect event service : " + event.getService());
|
||||
}
|
||||
});
|
||||
|
||||
system.validateSignon();
|
||||
|
||||
return (AS400)system;
|
||||
}
|
||||
|
||||
AS400 system = new AS400(this.host, this.login, this.password);
|
||||
system.setSocketProperties(properties);
|
||||
system.addConnectionListener(new ConnectionListener() {
|
||||
@Override
|
||||
|
@ -102,8 +102,8 @@ public class CachedMessageQueueHandler extends AbstractHandler implements ICache
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public CachedMessageQueueHandler(final String host, final String login, final String password) {
|
||||
super(host, login, password);
|
||||
public CachedMessageQueueHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
super(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -42,8 +42,8 @@ import com.centreon.connector.as400.dispatcher.check.ResponseData;
|
||||
*/
|
||||
public class MessageQueueHandler extends AbstractHandler implements IMessageQueueHandler {
|
||||
|
||||
public MessageQueueHandler(final String host, final String login, final String password) {
|
||||
super(host, login, password);
|
||||
public MessageQueueHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
super(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -69,8 +69,8 @@ public class WorkWithProblemHandler extends AbstractHandler {
|
||||
private final boolean SSL = false;
|
||||
private final String logPrefix;
|
||||
|
||||
public WorkWithProblemHandler(final String host, final String login, final String password) {
|
||||
super(host, login, password);
|
||||
public WorkWithProblemHandler(final String host, final String login, final String password, final Integer ssl) {
|
||||
super(host, login, password, ssl);
|
||||
this.logPrefix = "[" + WorkWithProblemHandler.INSTANCE_ID++ + "]";
|
||||
}
|
||||
|
||||
|
@ -40,5 +40,7 @@ public interface IClient {
|
||||
|
||||
String getAs400CheckType();
|
||||
|
||||
Integer getAs400Ssl();
|
||||
|
||||
Object getAs400Arg(String key);
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ abstract class AbstractClient implements IClient {
|
||||
private String as400Password = null;
|
||||
private String as400CheckType = null;
|
||||
private String as400Args = null;
|
||||
private Integer as400Ssl = 0;
|
||||
private List<Map<String, String>> argList = new ArrayList<Map<String, String>>();
|
||||
|
||||
@Override
|
||||
@ -77,6 +78,11 @@ abstract class AbstractClient implements IClient {
|
||||
return this.input.getArg(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getAs400Ssl() {
|
||||
return this.input.getSsl();
|
||||
}
|
||||
|
||||
public List<Map<String , String>> getAs400ArgList(String key) {
|
||||
Object arg = this.input.getArg(key);
|
||||
if (arg == null) {
|
||||
|
@ -87,6 +87,7 @@ public class CheckDispatcher {
|
||||
private String host = null;
|
||||
private String login = null;
|
||||
private String password = null;
|
||||
private Integer ssl = 0;
|
||||
|
||||
private volatile ConcurrentHashMap<String, Long> filter = new ConcurrentHashMap<String, Long>();
|
||||
|
||||
@ -135,10 +136,11 @@ public class CheckDispatcher {
|
||||
}
|
||||
}
|
||||
|
||||
public CheckDispatcher(final String host, final String login, final String password) {
|
||||
public CheckDispatcher(final String host, final String login, final String password, final Integer ssl) {
|
||||
this.host = host;
|
||||
this.login = login;
|
||||
this.password = password;
|
||||
this.ssl = ssl;
|
||||
|
||||
this.executorGlobal = new ThreadPoolExecutorPostFilter(5, 10, Conf.workerQueueTimeout, TimeUnit.MILLISECONDS,
|
||||
new LinkedBlockingQueue<Runnable>());
|
||||
@ -165,6 +167,10 @@ public class CheckDispatcher {
|
||||
return this.password;
|
||||
}
|
||||
|
||||
public Integer getSsl() {
|
||||
return this.ssl;
|
||||
}
|
||||
|
||||
public synchronized void dispatch(final NetworkClient client) {
|
||||
|
||||
if (this.filter.containsKey(client.getRawRequest())) {
|
||||
@ -190,52 +196,52 @@ public class CheckDispatcher {
|
||||
|
||||
public ICommandHandler getCommandHandler() throws AS400SecurityException, IOException {
|
||||
if (this.commandHandler == null) {
|
||||
this.commandHandler = new CommandHandler(this.host, this.login, this.password);
|
||||
this.commandHandler = new CommandHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
return this.commandHandler;
|
||||
}
|
||||
|
||||
public IDiskHandler getDiskHandler() throws AS400SecurityException, IOException {
|
||||
if (this.diskHandler == null) {
|
||||
this.diskHandler = new DiskHandler(this.host, this.login, this.password);
|
||||
this.diskHandler = new DiskHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
return this.diskHandler;
|
||||
}
|
||||
|
||||
public IJobHandler getJobHandler() throws AS400SecurityException, IOException {
|
||||
if (this.jobHandler == null) {
|
||||
this.jobHandler = new JobHandler(this.host, this.login, this.password);
|
||||
this.jobHandler = new JobHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
return this.jobHandler;
|
||||
}
|
||||
|
||||
public ISubSystemHandler getSubSystemHandler() throws AS400SecurityException, IOException {
|
||||
if (this.subSystemHandler == null) {
|
||||
this.subSystemHandler = new SubSystemHandler(this.host, this.login, this.password);
|
||||
this.subSystemHandler = new SubSystemHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
return this.subSystemHandler;
|
||||
}
|
||||
|
||||
public ISystemHandler getSystemHandler() throws AS400SecurityException, IOException {
|
||||
if (this.systemHandler == null) {
|
||||
this.systemHandler = new SystemHandler(this.host, this.login, this.password);
|
||||
this.systemHandler = new SystemHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
return this.systemHandler;
|
||||
}
|
||||
|
||||
public ICachedMessageQueueHandler getCachedMessageQueueHandler() throws AS400SecurityException, IOException {
|
||||
return new CachedMessageQueueHandler(this.host, this.login, this.password);
|
||||
return new CachedMessageQueueHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
|
||||
public IMessageQueueHandler getMessageQueueHandler() throws AS400SecurityException, IOException {
|
||||
return new MessageQueueHandler(this.host, this.login, this.password);
|
||||
return new MessageQueueHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
|
||||
public IJobQueueHandler getJobQueueHandler() throws AS400SecurityException, IOException {
|
||||
return new JobQueueHandler(this.host, this.login, this.password);
|
||||
return new JobQueueHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
|
||||
public WorkWithProblemHandler getWrkPrbHandler() throws AS400SecurityException, IOException {
|
||||
return new WorkWithProblemHandler(this.host, this.login, this.password);
|
||||
return new WorkWithProblemHandler(this.host, this.login, this.password, this.ssl);
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ public class InputData {
|
||||
private String password = null;
|
||||
private String host = null;
|
||||
private String command = null;
|
||||
private Integer ssl = null;
|
||||
Map<String, Object> args = null;
|
||||
|
||||
public InputData() {
|
||||
@ -44,6 +45,13 @@ public class InputData {
|
||||
return this.password;
|
||||
}
|
||||
|
||||
public Integer getSsl() {
|
||||
if (this.ssl == null || this.ssl == 0) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return this.host;
|
||||
}
|
||||
|
@ -52,37 +52,37 @@ public class ClientDispatcherImpl implements ClientDispatcher {
|
||||
}
|
||||
|
||||
private synchronized CheckDispatcher createNewCheckDispatcher(final String host, final String login,
|
||||
final String password) throws AS400SecurityException, IOException, DelayedConnectionException, Exception {
|
||||
final String password, final Integer ssl) throws AS400SecurityException, IOException, DelayedConnectionException, Exception {
|
||||
|
||||
ConnectorLogger.getInstance().info("create new As400 : " + host);
|
||||
|
||||
CheckDispatcher resource = null;
|
||||
resource = new CheckDispatcher(host, login, password);
|
||||
resource = new CheckDispatcher(host, login, password, ssl);
|
||||
|
||||
this.pool.put(resource, System.currentTimeMillis());
|
||||
|
||||
return resource;
|
||||
}
|
||||
|
||||
private CheckDispatcher getAs400(final String host, final String login, final String password)
|
||||
private CheckDispatcher getAs400(final String host, final String login, final String password, final Integer ssl)
|
||||
throws AS400SecurityException, IOException, DelayedConnectionException, Exception {
|
||||
|
||||
for (final CheckDispatcher resource : this.pool.keySet()) {
|
||||
if (resource.getHost().equalsIgnoreCase(host) && resource.getLogin().equalsIgnoreCase(login)
|
||||
&& resource.getPassword().equalsIgnoreCase(password)) {
|
||||
&& resource.getPassword().equalsIgnoreCase(password) && resource.getSsl() == ssl) {
|
||||
this.pool.put(resource, System.currentTimeMillis());
|
||||
return resource;
|
||||
}
|
||||
}
|
||||
|
||||
return this.createNewCheckDispatcher(host, login, password);
|
||||
return this.createNewCheckDispatcher(host, login, password, ssl);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void dispatch(final NetworkClient client)
|
||||
throws AS400SecurityException, IOException, DelayedConnectionException, Exception {
|
||||
final CheckDispatcher checkDispatcher = this.getAs400(client.getAs400Host(), client.getAs400Login(),
|
||||
client.getAs400Password());
|
||||
client.getAs400Password(), client.getAs400Ssl());
|
||||
checkDispatcher.dispatch(client);
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ public class SystemHandlerTest {
|
||||
try {
|
||||
SystemStatus as400 = mock(SystemStatus.class);
|
||||
when(as400.getSystemPools()).thenReturn(new Vector<Object>().elements());
|
||||
SystemHandler sh = new SystemHandler(null, null, null, as400);
|
||||
SystemHandler sh = new SystemHandler(null, null, null, as400, null);
|
||||
sh.dumpSystem();
|
||||
} finally {
|
||||
System.setOut(originalOut);
|
||||
|
@ -1,77 +0,0 @@
|
||||
name: "@NAME@"
|
||||
arch: "${ARCH}"
|
||||
platform: "linux"
|
||||
version_schema: "none"
|
||||
version: "0.020"
|
||||
release: "${RELEASE}${DIST}"
|
||||
section: "default"
|
||||
priority: "optional"
|
||||
maintainer: "Centreon <contact@centreon.com>"
|
||||
description: |
|
||||
This module implements the Argon2 key derivation function, which is suitable to convert any password into a cryptographic key.
|
||||
This is most often used to for secure storage of passwords but can also be used to derive a encryption key from a password.
|
||||
It offers variable time and memory costs as well as output size.
|
||||
Commit: @COMMIT_HASH@
|
||||
vendor: "Centreon"
|
||||
homepage: "https://www.centreon.com"
|
||||
license: "Apache-2.0"
|
||||
|
||||
contents:
|
||||
- src: "/tmp/bin/argon2-calibrate"
|
||||
dst: "/usr/local/bin/"
|
||||
file_info:
|
||||
mode: 0755
|
||||
packager: rpm
|
||||
- src: "/tmp/bin/argon2-calibrate"
|
||||
dst: "/usr/bin/"
|
||||
file_info:
|
||||
mode: 0755
|
||||
packager: deb
|
||||
|
||||
- src: "/tmp/lib/perl5/*/auto/Crypt/Argon2/"
|
||||
dst: "@PERL_VENDORARCH@/auto/Crypt/Argon2/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/lib/perl5/*/Crypt/Argon2.pm"
|
||||
dst: "@PERL_VENDORARCH@/Crypt/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/man/man3/Crypt::Argon2*"
|
||||
dst: "/usr/share/man/man3/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
overrides:
|
||||
rpm:
|
||||
depends:
|
||||
- perl(Exporter)
|
||||
- perl(Time::HiRes)
|
||||
- perl(XSLoader)
|
||||
- perl(strict)
|
||||
- perl(warnings)
|
||||
conflicts:
|
||||
- perl-Crypt-Argon2-debuginfo
|
||||
replaces:
|
||||
- perl-Crypt-Argon2-debuginfo
|
||||
provides:
|
||||
- perl-Crypt-Argon2-debuginfo
|
||||
- perl(Crypt::Argon2)
|
||||
deb:
|
||||
depends:
|
||||
- perl
|
||||
- libc6
|
||||
conflicts:
|
||||
- libcrypt-argon2-perl-dbgsym
|
||||
replaces:
|
||||
- libcrypt-argon2-perl-dbgsym
|
||||
provides:
|
||||
- libcrypt-argon2-perl-dbgsym
|
||||
|
||||
rpm:
|
||||
summary: Perl interface to the Argon2 key derivation functions
|
||||
compression: zstd
|
||||
signature:
|
||||
key_file: ${RPM_SIGNING_KEY_FILE}
|
||||
key_id: ${RPM_SIGNING_KEY_ID}
|
63
dependencies/perl-json-path/perl-json-path.yaml
vendored
63
dependencies/perl-json-path/perl-json-path.yaml
vendored
@ -1,63 +0,0 @@
|
||||
name: "@NAME@"
|
||||
arch: "${ARCH}"
|
||||
platform: "linux"
|
||||
version_schema: "none"
|
||||
version: "@VERSION@"
|
||||
release: "${RELEASE}${DIST}"
|
||||
section: "default"
|
||||
priority: "optional"
|
||||
maintainer: "Centreon <contact@centreon.com>"
|
||||
description: |
|
||||
This module implements JSONPath, an XPath-like language for searching JSON-like structures.
|
||||
JSONPath is described at http://goessner.net/articles/JsonPath/.
|
||||
Commit: @COMMIT_HASH@
|
||||
vendor: "Centreon"
|
||||
homepage: "https://www.centreon.com"
|
||||
license: "Apache-2.0"
|
||||
|
||||
contents:
|
||||
- src: "/tmp/lib/perl5/JSON/Path.pm"
|
||||
dst: "@PERL_VENDORLIB@/JSON/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/lib/perl5/JSON/Path/"
|
||||
dst: "@PERL_VENDORLIB@/JSON/Path/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/man/man3/JSON::Path*"
|
||||
dst: "/usr/share/man/man3/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
overrides:
|
||||
rpm:
|
||||
depends:
|
||||
- perl(Carp::Assert)
|
||||
- perl(Exporter::Tiny)
|
||||
- perl(JSON::MaybeXS)
|
||||
- perl(JSON::Parse)
|
||||
- perl(LV)
|
||||
- perl(List::Util)
|
||||
- perl(Readonly)
|
||||
- perl(Tie::IxHash)
|
||||
- perl(Try::Tiny)
|
||||
provides:
|
||||
- perl(JSON::Path)
|
||||
deb:
|
||||
depends:
|
||||
- libcarp-assert-perl
|
||||
- libexporter-tiny-perl
|
||||
- libjson-parse-perl
|
||||
- liblv-perl
|
||||
- libreadonly-perl
|
||||
- libtie-ixhash-perl
|
||||
- libtry-tiny-perl
|
||||
|
||||
rpm:
|
||||
summary: This module implements JSONPath, an XPath-like language for searching JSON-like structures
|
||||
compression: zstd
|
||||
signature:
|
||||
key_file: ${RPM_SIGNING_KEY_FILE}
|
||||
key_id: ${RPM_SIGNING_KEY_ID}
|
@ -1,64 +0,0 @@
|
||||
name: "@NAME@"
|
||||
arch: "${ARCH}"
|
||||
platform: "linux"
|
||||
version_schema: "none"
|
||||
version: "0.8"
|
||||
release: "${RELEASE}${DIST}"
|
||||
section: "default"
|
||||
priority: "optional"
|
||||
maintainer: "Centreon <contact@centreon.com>"
|
||||
description: |
|
||||
Perl interface to the libssh library
|
||||
Commit: @COMMIT_HASH@
|
||||
vendor: "Centreon"
|
||||
homepage: "https://www.centreon.com"
|
||||
license: "Apache-2.0"
|
||||
|
||||
contents:
|
||||
- src: "/tmp/lib/perl5/*/auto/Libssh/Session/Session.so"
|
||||
dst: "@PERL_VENDORARCH@/auto/Libssh/Session/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/lib/perl5/*/Libssh/"
|
||||
dst: "@PERL_VENDORARCH@/Libssh/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/man/man3/Libssh::*"
|
||||
dst: "/usr/share/man/man3/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
overrides:
|
||||
rpm:
|
||||
depends:
|
||||
- perl-interpreter
|
||||
- libssh
|
||||
conflicts:
|
||||
- perl-Libssh-Session-debuginfo
|
||||
replaces:
|
||||
- perl-Libssh-Session-debuginfo
|
||||
provides:
|
||||
- perl-Libssh-Session-debuginfo
|
||||
- perl(Libssh::Session)
|
||||
- perl(Libssh::Sftp)
|
||||
deb:
|
||||
depends:
|
||||
- perl
|
||||
- libc6
|
||||
- libssh-4
|
||||
conflicts:
|
||||
- libssh-session-perl-dbgsym
|
||||
replaces:
|
||||
- libssh-session-perl-dbgsym
|
||||
provides:
|
||||
- libssh-session-perl-dbgsym
|
||||
- libssh-session-sftp
|
||||
|
||||
rpm:
|
||||
summary: Perl interface to the libssh library
|
||||
compression: zstd
|
||||
signature:
|
||||
key_file: ${RPM_SIGNING_KEY_FILE}
|
||||
key_id: ${RPM_SIGNING_KEY_ID}
|
78
dependencies/perl-net-curl/perl-net-curl.yaml
vendored
78
dependencies/perl-net-curl/perl-net-curl.yaml
vendored
@ -1,78 +0,0 @@
|
||||
name: "@NAME@"
|
||||
arch: "${ARCH}"
|
||||
platform: "linux"
|
||||
version_schema: "none"
|
||||
version: "0.55"
|
||||
release: "${RELEASE}${DIST}"
|
||||
section: "default"
|
||||
priority: "optional"
|
||||
maintainer: "Centreon <contact@centreon.com>"
|
||||
description: |
|
||||
Net::Curl provides a Perl interface to libcurl created with object-oriented implementations in mind.
|
||||
This documentation contains Perl-specific details and quirks.
|
||||
For more information consult libcurl man pages and documentation at http://curl.haxx.se.
|
||||
Commit: @COMMIT_HASH@
|
||||
vendor: "Centreon"
|
||||
homepage: "https://www.centreon.com"
|
||||
license: "Apache-2.0"
|
||||
|
||||
contents:
|
||||
- src: "/tmp/lib/perl5/*/auto/Net/Curl/Curl.so"
|
||||
dst: "@PERL_VENDORARCH@/auto/Net/Curl/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/lib/perl5/*/Net/Curl.pm"
|
||||
dst: "@PERL_VENDORARCH@/Net/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/lib/perl5/*/Net/Curl/"
|
||||
dst: "@PERL_VENDORARCH@/Net/Curl/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
- src: "/tmp/man/man3/Net::Curl*"
|
||||
dst: "/usr/share/man/man3/"
|
||||
file_info:
|
||||
mode: 0644
|
||||
|
||||
overrides:
|
||||
rpm:
|
||||
depends:
|
||||
- perl-interpreter
|
||||
- libcurl
|
||||
conflicts:
|
||||
- perl-Net-Curl-debuginfo
|
||||
replaces:
|
||||
- perl-Net-Curl-debuginfo
|
||||
provides:
|
||||
- perl-Net-Curl-debuginfo
|
||||
- perl(Net::Curl)
|
||||
- perl(Net::Curl::Compat)
|
||||
- perl(Net::Curl::Easy)
|
||||
- perl(Net::Curl::Form)
|
||||
- perl(Net::Curl::Share)
|
||||
- perl(Net::Curl::Multi)
|
||||
deb:
|
||||
depends:
|
||||
- perl
|
||||
- libcurl4
|
||||
conflicts:
|
||||
- libnet-curl-perl-dbgsym
|
||||
replaces:
|
||||
- libnet-curl-perl-dbgsym
|
||||
provides:
|
||||
- libnet-curl-perl-dbgsym
|
||||
- libnet-curl-compat-perl
|
||||
- libnet-curl-easy-perl
|
||||
- libnet-curl-form-perl
|
||||
- libnet-curl-share-perl
|
||||
- libnet-curl-multi-perl
|
||||
|
||||
rpm:
|
||||
summary: Perl interface for libcurl
|
||||
compression: zstd
|
||||
signature:
|
||||
key_file: ${RPM_SIGNING_KEY_FILE}
|
||||
key_id: ${RPM_SIGNING_KEY_ID}
|
@ -5,9 +5,12 @@
|
||||
"files": [
|
||||
"centreon/plugins/script_snmp.pm",
|
||||
"centreon/plugins/snmp.pm",
|
||||
"snmp_standard/mode/listinterfaces.pm",
|
||||
"snmp_standard/mode/resources/",
|
||||
"snmp_standard/mode/interfaces.pm",
|
||||
"snmp_standard/mode/listinterfaces.pm",
|
||||
"snmp_standard/mode/listspanningtrees.pm",
|
||||
"snmp_standard/mode/resources/",
|
||||
"snmp_standard/mode/spanningtree.pm",
|
||||
"snmp_standard/mode/uptime.pm",
|
||||
"network/aruba/aoscx/snmp/"
|
||||
]
|
||||
}
|
||||
|
@ -61,9 +61,9 @@ sub set_counters {
|
||||
$self->{maps_counters}->{global} = [
|
||||
{ label => 'scenario-status',
|
||||
type => 2,
|
||||
warning_default => '%{status} =~ /(Aborted|Stopped|Excluded|Degraded)/',
|
||||
warning_default => '%{status} =~ "Degraded"',
|
||||
critical_default => '%{status} =~ "Failure"',
|
||||
unknown_default => '%{status} =~ /(Unknown|No execution)/',
|
||||
unknown_default => '%{status} =~ /(Unknown|No execution|Aborted|Stopped|Excluded)/',
|
||||
set => {
|
||||
key_values => [ { name => 'status' }, { name => 'num_status' }, { name => 'display' } ],
|
||||
closure_custom_output => $self->can('custom_status_output'),
|
||||
@ -182,7 +182,7 @@ sub manage_selection {
|
||||
}
|
||||
};
|
||||
if (!defined $scenario_detail->{results} or scalar(@{$scenario_detail->{results}}) <= 0) {
|
||||
$self->{output}->add_option_msg(short_msg => "Scenario '" . $scenario->{scenarioName} . "' Don't have any performance data, please try to add a bigger timeframe");
|
||||
$self->{output}->add_option_msg(short_msg => "No execution, please try again with a bigger timeframe");
|
||||
next;
|
||||
}
|
||||
foreach my $kpi (@{$scenario_detail->{kpis}}) {
|
||||
@ -194,8 +194,17 @@ sub manage_selection {
|
||||
$self->{scenarios}->{ $scenario->{scenarioName} }->{steps_index}->{$steps->{index} - 1} = $steps->{name};
|
||||
}
|
||||
}
|
||||
|
||||
# The API is expected to sort the output to get the most recent data at the end of the array.
|
||||
# We store the last execution date, and check it for every data point sent back by the api.
|
||||
# If a step has failed, no data is sent by the api for this step, but the results of the previous executions are present.
|
||||
# This allows to get perfdata for the last execution with a successful first step.
|
||||
# If the first step fails, the script will take older data.
|
||||
my $last_execution = @{$scenario_detail->{results}}[-1]->{planningTime};
|
||||
foreach my $step_metrics (@{$scenario_detail->{results}}) {
|
||||
if ($step_metrics->{planningTime} ne $last_execution){
|
||||
$self->{output}->add_option_msg(long_msg => "Execution $step_metrics->{planningTime} of step $step_metrics->{stepId} is older than $last_execution, not taking it into account.", debug => 1);
|
||||
next;
|
||||
}
|
||||
my $exec_time = str2time($step_metrics->{planningTime}, 'GMT');
|
||||
$self->{scenarios}->{ $scenario->{scenarioName} }->{steps}->{ $self->{scenarios}->{ $scenario->{scenarioName} }->{steps_index}->{ $step_metrics->{stepId} } }->{ $step_metrics->{metric} } = $step_metrics->{value};
|
||||
$self->{scenarios}->{ $scenario->{scenarioName} }->{steps}->{ $self->{scenarios}->{ $scenario->{scenarioName} }->{steps_index}->{ $step_metrics->{stepId} } }->{last_exec} = POSIX::strftime('%d-%m-%Y %H:%M:%S %Z', localtime($exec_time));
|
||||
|
@ -47,7 +47,7 @@ sub custom_select_threshold {
|
||||
$self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{warning})) {
|
||||
$status = 'warning';
|
||||
} elsif (defined($self->{result_values}->{config}->{unknown}) && $self->{result_values}->{config}->{unknown} &&
|
||||
$self->{instance_mode}->reval($self->{result_values}->{config}->{unknown})) {
|
||||
$self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{unknown})) {
|
||||
$status = 'unknown';
|
||||
}
|
||||
if ($@) {
|
||||
|
@ -42,7 +42,7 @@ sub custom_select_threshold {
|
||||
$self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{warning})) {
|
||||
$status = 'warning';
|
||||
} elsif (defined($self->{result_values}->{config}->{unknown}) && $self->{result_values}->{config}->{unknown} &&
|
||||
$self->{instance_mode}->reval($self->{result_values}->{config}->{unknown})) {
|
||||
$self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{unknown})) {
|
||||
$status = 'unknown';
|
||||
}
|
||||
if ($@) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2024 Centreon (http://www.centreon.com/)
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
@ -24,6 +24,7 @@ use strict;
|
||||
use warnings;
|
||||
use centreon::plugins::http;
|
||||
use centreon::plugins::statefile;
|
||||
use JSON::XS;
|
||||
use MIME::Base64;
|
||||
use Digest::MD5 qw(md5_hex);
|
||||
|
||||
@ -45,11 +46,13 @@ sub new {
|
||||
$options{options}->add_options(
|
||||
arguments => {
|
||||
'hostname:s' => { name => 'hostname' },
|
||||
'port:s' => { name => 'port' },
|
||||
'proto:s' => { name => 'proto' },
|
||||
'port:s' => { name => 'port', default => '443' },
|
||||
'proto:s' => { name => 'proto', default => 'https' },
|
||||
'username:s' => { name => 'username' },
|
||||
'password:s' => { name => 'password' },
|
||||
'timeout:s' => { name => 'timeout' }
|
||||
'vstats-interval:s' => { name => 'vstats_interval', default => 60 },
|
||||
'vstats-duration:s' => { name => 'vstats_duration', default => 2764800 }, # 2764800 seconds in 32 days
|
||||
'timeout:s' => { name => 'timeout', default => 10 }
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -74,11 +77,13 @@ sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{hostname} = (defined($self->{option_results}->{hostname})) ? $self->{option_results}->{hostname} : '';
|
||||
$self->{port} = (defined($self->{option_results}->{port})) ? $self->{option_results}->{port} : 443;
|
||||
$self->{proto} = (defined($self->{option_results}->{proto})) ? $self->{option_results}->{proto} : 'https';
|
||||
$self->{timeout} = (defined($self->{option_results}->{timeout})) ? $self->{option_results}->{timeout} : 10;
|
||||
$self->{port} = $self->{option_results}->{port};
|
||||
$self->{proto} = $self->{option_results}->{proto};
|
||||
$self->{timeout} = $self->{option_results}->{timeout};
|
||||
$self->{username} = (defined($self->{option_results}->{username})) ? $self->{option_results}->{username} : '';
|
||||
$self->{password} = (defined($self->{option_results}->{password})) ? $self->{option_results}->{password} : '';
|
||||
$self->{vstats_interval} = $self->{option_results}->{vstats_interval};
|
||||
$self->{vstats_duration} = $self->{option_results}->{vstats_duration};
|
||||
|
||||
if ($self->{hostname} eq '') {
|
||||
$self->{output}->add_option_msg(short_msg => "Need to specify --hostname option.");
|
||||
@ -149,9 +154,6 @@ sub get_token {
|
||||
method => 'POST',
|
||||
url_path => '/api/session',
|
||||
query_form_post => '',
|
||||
unknown_status => $self->{unknown_http_status},
|
||||
warning_status => $self->{warning_http_status},
|
||||
critical_status => $self->{critical_http_status},
|
||||
header => [
|
||||
'Authorization: Basic ' . $auth_string,
|
||||
'Content-Type: application/x-www-form-urlencoded'
|
||||
@ -175,22 +177,33 @@ sub try_request_api {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $token = $self->get_token(%options);
|
||||
my $method = centreon::plugins::misc::is_empty($options{method}) ? 'GET' : $options{method};
|
||||
my $headers = [ 'vmware-api-session-id: ' . $token ];
|
||||
if ($method =~ /^(PATCH|POST)$/) {
|
||||
push @$headers, 'content-type: application/json';
|
||||
}
|
||||
|
||||
my $unknown_status = (defined($options{unknown_status})) ? $options{unknown_status} : undef;
|
||||
|
||||
my ($content) = $self->{http}->request(
|
||||
method => $method,
|
||||
url_path => '/api' . $options{endpoint},
|
||||
get_param => $options{get_param},
|
||||
header => [ 'vmware-api-session-id: ' . $token ],
|
||||
unknown_status => '',
|
||||
header => $headers,
|
||||
query_form_post => $options{query_form_post},
|
||||
unknown_status => $unknown_status,
|
||||
insecure => (defined($self->{option_results}->{insecure}) ? 1 : 0)
|
||||
);
|
||||
|
||||
if (!defined($content) || $content eq '') {
|
||||
if (!defined($content)) {
|
||||
$self->{output}->add_option_msg(short_msg => "API returns empty content [code: '"
|
||||
. $self->{http}->get_code() . "'] [message: '"
|
||||
. $self->{http}->get_message() . "']");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
my $decoded = centreon::plugins::misc::json_decode($content);
|
||||
|
||||
my $decoded = ($method eq 'GET') ? centreon::plugins::misc::json_decode($content) : {};
|
||||
|
||||
return $decoded;
|
||||
}
|
||||
@ -199,14 +212,18 @@ sub request_api {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->settings();
|
||||
my $api_response = $self->try_request_api(%options);
|
||||
|
||||
# first call using the available token with unknown_status = 0 in order to avoid exiting at first attempt in case it has expired
|
||||
my $api_response = $self->try_request_api(%options, unknown_status => '0');
|
||||
|
||||
# if the token is invalid, we try to authenticate again
|
||||
if (ref($api_response) eq 'HASH'
|
||||
&& defined($api_response->{error_type})
|
||||
&& $api_response->{error_type} eq 'UNAUTHENTICATED') {
|
||||
# if the first attempt failed, try again forcing to authenticate
|
||||
$api_response = $self->try_request_api('force_authentication' => 1, %options);
|
||||
}
|
||||
|
||||
# if we could not authenticate, we exit
|
||||
if (ref($api_response) eq 'HASH' && defined($api_response->{error_type})) {
|
||||
my $full_message = '';
|
||||
@ -219,6 +236,191 @@ sub request_api {
|
||||
return $api_response;
|
||||
}
|
||||
|
||||
sub get_all_acq_specs {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
# Get all acq specs and store them in cache
|
||||
# FIXME: cache management
|
||||
# FIXME: any pagination issue ?
|
||||
$self->{all_acq_specs} = $self->request_api(endpoint => '/stats/acq-specs')->{acq_specs} if ( !defined($self->{all_acq_specs}));
|
||||
|
||||
return $self->{all_acq_specs};
|
||||
}
|
||||
|
||||
sub compose_type_from_rsrc_id {
|
||||
my ($self, $rsrc_id) = @_;
|
||||
|
||||
if ($rsrc_id =~ /^([a-z]+)-(\d+)$/) {
|
||||
return uc($1);
|
||||
} else {
|
||||
$self->{output}->add_option_msg(short_msg => "compose_type_from_rsrc_id: cannot extract type from '$rsrc_id'");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
}
|
||||
|
||||
sub compose_acq_specs_json_payload {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $payload = {
|
||||
counters => {
|
||||
cid_mid => {
|
||||
cid => $options{cid}
|
||||
}
|
||||
},
|
||||
resources => [
|
||||
{
|
||||
predicate => 'EQUAL',
|
||||
scheme => 'moid',
|
||||
type => $self->compose_type_from_rsrc_id($options{rsrc_id}),
|
||||
id_value => $options{rsrc_id}
|
||||
}
|
||||
],
|
||||
expiration => time() + $self->{vstats_duration},
|
||||
interval => $self->{vstats_interval}
|
||||
};
|
||||
|
||||
return(centreon::plugins::misc::json_encode($payload));
|
||||
}
|
||||
|
||||
sub create_acq_spec {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
if (centreon::plugins::misc::is_empty($options{cid})) {
|
||||
$self->{output}->add_option_msg(short_msg => "ERR: need a cid to create an acq_spec");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
if (centreon::plugins::misc::is_empty($options{rsrc_id})) {
|
||||
$self->{output}->add_option_msg(short_msg => "ERR: need a rsrc_id to create an acq_spec");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
$self->request_api(
|
||||
method => 'POST',
|
||||
endpoint => '/stats/acq-specs/',
|
||||
query_form_post => $self->compose_acq_specs_json_payload(%options)
|
||||
) or return undef;
|
||||
$self->{output}->add_option_msg(long_msg => "The counter $options{cid} was not recorded for resource $options{rsrc_id} before. It will now (creating acq_spec).");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub extend_acq_spec {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
if (centreon::plugins::misc::is_empty($options{cid})) {
|
||||
$self->{output}->add_option_msg(short_msg => "ERR: need a cid to extend an acq_spec");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
if (centreon::plugins::misc::is_empty($options{rsrc_id})) {
|
||||
$self->{output}->add_option_msg(short_msg => "ERR: need a rsrc_id to extend an acq_spec");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
if (centreon::plugins::misc::is_empty($options{acq_spec_id})) {
|
||||
$self->{output}->add_option_msg(long_msg => "ERR: need a acq_spec_id to extend an acq_spec_id") ;
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
$self->{output}->add_option_msg(long_msg => "The acq_spec entry has to be extended to get more stats for $options{rsrc_id} / $options{cid}");
|
||||
|
||||
my $json_payload = $self->compose_acq_specs_json_payload(%options);
|
||||
my $response = $self->request_api(
|
||||
method => 'PATCH',
|
||||
endpoint => '/stats/acq-specs/' . $options{acq_spec_id},
|
||||
query_form_post => $json_payload
|
||||
);
|
||||
|
||||
# The response must be empty if the patch succeeds
|
||||
return undef if (defined($response) && ref($response) eq 'HASH' && scalar(keys %$response) > 0);
|
||||
|
||||
# reset stored acq_specs since it's no longer accurate
|
||||
$self->{all_acq_specs} = [];
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub get_acq_spec {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
# If it is not available in cache call get_all_acq_specs()
|
||||
my $acq_specs = $self->get_all_acq_specs();
|
||||
# FIXME: opt exit if centreon::plugins::misc::is_empty($options{cid})
|
||||
for my $spec (@$acq_specs) {
|
||||
# Ignore acq_specs not related to the counter_id
|
||||
next if ($options{cid} ne $spec->{counters}->{cid_mid}->{cid});
|
||||
# Check if this acq_spec is related to the given resource
|
||||
my @matching_rsrcs = grep {
|
||||
$_->{id_value} eq $options{rsrc_id}
|
||||
&& $_->{predicate} eq 'EQUAL'
|
||||
&& $_->{scheme} eq 'moid'
|
||||
} @{$spec->{resources}};
|
||||
return $spec if (@matching_rsrcs > 0);
|
||||
}
|
||||
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub check_acq_spec {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $acq_spec = $self->get_acq_spec(%options);
|
||||
|
||||
if ( !defined($acq_spec) ) {
|
||||
# acq_spec not found => we need to create it
|
||||
$self->create_acq_spec(%options) or return(undef);
|
||||
# acq_spec is created => check is ok
|
||||
return 1;
|
||||
} elsif ($acq_spec->{status} eq 'EXPIRED' || $acq_spec->{expiration} <= time() + 3600) {
|
||||
# acq_spec exists but expired => we need to extend it
|
||||
$self->extend_acq_spec(%options, acq_spec_id => $acq_spec->{id}) or return(undef);
|
||||
# acq_spec is extended => check is ok
|
||||
return 1;
|
||||
}
|
||||
# acq_spec exists and is not expired => check is ok
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub get_stats {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
if ( centreon::plugins::misc::is_empty($options{rsrc_id})) {
|
||||
$self->{output}->add_option_msg(short_msg => "get_stats method called without rsrc_id, won't query");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
if ( centreon::plugins::misc::is_empty($options{cid}) ) {
|
||||
$self->{output}->add_option_msg(short_msg => "get_stats method called without cid, will get all available stats for resource");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
if ( !$self->check_acq_spec(%options) ) {
|
||||
$self->{output}->add_option_msg(short_msg => "get_stats method failed to check_acq_spec()");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
# compose the endpoint
|
||||
my $endpoint = '/stats/data/dp?'
|
||||
. 'rsrcs=type.' . $self->compose_type_from_rsrc_id($options{rsrc_id}) . '.moid=' . $options{rsrc_id}
|
||||
. '&cid=' . $options{cid}
|
||||
. '&start=' . (time() - 120); # get the last two minutes to be sure to get at least one value
|
||||
|
||||
my $result = $self->request_api(
|
||||
method => 'GET',
|
||||
endpoint => $endpoint
|
||||
);
|
||||
|
||||
# FIXME: check if ( !defined($result) || ref($result) ne 'HASH' || scalar(@{ $result->{data_points} }) == 0 ) {
|
||||
# FIXME: the existence of the resource id must be checked at one moment
|
||||
# return only the last value (if there are several)
|
||||
if ( scalar(@{ $result->{data_points} }) == 0 ) {
|
||||
$self->{output}->add_option_msg(short_msg => "no data for host " . $options{rsrc_id} . " counter " . $options{cid} . " at the moment.");
|
||||
return undef;
|
||||
}
|
||||
|
||||
# Return the `val` field of the last object of the array
|
||||
return $result->{data_points}->[ @{ $result->{data_points} } - 1 ]->{val};
|
||||
# FIXME: handle arrays in get_stats and check_acq_specs
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
@ -238,6 +440,9 @@ apps::vmware::vsphere8::custom::api - Custom module for VMware vSphere 8 API.
|
||||
$api->set_options(option_results => $option_results);
|
||||
$api->check_options();
|
||||
my $response = $api->request_api(endpoint => '/vcenter/host');
|
||||
my $host_cpu_capacity = $api->get_stats(
|
||||
cid => 'cpu.capacity.provisioned.HOST',
|
||||
rsrc_id => 'host-18');
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@ -249,7 +454,7 @@ This module provides methods to interact with the VMware vSphere 8 REST API. It
|
||||
|
||||
my $api = apps::vmware::vsphere8::custom::api->new(%options);
|
||||
|
||||
Creates a new `apps::vmware::vsphere8::custom::api` object.
|
||||
Creates a new C<apps::vmware::vsphere8::custom::api> object.
|
||||
|
||||
=over 4
|
||||
|
||||
@ -357,6 +562,128 @@ Calls try_request_api and recalls it forcing authentication if the first call fa
|
||||
|
||||
=back
|
||||
|
||||
=head2 get_acq_spec
|
||||
|
||||
my $spec = $self->get_acq_spec(%options);
|
||||
|
||||
Retrieves the acquisition specification (acq_spec) for the given counter ID (C<cid>) and resource ID (rsrc_id).
|
||||
|
||||
=over 4
|
||||
|
||||
=item * C<%options> - A hash of options. The following keys are supported:
|
||||
|
||||
=over 8
|
||||
|
||||
=item * C<cid> - The counter ID for which to retrieve the acq_spec. This option is required.
|
||||
|
||||
=item * C<rsrc_id> - The resource ID for which to retrieve the acq_spec. This option is required.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
Returns the matching acq_spec if found, otherwise returns undef.
|
||||
|
||||
=cut
|
||||
|
||||
=head2 create_acq_spec
|
||||
|
||||
$api->create_acq_spec(%options);
|
||||
|
||||
Creates a new acquisition specification (acq_spec) for the given options.
|
||||
|
||||
=over 4
|
||||
|
||||
=item * C<%options> - A hash of options. The following keys are supported:
|
||||
|
||||
=over 8
|
||||
|
||||
=item * C<cid> - The counter ID for which to create the acq_spec. This option is required.
|
||||
|
||||
=item * C<rsrc_id> - The resource ID for which to create the acq_spec. This option is required.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
Returns 1 if the acq_spec is successfully created, otherwise returns undef.
|
||||
|
||||
=cut
|
||||
|
||||
=head2 extend_acq_spec
|
||||
|
||||
$api->extend_acq_spec(%options);
|
||||
|
||||
Extends the acquisition specification (acq_spec) for the given options.
|
||||
|
||||
=over 4
|
||||
|
||||
=item * C<%options> - A hash of options. The following keys are supported:
|
||||
|
||||
=over 8
|
||||
|
||||
=item * C<cid> - The counter ID for which to extend the acq_spec. This option is required.
|
||||
|
||||
=item * C<rsrc_id> - The resource ID for which to extend the acq_spec. This option is required.
|
||||
|
||||
=item * C<acq_spec_id> - The acquisition specification ID to extend. This option is required.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
Returns 1 if the acq_spec is successfully extended, otherwise returns undef.
|
||||
|
||||
=cut
|
||||
|
||||
=head2 check_acq_spec
|
||||
|
||||
$api->check_acq_spec(%options);
|
||||
|
||||
Checks the acquisition specification (acq\_spec) for the given options. If the acq\_spec does not exist, it creates a new one. If the acq\_spec exists but is expired or about to expire, it extends the acq\_spec.
|
||||
|
||||
=over 4
|
||||
|
||||
=item * C<%options> - A hash of options. The following keys are supported:
|
||||
|
||||
=over 8
|
||||
|
||||
=item * C<cid> - The counter ID for which to check the acq\_spec. This option is required.
|
||||
|
||||
=item * C<rsrc_id> - The resource ID for which to check the acq\_spec. This option is required.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
Returns 1 if the acq\_spec is valid or has been successfully created/extended, undef otherwise.
|
||||
|
||||
=cut
|
||||
|
||||
=head2 get_stats
|
||||
|
||||
my $value = $api->get_stats(%options);
|
||||
|
||||
Retrieves the latest statistics for a given resource and counter.
|
||||
|
||||
=over 4
|
||||
|
||||
=item * C<%options> - A hash of options. The following keys are supported:
|
||||
|
||||
=over 8
|
||||
|
||||
=item * C<rsrc_id> - The resource ID for which to retrieve statistics. This option is required.
|
||||
|
||||
=item * C<cid> - The counter ID for which to retrieve statistics. This option is required.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
Returns the latest value for the specified resource and counter.
|
||||
|
||||
=cut
|
||||
|
||||
=head1 REST API OPTIONS
|
||||
|
||||
Command-line options for VMware vSphere 8 API:
|
||||
@ -383,6 +710,16 @@ Define the username for authentication.
|
||||
|
||||
Define the password for authentication.
|
||||
|
||||
=item B<--vstats-interval>
|
||||
|
||||
Define the interval (in seconds) at which the C<vstats> must be recorded (default: 300).
|
||||
Used to create entries at the C</api/stats/acq-specs> endpoint.
|
||||
|
||||
=item B<--vstats-duration>
|
||||
|
||||
Define the time (in seconds) after which the C<vstats> will stop being recorded (default: 2764800, meaning 32 days).
|
||||
Used to create entries at the C</api/stats/acq-specs> endpoint.
|
||||
|
||||
=item B<--timeout>
|
||||
|
||||
Define the timeout for API requests (default: 10 seconds).
|
||||
|
176
src/apps/vmware/vsphere8/esx/mode.pm
Normal file
176
src/apps/vmware/vsphere8/esx/mode.pm
Normal file
@ -0,0 +1,176 @@
|
||||
#
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
# service performance.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
package apps::vmware::vsphere8::esx::mode;
|
||||
use strict;
|
||||
use warnings FATAL => 'all';
|
||||
|
||||
use base qw(centreon::plugins::templates::counter);
|
||||
|
||||
sub new {
|
||||
my ($class, %options) = @_;
|
||||
my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1);
|
||||
|
||||
$options{options}->add_options(
|
||||
arguments => {
|
||||
'esx-id:s' => { name => 'esx_id' },
|
||||
'esx-name:s' => { name => 'esx_name' }
|
||||
}
|
||||
);
|
||||
$options{options}->add_help(package => __PACKAGE__, sections => 'VMWARE 8 HOST OPTIONS', once => 1);
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub get_esx_id_from_name {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
if ( centreon::plugins::misc::is_empty($self->{esx_name}) ) {
|
||||
$self->{output}->add_option_msg(short_msg => "get_esx_id_from_name method called without esx_name option. Please check configuration.");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
my $response = $options{custom}->request_api(
|
||||
'endpoint' => '/vcenter/host',
|
||||
'method' => 'GET'
|
||||
);
|
||||
|
||||
for my $rsrc (@$response) {
|
||||
next if ($rsrc->{name} ne $self->{esx_name});
|
||||
$self->{esx_id} = $rsrc->{host};
|
||||
$self->{output}->add_option_msg(long_msg => "get_esx_id_from_name method called to get " . $self->{esx_name}
|
||||
. "'s id: " . $self->{esx_id} . ". Prefer using --esx-id to spare a query to the API.");
|
||||
return $rsrc->{host};
|
||||
}
|
||||
|
||||
return undef;
|
||||
|
||||
}
|
||||
|
||||
sub get_esx_stats {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
if ( centreon::plugins::misc::is_empty($options{esx_id}) && !$self->get_esx_id_from_name(%options) ) {
|
||||
$self->{output}->add_option_msg(short_msg => "get_esx_stats method cannot get host ID from host name");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
return $options{custom}->get_stats(
|
||||
%options,
|
||||
rsrc_id => $self->{esx_id}
|
||||
);
|
||||
}
|
||||
|
||||
sub request_api {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return $options{custom}->request_api(%options);
|
||||
}
|
||||
|
||||
sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->SUPER::check_options(%options);
|
||||
|
||||
if (centreon::plugins::misc::is_empty($self->{option_results}->{esx_id})
|
||||
&& centreon::plugins::misc::is_empty($self->{option_results}->{esx_name})) {
|
||||
$self->{output}->add_option_msg(short_msg => 'Need to specify either --esx-id or --esx-name option.');
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
|
||||
$self->{esx_id} = $self->{option_results}->{esx_id};
|
||||
$self->{esx_name} = $self->{option_results}->{esx_name};
|
||||
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 VMWARE 8 HOST OPTIONS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<--esx-id>
|
||||
|
||||
Define which physical server to monitor based on its resource ID (example: C<host-16>).
|
||||
|
||||
=item B<--esx-name>
|
||||
|
||||
Define which physical server to monitor based on its name (example: C<esx01.mydomain.tld>).
|
||||
When possible, it is recommended to use C<--esx-id> instead.
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
apps::vmware::vsphere8::esx::mode - Template for modes monitoring VMware physical hosts
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use base apps::vmware::vsphere8::esx::mode;
|
||||
|
||||
sub set_counters {...}
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
|
||||
|
||||
$api->set_options(option_results => $option_results);
|
||||
$api->check_options();
|
||||
my $response = $api->request_api(endpoint => '/vcenter/host');
|
||||
my $host_cpu_capacity = $self->get_esx_stats(
|
||||
cid => 'cpu.capacity.provisioned.HOST',
|
||||
rsrc_id => 'host-18');
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This module provides methods to interact with the VMware vSphere 8 REST API. It handles authentication, caching, and API requests.
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 get_esx_stats
|
||||
|
||||
$self->get_esx_stats(%options);
|
||||
|
||||
Retrieves the ESX statistics for the given options using package apps::vmware::vsphere8::custom::api::get_stats()
|
||||
|
||||
=over 4
|
||||
|
||||
=item * C<%options> - A hash of options. The following keys are supported:
|
||||
|
||||
=over 8
|
||||
|
||||
=item * C<cid> - The C<cid> (counter id) of the desired metric.
|
||||
|
||||
=item * C<esx_id> - The ESX's C<rsrc_id> (resource ID) for which to retrieve the statistics. This option is optional if C<esx_name> is provided.
|
||||
|
||||
=item * C<esx_name> - The ESX's name for which to retrieve the statistics. This option is not used if C<esx_id> is provided, which is the nominal usage of this function.
|
||||
|
||||
=back
|
||||
|
||||
=back
|
||||
|
||||
Returns the statistics for the specified ESX.
|
||||
|
||||
=cut
|
||||
|
398
src/apps/vmware/vsphere8/esx/mode/cpu.pm
Normal file
398
src/apps/vmware/vsphere8/esx/mode/cpu.pm
Normal file
@ -0,0 +1,398 @@
|
||||
#
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
# service performance.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
package apps::vmware::vsphere8::esx::mode::cpu;
|
||||
use strict;
|
||||
use warnings;
|
||||
use base qw(apps::vmware::vsphere8::esx::mode);
|
||||
|
||||
sub new {
|
||||
my ($class, %options) = @_;
|
||||
|
||||
my $self = $class->SUPER::new(package => __PACKAGE__, %options);
|
||||
|
||||
$options{options}->add_options(
|
||||
arguments => {
|
||||
'add-contention' => { name => 'add_contention' },
|
||||
'add-demand' => { name => 'add_demand' },
|
||||
'add-corecount' => { name => 'add_corecount' }
|
||||
}
|
||||
);
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->SUPER::check_options(%options);
|
||||
|
||||
# If a threshold is given on contention, we enable the corresponding data collection
|
||||
if (grep {$_ =~ /contention/ && defined($self->{option_results}->{$_}) && $self->{option_results}->{$_} ne ''} keys %{$self->{option_results}}) {
|
||||
$self->{option_results}->{add_contention} = 1;
|
||||
}
|
||||
# If a threshold is given on demand, we enable the corresponding data collection
|
||||
if (grep {$_ =~ /demand/ && defined($self->{option_results}->{$_}) && $self->{option_results}->{$_} ne ''} keys %{$self->{option_results}}) {
|
||||
$self->{option_results}->{add_demand} = 1;
|
||||
}
|
||||
# If a threshold is given on corecount, we enable the corresponding data collection
|
||||
if (grep {$_ =~ /corecount/ && defined($self->{option_results}->{$_}) && $self->{option_results}->{$_} ne ''} keys %{$self->{option_results}}) {
|
||||
$self->{option_results}->{add_corecount} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Skip contention processing if there is no available data
|
||||
sub skip_contention {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return 0 if (defined($self->{cpu_contention})
|
||||
&& ref($self->{cpu_contention}) eq 'HASH'
|
||||
&& scalar(keys %{$self->{cpu_contention}}) > 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Skip demand processing if there is no available data
|
||||
sub skip_demand {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return 0 if (defined($self->{cpu_demand})
|
||||
&& ref($self->{cpu_demand}) eq 'HASH'
|
||||
&& scalar(keys %{$self->{cpu_demand}}) > 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
# Skip corecount processing if there is no available data
|
||||
sub skip_corecount {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return 0 if (defined($self->{cpu_corecount})
|
||||
&& ref($self->{cpu_corecount}) eq 'HASH'
|
||||
&& scalar(keys %{$self->{cpu_corecount}}) > 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub set_counters {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{maps_counters_type} = [
|
||||
{ name => 'cpu_usage', type => 0 },
|
||||
{ name => 'cpu_contention', type => 0, cb_init => 'skip_contention' },
|
||||
{ name => 'cpu_demand', type => 0, cb_init => 'skip_demand' },
|
||||
{ name => 'cpu_corecount', type => 0, cb_init => 'skip_corecount' }
|
||||
];
|
||||
|
||||
$self->{maps_counters}->{cpu_usage} = [
|
||||
{
|
||||
label => 'usage-percentage',
|
||||
type => 1,
|
||||
nlabel => 'cpu.capacity.usage.percentage',
|
||||
set => {
|
||||
output_template => 'CPU average usage is %.2f %%',
|
||||
key_values => [ { name => 'prct_used' } ],
|
||||
output_use => 'prct_used',
|
||||
threshold_use => 'prct_used',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'prct_used',
|
||||
template => '%.2f',
|
||||
min => 0,
|
||||
max => 100,
|
||||
unit => '%'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
label => 'usage-frequency',
|
||||
type => 1,
|
||||
nlabel => 'cpu.capacity.usage.hertz',
|
||||
set => {
|
||||
key_values => [ { name => 'cpu.capacity.usage.HOST' }, { name => 'cpu_usage_hertz' }, { name => 'cpu_provisioned_hertz' } ],
|
||||
output_use => 'cpu.capacity.usage.HOST',
|
||||
threshold_use => 'cpu.capacity.usage.HOST',
|
||||
output_template => 'used frequency is %s kHz',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'cpu_usage_hertz',
|
||||
template => '%s',
|
||||
max => 'cpu_provisioned_hertz',
|
||||
unit => 'Hz'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
$self->{maps_counters}->{cpu_contention} = [
|
||||
{
|
||||
label => 'contention-percentage',
|
||||
type => 1,
|
||||
nlabel => 'cpu.capacity.contention.percentage',
|
||||
set => {
|
||||
output_template => 'CPU average contention is %.2f %%',
|
||||
key_values => [ { name => 'cpu.capacity.contention.HOST' } ],
|
||||
output_use => 'cpu.capacity.contention.HOST',
|
||||
threshold_use => 'cpu.capacity.contention.HOST',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'cpu.capacity.contention.HOST',
|
||||
template => '%.2f',
|
||||
min => 0,
|
||||
max => 100,
|
||||
unit => '%'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
$self->{maps_counters}->{cpu_demand} = [
|
||||
{
|
||||
label => 'demand-percentage',
|
||||
type => 1,
|
||||
nlabel => 'cpu.capacity.demand.percentage',
|
||||
set => {
|
||||
output_template => 'CPU average demand is %.2f %%',
|
||||
key_values => [ { name => 'prct_demand' } ],
|
||||
output_use => 'prct_demand',
|
||||
threshold_use => 'prct_demand',
|
||||
perfdatas => [ { value => 'prct_demand', template => '%s' } ]
|
||||
}
|
||||
},
|
||||
{
|
||||
label => 'demand-frequency',
|
||||
type => 1,
|
||||
nlabel => 'cpu.capacity.demand.hertz',
|
||||
set => {
|
||||
key_values => [
|
||||
{ name => 'cpu.capacity.demand.HOST' },
|
||||
{ name => 'cpu_demand_hertz' },
|
||||
{ name => 'cpu_provisioned_hertz' }
|
||||
],
|
||||
output_use => 'cpu.capacity.demand.HOST',
|
||||
threshold_use => 'cpu.capacity.demand.HOST',
|
||||
output_template => 'demand frequency is %s kHz',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'cpu_demand_hertz',
|
||||
template => '%s',
|
||||
max => 'cpu_provisioned_hertz',
|
||||
unit => 'Hz'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
$self->{maps_counters}->{cpu_corecount} = [
|
||||
{
|
||||
label => 'corecount-usage',
|
||||
type => 1,
|
||||
nlabel => 'cpu.corecount.usage.count',
|
||||
set => {
|
||||
output_template => 'CPU cores used: %s',
|
||||
output_use => 'cpu.corecount.usage.HOST',
|
||||
key_values => [ { name => 'cpu.corecount.usage.HOST' } ],
|
||||
threshold_use => 'cpu.corecount.usage.HOST',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'cpu.corecount.usage.HOST',
|
||||
template => '%s'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
# Set the list of basic counters IDs
|
||||
my @counters = (
|
||||
'cpu.capacity.provisioned.HOST',
|
||||
'cpu.capacity.usage.HOST'
|
||||
);
|
||||
|
||||
# Add some counters depending on the options
|
||||
push @counters, 'cpu.capacity.contention.HOST' if ($self->{option_results}->{add_contention});
|
||||
push @counters, 'cpu.capacity.demand.HOST' if ($self->{option_results}->{add_demand});
|
||||
push @counters, 'cpu.corecount.provisioned.HOST',
|
||||
'cpu.corecount.usage.HOST' if ($self->{option_results}->{add_corecount});
|
||||
|
||||
# The corecount contention is available but does not seem useful atm. Keeping it here for later
|
||||
#push @counters_list, 'cpu.corecount.contention.HOST' if ($self->{option_results}->{add_contention} && $self->{option_results}->{add_corecount});
|
||||
|
||||
# Get all the needed stats
|
||||
my %results = map {
|
||||
$_ => $self->get_esx_stats(%options, cid => $_, esx_id => $self->{esx_id}, esx_name => $self->{esx_name} )
|
||||
} @counters;
|
||||
|
||||
# Fill the counter structure depending on their availability
|
||||
# Fill the basic stats
|
||||
if (defined($results{'cpu.capacity.usage.HOST'}) && defined($results{'cpu.capacity.provisioned.HOST'})) {
|
||||
$self->{cpu_usage} = {
|
||||
'prct_used' => 100 * $results{'cpu.capacity.usage.HOST'} / $results{'cpu.capacity.provisioned.HOST'},
|
||||
'cpu_usage_hertz' => $results{'cpu.capacity.usage.HOST'} * 1000,
|
||||
'cpu_provisioned_hertz' => $results{'cpu.capacity.provisioned.HOST'} * 1000,
|
||||
'cpu.capacity.usage.HOST' => $results{'cpu.capacity.usage.HOST'}
|
||||
};
|
||||
}
|
||||
|
||||
# Fill the contention stats
|
||||
if ( defined($results{'cpu.capacity.contention.HOST'}) ) {
|
||||
$self->{cpu_contention} = {
|
||||
'cpu.capacity.contention.HOST' => $results{'cpu.capacity.contention.HOST'}
|
||||
};
|
||||
}
|
||||
|
||||
# Fill the demand stats
|
||||
if (defined($results{'cpu.capacity.demand.HOST'}) && defined($results{'cpu.capacity.provisioned.HOST'})) {
|
||||
$self->{cpu_demand} = {
|
||||
'prct_demand' => 100 * $results{'cpu.capacity.demand.HOST'} / $results{'cpu.capacity.provisioned.HOST'},
|
||||
'cpu.capacity.demand.HOST' => $results{'cpu.capacity.demand.HOST'},
|
||||
'cpu_demand_hertz' => $results{'cpu.capacity.demand.HOST'} * 1000,
|
||||
'cpu_provisioned_hertz' => $results{'cpu.capacity.provisioned.HOST'} * 1000
|
||||
};
|
||||
}
|
||||
|
||||
# Fill the corecount stats
|
||||
if (defined($results{'cpu.corecount.usage.HOST'})) {
|
||||
$self->{cpu_corecount}->{'cpu.corecount.usage.HOST'} = $results{'cpu.corecount.usage.HOST'};
|
||||
# This counter is the number of physical CPU cores of the ESX, it does not seem worth monitoring
|
||||
#$self->{cpu_corecount}->{'cpu.corecount.provisioned.HOST'} = $results{'cpu.corecount.provisioned.HOST'};
|
||||
}
|
||||
|
||||
# Example of retrieved stats:
|
||||
# $VAR1 = {
|
||||
# 'cpu.capacity.demand.HOST' => '2790',
|
||||
# 'cpu.capacity.provisioned.HOST' => '50280',
|
||||
# 'cpu.capacity.usage.HOST' => '3228.36',
|
||||
# 'cpu.corecount.provisioned.HOST' => '24',
|
||||
# 'cpu.capacity.contention.HOST' => '0.55',
|
||||
# 'cpu.corecount.usage.HOST' => '78',
|
||||
# 'cpu.corecount.contention.HOST' => '0'
|
||||
# };
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 MODE
|
||||
|
||||
Monitor the status of VMware ESX hosts through vSphere 8 REST API.
|
||||
|
||||
Meaning of the available counters in the VMware API:
|
||||
- cpu.capacity.provisioned.HOST Capacity in kHz of the physical CPU cores.
|
||||
- cpu.capacity.usage.HOST CPU usage as a percent during the interval.
|
||||
- cpu.capacity.contention.HOST Percent of time the virtual machine is unable to run because it is contending for access to the physical CPU(s).
|
||||
- cpu.capacity.demand.HOST The amount of CPU resources a virtual machine would use if there were no CPU contention or CPU limit.
|
||||
- cpu.corecount.usage.HOST The number of virtual processors running on the host.
|
||||
- cpu.corecount.provisioned.HOST The number of virtual processors provisioned to the entity.
|
||||
- cpu.corecount.contention.HOST Time the virtual machine vCPU is ready to run, but is unable to run due to co-scheduling constraints.
|
||||
|
||||
The default metrics provided by this plugin are:
|
||||
- cpu.capacity.usage.hertz based on the API's cpu.capacity.usage.HOST counter
|
||||
- cpu.capacity.usage.percentage based on 100 * cpu.capacity.usage.HOST / cpu.capacity.provisioned.HOST
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<--add-demand>
|
||||
|
||||
Add counter related to CPU demand:
|
||||
|
||||
C<cpu.capacity.demand.HOST>: The amount of CPU resources a virtual machine would use if there were no CPU contention or CPU limit.
|
||||
|
||||
=item B<--add-contention>
|
||||
|
||||
Add counter related to CPU demand:
|
||||
|
||||
C<cpu.capacity.contention.HOST>: Percent of time the virtual machine is unable to run because it is contending for access to the physical CPU(s).
|
||||
|
||||
=item B<--add-corecount>
|
||||
|
||||
Add counter related to CPU core count:
|
||||
|
||||
C<cpu.corecount.usage.HOST>: The number of virtual processors running on the host.
|
||||
|
||||
=item B<--warning-usage-percentage>
|
||||
|
||||
Threshold in %.
|
||||
|
||||
=item B<--critical-usage-percentage>
|
||||
|
||||
Threshold in %.
|
||||
|
||||
=item B<--warning-usage-frequency>
|
||||
|
||||
Threshold in Hz.
|
||||
|
||||
=item B<--critical-usage-frequency>
|
||||
|
||||
Threshold in Hz.
|
||||
|
||||
=item B<--warning-contention-percentage>
|
||||
|
||||
Threshold in %.
|
||||
|
||||
=item B<--critical-contention-percentage>
|
||||
|
||||
Threshold in %.
|
||||
|
||||
=item B<--warning-contention-frequency>
|
||||
|
||||
Threshold in Hz.
|
||||
|
||||
=item B<--critical-contention-frequency>
|
||||
|
||||
Threshold in Hz.
|
||||
|
||||
=item B<--warning-demand-percentage>
|
||||
|
||||
Threshold in %.
|
||||
|
||||
=item B<--critical-demand-percentage>
|
||||
|
||||
Threshold in %.
|
||||
|
||||
=item B<--warning-demand-frequency>
|
||||
|
||||
Threshold in Hz.
|
||||
|
||||
=item B<--critical-demand-frequency>
|
||||
|
||||
Threshold in Hz.
|
||||
|
||||
=item B<--warning-corecount-usage>
|
||||
|
||||
Threshold in number of cores.
|
||||
|
||||
=item B<--critical-corecount-usage>
|
||||
|
||||
Threshold in number of cores.
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2024 Centreon (http://www.centreon.com/)
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2024 Centreon (http://www.centreon.com/)
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
package apps::vmware::vsphere8::esx::mode::hoststatus;
|
||||
|
||||
use base qw(centreon::plugins::templates::counter);
|
||||
use base qw(apps::vmware::vsphere8::esx::mode);
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
@ -41,31 +41,7 @@ sub custom_connection_status_output {
|
||||
sub prefix_host_output {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return "Host '" . $options{instance_value}->{display} . "': ";
|
||||
}
|
||||
|
||||
sub new {
|
||||
my ($class, %options) = @_;
|
||||
my $self = $class->SUPER::new(package => __PACKAGE__, %options);
|
||||
bless $self, $class;
|
||||
|
||||
$options{options}->add_options(
|
||||
arguments => {
|
||||
'esx-name:s' => { name => 'esx_name', default => '.*' },
|
||||
'warning-power-status:s' => { name => 'warning-power-status' },
|
||||
'critical-power-status:s' => { name => 'critical-power-status', default => '%{power_state} !~ /^powered_on$/i' },
|
||||
'warning-connection-status:s' => { name => 'warning-connection-status' },
|
||||
'critical-connection-status:s' => { name => 'critical-connection-status', default => '%{connection_state} !~ /^connected$/i' },
|
||||
});
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->SUPER::check_options(%options);
|
||||
$self->change_macros(macros => ['warning-power-status', 'critical-power-status', 'warning-connection-status', 'critical-connection-status']);
|
||||
return "Host '" . $options{instance_value}->{display} . "', id: '" . $options{instance_value}->{id} . "': ";
|
||||
}
|
||||
|
||||
sub set_counters {
|
||||
@ -84,8 +60,9 @@ sub set_counters {
|
||||
{
|
||||
label => 'power-status',
|
||||
type => 2,
|
||||
critical_default => '%{power_state} !~ /^powered_on$/i',
|
||||
set => {
|
||||
key_values => [ { name => 'display' }, { name => 'power_state' } ],
|
||||
key_values => [ { name => 'display' }, { name => 'power_state' }, { name => 'id' } ],
|
||||
closure_custom_output => $self->can('custom_power_status_output'),
|
||||
closure_custom_perfdata => sub {return 0;},
|
||||
closure_custom_threshold_check => \&catalog_status_threshold_ng
|
||||
@ -94,6 +71,7 @@ sub set_counters {
|
||||
{
|
||||
label => 'connection-status',
|
||||
type => 2,
|
||||
critical_default => '%{connection_state} !~ /^connected$/i',
|
||||
set => {
|
||||
key_values => [{ name => 'display' }, { name => 'connection_state' }],
|
||||
closure_custom_output => $self->can('custom_connection_status_output'),
|
||||
@ -107,14 +85,16 @@ sub set_counters {
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $response = $options{custom}->request_api(
|
||||
my $response = $self->request_api(
|
||||
%options,
|
||||
'endpoint' => '/vcenter/host',
|
||||
'method' => 'GET'
|
||||
);
|
||||
|
||||
$self->{host} = {};
|
||||
foreach my $host (@{$response}) {
|
||||
next if (!defined($host->{name}) || $host->{name} !~ $self->{option_results}->{esx_name});
|
||||
next if (!defined($host->{name}) || defined($self->{option_results}->{esx_name}) && $host->{name} ne $self->{option_results}->{esx_name});
|
||||
next if (!defined($host->{host}) || defined($self->{option_results}->{esx_id}) && $host->{host} ne $self->{option_results}->{esx_id});
|
||||
|
||||
$self->{host}->{$host->{host}} = {
|
||||
display => $host->{name},
|
||||
@ -140,11 +120,6 @@ Monitor the status of VMware ESX hosts through vSphere 8 REST API.
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<--esx-name>
|
||||
|
||||
Define which ESX server to monitor based on their name.
|
||||
This option will be treated as a regular expression.
|
||||
|
||||
=item B<--warning-power-status>
|
||||
|
||||
Define the warning threshold for the power status of the ESX host.
|
||||
|
147
src/apps/vmware/vsphere8/esx/mode/memory.pm
Normal file
147
src/apps/vmware/vsphere8/esx/mode/memory.pm
Normal file
@ -0,0 +1,147 @@
|
||||
#
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
# service performance.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
package apps::vmware::vsphere8::esx::mode::memory;
|
||||
use strict;
|
||||
use warnings;
|
||||
use base qw(apps::vmware::vsphere8::esx::mode);
|
||||
|
||||
my @counters = (
|
||||
#'mem.reservedCapacityPct.HOST', # Percent of memory that has been reserved either through VMkernel use, by userworlds or due to virtual machine memory reservations.
|
||||
#'mem.capacity.provisioned.HOST', # Total amount of memory available to the host.
|
||||
'mem.capacity.usable.HOST', # Amount of physical memory available for use by virtual machines on this host
|
||||
#'mem.capacity.usage.HOST', # Amount of physical memory actively used
|
||||
#'mem.capacity.contention.HOST', # Percentage of time VMs are waiting to access swapped, compressed or ballooned memory.
|
||||
'mem.consumed.vms.HOST', # Amount of physical memory consumed by VMs on this host.
|
||||
#'mem.consumed.userworlds.HOST' # Amount of physical memory consumed by userworlds on this host
|
||||
);
|
||||
|
||||
sub custom_memory_output {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return sprintf(
|
||||
'Memory used: %s %s used - Usable: %s %s',
|
||||
$self->{perfdata}->change_bytes(value => $self->{result_values}->{used_bytes}),
|
||||
$self->{perfdata}->change_bytes(value => $self->{result_values}->{max_bytes})
|
||||
);
|
||||
}
|
||||
|
||||
sub set_counters {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{maps_counters_type} = [
|
||||
{ name => 'memory', type => 0, message_separator => ' - '}
|
||||
];
|
||||
|
||||
$self->{maps_counters}->{memory} = [
|
||||
{
|
||||
label => 'vms-usage-percentage',
|
||||
type => 1,
|
||||
nlabel => 'vms.memory.usage.percentage',
|
||||
set => {
|
||||
key_values => [ { name => 'used_prct' } ],
|
||||
output_template => '%2.f%% of usable memory is used by VMs',
|
||||
output_use => 'used_prct',
|
||||
threshold_use => 'used_prct',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'used_prct',
|
||||
template => '%.2f',
|
||||
min => 0,
|
||||
max => 100,
|
||||
unit => '%'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
label => 'vms-usage-bytes',
|
||||
type => 1,
|
||||
nlabel => 'vms.memory.usage.bytes',
|
||||
set => {
|
||||
key_values => [ { name => 'used_bytes' }, { name => 'max_bytes' } ],
|
||||
closure_custom_output => $self->can('custom_memory_output'),
|
||||
threshold_use => 'used_bytes',
|
||||
perfdatas => [
|
||||
{
|
||||
value => 'used_bytes',
|
||||
template => '%d',
|
||||
max => 'max_bytes',
|
||||
unit => 'B'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my %structure = map {
|
||||
$_ => $self->get_esx_stats(%options, cid => $_, esx_id => $self->{esx_id}, esx_name => $self->{esx_name} )
|
||||
} @counters;
|
||||
|
||||
if (defined($structure{'mem.capacity.usable.HOST'}) && defined($structure{'mem.consumed.vms.HOST'})) {
|
||||
$self->{output}->add_option_msg(long_msg => 'Retrieved value for mem.capacity.usable.HOST: ' . $structure{'mem.capacity.usable.HOST'});
|
||||
$self->{output}->add_option_msg(long_msg => 'Retrieved value for mem.consumed.vms.HOST: ' . $structure{'mem.consumed.vms.HOST'});
|
||||
$self->{memory} = {
|
||||
used_prct => (100 * $structure{'mem.consumed.vms.HOST'} / $structure{'mem.capacity.usable.HOST'}),
|
||||
used_bytes => int(1024 * 1024 * $structure{'mem.consumed.vms.HOST'}),
|
||||
max_bytes => int(1024 * 1024 * $structure{'mem.capacity.usable.HOST'})
|
||||
};
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
=head1 MODE
|
||||
|
||||
Monitor the memory of VMware ESX hosts consumed by the virtual machines through vSphere 8 REST API.
|
||||
|
||||
Meaning of the available counters in the VMware API:
|
||||
mem.reservedCapacityPct.HOST Percent of memory that has been reserved either through VMkernel use, by userworlds or due to virtual machine memory reservations.
|
||||
mem.capacity.provisioned.HOST Total amount of memory available to the host.
|
||||
mem.capacity.usable.HOST Amount of physical memory available for use by virtual machines on this host
|
||||
mem.capacity.usage.HOST Amount of physical memory actively used
|
||||
mem.capacity.contention.HOST Percentage of time VMs are waiting to access swapped, compressed or ballooned memory.
|
||||
mem.consumed.vms.HOST Amount of physical memory consumed by VMs on this host.
|
||||
mem.consumed.userworlds.HOST Amount of physical memory consumed by userworlds on this host
|
||||
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<--warning-vms-usage-percentage>
|
||||
|
||||
Thresholds in percentage.
|
||||
|
||||
=item B<--critical-vms-usage-percentage>
|
||||
|
||||
Thresholds in percentage.
|
||||
|
||||
=item B<--warning-vms-usage-bytes>
|
||||
|
||||
Thresholds in bytes.
|
||||
|
||||
=item B<--critical-vms-usage-bytes>
|
||||
|
||||
Thresholds in bytes.
|
92
src/apps/vmware/vsphere8/esx/mode/power.pm
Normal file
92
src/apps/vmware/vsphere8/esx/mode/power.pm
Normal file
@ -0,0 +1,92 @@
|
||||
#
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
# service performance.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
package apps::vmware::vsphere8::esx::mode::power;
|
||||
use strict;
|
||||
use warnings;
|
||||
use base qw(apps::vmware::vsphere8::esx::mode);
|
||||
|
||||
|
||||
my @counters = (
|
||||
'power.capacity.usage.HOST', # Current power usage.
|
||||
);
|
||||
|
||||
sub set_counters {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
$self->{maps_counters_type} = [
|
||||
{ name => 'power', type => 0 }
|
||||
];
|
||||
|
||||
$self->{maps_counters}->{power} = [
|
||||
{
|
||||
label => 'power-usage-watts',
|
||||
type => 1,
|
||||
nlabel => 'power.capacity.usage.watts',
|
||||
output_template => 'Power usage is %d Watts',
|
||||
set => {
|
||||
output_template => 'Power usage is %d Watts',
|
||||
key_values => [ { name => 'power.capacity.usage.HOST' } ],
|
||||
output_use => 'power.capacity.usage.HOST',
|
||||
threshold_use => 'power.capacity.usage.HOST',
|
||||
perfdatas => [ { value => 'power.capacity.usage.HOST', template => '%sW' } ]
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my %structure = map {
|
||||
$_ => $self->get_esx_stats(%options, cid => $_, esx_id => $self->{esx_id}, esx_name => $self->{esx_name} )
|
||||
} @counters;
|
||||
$self->{power} = \%structure;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
=head1 MODE
|
||||
|
||||
Monitor the power consumption of VMware ESX hosts through vSphere 8 REST API.
|
||||
|
||||
Meaning of the available counters in the VMware API:
|
||||
- power.capacity.usable.HOST Current maximum allowed power usage.
|
||||
- power.capacity.usage.HOST Current power usage.
|
||||
- power.capacity.usagePct.HOST Current power usage as a percentage of maximum allowed power.
|
||||
|
||||
Since our tests showed that only C<power.capacity.usage.HOST> was different from zero, the other counters are ignored at the moment.
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<--warning-power-usage-watts>
|
||||
|
||||
Threshold in Watts.
|
||||
|
||||
=item B<--critical-power-usage-watts>
|
||||
|
||||
Threshold in Watts.
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2024 Centreon (http://www.centreon.com/)
|
||||
# Copyright 2025 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
# Centreon is a full-fledged industry-strength solution that meets
|
||||
# the needs in IT infrastructure and application monitoring for
|
||||
@ -31,8 +31,11 @@ sub new {
|
||||
|
||||
$self->{version} = '0.1';
|
||||
$self->{modes} = {
|
||||
'cpu' => 'apps::vmware::vsphere8::esx::mode::cpu',
|
||||
'discovery' => 'apps::vmware::vsphere8::esx::mode::discovery',
|
||||
'host-status' => 'apps::vmware::vsphere8::esx::mode::hoststatus'
|
||||
'host-status' => 'apps::vmware::vsphere8::esx::mode::hoststatus',
|
||||
'memory' => 'apps::vmware::vsphere8::esx::mode::memory',
|
||||
'power' => 'apps::vmware::vsphere8::esx::mode::power',
|
||||
};
|
||||
|
||||
$self->{custom_modes}->{api} = 'apps::vmware::vsphere8::custom::api';
|
||||
|
@ -69,6 +69,14 @@ sub set_counters {
|
||||
{ label => 'active_tunnels', template => '%d', min => 0, unit => 'tunnels', label_extra_instance => 1 }
|
||||
]
|
||||
}
|
||||
},
|
||||
{ label => 'ipsec-tunnels-count', nlabel => 'vpn.ipsec.tunnels.state.count', set => {
|
||||
key_values => [ { name => 'ipsec_tunnels_count' } ],
|
||||
output_template => 'IPSec tunnels state up: %s',
|
||||
perfdatas => [
|
||||
{ label => 'ipsec-tunnels-count', template => '%d', min => 0, unit => 'tunnels', label_extra_instance => 1 }
|
||||
]
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@ -186,6 +194,7 @@ sub manage_selection {
|
||||
|
||||
$self->{vd} = {};
|
||||
my $duplicated = {};
|
||||
my $ipsec_tunnels_counter = 0;
|
||||
foreach my $oid (keys %{$snmp_result->{ $oid_fgVdEntName }}) {
|
||||
$oid =~ /^$oid_fgVdEntName\.(.*)$/;
|
||||
my $vdom_instance = $1;
|
||||
@ -203,7 +212,8 @@ sub manage_selection {
|
||||
global => {
|
||||
users => $result->{fgVpnSslStatsLoginUsers},
|
||||
tunnels => $result->{fgVpnSslStatsActiveTunnels},
|
||||
sessions => $result->{fgVpnSslStatsActiveWebSessions}
|
||||
sessions => $result->{fgVpnSslStatsActiveWebSessions},
|
||||
ipsec_tunnels_count => $ipsec_tunnels_counter
|
||||
},
|
||||
vpn => {},
|
||||
};
|
||||
@ -238,7 +248,12 @@ sub manage_selection {
|
||||
traffic_in => $result->{fgVpnTunEntInOctets} * 8,
|
||||
traffic_out => $result->{fgVpnTunEntOutOctets} * 8
|
||||
};
|
||||
# count tunnels in state up
|
||||
if ($self->{vd}->{$vdomain_name}->{vpn}->{$name}->{state} eq "up") {
|
||||
$ipsec_tunnels_counter++;
|
||||
};
|
||||
}
|
||||
$self->{vd}->{$vdomain_name}->{global}->{ipsec_tunnels_count} = $ipsec_tunnels_counter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -258,11 +273,11 @@ Filter name with regexp. Can be ('vdomain', 'vpn')
|
||||
|
||||
=item B<--warning-*>
|
||||
|
||||
Warning on counters. Can be ('users', 'sessions', 'tunnels', 'traffic-in', 'traffic-out')
|
||||
Warning on counters. Can be ('users', 'sessions', 'tunnels', 'traffic-in', 'traffic-out', 'ipsec-tunnels-count')
|
||||
|
||||
=item B<--critical-*>
|
||||
|
||||
Warning on counters. Can be ('users', 'sessions', 'tunnels', 'traffic-in', 'traffic-out')
|
||||
Critical on counters. Can be ('users', 'sessions', 'tunnels', 'traffic-in', 'traffic-out', 'ipsec-tunnels-count'))
|
||||
|
||||
=item B<--warning-status>
|
||||
|
||||
|
@ -43,7 +43,7 @@ sub custom_select_threshold {
|
||||
$self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{warning})) {
|
||||
$status = 'warning';
|
||||
} elsif (defined($self->{result_values}->{config}->{unknown}) && $self->{result_values}->{config}->{unknown} &&
|
||||
$self->{instance_mode}->reval($self->{result_values}->{config}->{unknown})) {
|
||||
$self->{instance_mode}->{safe}->reval($self->{result_values}->{config}->{unknown})) {
|
||||
$status = 'unknown';
|
||||
}
|
||||
if ($@) {
|
||||
|
@ -56,22 +56,22 @@ Set resource group (required if resource's name is used).
|
||||
=item B<--warning-status>
|
||||
|
||||
Define the conditions to match for the status to be WARNING (default: '').
|
||||
You can use the following variables: %{status}, %{summary}
|
||||
You can use the following variables: C<%{status}>, C<%{summary}>.
|
||||
|
||||
=item B<--critical-status>
|
||||
|
||||
Define the conditions to match for the status to be CRITICAL (default: '%{status} =~ /^Unavailable$/').
|
||||
You can use the following variables: %{status}, %{summary}
|
||||
Define the conditions to match for the status to be CRITICAL (default: C<'%{status} =~ /^Unavailable$/'>).
|
||||
You can use the following variables: C<%{status}>, C<%{summary}>.
|
||||
|
||||
=item B<--unknown-status>
|
||||
|
||||
Define the conditions to match for the status to be UNKNOWN (default: '%{status} =~ /^Unknown$/').
|
||||
You can use the following variables: %{status}, %{summary}
|
||||
Define the conditions to match for the status to be UNKNOWN (default: C<'%{status} =~ /^Unknown$/'>).
|
||||
You can use the following variables: C<%{status}>, C<%{summary}>.
|
||||
|
||||
=item B<--ok-status>
|
||||
|
||||
Define the conditions to match for the status to be OK (default: '%{status} =~ /^Available$/').
|
||||
You can use the following variables: %{status}, %{summary}
|
||||
Define the conditions to match for the status to be OK (default: C<'%{status} =~ /^Available$/''>).
|
||||
You can use the following variables: C<%{status}>, C<%{summary}>.
|
||||
|
||||
=back
|
||||
|
||||
|
@ -129,15 +129,11 @@ Example:
|
||||
|
||||
Using resource name:
|
||||
|
||||
perl centreon_plugins.pl --plugin=cloud::azure::network::vpngateway::plugin --custommode=azcli --mode=site-traffic
|
||||
--resource=MyResource --resource-group=MYRGROUP --aggregation='average' --aggregation='total' --critical-bandwidth-average='10'
|
||||
--verbose
|
||||
C<perl centreon_plugins.pl --plugin=cloud::azure::network::vpngateway::plugin --custommode=azcli --mode=site-traffic --resource=MyResource --resource-group=MYRGROUP --aggregation='average' --aggregation='total' --critical-bandwidth-average='10' --verbose>
|
||||
|
||||
Using resource ID:
|
||||
|
||||
perl centreon_plugins.pl --plugin=cloud::azure::network::vpngateway::plugin --custommode=azcli --mode=site-traffic
|
||||
--resource='/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworkGateways/xxx'
|
||||
--aggregation='average' --aggregation='total' --critical-bandwidth-average='10' --verbose
|
||||
C<perl centreon_plugins.pl --plugin=cloud::azure::network::vpngateway::plugin --custommode=azcli --mode=site-traffic --resource='/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworkGateways/xxx' --aggregation='average' --aggregation='total' --critical-bandwidth-average='10' --verbose>
|
||||
|
||||
Default aggregation: 'average' (*Bandwidth), 'total' (P2SConnectionCount)
|
||||
|
||||
@ -153,18 +149,33 @@ Set resource group (required if resource's name is used).
|
||||
|
||||
=item B<--filter-metric>
|
||||
|
||||
Filter metrics (can be: 'AverageBandwidth', 'P2SBandwidth', 'P2SConnectionCount')
|
||||
Filter metrics (can be: C<AverageBandwidth>, C<P2SBandwidth>, C<P2SConnectionCount>)
|
||||
(can be a regexp).
|
||||
|
||||
=item B<--warning-$label$>
|
||||
|
||||
Warning thresholds
|
||||
($label$ can be: 'bandwidth-average', 'p2s-bandwidth', p2s-connections)
|
||||
=item B<--warning-bandwidth-average>
|
||||
|
||||
=item B<--critical-$label$>
|
||||
Thresholds.
|
||||
|
||||
Critical thresholds
|
||||
($label$ can be: 'bandwidth-average', 'p2s-bandwidth', p2s-connections)
|
||||
=item B<--critical-bandwidth-average>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-p2s-bandwidth>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-p2s-bandwidth>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-p2s-connections>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-p2s-connections>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=back
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
|
||||
#
|
||||
# Copyright 2024 Centreon (http://www.centreon.com/)
|
||||
#
|
||||
@ -175,15 +176,55 @@ Filter metrics (can be: 'TunnelIngressBytes', 'TunnelEgressBytes', 'TunnelIngres
|
||||
'TunnelEgressPackets', 'TunnelIngressPacketDropTSMismatch', 'TunnelEgressPacketDropTSMismatch')
|
||||
(can be a regexp).
|
||||
|
||||
=item B<--warning-$label$>
|
||||
=item B<--warning-traffic-in>
|
||||
|
||||
Warning thresholds.
|
||||
($label$ can be traffic-in, traffic-out, packets-in, packets-out, dropped-packets-in, dropped-packets-out)
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-traffic-in>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-traffic-out>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-traffic-out>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-packets-in>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-packets-in>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-packets-out>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-packets-out>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-dropped-packets-in>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-dropped-packets-in>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--warning-dropped-packets-out>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-dropped-packets-out>
|
||||
|
||||
Thresholds.
|
||||
|
||||
=item B<--critical-$label$>
|
||||
|
||||
Critical thresholds
|
||||
($label$ can be traffic-in, traffic-out, packets-in, packets-out, dropped-packets-in, dropped-packets-out)
|
||||
|
||||
=item B<--per-sec>
|
||||
|
||||
|
@ -98,7 +98,7 @@ sub manage_selection {
|
||||
&& $vpn->{name} !~ /$self->{option_results}->{filter_name}/);
|
||||
|
||||
$self->{vpns}->{$vpn->{id}} = {
|
||||
display => $vpn->{name},
|
||||
name => $vpn->{name},
|
||||
provisioning_state => ($vpn->{provisioningState}) ? $vpn->{provisioningState} : $vpn->{properties}->{provisioningState},
|
||||
gateway_type => ($vpn->{gatewayType}) ? $vpn->{gatewayType} : $vpn->{properties}->{gatewayType},
|
||||
vpn_type => ($vpn->{vpnType}) ? $vpn->{vpnType} : $vpn->{properties}->{vpnType},
|
||||
@ -120,8 +120,7 @@ __END__
|
||||
Check VPN gateways status.
|
||||
|
||||
Example:
|
||||
perl centreon_plugins.pl --plugin=cloud::azure::network::vpngateway::plugin --custommode=azcli --mode=vpn-gateways-status
|
||||
--resource-group='MYRESOURCEGROUP' --verbose
|
||||
C<perl centreon_plugins.pl --plugin=cloud::azure::network::vpngateway::plugin --custommode=azcli --mode=vpn-gateways-status --resource-group='MYRESOURCEGROUP' --verbose>
|
||||
|
||||
=over 8
|
||||
|
||||
@ -131,16 +130,16 @@ Set resource group (required).
|
||||
|
||||
=item B<--filter-name>
|
||||
|
||||
Filter vpn name (can be a regexp).
|
||||
Filter VPN Gateways by name (can be a regexp).
|
||||
|
||||
=item B<--warning-status>
|
||||
|
||||
Define the conditions to match for the status to be WARNING (default: '').
|
||||
You can use the following variables: %{provisioning_state}, %{gateway_type}, %{vpn_type}, %{display}
|
||||
You can use the following variables: %{provisioning_state}, %{gateway_type}>, %{vpn_type}, %{display}
|
||||
|
||||
=item B<--critical-status>
|
||||
|
||||
Define the conditions to match for the status to be CRITICAL (default: '%{provisioning_state} ne "Succeeded"').
|
||||
Define the conditions to match for the status to be CRITICAL (default: C<'%{provisioning_state} ne "Succeeded"'>).
|
||||
You can use the following variables: %{provisioning_state}, %{gateway_type}, %{vpn_type}, %{display}
|
||||
|
||||
=back
|
||||
|
@ -197,6 +197,7 @@ $mapping = {
|
||||
$thresholds = {
|
||||
numeric => [
|
||||
['unavailable', 'UNKNOWN'],
|
||||
['absent', 'OK'],
|
||||
['normal', 'OK'],
|
||||
['belowLowerCritical', 'CRITICAL'],
|
||||
['belowLowerWarning', 'WARNING'],
|
||||
|
@ -43,12 +43,16 @@ sub load {
|
||||
sub check {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $power_factor_dependencies;
|
||||
foreach my $component (sort keys %raritan_type) {
|
||||
my $long_msg = 0;
|
||||
next if ($component !~ /$options{component}/);
|
||||
if ($options{component} eq 'powerFactor') {
|
||||
next if ($component !~ /activePower|onOff|powerFactor/);
|
||||
} elsif ($component !~ /$options{component}/) {
|
||||
next;
|
||||
}
|
||||
$self->{components}->{$component} = { name => $component, total => 0, skip => 0 };
|
||||
next if ($self->check_filter(section => $component));
|
||||
|
||||
my $instance_type = $raritan_type{$component};
|
||||
my $value_type = $map_type{$instance_type};
|
||||
foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}})) {
|
||||
@ -77,17 +81,38 @@ sub check {
|
||||
|
||||
next if ($self->check_filter(section => $component, instance => $instance));
|
||||
|
||||
if ($long_msg == 0) {
|
||||
$self->{output}->output_add(long_msg => "Checking " . $component);
|
||||
$long_msg = 1;
|
||||
}
|
||||
|
||||
if ($component =~ /$options{component}/) {
|
||||
$self->{components}->{$component}->{total}++;
|
||||
}
|
||||
|
||||
my $value = (defined($result->{Value}) && $result->{Value} ne '') ? $result->{Value} : '-';
|
||||
if ($value =~ /[0-9]/) {
|
||||
$value *= 10 ** -int($result->{Decimal});
|
||||
}
|
||||
|
||||
if ($component eq 'activePower' && $value == 0) {
|
||||
$power_factor_dependencies->{$instance}->{activePower} = 1;
|
||||
}
|
||||
|
||||
if ($component eq 'onOff') {
|
||||
if ($result->{State} eq 'off') {
|
||||
$power_factor_dependencies->{$instance}->{absent} = 1;
|
||||
|
||||
} elsif (defined($power_factor_dependencies->{$instance}->{activePower})) {
|
||||
$power_factor_dependencies->{$instance}->{absent} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($component eq 'powerFactor' && defined($power_factor_dependencies->{$instance}->{absent})) {
|
||||
$result->{State} = 'absent';
|
||||
}
|
||||
|
||||
next if ($component !~ /$options{component}/);
|
||||
if ($long_msg == 0) {
|
||||
$self->{output}->output_add(long_msg => "Checking " . $component);
|
||||
$long_msg = 1;
|
||||
}
|
||||
|
||||
$self->{output}->output_add(
|
||||
long_msg => sprintf(
|
||||
"'%s' %s state is '%s' [instance: %s, value: %s, unit: %s, label: %s, pdu: %s]",
|
||||
@ -158,7 +183,7 @@ sub check {
|
||||
my $nunit = (defined($result->{Unit}->{nunit}) ? $result->{Unit}->{nunit} : lc($result->{Unit}->{unit}));
|
||||
|
||||
$self->{output}->perfdata_add(
|
||||
nlabel => 'hardware.sensor.' . $options{type} . '.' . lc($component) . '.' . $nunit,
|
||||
nlabel => $nunit ne '' ? 'hardware.sensor.' . $options{type} . '.' . lc($component) . '.' . $nunit : 'hardware.sensor.' . $options{type} . '.' . lc($component),
|
||||
unit => $result->{Unit}->{unit},
|
||||
instances => [$pduName, $instance],
|
||||
value => $value,
|
||||
|
@ -78,7 +78,9 @@ sub check {
|
||||
next;
|
||||
}
|
||||
|
||||
if($result->{cucsMemoryUnitPresence} eq "equipped") {
|
||||
$self->{components}->{memory}->{total}++;
|
||||
}
|
||||
|
||||
$exit = $self->get_severity(section => 'memory.operability', label => 'default.operability', value => $result2->{cucsMemoryUnitOperState});
|
||||
if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
|
||||
|
@ -60,14 +60,14 @@ __END__
|
||||
|
||||
=head1 MODE
|
||||
|
||||
Check Hardware (Fans, Power supplies, chassis, io cards, blades, fabric extenders).
|
||||
Check Hardware (Fans, Power supplies, chassis, I/O cards, blades, fabric extenders).
|
||||
|
||||
=over 8
|
||||
|
||||
=item B<--component>
|
||||
|
||||
Which component to check (default: '.*').
|
||||
Can be: 'fan', 'psu', 'chassis', 'iocard', 'blade', 'fex', 'cpu', 'memory', 'localdisk'.
|
||||
Can be: C<fan>, C<psu>, C<chassis>, C<iocard>, C<blade>, C<fex>, C<cpu>, C<memory>, C<localdisk>.
|
||||
|
||||
=item B<--filter>
|
||||
|
||||
@ -89,6 +89,9 @@ Use this option to override the status returned by the plugin when the status la
|
||||
Example: --threshold-overload='fan.operability,OK,poweredOff|removed'
|
||||
--threshold-overload='presence,OK,missing'
|
||||
--threshold-overload='operability,OK,removed'
|
||||
NB: For the memory component you may need to set this option twice if presence status doesn't
|
||||
return OK state and you want to override the operability status. Example when memories are missing because of removing.
|
||||
--threshold-overload='presence,OK,missing' --threshold-overload='operability,OK,removed'
|
||||
|
||||
=back
|
||||
|
||||
|
@ -34,8 +34,11 @@ sub new {
|
||||
'hardware' => 'network::aruba::aoscx::snmp::mode::hardware',
|
||||
'interfaces' => 'snmp_standard::mode::interfaces',
|
||||
'list-interfaces' => 'snmp_standard::mode::listinterfaces',
|
||||
'list-spanning-trees' => 'snmp_standard::mode::listspanningtrees',
|
||||
'memory' => 'network::aruba::aoscx::snmp::mode::memory',
|
||||
'spanning-tree' => 'snmp_standard::mode::spanningtree',
|
||||
'stack' => 'network::aruba::aoscx::snmp::mode::stack',
|
||||
'uptime' => 'snmp_standard::mode::uptime',
|
||||
'vsf' => 'network::aruba::aoscx::snmp::mode::vsf',
|
||||
'vsx' => 'network::aruba::aoscx::snmp::mode::vsx'
|
||||
};
|
||||
|
@ -172,48 +172,68 @@ sub check_options {
|
||||
}
|
||||
|
||||
my $mapping = {
|
||||
new => {
|
||||
antivirus1 => {
|
||||
name => '.1.3.6.1.4.1.50853.1.2.6.1.1.0',
|
||||
version => '.1.3.6.1.4.1.50853.1.2.6.1.2.0',
|
||||
date => '.1.3.6.1.4.1.50853.1.2.6.1.3.0',
|
||||
expiration => '.1.3.6.1.4.1.50853.1.2.6.1.4.0'
|
||||
},
|
||||
|
||||
antivirus2 => {
|
||||
name => '.1.3.6.1.4.1.50853.1.2.6.2.1.0',
|
||||
version => '.1.3.6.1.4.1.50853.1.2.6.2.2.0',
|
||||
date => '.1.3.6.1.4.1.50853.1.2.6.2.3.0',
|
||||
expiration => '.1.3.6.1.4.1.50853.1.2.6.2.4.0'
|
||||
}
|
||||
},
|
||||
|
||||
old => {
|
||||
antivirus1 => {
|
||||
name => '.1.3.6.1.4.1.50853.1.2.6.1.1',
|
||||
version => '.1.3.6.1.4.1.50853.1.2.6.1.2',
|
||||
date => '.1.3.6.1.4.1.50853.1.2.6.1.3',
|
||||
expiration => '.1.3.6.1.4.1.50853.1.2.6.1.4'
|
||||
},
|
||||
|
||||
antivirus2 => {
|
||||
name => '.1.3.6.1.4.1.50853.1.2.6.2.1',
|
||||
version => '.1.3.6.1.4.1.50853.1.2.6.2.2',
|
||||
date => '.1.3.6.1.4.1.50853.1.2.6.2.3',
|
||||
expiration => '.1.3.6.1.4.1.50853.1.2.6.2.4'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
sub add_antivirus {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $name = $options{snmp_result}->{ $mapping->{ $options{label} }->{name} };
|
||||
my $antivirus_mapping = defined($options{snmp_result}->{ $mapping->{new}->{ $options{label} }->{name} }) ? $mapping->{new}->{ $options{label} } : $mapping->{old}->{ $options{label} };
|
||||
my $name = $options{snmp_result}->{ $antivirus_mapping->{name} };
|
||||
$self->{antivirus}->{$name} = {
|
||||
name => $name,
|
||||
version => $options{snmp_result}->{ $mapping->{ $options{label} }->{version} }
|
||||
version => $options{snmp_result}->{ $antivirus_mapping->{version} }
|
||||
};
|
||||
|
||||
if ($options{snmp_result}->{ $mapping->{ $options{label} }->{expiration} } =~ /permanent/i) {
|
||||
if ($options{snmp_result}->{ $antivirus_mapping->{expiration} } =~ /permanent/i) {
|
||||
$self->{antivirus}->{$name}->{expires_seconds} = 'permanent';
|
||||
$self->{antivirus}->{$name}->{expires_human} = '-';
|
||||
} else {
|
||||
my $dt = $self->{ $options{label} . '_strp' }->parse_datetime($options{snmp_result}->{ $mapping->{ $options{label} }->{expiration} });
|
||||
my $dt = $self->{ $options{label} . '_strp' }->parse_datetime($options{snmp_result}->{ $antivirus_mapping->{expiration} });
|
||||
if (defined($dt)) {
|
||||
$self->{antivirus}->{$name}->{expires_seconds} = $dt->epoch() - time();
|
||||
$self->{antivirus}->{$name}->{expires_seconds} = 0 if ($self->{antivirus}->{$name}->{expires_seconds} < 0);
|
||||
$self->{antivirus}->{$name}->{expires_human} = centreon::plugins::misc::change_seconds(value => $self->{antivirus}->{$name}->{expires_seconds});
|
||||
} else {
|
||||
$self->{output}->output_add(long_msg => "cannot parse date: " . $options{snmp_result}->{ $mapping->{ $options{label} }->{expiration} } . ' (please use option --' . $options{label} . '-date-format)');
|
||||
$self->{output}->output_add(long_msg => "cannot parse date: " . $options{snmp_result}->{ $antivirus_mapping->{expiration} } . ' (please use option --' . $options{label} . '-date-format)');
|
||||
}
|
||||
}
|
||||
|
||||
my $dt = $self->{ $options{label} . '_strp' }->parse_datetime($options{snmp_result}->{ $mapping->{ $options{label} }->{date} });
|
||||
my $dt = $self->{ $options{label} . '_strp' }->parse_datetime($options{snmp_result}->{ $antivirus_mapping->{date} });
|
||||
if (defined($dt)) {
|
||||
$self->{antivirus}->{$name}->{db_lastupdate_time} = time() - $dt->epoch();
|
||||
} else {
|
||||
$self->{output}->output_add(long_msg => "cannot parse date: " . $options{snmp_result}->{ $mapping->{ $options{label} }->{date} } . ' (please use option --' . $options{label} . '-date-format)');
|
||||
$self->{output}->output_add(long_msg => "cannot parse date: " . $options{snmp_result}->{ $antivirus_mapping->{date} } . ' (please use option --' . $options{label} . '-date-format)');
|
||||
}
|
||||
}
|
||||
|
||||
@ -221,7 +241,10 @@ sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $snmp_result = $options{snmp}->get_leef(
|
||||
oids => [ map($_, values(%{$mapping->{antivirus1}}), values(%{$mapping->{antivirus2}})) ],
|
||||
oids => [
|
||||
map($_, values(%{$mapping->{new}->{antivirus1}}), values(%{$mapping->{new}->{antivirus2}})),
|
||||
map($_, values(%{$mapping->{old}->{antivirus1}}), values(%{$mapping->{old}->{antivirus2}}))
|
||||
],
|
||||
nothing_quit => 1
|
||||
);
|
||||
|
||||
|
@ -24,6 +24,7 @@ use strict;
|
||||
use warnings;
|
||||
use centreon::plugins::http;
|
||||
use JSON::XS;
|
||||
use Digest::MD5 qw(md5_hex);
|
||||
|
||||
sub new {
|
||||
my ($class, %options) = @_;
|
||||
@ -52,7 +53,8 @@ sub new {
|
||||
'critical-http-status:s' => { name => 'critical_http_status' },
|
||||
'as400-hostname:s' => { name => 'as400_hostname' },
|
||||
'as400-username:s' => { name => 'as400_username' },
|
||||
'as400-password:s' => { name => 'as400_password' }
|
||||
'as400-password:s' => { name => 'as400_password' },
|
||||
'as400-ssl' => { name => 'as400_ssl' }
|
||||
});
|
||||
}
|
||||
$options{options}->add_help(package => __PACKAGE__, sections => 'REST API OPTIONS', once => 1);
|
||||
@ -86,6 +88,7 @@ sub check_options {
|
||||
$self->{as400_hostname} = (defined($self->{option_results}->{as400_hostname})) ? $self->{option_results}->{as400_hostname} : '';
|
||||
$self->{as400_username} = (defined($self->{option_results}->{as400_username})) ? $self->{option_results}->{as400_username} : '';
|
||||
$self->{as400_password} = (defined($self->{option_results}->{as400_password})) ? $self->{option_results}->{as400_password} : '';
|
||||
$self->{as400_ssl} = (defined($self->{option_results}->{as400_ssl})) ? 1 : 0;
|
||||
|
||||
if ($self->{connector_hostname} eq '') {
|
||||
$self->{output}->add_option_msg(short_msg => "Need to specify --connector-hostname option.");
|
||||
@ -151,9 +154,16 @@ sub request_api {
|
||||
host => $self->{as400_hostname},
|
||||
login => $self->{as400_username},
|
||||
password => $self->{as400_password},
|
||||
ssl => $self->{as400_ssl},
|
||||
command => $options{command}
|
||||
};
|
||||
$post->{args} = $options{args} if (defined($options{args}));
|
||||
if (defined($options{args})) {
|
||||
$post->{args} = $options{args};
|
||||
if (defined($post->{args}->{uuid})) {
|
||||
$post->{args}->{uuid} = md5_hex($post->{args}->{uuid});
|
||||
}
|
||||
}
|
||||
|
||||
my $encoded;
|
||||
eval {
|
||||
$encoded = encode_json($post);
|
||||
@ -240,6 +250,10 @@ AS/400 username (required)
|
||||
|
||||
AS/400 password (required)
|
||||
|
||||
=item B<--as400-ssl>
|
||||
|
||||
Use SSL connection (port: 9475)
|
||||
|
||||
=back
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
@ -167,6 +167,18 @@ sub new {
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
$self->SUPER::check_options(%options);
|
||||
|
||||
$self->{uuid} = '';
|
||||
foreach ('filter_counters', 'filter_disk_name') {
|
||||
if (defined($self->{option_results}->{$_}) && $self->{option_results}->{$_} ne '') {
|
||||
$self->{uuid} .= $self->{option_results}->{$_};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $map_disk_status = {
|
||||
0 => 'noUnitControl', 1 => 'active', 2 => 'failed',
|
||||
3 => 'otherDiskSubFailed', 4 => 'hwFailurePerf', 5 => 'hwFailureOk',
|
||||
@ -178,9 +190,12 @@ my $map_disk_status = {
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my %cmd = (command => 'listDisks');
|
||||
my %cmd = (command => 'listDisks', args => {});
|
||||
if (defined($self->{option_results}->{disk_name}) && $self->{option_results}->{disk_name} ne '') {
|
||||
$cmd{args} = { diskName => $self->{option_results}->{disk_name} };
|
||||
$cmd{args}->{diskName} = $self->{option_results}->{disk_name};
|
||||
}
|
||||
if ($self->{uuid} ne '') {
|
||||
$cmd{args}->{uuid} = $self->{uuid};
|
||||
}
|
||||
my $disks = $options{custom}->request_api(%cmd);
|
||||
|
||||
|
@ -59,10 +59,26 @@ sub new {
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
$self->SUPER::check_options(%options);
|
||||
|
||||
$self->{uuid} = '';
|
||||
foreach ('filter_counters', 'filter_name', 'filter_active_status', 'filter_subsystem') {
|
||||
if (defined($self->{option_results}->{$_}) && $self->{option_results}->{$_} ne '') {
|
||||
$self->{uuid} .= $self->{option_results}->{$_};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $jobs = $options{custom}->request_api(command => 'listJobs');
|
||||
my %cmd = (command => 'listJobs', args => {});
|
||||
if ($self->{uuid} ne '') {
|
||||
$cmd{args}->{uuid} = $self->{uuid};
|
||||
}
|
||||
my $jobs = $options{custom}->request_api(%cmd);
|
||||
|
||||
$self->{global} = { total => 0 };
|
||||
foreach my $entry (@{$jobs->{result}}) {
|
||||
|
@ -44,7 +44,7 @@ sub check_options {
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return $options{custom}->request_api(command => 'listDisks');
|
||||
return $options{custom}->request_api(command => 'listDisks', args => { uuid => 'svc-discovery' });
|
||||
}
|
||||
|
||||
my $map_disk_status = {
|
||||
|
@ -44,7 +44,7 @@ sub check_options {
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
return $options{custom}->request_api(command => 'listSubsystems');
|
||||
return $options{custom}->request_api(command => 'listSubsystems', args => { uuid => 'svc-discovery' });
|
||||
}
|
||||
|
||||
my $map_subsys_status = {
|
||||
|
@ -128,6 +128,18 @@ sub new {
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub check_options {
|
||||
my ($self, %options) = @_;
|
||||
$self->SUPER::check_options(%options);
|
||||
|
||||
$self->{uuid} = '';
|
||||
foreach ('filter_counters', 'filter_subsystem_name', 'filter_subsystem_library') {
|
||||
if (defined($self->{option_results}->{$_}) && $self->{option_results}->{$_} ne '') {
|
||||
$self->{uuid} .= $self->{option_results}->{$_};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $map_subsys_status = {
|
||||
'*ACTIVE' => 'active',
|
||||
'*ENDING' => 'ending',
|
||||
@ -139,7 +151,11 @@ my $map_subsys_status = {
|
||||
sub manage_selection {
|
||||
my ($self, %options) = @_;
|
||||
|
||||
my $subsys = $options{custom}->request_api(command => 'listSubsystems');
|
||||
my %cmd = (command => 'listSubsystems', args => {});
|
||||
if ($self->{uuid} ne '') {
|
||||
$cmd{args}->{uuid} = $self->{uuid};
|
||||
}
|
||||
my $subsys = $options{custom}->request_api(%cmd);
|
||||
|
||||
$self->{global} = { total => 0, active => 0, ending => 0, inactive => 0, restricted => 0, starting => 0 };
|
||||
$self->{subsys} = {};
|
||||
|
@ -82,7 +82,8 @@ sub new {
|
||||
bless $self, $class;
|
||||
|
||||
$options{options}->add_options(arguments => {
|
||||
'unit:s' => { name => 'unit', default => 'd' }
|
||||
'unit:s' => { name => 'unit', default => 'd' },
|
||||
'timezone:s' => { name => 'timezone'}
|
||||
});
|
||||
|
||||
return $self;
|
||||
@ -95,6 +96,10 @@ sub check_options {
|
||||
if ($self->{option_results}->{unit} eq '' || !defined($unitdiv->{$self->{option_results}->{unit}})) {
|
||||
$self->{option_results}->{unit} = 'd';
|
||||
}
|
||||
if (defined($self->{option_results}->{timezone}) && $self->{option_results}->{timezone} ne '' && $self->{option_results}->{timezone} !~ /^[A-Za-z_\/0-9-]+$/) {
|
||||
$self->{output}->add_option_msg(short_msg => "Wrong timezone format '" . $self->{option_results}->{timezone} . "'. (Example format: 'America/Los_Angeles')");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
}
|
||||
|
||||
sub manage_selection {
|
||||
@ -112,6 +117,16 @@ sub manage_selection {
|
||||
foreach my $oid (keys %$snmp_result) {
|
||||
if ($snmp_result->{$oid} =~ /\s+(\d+)\/(\d+)\/(\d+)\s+(\d+):(\d+):(\d+)/) {
|
||||
my $dt = DateTime->new(year => $1, month => $2, day => $3, hour => $4, minute => $5, second => $6);
|
||||
# if the equipment check is on another timezone than the system where the plugin is executed.
|
||||
if (defined($self->{option_results}->{timezone})){
|
||||
eval {
|
||||
$dt = $dt->set_time_zone($self->{option_results}->{timezone});
|
||||
};
|
||||
if ($@) {
|
||||
$self->{output}->add_option_msg(short_msg => "Invalid timezone provided: '" . $self->{option_results}->{timezone} . "'. Check in /usr/share/zoneinfo for valid time zones.");
|
||||
$self->{output}->option_exit();
|
||||
}
|
||||
}
|
||||
my $lastExecSeconds = $ctime - $dt->epoch();
|
||||
if ($self->{global}->{lastExecSeconds} == -1 || $self->{global}->{lastExecSeconds} > $lastExecSeconds) {
|
||||
$self->{global}->{lastExecSeconds} = $lastExecSeconds;
|
||||
@ -144,6 +159,11 @@ Check last time filesystems had been cleaned.
|
||||
|
||||
Select the time unit for thresholds. May be 's' for seconds, 'm' for minutes, 'h' for hours, 'd' for days, 'w' for weeks (default: 'd').
|
||||
|
||||
=item B<--timezone>
|
||||
|
||||
Set equipment timezone if different from Europe/London. Valid time zones can be found in C</usr/share/zoneinfo>.
|
||||
Format example : Europe/Paris and America/Los_Angeles
|
||||
|
||||
=item B<--warning-*> B<--critical-*>
|
||||
|
||||
Thresholds.
|
||||
|
@ -76,7 +76,7 @@ sub get_shelves {
|
||||
|
||||
return if (defined($self->{shelves}));
|
||||
|
||||
$self->{shelves} = $self->{custom}->request_api(endpoint => '/api/storage/shelves?fields=name,state,serial_number,bay,frus');
|
||||
$self->{shelves} = $self->{custom}->request_api(endpoint => '/api/storage/shelves?fields=name,state,serial_number,bays,frus');
|
||||
}
|
||||
|
||||
sub save_custom {
|
||||
|
@ -58,7 +58,7 @@ sub set_counters {
|
||||
key_values => [
|
||||
{ name => 'category' }, { name => 'code' },
|
||||
{ name => 'severity' }, { name => 'opened' }, { name => 'state' },
|
||||
{ name => 'component_name' }, { name => 'issue' }
|
||||
{ name => 'component_name' }, { name => 'issue' }, { name => 'flagged' }
|
||||
],
|
||||
closure_custom_output => $self->can('custom_status_output'),
|
||||
closure_custom_perfdata => sub { return 0; },
|
||||
@ -98,7 +98,7 @@ sub manage_selection {
|
||||
|
||||
my $last_time;
|
||||
if (defined($self->{option_results}->{memory})) {
|
||||
$self->{statefile_cache}->read(statefile => 'purestorage_' . $self->{mode} . '_' . $options{custom}->get_connection_infos());
|
||||
$self->{statefile_cache}->read(statefile => 'purestorage_' . $self->{mode} . '_' . $options{custom}->get_connection_info());
|
||||
$last_time = $self->{statefile_cache}->get(name => 'last_time');
|
||||
}
|
||||
|
||||
@ -166,12 +166,12 @@ Filter by category name (can be a regexp).
|
||||
=item B<--warning-status>
|
||||
|
||||
Define the conditions to match for the status to be WARNING (default: '%{state} ne "closed" and %{severity} =~ /warning/i')
|
||||
You can use the following variables: %{category}, %{code}, %{severity}, %{opened}, %{state}, %{issue}, %{component_name}
|
||||
You can use the following variables: %{category}, %{code}, %{severity}, %{opened}, %{state}, %{issue}, %{component_name}, %{flagged}
|
||||
|
||||
=item B<--critical-status>
|
||||
|
||||
Define the conditions to match for the status to be CRITICAL (default: '%{state} ne "closed" and %{severity} =~ /critical/i').
|
||||
You can use the following variables: %{category}, %{code}, %{severity}, %{opened}, %{state}, %{issue}, %{component_name}
|
||||
You can use the following variables: %{category}, %{code}, %{severity}, %{opened}, %{state}, %{issue}, %{component_name}, %{flagged}
|
||||
|
||||
=item B<--memory>
|
||||
|
||||
|
@ -262,10 +262,10 @@ Filter arrays by ID (can be a regexp).
|
||||
|
||||
Filter arrays by name (can be a regexp).
|
||||
|
||||
=item B<--filter-resolution>
|
||||
=item B<--perf-resolution>
|
||||
|
||||
Time resolution for array performance.
|
||||
Can be: 1s, 30s, 5m, 30m, 2h, 8h, 24h (default: 5m).
|
||||
Can be: C<1s>, C<30s>, C<5m>, C<30m>, C<2h>, C<8h>, C<24h> (default: C<5m>).
|
||||
|
||||
=item B<--warning-*> B<--critical-*>
|
||||
|
||||
|
@ -245,10 +245,10 @@ Filter volumes by ID (can be a regexp).
|
||||
|
||||
Filter volumes by name (can be a regexp).
|
||||
|
||||
=item B<--filter-resolution>
|
||||
=item B<--perf-resolution>
|
||||
|
||||
Time resolution for array performance.
|
||||
Can be: 1s, 30s, 5m, 30m, 2h, 8h, 24h (default: 5m).
|
||||
Time resolution for volumes performance.
|
||||
Can be: C<1s>, C<30s>, C<5m>, C<30m>, C<2h>, C<8h>, C<24h> (default: C<5m>).
|
||||
|
||||
=item B<--warning-*> B<--critical-*>
|
||||
|
||||
|
@ -72,7 +72,7 @@ sub process_test {
|
||||
|
||||
sub main {
|
||||
#process_test('localhost', 443, 'https', '/v2', 10, 'user', 'pass');
|
||||
process_test('localhost', 443, undef, undef, undef, undef, undef);
|
||||
process_test('localhost', 3000, 'http', undef, 10, 'login', 'password');
|
||||
}
|
||||
|
||||
main();
|
||||
|
46
tests/apps/vmware/vsphere8/esx/cpu-curl.robot
Normal file
46
tests/apps/vmware/vsphere8/esx/cpu-curl.robot
Normal file
@ -0,0 +1,46 @@
|
||||
*** Settings ***
|
||||
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Start Mockoon ${MOCKOON_JSON}
|
||||
Suite Teardown Stop Mockoon
|
||||
Test Timeout 120s
|
||||
Test Setup Ctn Cleanup Cache
|
||||
|
||||
*** Variables ***
|
||||
${MOCKOON_JSON} ${CURDIR}${/}vmware8-restapi.mockoon.json
|
||||
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=apps::vmware::vsphere8::esx::plugin
|
||||
... --mode=cpu
|
||||
... --password=C3POR2P2
|
||||
... --username=obi-wan
|
||||
... --hostname=127.0.0.1
|
||||
... --proto=http
|
||||
... --port=3000
|
||||
... --esx-id=host-22
|
||||
|
||||
*** Test Cases ***
|
||||
Cpu with curl ${tc}
|
||||
[Tags] apps api vmware vsphere8 esx
|
||||
${command} Catenate ${CMD} --http-backend=curl ${extraoptions}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extraoptions expected_result --
|
||||
... 1 ${EMPTY} OK: usage-percentage : skipped (no value(s)), usage-frequency : skipped (no value(s)) - no data for host host-22 counter cpu.capacity.provisioned.HOST at the moment.
|
||||
... 2 ${EMPTY} OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000
|
||||
... 3 --add-contention OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU average contention is 0.55 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;;;0;100
|
||||
... 4 --add-demand OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU average demand is 8.36 %, demand frequency is 4201 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000
|
||||
... 5 --add-corecount OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU cores used: 83 | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.corecount.usage.count'=83;;;;
|
||||
... 6 --add-contention --add-demand --add-corecount OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU average contention is 0.55 % - CPU average demand is 8.36 %, demand frequency is 4201 kHz - CPU cores used: 83 | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;;;0;100 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000 'cpu.corecount.usage.count'=83;;;;
|
||||
... 7 --warning-usage-percentage=5 WARNING: CPU average usage is 9.16 % | 'cpu.capacity.usage.percentage'=9.16%;0:5;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000
|
||||
... 8 --critical-usage-percentage=5 CRITICAL: CPU average usage is 9.16 % | 'cpu.capacity.usage.percentage'=9.16%;;0:5;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000
|
||||
... 9 --warning-usage-frequency=5 WARNING: used frequency is 4603.44 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;0:5;;;50280000
|
||||
... 10 --critical-usage-frequency=5 CRITICAL: used frequency is 4603.44 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;0:5;;50280000
|
||||
... 11 --warning-demand-percentage=5 WARNING: CPU average demand is 8.36 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;0:5;;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000
|
||||
... 12 --critical-demand-percentage=5 CRITICAL: CPU average demand is 8.36 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;0:5;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000
|
||||
... 13 --warning-demand-frequency=5 WARNING: demand frequency is 4201 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;0:5;;;50280000
|
||||
... 14 --critical-demand-frequency=5 CRITICAL: demand frequency is 4201 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;;0:5;;50280000
|
||||
... 15 --warning-contention-percentage=5: WARNING: CPU average contention is 0.55 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;5:;;0;100
|
||||
... 16 --critical-contention-percentage=5: CRITICAL: CPU average contention is 0.55 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;;5:;0;100
|
46
tests/apps/vmware/vsphere8/esx/cpu-lwp.robot
Normal file
46
tests/apps/vmware/vsphere8/esx/cpu-lwp.robot
Normal file
@ -0,0 +1,46 @@
|
||||
*** Settings ***
|
||||
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Start Mockoon ${MOCKOON_JSON}
|
||||
Suite Teardown Stop Mockoon
|
||||
Test Timeout 120s
|
||||
Test Setup Ctn Cleanup Cache
|
||||
|
||||
*** Variables ***
|
||||
${MOCKOON_JSON} ${CURDIR}${/}vmware8-restapi.mockoon.json
|
||||
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=apps::vmware::vsphere8::esx::plugin
|
||||
... --mode=cpu
|
||||
... --password=C3POR2P2
|
||||
... --username=obi-wan
|
||||
... --hostname=127.0.0.1
|
||||
... --proto=http
|
||||
... --port=3000
|
||||
... --esx-id=host-22
|
||||
|
||||
*** Test Cases ***
|
||||
Cpu with lwp ${tc}
|
||||
[Tags] apps api vmware vsphere8 esx
|
||||
${command} Catenate ${CMD} --http-backend=lwp ${extraoptions}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extraoptions expected_result --
|
||||
... 1 ${EMPTY} OK: usage-percentage : skipped (no value(s)), usage-frequency : skipped (no value(s)) - no data for host host-22 counter cpu.capacity.provisioned.HOST at the moment.
|
||||
... 2 ${EMPTY} OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000
|
||||
... 3 --add-contention OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU average contention is 0.55 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;;;0;100
|
||||
... 4 --add-demand OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU average demand is 8.36 %, demand frequency is 4201 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000
|
||||
... 5 --add-corecount OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU cores used: 83 | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.corecount.usage.count'=83;;;;
|
||||
... 6 --add-contention --add-demand --add-corecount OK: CPU average usage is 9.16 %, used frequency is 4603.44 kHz - CPU average contention is 0.55 % - CPU average demand is 8.36 %, demand frequency is 4201 kHz - CPU cores used: 83 | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;;;0;100 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000 'cpu.corecount.usage.count'=83;;;;
|
||||
... 7 --warning-usage-percentage=5 WARNING: CPU average usage is 9.16 % | 'cpu.capacity.usage.percentage'=9.16%;0:5;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000
|
||||
... 8 --critical-usage-percentage=5 CRITICAL: CPU average usage is 9.16 % | 'cpu.capacity.usage.percentage'=9.16%;;0:5;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000
|
||||
... 9 --warning-usage-frequency=5 WARNING: used frequency is 4603.44 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;0:5;;;50280000
|
||||
... 10 --critical-usage-frequency=5 CRITICAL: used frequency is 4603.44 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;0:5;;50280000
|
||||
... 11 --warning-demand-percentage=5 WARNING: CPU average demand is 8.36 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;0:5;;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000
|
||||
... 12 --critical-demand-percentage=5 CRITICAL: CPU average demand is 8.36 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;0:5;; 'cpu.capacity.demand.hertz'=4201000Hz;;;;50280000
|
||||
... 13 --warning-demand-frequency=5 WARNING: demand frequency is 4201 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;0:5;;;50280000
|
||||
... 14 --critical-demand-frequency=5 CRITICAL: demand frequency is 4201 kHz | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.demand.percentage'=8.3552108194113;;;; 'cpu.capacity.demand.hertz'=4201000Hz;;0:5;;50280000
|
||||
... 15 --warning-contention-percentage=5: WARNING: CPU average contention is 0.55 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;5:;;0;100
|
||||
... 16 --critical-contention-percentage=5: CRITICAL: CPU average contention is 0.55 % | 'cpu.capacity.usage.percentage'=9.16%;;;0;100 'cpu.capacity.usage.hertz'=4603440Hz;;;;50280000 'cpu.capacity.contention.percentage'=0.55%;;5:;0;100
|
@ -22,30 +22,23 @@ ${CMD} ${CENTREON_PLUGINS} --plugin=apps::vmware::vsphere8::esx::pl
|
||||
*** Test Cases ***
|
||||
Host-Status ${tc}
|
||||
[Tags] apps api vmware vsphere8 esx
|
||||
${command} Catenate ${CMD} --http-backend=${http_backend} --esx-name=${esx_name} ${extraoptions}
|
||||
|
||||
# We sort the host names and keep only the last one and make sure it is the expected one
|
||||
${output} Run ${command}
|
||||
|
||||
${output} Strip String ${output}
|
||||
Should Be Equal As Strings
|
||||
... ${output}
|
||||
... ${expected_result}
|
||||
... Wrong output result for command:\n${command}\n\nObtained:\n${output}\n\nExpected:\n${expected_result}\n
|
||||
... values=False
|
||||
... collapse_spaces=True
|
||||
${command} Catenate ${CMD} ${filter_host} ${extraoptions}
|
||||
${command_curl} Catenate ${command} --http-backend=curl
|
||||
${command_lwp} Catenate ${command} --http-backend=lwp
|
||||
Ctn Run Command And Check Result As Strings ${command_curl} ${expected_result}
|
||||
Ctn Run Command And Check Result As Strings ${command_lwp} ${expected_result}
|
||||
|
||||
|
||||
Examples: tc http_backend esx_name extraoptions expected_result --
|
||||
... 1 curl esx1.acme.com ${EMPTY} OK: Host 'esx1.acme.com': power state is POWERED_ON, connection state is CONNECTED
|
||||
... 2 lwp esx1.acme.com ${EMPTY} OK: Host 'esx1.acme.com': power state is POWERED_ON, connection state is CONNECTED
|
||||
... 3 curl esx2.acme.com ${EMPTY} CRITICAL: Host 'esx2.acme.com': power state is POWERED_OFF
|
||||
... 4 lwp esx2.acme.com ${EMPTY} CRITICAL: Host 'esx2.acme.com': power state is POWERED_OFF
|
||||
... 5 curl esx3.acme.com ${EMPTY} CRITICAL: Host 'esx3.acme.com': connection state is DISCONNECTED
|
||||
... 6 lwp esx3.acme.com ${EMPTY} CRITICAL: Host 'esx3.acme.com': connection state is DISCONNECTED
|
||||
... 7 curl esx ${EMPTY} CRITICAL: Host 'esx2.acme.com': power state is POWERED_OFF - Host 'esx3.acme.com': connection state is DISCONNECTED
|
||||
... 8 lwp esx ${EMPTY} CRITICAL: Host 'esx2.acme.com': power state is POWERED_OFF - Host 'esx3.acme.com': connection state is DISCONNECTED
|
||||
... 9 curl nothing ${EMPTY} UNKNOWN: No ESX Host found.
|
||||
... 10 lwp nothing ${EMPTY} UNKNOWN: No ESX Host found.
|
||||
... 11 curl esx1.acme.com --port=8888 UNKNOWN: curl perform error : Couldn't connect to server
|
||||
... 12 lwp esx1.acme.com --port=8888 UNKNOWN: 500 Can't connect to 127.0.0.1:8888 (Connection refused)
|
||||
Examples: tc filter_host extraoptions expected_result --
|
||||
... 1 --esx-name=esx1.acme.com ${EMPTY} OK: Host 'esx1.acme.com', id: 'host-22': power state is POWERED_ON, connection state is CONNECTED
|
||||
... 2 --esx-name=esx2.acme.com ${EMPTY} CRITICAL: Host 'esx2.acme.com', id: 'host-28': power state is POWERED_OFF
|
||||
... 3 --esx-name=esx3.acme.com ${EMPTY} CRITICAL: Host 'esx3.acme.com', id: 'host-35': connection state is DISCONNECTED
|
||||
... 4 --esx-id=host-35 --esx-name=esx3.acme.com CRITICAL: Host 'esx3.acme.com', id: 'host-35': connection state is DISCONNECTED
|
||||
... 5 --esx-name=nothing ${EMPTY} UNKNOWN: No ESX Host found.
|
||||
... 6 --esx-id=host-35 --esx-name=esx2.acme.com UNKNOWN: No ESX Host found.
|
||||
... 7 --esx-id=host-22 ${EMPTY} OK: Host 'esx1.acme.com', id: 'host-22': power state is POWERED_ON, connection state is CONNECTED
|
||||
... 8 --esx-id=host-28 ${EMPTY} CRITICAL: Host 'esx2.acme.com', id: 'host-28': power state is POWERED_OFF
|
||||
... 9 --esx-id=host-35 ${EMPTY} CRITICAL: Host 'esx3.acme.com', id: 'host-35': connection state is DISCONNECTED
|
||||
... 10 --esx-id=nothing ${EMPTY} UNKNOWN: No ESX Host found.
|
||||
... 11 --esx-id=host-28 --critical-power-status=0 OK: Host 'esx2.acme.com', id: 'host-28': power state is POWERED_OFF, connection state is CONNECTED
|
||||
... 12 --esx-id=host-35 --critical-connection-status=0 OK: Host 'esx3.acme.com', id: 'host-35': power state is POWERED_ON, connection state is DISCONNECTED
|
||||
|
36
tests/apps/vmware/vsphere8/esx/memory.robot
Normal file
36
tests/apps/vmware/vsphere8/esx/memory.robot
Normal file
@ -0,0 +1,36 @@
|
||||
*** Settings ***
|
||||
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Start Mockoon ${MOCKOON_JSON}
|
||||
Suite Teardown Stop Mockoon
|
||||
Test Timeout 120s
|
||||
Test Setup Ctn Cleanup Cache
|
||||
|
||||
*** Variables ***
|
||||
${MOCKOON_JSON} ${CURDIR}${/}vmware8-restapi.mockoon.json
|
||||
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=apps::vmware::vsphere8::esx::plugin
|
||||
... --mode=memory
|
||||
... --password=C3POR2P2
|
||||
... --username=obi-wan
|
||||
... --hostname=127.0.0.1
|
||||
... --proto=http
|
||||
... --port=3000
|
||||
... --esx-id=host-22
|
||||
|
||||
*** Test Cases ***
|
||||
Memory ${tc}
|
||||
[Tags] apps api vmware vsphere8 esx
|
||||
${command} Catenate ${CMD} --http-backend=curl ${extraoptions}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extraoptions expected_result --
|
||||
... 1 ${EMPTY} OK: vms-usage-percentage : skipped (no value(s)) - vms-usage-bytes : skipped (no value(s)) - no data for host host-22 counter mem.capacity.usable.HOST at the moment.
|
||||
... 2 ${EMPTY} OK: 39% of usable memory is used by VMs - Memory used: 100.02 GB used - Usable: 253.97 GB | 'vms.memory.usage.percentage'=39.38%;;;0;100 'vms.memory.usage.bytes'=107400208056B;;;;272694090137
|
||||
... 3 --warning-vms-usage-percentage=0:0 WARNING: 39% of usable memory is used by VMs | 'vms.memory.usage.percentage'=39.38%;0:0;;0;100 'vms.memory.usage.bytes'=107400208056B;;;;272694090137
|
||||
... 4 --critical-vms-usage-percentage=0:0 CRITICAL: 39% of usable memory is used by VMs | 'vms.memory.usage.percentage'=39.38%;;0:0;0;100 'vms.memory.usage.bytes'=107400208056B;;;;272694090137
|
||||
... 5 --warning-vms-usage-bytes=0:0 WARNING: Memory used: 100.02 GB used - Usable: 253.97 GB | 'vms.memory.usage.percentage'=39.38%;;;0;100 'vms.memory.usage.bytes'=107400208056B;0:0;;;272694090137
|
||||
... 6 --critical-vms-usage-bytes=0:0 CRITICAL: Memory used: 100.02 GB used - Usable: 253.97 GB | 'vms.memory.usage.percentage'=39.38%;;;0;100 'vms.memory.usage.bytes'=107400208056B;;0:0;;272694090137
|
34
tests/apps/vmware/vsphere8/esx/power.robot
Normal file
34
tests/apps/vmware/vsphere8/esx/power.robot
Normal file
@ -0,0 +1,34 @@
|
||||
*** Settings ***
|
||||
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Start Mockoon ${MOCKOON_JSON}
|
||||
Suite Teardown Stop Mockoon
|
||||
Test Timeout 120s
|
||||
Test Setup Ctn Cleanup Cache
|
||||
|
||||
*** Variables ***
|
||||
${MOCKOON_JSON} ${CURDIR}${/}vmware8-restapi.mockoon.json
|
||||
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=apps::vmware::vsphere8::esx::plugin
|
||||
... --mode=power
|
||||
... --password=C3POR2P2
|
||||
... --username=obi-wan
|
||||
... --hostname=127.0.0.1
|
||||
... --proto=http
|
||||
... --port=3000
|
||||
... --esx-id=host-22
|
||||
|
||||
*** Test Cases ***
|
||||
Power ${tc}
|
||||
[Tags] apps api vmware vsphere8 esx
|
||||
${command} Catenate ${CMD} --http-backend=curl ${extraoptions}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extraoptions expected_result --
|
||||
... 1 ${EMPTY} OK: power-usage-watts : skipped (no value(s)) - no data for host host-22 counter power.capacity.usage.HOST at the moment.
|
||||
... 2 ${EMPTY} OK: Power usage is 200 Watts | 'power.capacity.usage.watts'=200W;;;;
|
||||
... 3 --warning-power-usage-watts=0:0 WARNING: Power usage is 200 Watts | 'power.capacity.usage.watts'=200W;0:0;;;
|
||||
... 4 --critical-power-usage-watts=0:0 CRITICAL: Power usage is 200 Watts | 'power.capacity.usage.watts'=200W;;0:0;;
|
File diff suppressed because one or more lines are too long
125
tests/cloud/azure/network/vpngateway/vpngatewaystatus.json
Normal file
125
tests/cloud/azure/network/vpngateway/vpngatewaystatus.json
Normal file
@ -0,0 +1,125 @@
|
||||
{
|
||||
"uuid": "e745f255-dee8-48eb-a952-88bb0f9e5a0c",
|
||||
"lastMigration": 32,
|
||||
"name": "Azure vpn gateway",
|
||||
"endpointPrefix": "",
|
||||
"latency": 0,
|
||||
"port": 3004,
|
||||
"hostname": "",
|
||||
"folders": [],
|
||||
"routes": [
|
||||
{
|
||||
"uuid": "f8dc6ac1-febc-46a8-be79-9e5e14cedd3a",
|
||||
"type": "http",
|
||||
"documentation": "List By Resource Group Reference (reduced reponse info)",
|
||||
"method": "get",
|
||||
"endpoint": "subscriptions/:subscriptionId/resourcegroups/:resourceGroup/providers/Microsoft.Network/virtualNetworkGateways",
|
||||
"responses": [
|
||||
{
|
||||
"uuid": "4b0edd9d-2052-45a3-9969-cf0cf461154c",
|
||||
"body": "{\r\n \"value\": [\r\n {\r\n \"name\": \"gateway1\",\r\n \"id\": \"/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/vpnGateways/gateway1\",\r\n \"type\": \"Microsoft.Network/vpnGateways\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"gatewayType\": \"ExpressRoute\",\r\n \"vpnType\": \"RouteBased\"\r\n },\r\n {\r\n \"name\": \"gateway2\",\r\n \"id\": \"/subscriptions/subid/resourceGroups/rg2/providers/Microsoft.Network/vpnGateways/gateway2\",\r\n \"type\": \"Microsoft.Network/vpnGateways\",\r\n \"properties\": {\r\n \"provisioningState\": \"Succeeded\"\r\n },\r\n \"gatewayType\": \"ExpressRoute\",\r\n \"vpnType\": \"RouteBased\"\r\n }\r\n ]\r\n}",
|
||||
"latency": 0,
|
||||
"statusCode": 200,
|
||||
"label": "",
|
||||
"headers": [],
|
||||
"bodyType": "INLINE",
|
||||
"filePath": "",
|
||||
"databucketID": "",
|
||||
"sendFileAsBody": false,
|
||||
"rules": [],
|
||||
"rulesOperator": "OR",
|
||||
"disableTemplating": false,
|
||||
"fallbackTo404": false,
|
||||
"default": true,
|
||||
"crudKey": "id",
|
||||
"callbacks": []
|
||||
}
|
||||
],
|
||||
"responseMode": null
|
||||
},
|
||||
{
|
||||
"uuid": "325811e6-6a5d-4906-90a1-3df24183d529",
|
||||
"type": "http",
|
||||
"documentation": "Azure login",
|
||||
"method": "post",
|
||||
"endpoint": "login/:tenant/oauth2/token",
|
||||
"responses": [
|
||||
{
|
||||
"uuid": "e381c634-cbff-431e-851e-e4631f0f9e2c",
|
||||
"body": "{\n \"access_token\": \"token\",\n \"expires_on\": \"{{ faker 'string.numeric' 10 }}\"\n}",
|
||||
"latency": 0,
|
||||
"statusCode": 200,
|
||||
"label": "",
|
||||
"headers": [],
|
||||
"bodyType": "INLINE",
|
||||
"filePath": "",
|
||||
"databucketID": "",
|
||||
"sendFileAsBody": false,
|
||||
"rules": [],
|
||||
"rulesOperator": "OR",
|
||||
"disableTemplating": false,
|
||||
"fallbackTo404": false,
|
||||
"default": true,
|
||||
"crudKey": "id",
|
||||
"callbacks": []
|
||||
}
|
||||
],
|
||||
"responseMode": null
|
||||
}
|
||||
],
|
||||
"rootChildren": [
|
||||
{
|
||||
"type": "route",
|
||||
"uuid": "f8dc6ac1-febc-46a8-be79-9e5e14cedd3a"
|
||||
},
|
||||
{
|
||||
"type": "route",
|
||||
"uuid": "325811e6-6a5d-4906-90a1-3df24183d529"
|
||||
}
|
||||
],
|
||||
"proxyMode": false,
|
||||
"proxyHost": "",
|
||||
"proxyRemovePrefix": false,
|
||||
"tlsOptions": {
|
||||
"enabled": false,
|
||||
"type": "CERT",
|
||||
"pfxPath": "",
|
||||
"certPath": "",
|
||||
"keyPath": "",
|
||||
"caPath": "",
|
||||
"passphrase": ""
|
||||
},
|
||||
"cors": true,
|
||||
"headers": [
|
||||
{
|
||||
"key": "Content-Type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"key": "Access-Control-Allow-Origin",
|
||||
"value": "*"
|
||||
},
|
||||
{
|
||||
"key": "Access-Control-Allow-Methods",
|
||||
"value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS"
|
||||
},
|
||||
{
|
||||
"key": "Access-Control-Allow-Headers",
|
||||
"value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With"
|
||||
}
|
||||
],
|
||||
"proxyReqHeaders": [
|
||||
{
|
||||
"key": "",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"proxyResHeaders": [
|
||||
{
|
||||
"key": "",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"data": [],
|
||||
"callbacks": []
|
||||
}
|
38
tests/cloud/azure/network/vpngateway/vpngatewaystatus.robot
Normal file
38
tests/cloud/azure/network/vpngateway/vpngatewaystatus.robot
Normal file
@ -0,0 +1,38 @@
|
||||
*** Settings ***
|
||||
Documentation Azure Network VPN Gateway plugin
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Start Mockoon ${MOCKOON_JSON}
|
||||
Suite Teardown Stop Mockoon
|
||||
Test Timeout 120s
|
||||
|
||||
|
||||
*** Variables ***
|
||||
${MOCKOON_JSON} ${CURDIR}${/}vpngatewaystatus.json
|
||||
|
||||
${BASE_URL} http://${HOSTNAME}:${APIPORT}
|
||||
${LOGIN_ENDPOINT} ${BASE_URL}/login
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=cloud::azure::network::vpngateway::plugin --custommode=api --subscription=subscription --tenant=tenant --client-id=client_id --client-secret=secret --resource-group=resource-group --login-endpoint=${LOGIN_ENDPOINT}
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
VPN Gateway status ${tc}
|
||||
[Tags] cloud azure api mockoon
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=vpn-gateway-status
|
||||
... --management-endpoint=${BASE_URL}
|
||||
... ${extra_options}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 ${EMPTY} OK: All VPN gateways are ok
|
||||
... 2 --warning-status='\\%\{provisioning_state\} eq "Succeeded"' WARNING: VPN Gateway 'gateway1' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased] - VPN Gateway 'gateway2' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased]
|
||||
... 3 --critical-status='\\%\{provisioning_state\} eq "Succeeded"' CRITICAL: VPN Gateway 'gateway1' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased] - VPN Gateway 'gateway2' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased]
|
||||
... 4 --filter-name='gateway1' OK: VPN Gateway 'gateway1' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased]
|
||||
... 5 --filter-name='gateway1' --warning-status='\\%\{provisioning_state\} eq "Succeeded"' WARNING: VPN Gateway 'gateway1' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased]
|
||||
... 6 --filter-name='gateway1' --critical-status='\\%\{provisioning_state\} eq "Succeeded"' CRITICAL: VPN Gateway 'gateway1' Provisioning State 'Succeeded' [Gateway type: ExpressRoute] [VPN type: RouteBased]
|
||||
|
||||
|
41
tests/cpan-libraries/crypt-argon2.pl
Executable file
41
tests/cpan-libraries/crypt-argon2.pl
Executable file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Crypt::Argon2 qw/argon2d_raw argon2i_raw argon2id_raw argon2_pass argon2_verify/;
|
||||
|
||||
# Password to hash
|
||||
my $password = 'my_secure_password';
|
||||
my $salt = 'random_salt';
|
||||
my $iterations = 3;
|
||||
my $memory_cost = 32 * 1024; # in KB
|
||||
my $parallelism = 1;
|
||||
my $hash_length = 32;
|
||||
|
||||
# Hash with Argon2d
|
||||
my $argon2d_hash = argon2d_raw($password, $salt, $iterations, $memory_cost, $parallelism, $hash_length);
|
||||
print("Argon2d hash: " . unpack("H*", $argon2d_hash) . "\n");
|
||||
# Hash with Argon2i
|
||||
my $argon2i_hash = argon2i_raw($password, $salt, $iterations, $memory_cost, $parallelism, $hash_length);
|
||||
print("Argon2i hash: " . unpack("H*", $argon2i_hash) . "\n");
|
||||
# Hash with Argon2id
|
||||
my $argon2id_hash = argon2id_raw($password, $salt, $iterations, $memory_cost, $parallelism, $hash_length);
|
||||
print("Argon2id hash: " . unpack("H*", $argon2id_hash) . "\n");
|
||||
|
||||
# Encode password with Argon2d
|
||||
my $argon2d_encoded = argon2_pass('argon2d', $password, $salt, $iterations, $memory_cost, $parallelism, $hash_length);
|
||||
print "Argon2d encoded: $argon2d_encoded\n";
|
||||
# Encode password with Argon2i
|
||||
my $argon2i_encoded = argon2_pass('argon2i', $password, $salt, $iterations, $memory_cost, $parallelism, $hash_length);
|
||||
print "Argon2i encoded: $argon2i_encoded\n";
|
||||
# Encode password with Argon2id
|
||||
my $argon2id_encoded = argon2_pass('argon2id', $password, $salt, $iterations, $memory_cost, $parallelism, $hash_length);
|
||||
print "Argon2id encoded: $argon2id_encoded\n";
|
||||
|
||||
# Verify password with Argon2d
|
||||
# print argon2d_verify($argon2d_encoded1, $password) ? "Argon2d password is correct.\n" : "Argon2d password is incorrect.\n";
|
||||
argon2_verify($argon2d_encoded, $password) ? print "Argon2d password is correct.\n" : exit(1);
|
||||
# Verify password with Argon2i
|
||||
argon2_verify($argon2i_encoded, $password) ? print "Argon2i password is correct.\n" : exit(1);
|
||||
# Verify password with Argon2id
|
||||
argon2_verify($argon2id_encoded, $password) ? print "Argon2id password is correct.\n" : exit(1);
|
32
tests/cpan-libraries/json-path.pl
Normal file
32
tests/cpan-libraries/json-path.pl
Normal file
@ -0,0 +1,32 @@
|
||||
#!/usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
use JSON::Path;
|
||||
|
||||
# Sample Perl data structure
|
||||
my $data = {
|
||||
store => {
|
||||
book => [
|
||||
{ category => "reference", author => "Nigel Rees", title => "Sayings of the Century", price => 8.95 },
|
||||
{ category => "fiction", author => "Evelyn Waugh", title => "Sword of Honour", price => 12.99 },
|
||||
{ category => "fiction", author => "Herman Melville", title => "Moby Dick", isbn => "0-553-21311-3", price => 8.99 },
|
||||
{ category => "fiction", author => "J. R. R. Tolkien", title => "The Lord of the Rings", isbn => "0-395-19395-8", price => 22.99 }
|
||||
],
|
||||
bicycle => {
|
||||
color => "red",
|
||||
price => 19.95
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
# Create a JSON::Path object
|
||||
my $jpath = JSON::Path->new('$.store.book[*].author');
|
||||
|
||||
# Find all authors
|
||||
my @authors = $jpath->values($data);
|
||||
|
||||
# Print authors
|
||||
print "Authors:\n";
|
||||
foreach my $author (@authors) {
|
||||
print "$author\n";
|
||||
}
|
111
tests/cpan-libraries/libssh-session.pl
Normal file
111
tests/cpan-libraries/libssh-session.pl
Normal file
@ -0,0 +1,111 @@
|
||||
#!/usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
use Libssh::Session qw(:all);
|
||||
use POSIX qw(WIFEXITED WEXITSTATUS);
|
||||
|
||||
# Install SSH server
|
||||
if (-f "/etc/debian_version") {
|
||||
system("apt-get update") == 0
|
||||
or die "apt-update failed: $?";
|
||||
system("apt-get install -y openssh-server") == 0
|
||||
or die "Installation failed: $?";
|
||||
} elsif (-f "/etc/redhat-release") {
|
||||
system("dnf install -y openssh-server") == 0
|
||||
or die "Installation failed: $?";
|
||||
} else {
|
||||
die "Unsupported operating system";
|
||||
}
|
||||
|
||||
mkdir("/var/run/sshd") unless -d "/var/run/sshd";
|
||||
|
||||
system("ssh-keygen -A") == 0
|
||||
or die "SSH keys generation failed: $?";
|
||||
|
||||
if (getpwnam("testuser")) {
|
||||
print "User testuser already exists\n";
|
||||
} else {
|
||||
system("useradd -m testuser") == 0
|
||||
or die "User creation failed: $?";
|
||||
}
|
||||
|
||||
system("echo 'testuser:testpassword' | chpasswd") == 0
|
||||
or die "Password configuration failed: $?";
|
||||
|
||||
# SSH configuration
|
||||
open(my $fh, '>', '/etc/ssh/sshd_config')
|
||||
or die "Cannot open sshd_config: $!";
|
||||
print $fh "Port 2222\n";
|
||||
print $fh "PermitRootLogin no\n";
|
||||
print $fh "AllowUsers testuser\n";
|
||||
print $fh "PasswordAuthentication yes\n";
|
||||
close($fh);
|
||||
|
||||
# Start SSH server
|
||||
my $pid = fork();
|
||||
die "Fork failed: $!" unless defined $pid;
|
||||
|
||||
if ($pid == 0) {
|
||||
exec("/usr/sbin/sshd", "-D")
|
||||
or die "Cannot start SSH server: $!";
|
||||
}
|
||||
|
||||
# Wait and check the port
|
||||
sleep(5);
|
||||
|
||||
# Check the port with Perl
|
||||
use IO::Socket::INET;
|
||||
my $sock = IO::Socket::INET->new(
|
||||
PeerAddr => '127.0.0.1',
|
||||
PeerPort => 2222,
|
||||
Proto => 'tcp'
|
||||
);
|
||||
|
||||
die "Port SSH 2222 is not listening" unless $sock;
|
||||
$sock->close();
|
||||
|
||||
# Connection test with Libssh::Session
|
||||
eval {
|
||||
my $session = Libssh::Session->new();
|
||||
$session->options(
|
||||
host => "127.0.0.1",
|
||||
port => 2222,
|
||||
user => "testuser",
|
||||
LogVerbosity => 1,
|
||||
PrintError => 1,
|
||||
Timeout => 10
|
||||
);
|
||||
|
||||
print "Trying to connect...\n";
|
||||
$session->connect() == SSH_OK or die "Connection failed: " . $session->get_error();
|
||||
|
||||
print "Trying to authenticate...\n";
|
||||
$session->auth_password(password => "testpassword") == SSH_AUTH_SUCCESS or die "Authentification failed: " . $session->get_error();
|
||||
|
||||
print "SSH connection test succeeded\n";
|
||||
$session->disconnect();
|
||||
};
|
||||
if ($@) {
|
||||
kill 'TERM', $pid;
|
||||
die "Test failed: $@";
|
||||
}
|
||||
|
||||
# Cleaning
|
||||
kill 'TERM', $pid;
|
||||
waitpid($pid, 0);
|
||||
|
||||
# Uninstall SSH server
|
||||
if (-f "/etc/debian_version") {
|
||||
system("apt-get autoremove -y --purge openssh-server") == 0
|
||||
or die "Uninstallation failed: $?";
|
||||
} elsif (-f "/etc/redhat-release") {
|
||||
system("dnf autoremove --setopt=keepcache=True -y openssh-server") == 0
|
||||
or die "Uninstallation failed: $?";
|
||||
} else {
|
||||
die "Unsupported operating system";
|
||||
}
|
||||
|
||||
system("userdel -r testuser") == 0
|
||||
or die "Cannot delete user: $?";
|
||||
|
||||
print "Test and cleanup succeeded\n";
|
27
tests/cpan-libraries/net-curl.pl
Normal file
27
tests/cpan-libraries/net-curl.pl
Normal file
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Net::Curl::Easy qw(:constants);
|
||||
|
||||
# URL to fetch
|
||||
my $url = 'https://www.centreon.com';
|
||||
|
||||
# Create a new Curl object
|
||||
my $curl = Net::Curl::Easy->new();
|
||||
|
||||
# Prepare the request
|
||||
$curl->setopt(CURLOPT_URL, $url);
|
||||
my $response_body;
|
||||
$curl->setopt(CURLOPT_WRITEDATA, \$response_body);
|
||||
|
||||
# Perform the request
|
||||
eval {
|
||||
$curl->perform();
|
||||
};
|
||||
die "Unable to fetch URL $url: $@" if $@;
|
||||
|
||||
# Print the response body
|
||||
print "Response body:\n$response_body\n";
|
||||
|
||||
print "Test completed successfully.\n";
|
33
tests/hardware/pdu/raritan/snmp/inletsensors.robot
Normal file
33
tests/hardware/pdu/raritan/snmp/inletsensors.robot
Normal file
@ -0,0 +1,33 @@
|
||||
*** Settings ***
|
||||
Documentation Check inlet sensors
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Ctn Generic Suite Setup
|
||||
Test Timeout 120s
|
||||
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=hardware::pdu::raritan::snmp::plugin
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
inlet ${tc}
|
||||
[Tags] hardware pdu raritan inlet sensors
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=inlet-sensors
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=hardware/pdu/raritan/snmp/raritan
|
||||
... --snmp-timeout=1
|
||||
... ${extra_options}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 ${EMPTY} OK: All 7 components are ok [1/1 activeEnergy, 1/1 activePower, 1/1 apparentPower, 1/1 frequency, 1/1 powerFactor, 1/1 rmsCurrent, 1/1 rmsVoltage]. | 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.activeenergy.watthour'=1444088wattHour;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.activepower.watt'=242W;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.apparentpower.voltamp'=379voltamp;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.powerfactor'=0.64;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.rmscurrent.ampere'=1.626A;~:10.4;~:12.8;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.rmsvoltage.volt'=233V;194:247;188:254;; 'hardware.activeEnergy.count'=1;;;; 'hardware.activePower.count'=1;;;; 'hardware.apparentPower.count'=1;;;; 'hardware.frequency.count'=1;;;; 'hardware.powerFactor.count'=1;;;; 'hardware.rmsCurrent.count'=1;;;; 'hardware.rmsVoltage.count'=1;;;;
|
||||
... 2 --filter=powerFactor OK: All 6 components are ok [1/1 activeEnergy, 1/1 activePower, 1/1 apparentPower, 1/1 frequency, 1/1 rmsCurrent, 1/1 rmsVoltage]. | 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.activeenergy.watthour'=1444088wattHour;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.activepower.watt'=242W;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.apparentpower.voltamp'=379voltamp;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.frequency.hertz'=50Hz;;;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.rmscurrent.ampere'=1.626A;~:10.4;~:12.8;; 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.rmsvoltage.volt'=233V;194:247;188:254;; 'hardware.activeEnergy.count'=1;;;; 'hardware.activePower.count'=1;;;; 'hardware.apparentPower.count'=1;;;; 'hardware.frequency.count'=1;;;; 'hardware.rmsCurrent.count'=1;;;; 'hardware.rmsVoltage.count'=1;;;;
|
||||
... 3 --component=powerFactor OK: All 1 components are ok [1/1 powerFactor]. | 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.powerfactor'=0.64;;;; 'hardware.powerFactor.count'=1;;;;
|
||||
... 4 --component=powerFactor --threshold-overload='powerFactor,CRITICAL,normal' CRITICAL: 'Anonymized 027' powerFactor state is 'normal' | 'Anonymized 102~Anonymized 027#hardware.sensor.inlet.powerfactor'=0.64;;;; 'hardware.powerFactor.count'=1;;;;
|
33
tests/hardware/pdu/raritan/snmp/outletsensors.robot
Normal file
33
tests/hardware/pdu/raritan/snmp/outletsensors.robot
Normal file
File diff suppressed because one or more lines are too long
965
tests/hardware/pdu/raritan/snmp/raritan.snmpwalk
Normal file
965
tests/hardware/pdu/raritan/snmp/raritan.snmpwalk
Normal file
@ -0,0 +1,965 @@
|
||||
.1.3.6.1.4.1.13742.6.3.2.2.1.13.1 = STRING: Anonymized 102
|
||||
.1.3.6.1.4.1.13742.6.3.3.3.1.2.1.1 = STRING: Anonymized 027
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.6.1.1.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.7.1.1.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.21.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.22.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.1 = Gauge32: 12800
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.23.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.1 = Gauge32: 10400
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.24.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.4 = Hex-STRING: F0
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.3.4.1.25.1.1.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.1 = STRING: "1"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.2 = STRING: "2"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.3 = STRING: "3"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.4 = STRING: "4"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.5 = STRING: "5"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.6 = STRING: "6"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.7 = STRING: "7"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.8 = STRING: "8"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.9 = STRING: "9"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.10 = STRING: "10"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.11 = STRING: "11"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.2.1.12 = STRING: "12"
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.1 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.2 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.3 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.5 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.6 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.7 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.8 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.9 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.10 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.11 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.28.1.12 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.1 = STRING: Anonymized 008
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.2 = STRING: Anonymized 217
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.3 = STRING: Anonymized 184
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.4 = STRING: Anonymized 062
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.5 = STRING: Anonymized 049
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.6 = STRING: Anonymized 018
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.7 = STRING: Anonymized 205
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.8 = STRING: Anonymized 091
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.9 = STRING: Anonymized 156
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.10 = STRING: Anonymized 123
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.11 = STRING: Anonymized 027
|
||||
.1.3.6.1.4.1.13742.6.3.5.3.1.29.1.12 = STRING: Anonymized 207
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.1.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.2.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.3.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.4.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.5.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.6.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.7.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.8.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.9.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.10.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.11.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.1 = INTEGER: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.4 = INTEGER: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.5 = INTEGER: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.8 = INTEGER: 5
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.14 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.6.1.12.23 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.1.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.2.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.3.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.4.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.5.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.6.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.7.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.8.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.9.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.10.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.11.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.1 = Gauge32: 3
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.7 = Gauge32: 2
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.7.1.12.23 = Gauge32: 1
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.2.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.3.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.4.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.5.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.6.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.7.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.8.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.9.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.10.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.11.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.4 = Gauge32: 188
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.21.1.12.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.2.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.3.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.4.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.5.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.6.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.7.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.8.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.9.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.10.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.11.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.4 = Gauge32: 194
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.22.1.12.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.2.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.3.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.4.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.5.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.6.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.7.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.8.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.9.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.10.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.11.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.1 = Gauge32: 8000
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.4 = Gauge32: 254
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.23.1.12.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.1.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.2.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.3.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.4.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.5.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.6.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.7.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.8.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.9.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.10.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.11.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.1 = Gauge32: 6500
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.4 = Gauge32: 247
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.24.1.12.23 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.1.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.2.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.3.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.4.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.5.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.6.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.7.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.8.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.9.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.10.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.11.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.1 = STRING: "0"
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.4 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.5 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.6 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.7 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.8 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.14 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.3.5.4.1.25.1.12.23 = Hex-STRING: 00
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.3.1.1.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.1 = Gauge32: 1626
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.5 = Gauge32: 242
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.6 = Gauge32: 379
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.7 = Gauge32: 64
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.8 = Gauge32: 1444088
|
||||
.1.3.6.1.4.1.13742.6.5.2.3.1.4.1.1.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.1.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.2.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.3.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.4.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.5.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.6.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.7.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.14 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.8.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.14 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.9.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.14 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.10.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.7 = INTEGER: -1
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.14 = INTEGER: 8
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.11.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.1 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.4 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.5 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.6 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.7 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.8 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.14 = INTEGER: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.3.1.12.23 = INTEGER: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.1 = Gauge32: 74
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.5 = Gauge32: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.6 = Gauge32: 17
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.7 = Gauge32: 41
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.8 = Gauge32: 107881
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.1.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.1 = Gauge32: 303
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.5 = Gauge32: 56
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.6 = Gauge32: 71
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.7 = Gauge32: 79
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.8 = Gauge32: 330830
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.2.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.1 = Gauge32: 91
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.5 = Gauge32: 6
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.6 = Gauge32: 21
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.7 = Gauge32: 30
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.8 = Gauge32: 46648
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.3.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.8 = Gauge32: 4
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.4.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.1 = Gauge32: 333
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.5 = Gauge32: 45
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.6 = Gauge32: 78
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.7 = Gauge32: 58
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.8 = Gauge32: 281696
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.5.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.1 = Gauge32: 371
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.4 = Gauge32: 233
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.5 = Gauge32: 56
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.6 = Gauge32: 86
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.7 = Gauge32: 65
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.8 = Gauge32: 340154
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.6.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.1 = Gauge32: 389
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.4 = Gauge32: 234
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.5 = Gauge32: 65
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.6 = Gauge32: 91
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.7 = Gauge32: 72
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.8 = Gauge32: 293708
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.7.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.8.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.9.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.10.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.1 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.4 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.5 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.6 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.7 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.8 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.11.23 = Gauge32: 500
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.1 = Gauge32: 81
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.4 = Gauge32: 234
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.5 = Gauge32: 7
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.6 = Gauge32: 19
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.7 = Gauge32: 38
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.8 = Gauge32: 43137
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.14 = Gauge32: 0
|
||||
.1.3.6.1.4.1.13742.6.5.4.3.1.4.1.12.23 = Gauge32: 500
|
39
tests/hardware/server/cisco/ucs/snmp/equipement.robot
Normal file
39
tests/hardware/server/cisco/ucs/snmp/equipement.robot
Normal file
@ -0,0 +1,39 @@
|
||||
*** Settings ***
|
||||
Documentation Check Hardware (Fans, Power supplies, chassis, io cards, blades, fabric extenders).
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Suite Setup Ctn Generic Suite Setup
|
||||
Test Timeout 120s
|
||||
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=hardware::server::cisco::ucs::snmp::plugin
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
equipment ${tc}
|
||||
[Tags] hardware snmp
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=equipment
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=hardware/server/cisco/ucs/snmp/slim-ucs-equipment
|
||||
... ${extra_options}
|
||||
|
||||
Ctn Verify Command Output ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 ${EMPTY} WARNING: memory 'Anonymized-001/mem-12' presence is: 'missing' - memory 'Anonymized-001/mem-15' presence is: 'missing'
|
||||
... 2 --threshold-overload='presence,OK,missing' --threshold-overload='operability,OK,removed' OK: All 100 components are ok [100/100 memories]. | 'hardware.memory.count'=100;;;;
|
||||
... 3 --threshold-overload='presence,UNKNOWN,missing' --component='memory' UNKNOWN: memory 'Anonymized-001/mem-12' presence is: 'missing' - memory 'Anonymized-001/mem-15' presence is: 'missing'
|
||||
... 4 --threshold-overload='operability,WARNING,missing' --component='memory' WARNING: memory 'Anonymized-001/mem-12' presence is: 'missing' - memory 'Anonymized-001/mem-15' presence is: 'missing'
|
||||
... 5 --component='cpu' OK: All 0 components are ok [].
|
||||
... 6 --filter=fan,/sys/chassis-7/fan-module-1-7/fan-1 WARNING: memory 'Anonymized-001/mem-12' presence is: 'missing' - memory 'Anonymized-001/mem-15' presence is: 'missing'
|
||||
... 7 --absent-problem=fan,/sys/chassis-7/fan-module-1-7/fan-1 WARNING: memory 'Anonymized-001/mem-12' presence is: 'missing' - memory 'Anonymized-001/mem-15' presence is: 'missing'
|
||||
... 8 --no-component=UNKNOWN --filter='.*' UNKNOWN: No components are checked.
|
||||
... 9 --threshold-overload='presence,CRITICAL,equipped' CRITICAL: memory 'Anonymized-001/mem-10' presence is: 'equipped' - memory 'Anonymized-001/mem-11' presence is: 'equipped'
|
||||
... 10 --filter='.*' OK: All 0 components are ok [].
|
||||
... 11 --filter WARNING: memory 'Anonymized-001/mem-12' presence is: 'missing' - memory 'Anonymized-001/mem-15' presence is: 'missing'
|
576
tests/hardware/server/cisco/ucs/snmp/slim-ucs-equipment.snmpwalk
Normal file
576
tests/hardware/server/cisco/ucs/snmp/slim-ucs-equipment.snmpwalk
Normal file
@ -0,0 +1,576 @@
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190046 = STRING: Anonymized-001/mem-10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190047 = STRING: Anonymized-001/mem-11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190048 = STRING: Anonymized-001/mem-12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190049 = STRING: Anonymized-001/mem-13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190050 = STRING: Anonymized-001/mem-14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190051 = STRING: Anonymized-001/mem-15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190052 = STRING: Anonymized-001/mem-16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190053 = STRING: Anonymized-001/mem-17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190054 = STRING: Anonymized-001/mem-18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190055 = STRING: Anonymized-001/mem-19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190056 = STRING: Anonymized-001/mem-1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190057 = STRING: Anonymized-001/mem-2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190058 = STRING: Anonymized-001/mem-3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190059 = STRING: Anonymized-001/mem-4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190060 = STRING: Anonymized-001/mem-5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190061 = STRING: Anonymized-001/mem-6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190062 = STRING: Anonymized-001/mem-7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190063 = STRING: Anonymized-001/mem-8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190064 = STRING: Anonymized-001/mem-9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190065 = STRING: Anonymized-001/mem-20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190066 = STRING: Anonymized-001/mem-21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190067 = STRING: Anonymized-001/mem-22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190068 = STRING: Anonymized-001/mem-23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.190069 = STRING: Anonymized-001/mem-24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367440 = STRING: Anonymized-002/mem-23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367441 = STRING: Anonymized-002/mem-15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367442 = STRING: Anonymized-002/mem-9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367443 = STRING: Anonymized-002/mem-21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367444 = STRING: Anonymized-002/mem-16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367445 = STRING: Anonymized-002/mem-18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367446 = STRING: Anonymized-002/mem-11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367447 = STRING: Anonymized-002/mem-22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367448 = STRING: Anonymized-002/mem-12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367449 = STRING: Anonymized-002/mem-13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367450 = STRING: Anonymized-002/mem-7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367451 = STRING: Anonymized-002/mem-24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367452 = STRING: Anonymized-002/mem-4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367453 = STRING: Anonymized-002/mem-14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367454 = STRING: Anonymized-002/mem-17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367455 = STRING: Anonymized-002/mem-6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367456 = STRING: Anonymized-002/mem-3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367457 = STRING: Anonymized-002/mem-10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367458 = STRING: Anonymized-002/mem-2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367459 = STRING: Anonymized-002/mem-8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367460 = STRING: Anonymized-002/mem-5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367461 = STRING: Anonymized-002/mem-19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367462 = STRING: Anonymized-002/mem-20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.275367463 = STRING: Anonymized-002/mem-1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769461 = STRING: Anonymized-003/mem--11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769462 = STRING: Anonymized-003/mem--18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769463 = STRING: Anonymized-003/mem--10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769464 = STRING: Anonymized-003/mem--14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769465 = STRING: Anonymized-003/mem--3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769466 = STRING: Anonymized-003/mem--13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769467 = STRING: Anonymized-003/mem--9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769468 = STRING: Anonymized-003/mem--23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769469 = STRING: Anonymized-003/mem--24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769470 = STRING: Anonymized-003/mem--1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769471 = STRING: Anonymized-003/mem--16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769472 = STRING: Anonymized-003/mem--17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769473 = STRING: Anonymized-003/mem--22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769474 = STRING: Anonymized-003/mem--8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769475 = STRING: Anonymized-003/mem--21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769476 = STRING: Anonymized-003/mem--15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769477 = STRING: Anonymized-003/mem--20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769478 = STRING: Anonymized-003/mem--7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769479 = STRING: Anonymized-003/mem--2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769480 = STRING: Anonymized-003/mem--19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769481 = STRING: Anonymized-003/mem--5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769482 = STRING: Anonymized-003/mem--4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769483 = STRING: Anonymized-003/mem--12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277769484 = STRING: Anonymized-003/mem--6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770731 = STRING: Anonymized-004/mem--7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770732 = STRING: Anonymized-004/mem--9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770733 = STRING: Anonymized-004/mem--10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770734 = STRING: Anonymized-004/mem--16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770735 = STRING: Anonymized-004/mem--3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770736 = STRING: Anonymized-004/mem--15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770737 = STRING: Anonymized-004/mem--8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770738 = STRING: Anonymized-004/mem--14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770739 = STRING: Anonymized-004/mem--19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770740 = STRING: Anonymized-004/mem--4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770741 = STRING: Anonymized-004/mem--12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770742 = STRING: Anonymized-004/mem--21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770743 = STRING: Anonymized-004/mem--22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770744 = STRING: Anonymized-004/mem--18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770745 = STRING: Anonymized-004/mem--23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770746 = STRING: Anonymized-004/mem--24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770747 = STRING: Anonymized-004/mem--20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770748 = STRING: Anonymized-004/mem--13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770749 = STRING: Anonymized-004/mem--11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770750 = STRING: Anonymized-004/mem--6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770751 = STRING: Anonymized-004/mem--17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770752 = STRING: Anonymized-004/mem--5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770753 = STRING: Anonymized-004/mem--2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.277770754 = STRING: Anonymized-004/mem--1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261034 = STRING: Anonymized-005/mem--13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261035 = STRING: Anonymized-005/mem--8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261036 = STRING: Anonymized-005/mem--5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261037 = STRING: Anonymized-005/mem--12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261038 = STRING: Anonymized-005/mem--9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261039 = STRING: Anonymized-005/mem--16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261040 = STRING: Anonymized-005/mem--15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261041 = STRING: Anonymized-005/mem--24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261042 = STRING: Anonymized-005/mem--22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261043 = STRING: Anonymized-005/mem--14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261044 = STRING: Anonymized-005/mem--23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261045 = STRING: Anonymized-005/mem--3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261046 = STRING: Anonymized-005/mem--21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261047 = STRING: Anonymized-005/mem--2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261048 = STRING: Anonymized-005/mem--11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261049 = STRING: Anonymized-005/mem--6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261050 = STRING: Anonymized-005/mem--18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261051 = STRING: Anonymized-005/mem--19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261052 = STRING: Anonymized-005/mem--4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261053 = STRING: Anonymized-005/mem--20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261054 = STRING: Anonymized-005/mem--10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261055 = STRING: Anonymized-005/mem--7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261056 = STRING: Anonymized-005/mem--17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261057 = STRING: Anonymized-005/mem--1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261172 = STRING: Anonymized-006/mem--7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261173 = STRING: Anonymized-006/mem--8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261174 = STRING: Anonymized-006/mem--9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261175 = STRING: Anonymized-006/mem--10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261176 = STRING: Anonymized-006/mem--3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261177 = STRING: Anonymized-006/mem--12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261178 = STRING: Anonymized-006/mem--13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261179 = STRING: Anonymized-006/mem--6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261180 = STRING: Anonymized-006/mem--19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261181 = STRING: Anonymized-006/mem--14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261182 = STRING: Anonymized-006/mem--18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261183 = STRING: Anonymized-006/mem--15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261184 = STRING: Anonymized-006/mem--11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261185 = STRING: Anonymized-006/mem--1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261186 = STRING: Anonymized-006/mem--2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261187 = STRING: Anonymized-006/mem--24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261188 = STRING: Anonymized-006/mem--4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261189 = STRING: Anonymized-006/mem--5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261190 = STRING: Anonymized-006/mem--16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261191 = STRING: Anonymized-006/mem--17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261192 = STRING: Anonymized-006/mem--20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261193 = STRING: Anonymized-006/mem--21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261194 = STRING: Anonymized-006/mem--22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261195 = STRING: Anonymized-006/mem--23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261289 = STRING: Anonymized-007/mem-1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261290 = STRING: Anonymized-007/mem-8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261291 = STRING: Anonymized-007/mem-2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261292 = STRING: Anonymized-007/mem-6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261293 = STRING: Anonymized-007/mem-11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261294 = STRING: Anonymized-007/mem-10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261295 = STRING: Anonymized-007/mem-5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261296 = STRING: Anonymized-007/mem-9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261297 = STRING: Anonymized-007/mem-24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261298 = STRING: Anonymized-007/mem-20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261299 = STRING: Anonymized-007/mem-23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261300 = STRING: Anonymized-007/mem-17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261301 = STRING: Anonymized-007/mem-21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261302 = STRING: Anonymized-007/mem-3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261303 = STRING: Anonymized-007/mem-4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261304 = STRING: Anonymized-007/mem-7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261305 = STRING: Anonymized-007/mem-19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261306 = STRING: Anonymized-007/mem-13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261307 = STRING: Anonymized-007/mem-18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261308 = STRING: Anonymized-007/mem-22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261309 = STRING: Anonymized-007/mem-16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261310 = STRING: Anonymized-007/mem-15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261311 = STRING: Anonymized-007/mem-12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278261312 = STRING: Anonymized-007/mem-14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292669 = STRING: Anonymized-008/mem-21
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292670 = STRING: Anonymized-008/mem-2
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292671 = STRING: Anonymized-008/mem-23
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292672 = STRING: Anonymized-008/mem-18
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292673 = STRING: Anonymized-008/mem-17
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292674 = STRING: Anonymized-008/mem-20
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292675 = STRING: Anonymized-008/mem-16
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292676 = STRING: Anonymized-008/mem-22
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292677 = STRING: Anonymized-008/mem-4
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292678 = STRING: Anonymized-008/mem-24
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292679 = STRING: Anonymized-008/mem-15
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292680 = STRING: Anonymized-008/mem-11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292681 = STRING: Anonymized-008/mem-5
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292682 = STRING: Anonymized-008/mem-10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292683 = STRING: Anonymized-008/mem-3
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292684 = STRING: Anonymized-008/mem-9
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292685 = STRING: Anonymized-008/mem-8
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292686 = STRING: Anonymized-008/mem-19
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292687 = STRING: Anonymized-008/mem-6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292688 = STRING: Anonymized-008/mem-1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292689 = STRING: Anonymized-008/mem-14
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292690 = STRING: Anonymized-008/mem-13
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292691 = STRING: Anonymized-008/mem-7
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.2.278292692 = STRING: Anonymized-008/mem-12
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190046 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190047 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190048 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190049 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190050 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190051 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190052 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190053 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190054 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190055 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190056 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190057 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190058 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190059 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190060 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190061 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190062 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190063 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190064 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190065 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190066 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190067 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190068 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.190069 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367440 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367441 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367442 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367443 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367444 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367445 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367446 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367447 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367448 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367449 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367450 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367451 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367452 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367453 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367454 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367455 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367456 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367457 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367458 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367459 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367460 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367461 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367462 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.275367463 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769461 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769462 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769463 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769464 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769465 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769466 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769467 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769468 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769469 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769470 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769471 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769472 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769473 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769474 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769475 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769476 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769477 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769478 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769479 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769480 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769481 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769482 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769483 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277769484 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770731 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770732 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770733 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770734 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770735 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770736 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770737 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770738 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770739 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770740 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770741 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770742 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770743 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770744 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770745 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770746 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770747 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770748 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770749 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770750 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770751 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770752 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770753 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.277770754 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261034 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261035 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261036 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261037 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261038 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261039 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261040 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261041 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261042 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261043 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261044 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261045 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261046 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261047 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261048 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261049 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261050 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261051 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261052 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261053 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261054 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261055 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261056 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261057 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261172 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261173 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261174 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261175 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261176 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261177 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261178 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261179 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261180 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261181 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261182 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261183 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261184 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261185 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261186 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261187 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261188 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261189 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261190 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261191 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261192 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261193 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261194 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261195 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261289 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261290 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261291 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261292 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261293 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261294 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261295 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261296 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261297 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261298 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261299 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261300 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261301 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261302 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261303 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261304 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261305 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261306 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261307 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261308 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261309 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261310 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261311 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278261312 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292669 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292670 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292671 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292672 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292673 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292674 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292675 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292676 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292677 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292678 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292679 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292680 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292681 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292682 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292683 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292684 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292685 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292686 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292687 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292688 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292689 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292690 = INTEGER: 1
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292691 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.13.278292692 = INTEGER: 6
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190046 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190047 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190048 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190049 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190050 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190051 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190052 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190053 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190054 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190055 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190056 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190057 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190058 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190059 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190060 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190061 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190062 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190063 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190064 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190065 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190066 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190067 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190068 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.190069 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367440 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367441 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367442 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367443 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367444 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367445 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367446 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367447 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367448 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367449 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367450 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367451 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367452 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367453 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367454 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367455 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367456 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367457 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367458 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367459 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367460 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367461 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367462 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.275367463 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769461 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769462 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769463 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769464 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769465 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769466 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769467 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769468 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769469 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769470 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769471 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769472 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769473 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769474 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769475 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769476 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769477 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769478 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769479 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769480 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769481 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769482 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769483 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277769484 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770731 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770732 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770733 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770734 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770735 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770736 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770737 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770738 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770739 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770740 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770741 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770742 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770743 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770744 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770745 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770746 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770747 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770748 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770749 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770750 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770751 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770752 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770753 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.277770754 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261034 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261035 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261036 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261037 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261038 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261039 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261040 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261041 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261042 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261043 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261044 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261045 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261046 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261047 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261048 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261049 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261050 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261051 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261052 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261053 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261054 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261055 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261056 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261057 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261172 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261173 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261174 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261175 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261176 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261177 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261178 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261179 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261180 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261181 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261182 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261183 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261184 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261185 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261186 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261187 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261188 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261189 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261190 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261191 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261192 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261193 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261194 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261195 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261289 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261290 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261291 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261292 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261293 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261294 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261295 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261296 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261297 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261298 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261299 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261300 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261301 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261302 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261303 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261304 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261305 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261306 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261307 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261308 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261309 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261310 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261311 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278261312 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292669 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292670 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292671 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292672 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292673 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292674 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292675 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292676 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292677 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292678 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292679 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292680 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292681 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292682 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292683 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292684 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292685 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292686 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292687 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292688 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292689 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292690 = INTEGER: 10
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292691 = INTEGER: 11
|
||||
.1.3.6.1.4.1.9.9.719.1.30.11.1.17.278292692 = INTEGER: 11
|
File diff suppressed because one or more lines are too long
@ -33,10 +33,20 @@ scenario ${tc}
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 --filter-name='Centreon Demo Navigation|Centreon Demo ping NA' --output-ignore-perfdata CRITICAL: Scenario 'Centreon Demo Navigation': status: Failure (2) WARNING: Scenario 'Centreon Demo ping NA': status: Degraded (8)
|
||||
... 2 --filter-name='AKILA - Business App' OK: Scenario 'AKILA - Business App': status: Success (1), availability: 100%, time total all steps: 4280ms - All steps are ok | 'AKILA - Business App#scenario.availability.percentage'=100%;;;0;100 'AKILA - Business App#scenario.time.allsteps.total.milliseconds'=4280ms;;;0; 'AKILA - Business App~Dashboard 2#scenario.step.time.milliseconds'=898ms;;;0; 'AKILA - Business App~Dashboard 3#scenario.step.time.milliseconds'=848ms;;;0; 'AKILA - Business App~Run Chrome#scenario.step.time.milliseconds'=2534ms;;;0;
|
||||
... 3 --filter-name='wrong currentstatus.*' WARNING: Scenario 'wrong currentstatus, no perfdata': status: Unknown (14) - Scenario 'wrong currentstatus, no perfdata' Don't have any performance data, please try to add a bigger timeframe
|
||||
... 3 --filter-name='wrong currentstatus.*' UNKNOWN: Scenario 'wrong currentstatus, no perfdata': status: Unknown (14) - No execution, please try again with a bigger timeframe
|
||||
... 4 --filter-name='not a scenario name' UNKNOWN: No scenario found
|
||||
... 5 --filter-id='09fe2561.*' --warning-time-total-allsteps='30' --output-ignore-perfdata WARNING: Scenario 'AKILA - (Web) ': time total all steps: 5822ms
|
||||
... 5 --filter-id='127a149b.*' --warning-time-total='30' --output-ignore-perfdata WARNING: Scenario 'AKILA - (Browser Page Load)': Step: Default, last exec: 30-12-2024 10:30:00 UTC, time total: 1097 ms
|
||||
... 6 --filter-status='2' --output-ignore-perfdata CRITICAL: Scenario 'Centreon Demo Navigation': status: Failure (2)
|
||||
... 7 --filter-status='2' --filter-siteid='site' --filter-workspaceid='workspace' --output-ignore-perfdata CRITICAL: Scenario 'Centreon Demo Navigation': status: Failure (2)
|
||||
... 8 --filter-type='not a scenario type' UNKNOWN: No scenario found
|
||||
... 9 --api-password='Wrongpassword' --api-username='wrongUsername' UNKNOWN: Authentication endpoint returns error code 'Wrong email or password' (add --debug option for detailed message)
|
||||
# This scenario failed the second step. we show only the first step perfdata, and not the perfdata of the other step for another timestamp.
|
||||
... 10 --filter-name='AKILA - .Web.' CRITICAL: Scenario 'AKILA - (Web)': status: Failure (2) | 'AKILA - (Web)#scenario.availability.percentage'=45.76%;;;0;100 'AKILA - (Web)#scenario.time.allsteps.total.milliseconds'=4733ms;;;0; 'AKILA - (Web)~Home#scenario.step.time.milliseconds'=2851ms;;;0;
|
||||
# without any filter-name of filter-id, every scenario are taken into account of this type.
|
||||
... 11 --filter-type='WEB' --output-ignore-perfdata CRITICAL: Scenario 'AKILA - (Web)': status: Failure (2) - Scenario 'Centreon Demo Navigation': status: Failure (2)
|
||||
# Check the unknown default parameter. These scenario are not real and go to the same scenarioId, which is not possible in real life.
|
||||
... 12 --filter-name='unknown Status 0' --output-ignore-perfdata UNKNOWN: Scenario 'unknown Status 0': status: Unknown (0)
|
||||
... 13 --filter-name='unknown Status 3' --output-ignore-perfdata UNKNOWN: Scenario 'unknown Status 3': status: Aborted (3)
|
||||
... 14 --filter-name='unknown Status 4' --output-ignore-perfdata UNKNOWN: Scenario 'unknown Status 4': status: No execution (4)
|
||||
... 15 --filter-name='unknown Status 5' --output-ignore-perfdata UNKNOWN: Scenario 'unknown Status 5': status: No execution (5)
|
||||
... 16 --filter-name='unknown Status 6' --output-ignore-perfdata UNKNOWN: Scenario 'unknown Status 6': status: Stopped (6)
|
||||
|
35
tests/network/aruba/aoscx/snmp/hardware.robot
Normal file
35
tests/network/aruba/aoscx/snmp/hardware.robot
Normal file
@ -0,0 +1,35 @@
|
||||
*** Settings ***
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Test Timeout 120s
|
||||
Test Setup Ctn Generic Suite Setup
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=network::aruba::aoscx::snmp::plugin
|
||||
|
||||
*** Test Cases ***
|
||||
hardware ${tc}
|
||||
[Tags] network aruba
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=hardware
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=network/aruba/aoscx/snmp/slim_aoscx-spanning-tree
|
||||
... --snmp-timeout=1
|
||||
... ${extra_options}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 ${EMPTY} OK: All 7 components are ok [1/1 psu, 6/6 temperatures]. | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 2 --component='.*' OK: All 7 components are ok [1/1 psu, 6/6 temperatures]. | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 3 --filter='psu' OK: All 6 components are ok [6/6 temperatures]. | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 4 --no-component='CRITICAL' --filter='.*' CRITICAL: No components are checked.
|
||||
... 5 --threshold-overload='fan,WARNING,string' OK: All 7 components are ok [1/1 psu, 6/6 temperatures]. | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 6 --warning='temperature,.*,30' WARNING: temperature 'Anonymized 145' is 60.00 C - temperature 'Anonymized 096' is 58.00 C - temperature 'Anonymized 186' is 63.50 C - temperature 'Anonymized 159' is 63.25 C - temperature 'Anonymized 101' is 63.75 C | 'Anonymized 145#hardware.temperature.celsius'=60.00C;0:30;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;0:30;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;0:30;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;0:30;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;0:30;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;0:30;;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 7 --critical='temperature,.*,40' CRITICAL: temperature 'Anonymized 145' is 60.00 C - temperature 'Anonymized 096' is 58.00 C - temperature 'Anonymized 186' is 63.50 C - temperature 'Anonymized 159' is 63.25 C - temperature 'Anonymized 101' is 63.75 C | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;0:40;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;0:40;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;0:40;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;0:40;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;0:40;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;0:40;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 8 --warning='fan.speed,.*,1000' OK: All 7 components are ok [1/1 psu, 6/6 temperatures]. | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
||||
... 9 --critical='fan.speed,.*,2000' OK: All 7 components are ok [1/1 psu, 6/6 temperatures]. | 'Anonymized 145#hardware.temperature.celsius'=60.00C;;;; 'Anonymized 096#hardware.temperature.celsius'=58.00C;;;; 'Anonymized 138#hardware.temperature.celsius'=20.50C;;;; 'Anonymized 186#hardware.temperature.celsius'=63.50C;;;; 'Anonymized 159#hardware.temperature.celsius'=63.25C;;;; 'Anonymized 101#hardware.temperature.celsius'=63.75C;;;; 'hardware.psu.count'=1;;;; 'hardware.temperature.count'=6;;;;
|
44
tests/network/aruba/aoscx/snmp/interfaces.robot
Normal file
44
tests/network/aruba/aoscx/snmp/interfaces.robot
Normal file
@ -0,0 +1,44 @@
|
||||
*** Settings ***
|
||||
|
||||
Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource
|
||||
|
||||
Test Timeout 120s
|
||||
Test Setup Ctn Generic Suite Setup
|
||||
|
||||
*** Variables ***
|
||||
${CMD} ${CENTREON_PLUGINS} --plugin=network::aruba::aoscx::snmp::plugin
|
||||
|
||||
*** Test Cases ***
|
||||
interfaces ${tc}
|
||||
[Tags] network aruba interfaces
|
||||
${command} Catenate
|
||||
... ${CMD}
|
||||
... --mode=interfaces
|
||||
... --hostname=${HOSTNAME}
|
||||
... --snmp-version=${SNMPVERSION}
|
||||
... --snmp-port=${SNMPPORT}
|
||||
... --snmp-community=network/aruba/aoscx/snmp/slim_aoscx-spanning-tree
|
||||
... --snmp-timeout=1
|
||||
... ${extra_options}
|
||||
|
||||
Ctn Run Command And Check Result As Strings ${command} ${expected_result}
|
||||
|
||||
Examples: tc extra_options expected_result --
|
||||
... 1 ${EMPTY} CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 2 --add-global OK: Total port : 18, AdminStatus Up : 18, AdminStatus Down : 0, OperStatus Up : 6, OperStatus Down : 12 | 'total_port'=18;;;0;18 'total_admin_up'=18;;;0;18 'total_admin_down'=0;;;0;18 'total_oper_up'=6;;;0;18 'global_oper_down'=12;;;0;18
|
||||
... 3 --add-status CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 4 --add-duplex-status --warning-status='\\\%{opstatus} eq "warning"' CRITICAL: Interface '1/1/10' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/11' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/12' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/13' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/14' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/2' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/4' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/5' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/6' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/7' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/8' Status : down (admin: up) (duplex: fullDuplex) - Interface '1/1/9' Status : down (admin: up) (duplex: fullDuplex)
|
||||
... 5 --add-traffic --name --interface='Anonymized 123' --warning-in-traffic=1:1 --speed=1 UNKNOWN: No entry found (maybe you should reload cache file)
|
||||
... 6 --add-errors OK: All interfaces are ok
|
||||
... 7 --add-cast --interface='1,1,14' OK: All interfaces are ok
|
||||
... 8 --add-speed --interface='1,1,16' OK: All interfaces are ok | 'speed_1/1/1'=100000000b/s;;;0; 'speed_1/1/16'=1000000000b/s;;;0;
|
||||
... 9 --add-volume --interface='1,1,10' --add-status='critical' CRITICAL: Interface '1/1/10' Status : down (admin: up)
|
||||
... 10 --check-metrics='\\\%{opstatus} eq "up"' CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 11 --warning-status='\\\%{admstatus} eq "up"' --interface='16' WARNING: Interface '1/1/16' Status : up (admin: up)
|
||||
... 12 --critical-status='\\\%{admstatus} eq "up" and \\\%{opstatus} ne "up"' CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 13 --warning-out-traffic='0' --critical-out-traffic=10 --warning-status='\\\%{opstatus} eq "up"' --interface='16' WARNING: Interface '1/1/16' Status : up (admin: up)
|
||||
... 14 --warning-in-traffic='0' --critical-in-traffic=10 --critical-status='\\\%{opstatus} eq "up"' CRITICAL: Interface '1/1/1' Status : up (admin: up) - Interface '1/1/15' Status : up (admin: up) - Interface '1/1/16' Status : up (admin: up) - Interface 'Anonymized 124' Status : up (admin: up) - Interface '1/1/3' Status : up (admin: up) - Interface 'Anonymized 066' Status : up (admin: up)
|
||||
... 15 --units-traffic='12%' CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 16 --units-errors='12%' CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 17 --units-cast='12%' CRITICAL: Interface '1/1/10' Status : down (admin: up) - Interface '1/1/11' Status : down (admin: up) - Interface '1/1/12' Status : down (admin: up) - Interface '1/1/13' Status : down (admin: up) - Interface '1/1/14' Status : down (admin: up) - Interface '1/1/2' Status : down (admin: up) - Interface '1/1/4' Status : down (admin: up) - Interface '1/1/5' Status : down (admin: up) - Interface '1/1/6' Status : down (admin: up) - Interface '1/1/7' Status : down (admin: up) - Interface '1/1/8' Status : down (admin: up) - Interface '1/1/9' Status : down (admin: up)
|
||||
... 18 --display-transform-src='Anonymized' --display-transform-dst='Interface' --name --interface='Anonymized 124' OK: Interface 'Interface 124' Status : up (admin: up)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user